Skip to content

Commit 57b07a7

Browse files
committed
ignore_pins_on_floorplan
1 parent 67f92b6 commit 57b07a7

File tree

4 files changed

+31
-3
lines changed

4 files changed

+31
-3
lines changed

klayout_dot_config/grain.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<salt-grain>
33
<name>siepic_tools</name>
4-
<version>0.5.22</version>
4+
<version>0.5.23</version>
55
<api-version>0.27</api-version>
66
<title>SiEPIC Tools</title>
77
<doc>Tools for designing Silicon Photonic Integrated Circuits, including waveguides, component simulations, functional verification, DRC verification, Functional verification, netlist extraction, circuit simulations. Layout can be implemented graphically or by programming in Python using the SiEPIC functions and KLayout Python API. Framework and examples for creating layouts using scripts. Includes a generic PDK (GSiP). Other PDKs are installed separately, and depend on SiEPIC-Tools.</doc>

klayout_dot_config/python/SiEPIC/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
SiEPIC-Tools package for KLayout
33
'''
44

5-
__version__ = "0.5.22"
5+
__version__ = "0.5.23"
66

77
print("KLayout SiEPIC-Tools version %s" %__version__)
88

klayout_dot_config/python/SiEPIC/verification.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,27 @@ def layout_check(cell=None, verbose=False, GUI=False, timing=False, file_rdb = N
320320
else:
321321
minimum_radius_check = True
322322

323+
if verification:
324+
try:
325+
ignore_pins_on_floorplan = eval(
326+
verification["verification"]["ignore-pins-on-floorplan"]
327+
)
328+
layer_floorplan = TECHNOLOGY['FloorPlan']
329+
# find the FloorPlan geometry
330+
iter = cell.begin_shapes_rec(cell.layout().layer(layer_floorplan))
331+
floorplan_boxes = []
332+
while not(iter.at_end()):
333+
if iter.shape().is_box():
334+
box = iter.shape().box
335+
box2 = iter.shape().box.transformed(iter.itrans())
336+
floorplan_boxes.append(box2)
337+
iter.next()
338+
except:
339+
ignore_pins_on_floorplan = False
340+
else:
341+
ignore_pins_on_floorplan = False
342+
343+
323344
if verification:
324345
# define device-only layers
325346
try:
@@ -442,6 +463,13 @@ def layout_check(cell=None, verbose=False, GUI=False, timing=False, file_rdb = N
442463
if pin.type == _globals.PIN_TYPES.OPTICAL:
443464
if pin.net.idx == None:
444465
# disconnected optical pin
466+
467+
# Check if the pin is touching the floorplan; if so assume it is a port to an adjacent layout and ignore
468+
if ignore_pins_on_floorplan and floorplan_boxes:
469+
if pya.Region(pin.path).interacting(pya.Region(floorplan_boxes[0]).edges()):
470+
print(" - pin touching floorplan, skipping error")
471+
continue
472+
445473
if verbose:
446474
print(" - Found disconnected pin, type %s, at (%s)" % (pin.type, pin.center))
447475
pin.display()

klayout_dot_config/python/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "SiEPIC"
3-
version = "0.5.22"
3+
version = "0.5.23"
44
authors = [
55
{ name="Lukas Chrostowski", email="[email protected]" },
66
]

0 commit comments

Comments
 (0)