diff --git a/crlcore/python/technos/node180/gf180mcu/techno.py b/crlcore/python/technos/node180/gf180mcu/techno.py index 8972bb65..3eb541b1 100644 --- a/crlcore/python/technos/node180/gf180mcu/techno.py +++ b/crlcore/python/technos/node180/gf180mcu/techno.py @@ -25,7 +25,7 @@ def _setup_techno(): tech = Technology.create( db, 'GF180MCU' ) DbU.setPrecision( 2 ) - DbU.setPhysicalsPerGrid( 0.005, DbU.UnitPowerMicro ) + DbU.setPhysicalsPerGrid( 0.0005, DbU.UnitPowerMicro ) with CfgCache(priority=Cfg.Parameter.Priority.ConfigurationFile) as cfg: cfg.gdsDriver.metricDbu = 1e-09 cfg.gdsDriver.dbuPerUu = 0.001 diff --git a/crlcore/python/technos/node180/gf180mcu_c4m/StdCell3V3Lib.py b/crlcore/python/technos/node180/gf180mcu_c4m/StdCell3V3Lib.py new file mode 100644 index 00000000..c56bae45 --- /dev/null +++ b/crlcore/python/technos/node180/gf180mcu_c4m/StdCell3V3Lib.py @@ -0,0 +1,15456 @@ +# Autogenerated file. Changes will be overwritten. + +try: + import coriolis +except ImportError: + import CRL, Hurricane, Viewer, Cfg + from Hurricane import ( + Technology, DataBase, DbU, Library, + Layer, BasicLayer, + Cell, Net, Horizontal, Vertical, Rectilinear, Box, Point, + Instance, Transformation, + NetExternalComponents, + ) + from helpers import u, l + from helpers.technology import setEnclosures + from helpers.overlay import CfgCache, UpdateSession +else: + from coriolis import CRL, Hurricane, Viewer, Cfg + from coriolis.Hurricane import ( + Technology, DataBase, DbU, Library, + Layer, BasicLayer, + Cell, Net, Horizontal, Vertical, Rectilinear, Box, Point, + Instance, Transformation, + NetExternalComponents, + ) + from coriolis.helpers import u, l + from coriolis.helpers.technology import setEnclosures + from coriolis.helpers.overlay import CfgCache, UpdateSession + +__all__ = ["setup"] + +def createRL(tech, net, layer, coords): + coords = [Point(u(x), u(y)) for x,y in coords] + Rectilinear.create(net, tech.getLayer(layer), coords) + +def _routing(): + af = CRL.AllianceFramework.get() + db = DataBase.getDB() + tech = db.getTechnology() + + rg = CRL.RoutingGauge.create('StdCell3V3Lib') + rg.setSymbolic(False) + metal = tech.getLayer('Metal1') + via = tech.getLayer('Metal1_Via1_Metal2') + setEnclosures(via, metal, (u(0.0), u(0.06))) + rg.addLayerGauge(CRL.RoutingLayerGauge.create( + metal, CRL.RoutingLayerGauge.Vertical, CRL.RoutingLayerGauge.PinOnly, 0, 0.0, + u(0.0), u(0.66), u(0.26), u(0.23), u(0.26), u(0.23), + )) + metal = tech.getLayer('Metal2') + via = tech.getLayer('Metal1_Via1_Metal2') + setEnclosures(via, metal, (u(0.01), u(0.06))) + via = tech.getLayer('Metal2_Via2_Metal3') + setEnclosures(via, metal, (u(0.06), u(0.06))) + rg.addLayerGauge(CRL.RoutingLayerGauge.create( + metal, CRL.RoutingLayerGauge.Horizontal, CRL.RoutingLayerGauge.Default, 1, 0.0, + u(0.0), u(0.66), u(0.38), u(0.28), u(0.26), u(0.28), + )) + metal = tech.getLayer('Metal3') + via = tech.getLayer('Metal2_Via2_Metal3') + setEnclosures(via, metal, (u(0.06), u(0.06))) + via = tech.getLayer('Metal3_Via3_Metal4') + setEnclosures(via, metal, (u(0.06), u(0.06))) + rg.addLayerGauge(CRL.RoutingLayerGauge.create( + metal, CRL.RoutingLayerGauge.Vertical, CRL.RoutingLayerGauge.Default, 2, 0.0, + u(0.0), u(0.66), u(0.38), u(0.28), u(0.26), u(0.28), + )) + metal = tech.getLayer('Metal4') + via = tech.getLayer('Metal3_Via3_Metal4') + setEnclosures(via, metal, (u(0.06), u(0.06))) + via = tech.getLayer('Metal4_Via4_Metal5') + setEnclosures(via, metal, (u(0.06), u(0.06))) + rg.addLayerGauge(CRL.RoutingLayerGauge.create( + metal, CRL.RoutingLayerGauge.Horizontal, CRL.RoutingLayerGauge.Default, 3, 0.0, + u(0.0), u(0.66), u(0.38), u(0.28), u(0.26), u(0.28), + )) + metal = tech.getLayer('Metal5') + via = tech.getLayer('Metal4_Via4_Metal5') + setEnclosures(via, metal, (u(0.06), u(0.06))) + via = tech.getLayer('Metal5_Via5_MetalTop') + setEnclosures(via, metal, (u(0.06), u(0.09))) + rg.addLayerGauge(CRL.RoutingLayerGauge.create( + metal, CRL.RoutingLayerGauge.Vertical, CRL.RoutingLayerGauge.Default, 4, 0.0, + u(0.0), u(0.66), u(0.38), u(0.28), u(0.26), u(0.28), + )) + metal = tech.getLayer('MetalTop') + via = tech.getLayer('Metal5_Via5_MetalTop') + setEnclosures(via, metal, (u(0.06), u(0.09))) + rg.addLayerGauge(CRL.RoutingLayerGauge.create( + metal, CRL.RoutingLayerGauge.Horizontal, CRL.RoutingLayerGauge.Default, 5, 0.0, + u(0.0), u(0.876), u(0.44), u(0.44), u(0.26), u(0.436), + )) + af.addRoutingGauge(rg) + af.setRoutingGauge('StdCell3V3Lib') + + cg = CRL.CellGauge.create( + 'StdCell3V3Lib', 'Metal2', + u(1.4000000000000001), u(14.000000000000002), u(1.4000000000000001), + ) + af.addCellGauge(cg) + af.setCellGauge('StdCell3V3Lib') + + # Place & Route setup + with CfgCache(priority=Cfg.Parameter.Priority.ConfigurationFile) as cfg: + cfg.lefImport.minTerminalWidth = 0.0 + cfg.crlcore.groundName = 'vss' + cfg.crlcore.powerName = 'vdd' + cfg.etesian.aspectRatio = 1.00 + cfg.etesian.aspectRatio = [10, 1000] + cfg.etesian.spaceMargin = 0.10 + cfg.etesian.uniformDensity = True + cfg.etesian.routingDriven = False + cfg.etesian.latchUpDistance = u(30.0 - 1.0) + cfg.etesian.diodeName = 'diode_w1' + cfg.etesian.antennaInsertThreshold = 0.50 + cfg.etesian.antennaMaxWL = u(250.0) + cfg.etesian.feedNames = 'tie,decap_w0' + cfg.etesian.cell.zero = 'zero_x1' + cfg.etesian.cell.one = 'one_x1' + cfg.etesian.bloat = 'disabled' + cfg.etesian.effort = 2 + cfg.etesian.effort = ( + ('Fast', 1), + ('Standard', 2), + ('High', 3 ), + ('Extreme', 4 ), + ) + cfg.etesian.graphics = 2 + cfg.etesian.graphics = ( + ('Show every step', 1), + ('Show lower bound', 2), + ('Show result only', 3), + ) + cfg.anabatic.routingGauge = 'StdCell3V3Lib' + cfg.anabatic.globalLengthThreshold = 1450 + cfg.anabatic.saturateRatio = 0.90 + cfg.anabatic.saturateRp = 10 + cfg.anabatic.topRoutingLayer = 'MetalTop' + cfg.anabatic.edgeLength = 48 + cfg.anabatic.edgeWidth = 8 + cfg.anabatic.edgeCostH = 9.0 + cfg.anabatic.edgeCostK = -10.0 + cfg.anabatic.edgeHInc = 1.0 + cfg.anabatic.edgeHScaling = 1.0 + cfg.anabatic.globalIterations = 10 + cfg.anabatic.globalIterations = [ 1, 100 ] + cfg.anabatic.gcell.displayMode = 1 + cfg.anabatic.gcell.displayMode = (("Boundary", 1), ("Density", 2)) + cfg.katana.hTracksReservedLocal = 4 + cfg.katana.hTracksReservedLocal = [0, 20] + cfg.katana.vTracksReservedLocal = 3 + cfg.katana.vTracksReservedLocal = [0, 20] + cfg.katana.termSatReservedLocal = 8 + cfg.katana.termSatThreshold = 9 + cfg.katana.eventsLimit = 4000002 + cfg.katana.ripupCost = 3 + cfg.katana.ripupCost = [0, None] + cfg.katana.strapRipupLimit = 16 + cfg.katana.strapRipupLimit = [1, None] + cfg.katana.localRipupLimit = 9 + cfg.katana.localRipupLimit = [1, None] + cfg.katana.globalRipupLimit = 5 + cfg.katana.globalRipupLimit = [1, None] + cfg.katana.longGlobalRipupLimit = 5 + cfg.chip.padCoreSide = 'South' + + # Plugins setup + with CfgCache(priority=Cfg.Parameter.Priority.ConfigurationFile) as cfg: + cfg.viewer.minimumSize = 500 + cfg.viewer.pixelThreshold = 10 + cfg.chip.block.rails.count = 5 + cfg.chip.block.rails.hWidth = u(2.68) + cfg.chip.block.rails.vWidth = u(2.68) + cfg.chip.block.rails.hSpacing = u(0.7) + cfg.chip.block.rails.vSpacing = u(0.7) + cfg.clockTree.minimumSide = l(600) + cfg.clockTree.buffer = 'buf_x1' + cfg.clockTree.placerEngine = 'Etesian' + cfg.block.spareSide = 10 + cfg.spares.buffer = 'buf_x4' + cfg.spares.maxSinks = 31 + + +def _load(): + af = CRL.AllianceFramework.get() + db = DataBase.getDB() + tech = db.getTechnology() + rootlib = db.getRootLibrary() + + lib = Library.create(rootlib, 'StdCell3V3Lib') + new_cells = { + 'a2_x2': Cell.create(lib, 'a2_x2'), + 'a3_x2': Cell.create(lib, 'a3_x2'), + 'a4_x2': Cell.create(lib, 'a4_x2'), + 'ao22_x2': Cell.create(lib, 'ao22_x2'), + 'mx2_x2': Cell.create(lib, 'mx2_x2'), + 'mx3_x2': Cell.create(lib, 'mx3_x2'), + 'nsnrlatch_x1': Cell.create(lib, 'nsnrlatch_x1'), + 'nxr2_x1': Cell.create(lib, 'nxr2_x1'), + 'o2_x2': Cell.create(lib, 'o2_x2'), + 'o3_x2': Cell.create(lib, 'o3_x2'), + 'o4_x2': Cell.create(lib, 'o4_x2'), + 'oa22_x2': Cell.create(lib, 'oa22_x2'), + 'powmid_x0': Cell.create(lib, 'powmid_x0'), + 'sff1_x4': Cell.create(lib, 'sff1_x4'), + 'sff1r_x4': Cell.create(lib, 'sff1r_x4'), + 'xr2_x1': Cell.create(lib, 'xr2_x1'), + 'fill': Cell.create(lib, 'fill'), + 'tie': Cell.create(lib, 'tie'), + 'tie_diff': Cell.create(lib, 'tie_diff'), + 'tie_poly': Cell.create(lib, 'tie_poly'), + 'fill_w2': Cell.create(lib, 'fill_w2'), + 'tie_w2': Cell.create(lib, 'tie_w2'), + 'tie_diff_w2': Cell.create(lib, 'tie_diff_w2'), + 'tie_poly_w2': Cell.create(lib, 'tie_poly_w2'), + 'fill_w4': Cell.create(lib, 'fill_w4'), + 'tie_w4': Cell.create(lib, 'tie_w4'), + 'tie_diff_w4': Cell.create(lib, 'tie_diff_w4'), + 'tie_poly_w4': Cell.create(lib, 'tie_poly_w4'), + 'diode_w1': Cell.create(lib, 'diode_w1'), + 'zero_x1': Cell.create(lib, 'zero_x1'), + 'one_x1': Cell.create(lib, 'one_x1'), + 'zeroone_x1': Cell.create(lib, 'zeroone_x1'), + 'decap_w0': Cell.create(lib, 'decap_w0'), + 'inv_x0': Cell.create(lib, 'inv_x0'), + 'inv_x1': Cell.create(lib, 'inv_x1'), + 'inv_x2': Cell.create(lib, 'inv_x2'), + 'inv_x4': Cell.create(lib, 'inv_x4'), + 'buf_x1': Cell.create(lib, 'buf_x1'), + 'buf_x2': Cell.create(lib, 'buf_x2'), + 'buf_x4': Cell.create(lib, 'buf_x4'), + 'nand2_x0': Cell.create(lib, 'nand2_x0'), + 'nand3_x0': Cell.create(lib, 'nand3_x0'), + 'nand4_x0': Cell.create(lib, 'nand4_x0'), + 'nor2_x0': Cell.create(lib, 'nor2_x0'), + 'nor3_x0': Cell.create(lib, 'nor3_x0'), + 'nor4_x0': Cell.create(lib, 'nor4_x0'), + } + + cell = new_cells['a2_x2'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(5.6000000000000005), u(14.0), + )) + nets = { + '*': Net.create(cell, '*'), + '_net0': Net.create(cell, '_net0'), + '_net1': Net.create(cell, '_net1'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'q': Net.create(cell, 'q'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((0.49,0.56),(0.49,1.26),(0.91,1.26),(0.91,0.56),(0.49,0.56)), + ) + createRL( + tech, net, 'COMP', + ((2.66,0.84),(2.66,3.5),(4.34,3.5),(4.34,0.84),(2.66,0.84)), + ) + createRL( + tech, net, 'COMP', + ((1.26,2.17),(1.26,4.83),(1.54,4.83),(1.54,2.17),(1.26,2.17)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(5.6,1.68),(5.6,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.39,0.93),(3.39,1.15),(3.61,1.15),(3.61,0.93),(3.39,0.93)), + ) + createRL( + tech, net, 'Contact', + ((3.39,1.43),(3.39,1.65),(3.61,1.65),(3.61,1.43),(3.39,1.43)), + ) + createRL( + tech, net, 'Contact', + ((0.59,0.87),(0.59,1.09),(0.81,1.09),(0.81,0.87),(0.59,0.87)), + ) + net = nets['q'] + createRL( + tech, net, 'COMP', + ((4.34,0.84),(4.34,3.5),(5.08,3.5),(5.08,0.84),(4.34,0.84)), + ) + createRL( + tech, net, 'COMP', + ((4.34,7.7),(4.34,13.3),(5.08,13.3),(5.08,7.7),(4.34,7.7)), + ) + createRL( + tech, net, 'Metal1', + ((4.73,1.91),(4.73,3.285),(4.77,3.285),(4.77,7.815),(4.73,7.815),(4.73,12.09),(5.07,12.09),(5.07,7.815),(5.03,7.815),(5.03,3.285),(5.07,3.285),(5.07,1.91),(4.73,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.9), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.9), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((4.79,2.06),(4.79,2.28),(5.01,2.28),(5.01,2.06),(4.79,2.06)), + ) + createRL( + tech, net, 'Contact', + ((4.79,2.56),(4.79,2.78),(5.01,2.78),(5.01,2.56),(4.79,2.56)), + ) + createRL( + tech, net, 'Contact', + ((4.79,3.06),(4.79,3.28),(5.01,3.28),(5.01,3.06),(4.79,3.06)), + ) + createRL( + tech, net, 'Contact', + ((4.79,7.82),(4.79,8.04),(5.01,8.04),(5.01,7.82),(4.79,7.82)), + ) + createRL( + tech, net, 'Contact', + ((4.79,8.32),(4.79,8.54),(5.01,8.54),(5.01,8.32),(4.79,8.32)), + ) + createRL( + tech, net, 'Contact', + ((4.79,8.82),(4.79,9.04),(5.01,9.04),(5.01,8.82),(4.79,8.82)), + ) + createRL( + tech, net, 'Contact', + ((4.79,9.32),(4.79,9.54),(5.01,9.54),(5.01,9.32),(4.79,9.32)), + ) + createRL( + tech, net, 'Contact', + ((4.79,9.82),(4.79,10.04),(5.01,10.04),(5.01,9.82),(4.79,9.82)), + ) + createRL( + tech, net, 'Contact', + ((4.79,10.32),(4.79,10.54),(5.01,10.54),(5.01,10.32),(4.79,10.32)), + ) + createRL( + tech, net, 'Contact', + ((4.79,10.82),(4.79,11.04),(5.01,11.04),(5.01,10.82),(4.79,10.82)), + ) + createRL( + tech, net, 'Contact', + ((4.79,11.32),(4.79,11.54),(5.01,11.54),(5.01,11.32),(4.79,11.32)), + ) + createRL( + tech, net, 'Contact', + ((4.79,11.82),(4.79,12.04),(5.01,12.04),(5.01,11.82),(4.79,11.82)), + ) + net = nets['*'] + createRL( + tech, net, 'Nplus', + ((1.66,12.37),(1.66,13.39),(2.54,13.39),(2.54,12.37),(1.66,12.37)), + ) + createRL( + tech, net, 'Nplus', + ((1.79,0.61),(1.79,1.94),(0.36,1.94),(0.36,5.06),(2.41,5.06),(2.41,3.73),(5.24,3.73),(5.24,0.61),(1.79,0.61)), + ) + createRL( + tech, net, 'Pplus', + ((3.16,7.47),(3.16,8.87),(0.36,8.87),(0.36,13.15),(1.04,13.15),(1.04,12.13),(3.16,12.13),(3.16,13.53),(5.24,13.53),(5.24,7.47),(3.16,7.47)), + ) + createRL( + tech, net, 'Pplus', + ((0.33,0.33),(0.33,1.49),(1.07,1.49),(1.07,0.33),(0.33,0.33)), + ) + net = nets['_net0'] + createRL( + tech, net, 'Poly2', + ((4.06,0.62),(4.06,5.42),(2.06,5.42),(2.06,5.78),(4.06,5.78),(4.06,13.52),(4.34,13.52),(4.34,0.62),(4.06,0.62)), + ) + createRL( + tech, net, 'COMP', + ((0.52,2.17),(0.52,4.83),(1.26,4.83),(1.26,2.17),(0.52,2.17)), + ) + createRL( + tech, net, 'COMP', + ((1.54,9.1),(1.54,11.9),(2.66,11.9),(2.66,9.1),(1.54,9.1)), + ) + createRL( + tech, net, 'Metal1', + ((0.53,1.91),(0.53,4.615),(0.87,4.615),(0.87,2.915),(1.985,2.915),(1.985,9.385),(1.93,9.385),(1.93,12.09),(2.27,12.09),(2.27,9.385),(2.215,9.385),(2.215,5.715),(2.41,5.715),(2.41,5.485),(2.215,5.485),(2.215,2.685),(0.87,2.685),(0.87,1.91),(0.53,1.91)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.39),(0.59,2.61),(0.81,2.61),(0.81,2.39),(0.59,2.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.89),(0.59,3.11),(0.81,3.11),(0.81,2.89),(0.59,2.89)), + ) + createRL( + tech, net, 'Contact', + ((0.59,3.39),(0.59,3.61),(0.81,3.61),(0.81,3.39),(0.59,3.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,3.89),(0.59,4.11),(0.81,4.11),(0.81,3.89),(0.59,3.89)), + ) + createRL( + tech, net, 'Contact', + ((0.59,4.39),(0.59,4.61),(0.81,4.61),(0.81,4.39),(0.59,4.39)), + ) + createRL( + tech, net, 'Contact', + ((2.13,5.49),(2.13,5.71),(2.35,5.71),(2.35,5.49),(2.13,5.49)), + ) + createRL( + tech, net, 'Contact', + ((1.99,9.39),(1.99,9.61),(2.21,9.61),(2.21,9.39),(1.99,9.39)), + ) + createRL( + tech, net, 'Contact', + ((1.99,9.89),(1.99,10.11),(2.21,10.11),(2.21,9.89),(1.99,9.89)), + ) + createRL( + tech, net, 'Contact', + ((1.99,10.39),(1.99,10.61),(2.21,10.61),(2.21,10.39),(1.99,10.39)), + ) + createRL( + tech, net, 'Contact', + ((1.99,10.89),(1.99,11.11),(2.21,11.11),(2.21,10.89),(1.99,10.89)), + ) + createRL( + tech, net, 'Contact', + ((1.99,11.39),(1.99,11.61),(2.21,11.61),(2.21,11.39),(1.99,11.39)), + ) + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((0.52,9.1),(0.52,12.92),(0.88,12.92),(0.88,11.9),(1.54,11.9),(1.54,9.1),(0.52,9.1)), + ) + createRL( + tech, net, 'COMP', + ((3.32,7.7),(3.32,9.1),(2.66,9.1),(2.66,11.9),(3.32,11.9),(3.32,13.3),(4.34,13.3),(4.34,7.7),(3.32,7.7)), + ) + createRL( + tech, net, 'COMP', + ((1.82,12.6),(1.82,13.16),(2.38,13.16),(2.38,12.6),(1.82,12.6)), + ) + createRL( + tech, net, 'Nwell', + ((-0.42,6.72),(-0.42,15.12),(6.02,15.12),(6.02,6.72),(-0.42,6.72)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(5.6,14.0),(5.6,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.39,12.42),(3.39,12.64),(3.61,12.64),(3.61,12.42),(3.39,12.42)), + ) + createRL( + tech, net, 'Contact', + ((3.39,12.92),(3.39,13.14),(3.61,13.14),(3.61,12.92),(3.39,12.92)), + ) + createRL( + tech, net, 'Contact', + ((0.59,12.63),(0.59,12.85),(0.81,12.85),(0.81,12.63),(0.59,12.63)), + ) + createRL( + tech, net, 'Contact', + ((1.99,12.77),(1.99,12.99),(2.21,12.99),(2.21,12.77),(1.99,12.77)), + ) + net = nets['_net1'] + createRL( + tech, net, 'COMP', + ((1.95,0.84),(1.95,2.17),(1.54,2.17),(1.54,4.83),(2.25,4.83),(2.25,3.5),(2.66,3.5),(2.66,0.84),(1.95,0.84)), + ) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((1.26,1.95),(1.26,6.82),(0.66,6.82),(0.66,7.18),(1.26,7.18),(1.26,12.12),(1.54,12.12),(1.54,1.95),(1.26,1.95)), + ) + createRL( + tech, net, 'Metal1', + ((0.57,4.845),(0.57,12.09),(0.83,12.09),(0.83,7.115),(1.01,7.115),(1.01,6.885),(0.83,6.885),(0.83,4.845),(0.57,4.845)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(0.26), u(4.845), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(0.26), u(4.845), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((0.73,6.89),(0.73,7.11),(0.95,7.11),(0.95,6.89),(0.73,6.89)), + ) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((2.66,0.62),(2.66,4.38),(3.54,4.38),(3.54,4.02),(2.94,4.02),(2.94,0.62),(2.66,0.62)), + ) + createRL( + tech, net, 'Poly2', + ((2.66,6.82),(2.66,12.12),(2.94,12.12),(2.94,7.18),(3.54,7.18),(3.54,6.82),(2.66,6.82)), + ) + createRL( + tech, net, 'Metal1', + ((3.37,1.91),(3.37,4.085),(3.19,4.085),(3.19,4.315),(3.37,4.315),(3.37,6.885),(3.19,6.885),(3.19,7.115),(3.37,7.115),(3.37,12.09),(3.63,12.09),(3.63,1.91),(3.37,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.25,6.89),(3.25,7.11),(3.47,7.11),(3.47,6.89),(3.25,6.89)), + ) + createRL( + tech, net, 'Contact', + ((3.25,4.09),(3.25,4.31),(3.47,4.31),(3.47,4.09),(3.25,4.09)), + ) + nets['vss'].setGlobal(True) + nets['vdd'].setGlobal(True) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['q'].setDirection(Net.Direction.OUT) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + + cell = new_cells['a3_x2'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(7.0), u(14.0), + )) + nets = { + '*': Net.create(cell, '*'), + '_net0': Net.create(cell, '_net0'), + '_net1': Net.create(cell, '_net1'), + '_net2': Net.create(cell, '_net2'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'i2': Net.create(cell, 'i2'), + 'q': Net.create(cell, 'q'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((3.22,12.6),(3.22,13.16),(3.78,13.16),(3.78,12.6),(3.22,12.6)), + ) + createRL( + tech, net, 'COMP', + ((4.72,7.7),(4.72,9.1),(4.06,9.1),(4.06,11.9),(4.72,11.9),(4.72,13.3),(5.74,13.3),(5.74,7.7),(4.72,7.7)), + ) + createRL( + tech, net, 'COMP', + ((1.26,9.1),(1.26,11.9),(1.92,11.9),(1.92,12.92),(2.28,12.92),(2.28,11.9),(2.94,11.9),(2.94,9.1),(1.26,9.1)), + ) + createRL( + tech, net, 'Nwell', + ((-0.42,6.72),(-0.42,15.12),(7.42,15.12),(7.42,6.72),(-0.42,6.72)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(7.0,14.0),(7.0,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(7.0), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(7.0), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.39,12.77),(3.39,12.99),(3.61,12.99),(3.61,12.77),(3.39,12.77)), + ) + createRL( + tech, net, 'Contact', + ((4.79,12.42),(4.79,12.64),(5.01,12.64),(5.01,12.42),(4.79,12.42)), + ) + createRL( + tech, net, 'Contact', + ((4.79,12.92),(4.79,13.14),(5.01,13.14),(5.01,12.92),(4.79,12.92)), + ) + createRL( + tech, net, 'Contact', + ((1.99,12.63),(1.99,12.85),(2.21,12.85),(2.21,12.63),(1.99,12.63)), + ) + net = nets['q'] + createRL( + tech, net, 'COMP', + ((5.74,0.84),(5.74,3.5),(6.48,3.5),(6.48,0.84),(5.74,0.84)), + ) + createRL( + tech, net, 'COMP', + ((5.74,7.7),(5.74,13.3),(6.48,13.3),(6.48,7.7),(5.74,7.7)), + ) + createRL( + tech, net, 'Metal1', + ((6.13,1.91),(6.13,3.285),(6.17,3.285),(6.17,7.815),(6.13,7.815),(6.13,12.09),(6.47,12.09),(6.47,7.815),(6.43,7.815),(6.43,3.285),(6.47,3.285),(6.47,1.91),(6.13,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(6.3), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(6.3), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((6.19,2.06),(6.19,2.28),(6.41,2.28),(6.41,2.06),(6.19,2.06)), + ) + createRL( + tech, net, 'Contact', + ((6.19,2.56),(6.19,2.78),(6.41,2.78),(6.41,2.56),(6.19,2.56)), + ) + createRL( + tech, net, 'Contact', + ((6.19,3.06),(6.19,3.28),(6.41,3.28),(6.41,3.06),(6.19,3.06)), + ) + createRL( + tech, net, 'Contact', + ((6.19,7.82),(6.19,8.04),(6.41,8.04),(6.41,7.82),(6.19,7.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,8.32),(6.19,8.54),(6.41,8.54),(6.41,8.32),(6.19,8.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,8.82),(6.19,9.04),(6.41,9.04),(6.41,8.82),(6.19,8.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,9.32),(6.19,9.54),(6.41,9.54),(6.41,9.32),(6.19,9.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,9.82),(6.19,10.04),(6.41,10.04),(6.41,9.82),(6.19,9.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,10.32),(6.19,10.54),(6.41,10.54),(6.41,10.32),(6.19,10.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,10.82),(6.19,11.04),(6.41,11.04),(6.41,10.82),(6.19,10.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,11.32),(6.19,11.54),(6.41,11.54),(6.41,11.32),(6.19,11.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,11.82),(6.19,12.04),(6.41,12.04),(6.41,11.82),(6.19,11.82)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((3.06,0.47),(3.06,1.49),(3.94,1.49),(3.94,0.47),(3.06,0.47)), + ) + createRL( + tech, net, 'Pplus', + ((4.56,7.47),(4.56,8.87),(0.36,8.87),(0.36,12.13),(1.76,12.13),(1.76,13.15),(2.44,13.15),(2.44,12.13),(4.56,12.13),(4.56,13.53),(6.64,13.53),(6.64,7.47),(4.56,7.47)), + ) + createRL( + tech, net, 'Nplus', + ((3.06,12.37),(3.06,13.39),(3.94,13.39),(3.94,12.37),(3.06,12.37)), + ) + createRL( + tech, net, 'Nplus', + ((4.56,0.61),(4.56,1.87),(0.36,1.87),(0.36,5.13),(5.24,5.13),(5.24,3.73),(6.64,3.73),(6.64,0.61),(4.56,0.61)), + ) + net = nets['_net1'] + createRL( + tech, net, 'Poly2', + ((5.46,0.62),(5.46,5.42),(4.86,5.42),(4.86,5.78),(5.46,5.78),(5.46,13.52),(5.74,13.52),(5.74,0.62),(5.46,0.62)), + ) + createRL( + tech, net, 'COMP', + ((2.94,9.1),(2.94,11.9),(4.06,11.9),(4.06,9.1),(2.94,9.1)), + ) + createRL( + tech, net, 'COMP', + ((0.52,9.1),(0.52,11.9),(1.26,11.9),(1.26,9.1),(0.52,9.1)), + ) + createRL( + tech, net, 'COMP', + ((0.52,2.1),(0.52,4.9),(1.26,4.9),(1.26,2.1),(0.52,2.1)), + ) + createRL( + tech, net, 'Metal1', + ((0.53,2.355),(0.53,3.27),(0.87,3.27),(0.87,2.915),(4.785,2.915),(4.785,11.085),(3.67,11.085),(3.67,10.73),(3.33,10.73),(3.33,11.085),(0.87,11.085),(0.87,10.73),(0.53,10.73),(0.53,11.645),(0.87,11.645),(0.87,11.315),(3.33,11.315),(3.33,11.645),(3.67,11.645),(3.67,11.315),(5.015,11.315),(5.015,5.715),(5.21,5.715),(5.21,5.485),(5.015,5.485),(5.015,2.685),(0.87,2.685),(0.87,2.355),(0.53,2.355)), + ) + createRL( + tech, net, 'Contact', + ((4.93,5.49),(4.93,5.71),(5.15,5.71),(5.15,5.49),(4.93,5.49)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.36),(0.59,2.58),(0.81,2.58),(0.81,2.36),(0.59,2.36)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.86),(0.59,3.08),(0.81,3.08),(0.81,2.86),(0.59,2.86)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.92),(0.59,11.14),(0.81,11.14),(0.81,10.92),(0.59,10.92)), + ) + createRL( + tech, net, 'Contact', + ((0.59,11.42),(0.59,11.64),(0.81,11.64),(0.81,11.42),(0.59,11.42)), + ) + createRL( + tech, net, 'Contact', + ((3.39,10.92),(3.39,11.14),(3.61,11.14),(3.61,10.92),(3.39,10.92)), + ) + createRL( + tech, net, 'Contact', + ((3.39,11.42),(3.39,11.64),(3.61,11.64),(3.61,11.42),(3.39,11.42)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((3.22,0.7),(3.22,1.26),(3.78,1.26),(3.78,0.7),(3.22,0.7)), + ) + createRL( + tech, net, 'COMP', + ((4.72,0.84),(4.72,2.1),(4.06,2.1),(4.06,4.9),(5.08,4.9),(5.08,3.5),(5.74,3.5),(5.74,0.84),(4.72,0.84)), + ) + createRL( + tech, net, 'COMP', + ((2.66,2.1),(2.66,4.9),(2.94,4.9),(2.94,2.1),(2.66,2.1)), + ) + createRL( + tech, net, 'COMP', + ((1.26,2.1),(1.26,4.9),(1.54,4.9),(1.54,2.1),(1.26,2.1)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(7.0,1.68),(7.0,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(7.0), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(7.0), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.39,0.87),(3.39,1.09),(3.61,1.09),(3.61,0.87),(3.39,0.87)), + ) + createRL( + tech, net, 'Contact', + ((4.79,0.93),(4.79,1.15),(5.01,1.15),(5.01,0.93),(4.79,0.93)), + ) + createRL( + tech, net, 'Contact', + ((4.79,1.43),(4.79,1.65),(5.01,1.65),(5.01,1.43),(4.79,1.43)), + ) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((1.26,1.88),(1.26,5.42),(0.66,5.42),(0.66,5.78),(1.26,5.78),(1.26,12.12),(1.54,12.12),(1.54,1.88),(1.26,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((0.57,3.5),(0.57,10.5),(0.83,10.5),(0.83,5.715),(1.01,5.715),(1.01,5.485),(0.83,5.485),(0.83,3.5),(0.57,3.5)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(0.26), u(3.5), u(10.5), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(0.26), u(3.5), u(10.5), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((0.73,5.49),(0.73,5.71),(0.95,5.71),(0.95,5.49),(0.73,5.49)), + ) + net = nets['_net0'] + createRL( + tech, net, 'COMP', + ((1.54,2.1),(1.54,4.9),(2.66,4.9),(2.66,2.1),(1.54,2.1)), + ) + net = nets['_net2'] + createRL( + tech, net, 'COMP', + ((2.94,2.1),(2.94,4.9),(4.06,4.9),(4.06,2.1),(2.94,2.1)), + ) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((2.66,1.88),(2.66,6.82),(2.06,6.82),(2.06,7.18),(2.66,7.18),(2.66,12.12),(2.94,12.12),(2.94,1.88),(2.66,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((1.97,3.145),(1.97,10.855),(2.23,10.855),(2.23,7.115),(2.41,7.115),(2.41,6.885),(2.23,6.885),(2.23,3.145),(1.97,3.145)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(0.26), u(3.145), u(10.855), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(0.26), u(3.145), u(10.855), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((2.13,6.89),(2.13,7.11),(2.35,7.11),(2.35,6.89),(2.13,6.89)), + ) + net = nets['i2'] + createRL( + tech, net, 'Poly2', + ((4.06,1.88),(4.06,6.82),(3.46,6.82),(3.46,7.18),(4.06,7.18),(4.06,12.12),(4.34,12.12),(4.34,1.88),(4.06,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((3.37,3.145),(3.37,10.5),(3.63,10.5),(3.63,7.115),(3.81,7.115),(3.81,6.885),(3.63,6.885),(3.63,3.145),(3.37,3.145)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(0.26), u(3.145), u(10.5), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(0.26), u(3.145), u(10.5), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.53,6.89),(3.53,7.11),(3.75,7.11),(3.75,6.89),(3.53,6.89)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['q'].setDirection(Net.Direction.OUT) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + nets['i2'].setDirection(Net.Direction.IN) + + cell = new_cells['a4_x2'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(8.4), u(14.0), + )) + nets = { + '*': Net.create(cell, '*'), + '_net0': Net.create(cell, '_net0'), + '_net1': Net.create(cell, '_net1'), + '_net2': Net.create(cell, '_net2'), + '_net3': Net.create(cell, '_net3'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'i2': Net.create(cell, 'i2'), + 'i3': Net.create(cell, 'i3'), + 'q': Net.create(cell, 'q'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((0.52,9.1),(0.52,12.92),(0.88,12.92),(0.88,11.9),(1.54,11.9),(1.54,9.1),(0.52,9.1)), + ) + createRL( + tech, net, 'COMP', + ((4.62,12.6),(4.62,13.16),(5.18,13.16),(5.18,12.6),(4.62,12.6)), + ) + createRL( + tech, net, 'COMP', + ((2.66,9.1),(2.66,11.9),(3.32,11.9),(3.32,12.92),(3.68,12.92),(3.68,11.9),(4.34,11.9),(4.34,9.1),(2.66,9.1)), + ) + createRL( + tech, net, 'COMP', + ((6.12,7.7),(6.12,9.1),(5.46,9.1),(5.46,11.9),(6.12,11.9),(6.12,13.3),(7.14,13.3),(7.14,7.7),(6.12,7.7)), + ) + createRL( + tech, net, 'COMP', + ((1.82,12.6),(1.82,13.16),(2.38,13.16),(2.38,12.6),(1.82,12.6)), + ) + createRL( + tech, net, 'Nwell', + ((-0.42,6.72),(-0.42,15.12),(8.82,15.12),(8.82,6.72),(-0.42,6.72)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(8.4,14.0),(8.4,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.2), u(8.4), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.2), u(8.4), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.39,12.63),(3.39,12.85),(3.61,12.85),(3.61,12.63),(3.39,12.63)), + ) + createRL( + tech, net, 'Contact', + ((0.59,12.63),(0.59,12.85),(0.81,12.85),(0.81,12.63),(0.59,12.63)), + ) + createRL( + tech, net, 'Contact', + ((6.19,12.42),(6.19,12.64),(6.41,12.64),(6.41,12.42),(6.19,12.42)), + ) + createRL( + tech, net, 'Contact', + ((6.19,12.92),(6.19,13.14),(6.41,13.14),(6.41,12.92),(6.19,12.92)), + ) + createRL( + tech, net, 'Contact', + ((4.79,12.77),(4.79,12.99),(5.01,12.99),(5.01,12.77),(4.79,12.77)), + ) + createRL( + tech, net, 'Contact', + ((1.99,12.77),(1.99,12.99),(2.21,12.99),(2.21,12.77),(1.99,12.77)), + ) + net = nets['q'] + createRL( + tech, net, 'COMP', + ((7.14,7.7),(7.14,13.3),(7.88,13.3),(7.88,7.7),(7.14,7.7)), + ) + createRL( + tech, net, 'COMP', + ((7.14,0.84),(7.14,3.5),(7.88,3.5),(7.88,0.84),(7.14,0.84)), + ) + createRL( + tech, net, 'Metal1', + ((7.53,1.91),(7.53,3.285),(7.57,3.285),(7.57,7.815),(7.53,7.815),(7.53,12.09),(7.87,12.09),(7.87,7.815),(7.83,7.815),(7.83,3.285),(7.87,3.285),(7.87,1.91),(7.53,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(7.7), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(7.7), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((7.59,2.06),(7.59,2.28),(7.81,2.28),(7.81,2.06),(7.59,2.06)), + ) + createRL( + tech, net, 'Contact', + ((7.59,2.56),(7.59,2.78),(7.81,2.78),(7.81,2.56),(7.59,2.56)), + ) + createRL( + tech, net, 'Contact', + ((7.59,3.06),(7.59,3.28),(7.81,3.28),(7.81,3.06),(7.59,3.06)), + ) + createRL( + tech, net, 'Contact', + ((7.59,7.82),(7.59,8.04),(7.81,8.04),(7.81,7.82),(7.59,7.82)), + ) + createRL( + tech, net, 'Contact', + ((7.59,8.32),(7.59,8.54),(7.81,8.54),(7.81,8.32),(7.59,8.32)), + ) + createRL( + tech, net, 'Contact', + ((7.59,8.82),(7.59,9.04),(7.81,9.04),(7.81,8.82),(7.59,8.82)), + ) + createRL( + tech, net, 'Contact', + ((7.59,9.32),(7.59,9.54),(7.81,9.54),(7.81,9.32),(7.59,9.32)), + ) + createRL( + tech, net, 'Contact', + ((7.59,9.82),(7.59,10.04),(7.81,10.04),(7.81,9.82),(7.59,9.82)), + ) + createRL( + tech, net, 'Contact', + ((7.59,10.32),(7.59,10.54),(7.81,10.54),(7.81,10.32),(7.59,10.32)), + ) + createRL( + tech, net, 'Contact', + ((7.59,10.82),(7.59,11.04),(7.81,11.04),(7.81,10.82),(7.59,10.82)), + ) + createRL( + tech, net, 'Contact', + ((7.59,11.32),(7.59,11.54),(7.81,11.54),(7.81,11.32),(7.59,11.32)), + ) + createRL( + tech, net, 'Contact', + ((7.59,11.82),(7.59,12.04),(7.81,12.04),(7.81,11.82),(7.59,11.82)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((4.46,0.47),(4.46,1.49),(5.34,1.49),(5.34,0.47),(4.46,0.47)), + ) + createRL( + tech, net, 'Pplus', + ((5.96,7.47),(5.96,8.87),(0.36,8.87),(0.36,13.15),(1.04,13.15),(1.04,12.13),(3.16,12.13),(3.16,13.15),(3.84,13.15),(3.84,12.13),(5.96,12.13),(5.96,13.53),(8.04,13.53),(8.04,7.47),(5.96,7.47)), + ) + createRL( + tech, net, 'Pplus', + ((1.66,0.47),(1.66,1.49),(2.54,1.49),(2.54,0.47),(1.66,0.47)), + ) + createRL( + tech, net, 'Nplus', + ((1.66,12.37),(1.66,13.39),(2.54,13.39),(2.54,12.37),(1.66,12.37)), + ) + createRL( + tech, net, 'Nplus', + ((4.46,12.37),(4.46,13.39),(5.34,13.39),(5.34,12.37),(4.46,12.37)), + ) + createRL( + tech, net, 'Nplus', + ((5.96,0.61),(5.96,1.87),(0.36,1.87),(0.36,5.13),(6.64,5.13),(6.64,3.73),(8.04,3.73),(8.04,0.61),(5.96,0.61)), + ) + net = nets['_net1'] + createRL( + tech, net, 'Poly2', + ((6.86,0.62),(6.86,6.12),(6.26,6.12),(6.26,6.48),(6.86,6.48),(6.86,13.52),(7.14,13.52),(7.14,0.62),(6.86,0.62)), + ) + createRL( + tech, net, 'COMP', + ((1.54,9.1),(1.54,11.9),(2.66,11.9),(2.66,9.1),(1.54,9.1)), + ) + createRL( + tech, net, 'COMP', + ((4.34,9.1),(4.34,11.9),(5.46,11.9),(5.46,9.1),(4.34,9.1)), + ) + createRL( + tech, net, 'COMP', + ((0.52,2.1),(0.52,4.9),(1.26,4.9),(1.26,2.1),(0.52,2.1)), + ) + createRL( + tech, net, 'Metal1', + ((0.53,2.355),(0.53,3.27),(0.87,3.27),(0.87,2.915),(6.185,2.915),(6.185,11.085),(5.07,11.085),(5.07,10.73),(4.73,10.73),(4.73,11.085),(2.27,11.085),(2.27,10.73),(1.93,10.73),(1.93,11.645),(2.27,11.645),(2.27,11.315),(4.73,11.315),(4.73,11.645),(5.07,11.645),(5.07,11.315),(6.415,11.315),(6.415,6.415),(6.61,6.415),(6.61,6.185),(6.415,6.185),(6.415,2.685),(0.87,2.685),(0.87,2.355),(0.53,2.355)), + ) + createRL( + tech, net, 'Contact', + ((1.99,10.92),(1.99,11.14),(2.21,11.14),(2.21,10.92),(1.99,10.92)), + ) + createRL( + tech, net, 'Contact', + ((1.99,11.42),(1.99,11.64),(2.21,11.64),(2.21,11.42),(1.99,11.42)), + ) + createRL( + tech, net, 'Contact', + ((4.79,10.92),(4.79,11.14),(5.01,11.14),(5.01,10.92),(4.79,10.92)), + ) + createRL( + tech, net, 'Contact', + ((4.79,11.42),(4.79,11.64),(5.01,11.64),(5.01,11.42),(4.79,11.42)), + ) + createRL( + tech, net, 'Contact', + ((6.33,6.19),(6.33,6.41),(6.55,6.41),(6.55,6.19),(6.33,6.19)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.36),(0.59,2.58),(0.81,2.58),(0.81,2.36),(0.59,2.36)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.86),(0.59,3.08),(0.81,3.08),(0.81,2.86),(0.59,2.86)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((4.06,2.1),(4.06,4.9),(4.34,4.9),(4.34,2.1),(4.06,2.1)), + ) + createRL( + tech, net, 'COMP', + ((6.12,0.84),(6.12,2.1),(5.46,2.1),(5.46,4.9),(6.48,4.9),(6.48,3.5),(7.14,3.5),(7.14,0.84),(6.12,0.84)), + ) + createRL( + tech, net, 'COMP', + ((4.62,0.7),(4.62,1.26),(5.18,1.26),(5.18,0.7),(4.62,0.7)), + ) + createRL( + tech, net, 'COMP', + ((1.26,2.1),(1.26,4.9),(1.54,4.9),(1.54,2.1),(1.26,2.1)), + ) + createRL( + tech, net, 'COMP', + ((1.82,0.7),(1.82,1.26),(2.38,1.26),(2.38,0.7),(1.82,0.7)), + ) + createRL( + tech, net, 'COMP', + ((2.66,2.1),(2.66,4.9),(2.94,4.9),(2.94,2.1),(2.66,2.1)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(8.4,1.68),(8.4,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.2), u(8.4), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.2), u(8.4), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((6.19,0.93),(6.19,1.15),(6.41,1.15),(6.41,0.93),(6.19,0.93)), + ) + createRL( + tech, net, 'Contact', + ((6.19,1.43),(6.19,1.65),(6.41,1.65),(6.41,1.43),(6.19,1.43)), + ) + createRL( + tech, net, 'Contact', + ((4.79,0.87),(4.79,1.09),(5.01,1.09),(5.01,0.87),(4.79,0.87)), + ) + createRL( + tech, net, 'Contact', + ((1.99,0.87),(1.99,1.09),(2.21,1.09),(2.21,0.87),(1.99,0.87)), + ) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((1.26,1.88),(1.26,6.82),(0.66,6.82),(0.66,7.18),(1.26,7.18),(1.26,12.12),(1.54,12.12),(1.54,1.88),(1.26,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((0.57,3.5),(0.57,12.09),(0.83,12.09),(0.83,7.115),(1.01,7.115),(1.01,6.885),(0.83,6.885),(0.83,3.5),(0.57,3.5)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(0.26), u(3.5), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(0.26), u(3.5), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((0.73,6.89),(0.73,7.11),(0.95,7.11),(0.95,6.89),(0.73,6.89)), + ) + net = nets['_net3'] + createRL( + tech, net, 'COMP', + ((1.54,2.1),(1.54,4.9),(2.66,4.9),(2.66,2.1),(1.54,2.1)), + ) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((2.66,1.88),(2.66,8.22),(2.06,8.22),(2.06,8.58),(2.66,8.58),(2.66,12.12),(2.94,12.12),(2.94,1.88),(2.66,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((1.97,3.145),(1.97,10.5),(2.23,10.5),(2.23,8.515),(2.41,8.515),(2.41,8.285),(2.23,8.285),(2.23,3.145),(1.97,3.145)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(0.26), u(3.145), u(10.5), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(0.26), u(3.145), u(10.5), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((2.13,8.29),(2.13,8.51),(2.35,8.51),(2.35,8.29),(2.13,8.29)), + ) + net = nets['_net0'] + createRL( + tech, net, 'COMP', + ((2.94,2.1),(2.94,4.9),(4.06,4.9),(4.06,2.1),(2.94,2.1)), + ) + net = nets['i2'] + createRL( + tech, net, 'Poly2', + ((4.06,1.88),(4.06,6.82),(3.46,6.82),(3.46,7.18),(4.06,7.18),(4.06,12.12),(4.34,12.12),(4.34,1.88),(4.06,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((3.37,3.145),(3.37,10.855),(3.63,10.855),(3.63,7.115),(3.81,7.115),(3.81,6.885),(3.63,6.885),(3.63,3.145),(3.37,3.145)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(0.26), u(3.145), u(10.855), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(0.26), u(3.145), u(10.855), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.53,6.89),(3.53,7.11),(3.75,7.11),(3.75,6.89),(3.53,6.89)), + ) + net = nets['_net2'] + createRL( + tech, net, 'COMP', + ((4.34,2.1),(4.34,4.9),(5.46,4.9),(5.46,2.1),(4.34,2.1)), + ) + net = nets['i3'] + createRL( + tech, net, 'Poly2', + ((5.46,1.88),(5.46,5.42),(4.86,5.42),(4.86,5.78),(5.46,5.78),(5.46,12.12),(5.74,12.12),(5.74,1.88),(5.46,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((4.77,3.145),(4.77,10.5),(5.03,10.5),(5.03,5.715),(5.21,5.715),(5.21,5.485),(5.03,5.485),(5.03,3.145),(4.77,3.145)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.9), u(0.26), u(3.145), u(10.5), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.9), u(0.26), u(3.145), u(10.5), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((4.93,5.49),(4.93,5.71),(5.15,5.71),(5.15,5.49),(4.93,5.49)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['q'].setDirection(Net.Direction.OUT) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + nets['i2'].setDirection(Net.Direction.IN) + nets['i3'].setDirection(Net.Direction.IN) + + cell = new_cells['ao22_x2'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(7.0), u(14.0), + )) + nets = { + '*': Net.create(cell, '*'), + '_net0': Net.create(cell, '_net0'), + '_net1': Net.create(cell, '_net1'), + '_net2': Net.create(cell, '_net2'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'i2': Net.create(cell, 'i2'), + 'q': Net.create(cell, 'q'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((3.15,12.6),(3.15,13.16),(3.85,13.16),(3.85,12.6),(3.15,12.6)), + ) + createRL( + tech, net, 'COMP', + ((2.66,8.82),(2.66,11.62),(2.94,11.62),(2.94,8.82),(2.66,8.82)), + ) + createRL( + tech, net, 'COMP', + ((4.72,7.7),(4.72,8.82),(4.06,8.82),(4.06,11.62),(4.72,11.62),(4.72,13.3),(5.74,13.3),(5.74,7.7),(4.72,7.7)), + ) + createRL( + tech, net, 'COMP', + ((0.52,8.82),(0.52,12.92),(0.88,12.92),(0.88,11.62),(1.54,11.62),(1.54,8.82),(0.52,8.82)), + ) + createRL( + tech, net, 'Nwell', + ((-0.42,6.72),(-0.42,15.12),(7.42,15.12),(7.42,6.72),(-0.42,6.72)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(7.0,14.0),(7.0,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(7.0), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(7.0), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.39,12.77),(3.39,12.99),(3.61,12.99),(3.61,12.77),(3.39,12.77)), + ) + createRL( + tech, net, 'Contact', + ((0.59,12.63),(0.59,12.85),(0.81,12.85),(0.81,12.63),(0.59,12.63)), + ) + createRL( + tech, net, 'Contact', + ((4.79,12.42),(4.79,12.64),(5.01,12.64),(5.01,12.42),(4.79,12.42)), + ) + createRL( + tech, net, 'Contact', + ((4.79,12.92),(4.79,13.14),(5.01,13.14),(5.01,12.92),(4.79,12.92)), + ) + net = nets['q'] + createRL( + tech, net, 'COMP', + ((5.74,0.84),(5.74,3.5),(6.48,3.5),(6.48,0.84),(5.74,0.84)), + ) + createRL( + tech, net, 'COMP', + ((5.74,7.7),(5.74,13.3),(6.48,13.3),(6.48,7.7),(5.74,7.7)), + ) + createRL( + tech, net, 'Metal1', + ((6.13,1.91),(6.13,3.285),(6.17,3.285),(6.17,7.815),(6.13,7.815),(6.13,12.09),(6.47,12.09),(6.47,7.815),(6.43,7.815),(6.43,3.285),(6.47,3.285),(6.47,1.91),(6.13,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(6.3), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(6.3), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((6.19,2.06),(6.19,2.28),(6.41,2.28),(6.41,2.06),(6.19,2.06)), + ) + createRL( + tech, net, 'Contact', + ((6.19,2.56),(6.19,2.78),(6.41,2.78),(6.41,2.56),(6.19,2.56)), + ) + createRL( + tech, net, 'Contact', + ((6.19,3.06),(6.19,3.28),(6.41,3.28),(6.41,3.06),(6.19,3.06)), + ) + createRL( + tech, net, 'Contact', + ((6.19,7.82),(6.19,8.04),(6.41,8.04),(6.41,7.82),(6.19,7.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,8.32),(6.19,8.54),(6.41,8.54),(6.41,8.32),(6.19,8.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,8.82),(6.19,9.04),(6.41,9.04),(6.41,8.82),(6.19,8.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,9.32),(6.19,9.54),(6.41,9.54),(6.41,9.32),(6.19,9.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,9.82),(6.19,10.04),(6.41,10.04),(6.41,9.82),(6.19,9.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,10.32),(6.19,10.54),(6.41,10.54),(6.41,10.32),(6.19,10.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,10.82),(6.19,11.04),(6.41,11.04),(6.41,10.82),(6.19,10.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,11.32),(6.19,11.54),(6.41,11.54),(6.41,11.32),(6.19,11.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,11.82),(6.19,12.04),(6.41,12.04),(6.41,11.82),(6.19,11.82)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((2.99,0.47),(2.99,1.49),(4.01,1.49),(4.01,0.47),(2.99,0.47)), + ) + createRL( + tech, net, 'Pplus', + ((4.56,7.47),(4.56,8.59),(0.36,8.59),(0.36,13.15),(1.04,13.15),(1.04,11.85),(4.56,11.85),(4.56,13.53),(6.64,13.53),(6.64,7.47),(4.56,7.47)), + ) + createRL( + tech, net, 'Nplus', + ((2.99,12.37),(2.99,13.39),(4.01,13.39),(4.01,12.37),(2.99,12.37)), + ) + createRL( + tech, net, 'Nplus', + ((4.56,0.61),(4.56,1.87),(0.36,1.87),(0.36,3.73),(1.76,3.73),(1.76,4.61),(2.44,4.61),(2.44,3.73),(6.64,3.73),(6.64,0.61),(4.56,0.61)), + ) + net = nets['_net0'] + createRL( + tech, net, 'Poly2', + ((5.46,0.62),(5.46,5.42),(3.46,5.42),(3.46,5.78),(5.46,5.78),(5.46,13.52),(5.74,13.52),(5.74,0.62),(5.46,0.62)), + ) + createRL( + tech, net, 'COMP', + ((2.94,8.82),(2.94,11.62),(4.06,11.62),(4.06,8.82),(2.94,8.82)), + ) + createRL( + tech, net, 'COMP', + ((1.54,2.1),(1.54,3.5),(1.92,3.5),(1.92,4.38),(2.28,4.38),(2.28,3.5),(2.66,3.5),(2.66,2.1),(1.54,2.1)), + ) + createRL( + tech, net, 'Contact', + ((3.39,9.11),(3.39,9.33),(3.61,9.33),(3.61,9.11),(3.39,9.11)), + ) + createRL( + tech, net, 'Contact', + ((3.39,9.61),(3.39,9.83),(3.61,9.83),(3.61,9.61),(3.39,9.61)), + ) + createRL( + tech, net, 'Contact', + ((3.39,10.11),(3.39,10.33),(3.61,10.33),(3.61,10.11),(3.39,10.11)), + ) + createRL( + tech, net, 'Contact', + ((3.39,10.61),(3.39,10.83),(3.61,10.83),(3.61,10.61),(3.39,10.61)), + ) + createRL( + tech, net, 'Contact', + ((3.39,11.11),(3.39,11.33),(3.61,11.33),(3.61,11.11),(3.39,11.11)), + ) + createRL( + tech, net, 'Contact', + ((3.53,5.49),(3.53,5.71),(3.75,5.71),(3.75,5.49),(3.53,5.49)), + ) + createRL( + tech, net, 'Contact', + ((1.99,4.09),(1.99,4.31),(2.21,4.31),(2.21,4.09),(1.99,4.09)), + ) + createRL( + tech, net, 'Metal1', + ((1.93,4.085),(1.93,4.315),(3.385,4.315),(3.385,9.105),(3.33,9.105),(3.33,11.335),(3.67,11.335),(3.67,9.105),(3.615,9.105),(3.615,5.715),(3.81,5.715),(3.81,5.485),(3.615,5.485),(3.615,4.085),(1.93,4.085)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((3.15,0.7),(3.15,1.26),(3.85,1.26),(3.85,0.7),(3.15,0.7)), + ) + createRL( + tech, net, 'COMP', + ((4.72,0.84),(4.72,2.1),(4.06,2.1),(4.06,3.5),(5.74,3.5),(5.74,0.84),(4.72,0.84)), + ) + createRL( + tech, net, 'COMP', + ((1.26,2.1),(1.26,3.5),(1.54,3.5),(1.54,2.1),(1.26,2.1)), + ) + createRL( + tech, net, 'COMP', + ((2.66,2.1),(2.66,3.5),(2.94,3.5),(2.94,2.1),(2.66,2.1)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(7.0,1.68),(7.0,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(7.0), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(7.0), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.39,0.87),(3.39,1.09),(3.61,1.09),(3.61,0.87),(3.39,0.87)), + ) + createRL( + tech, net, 'Contact', + ((4.79,0.93),(4.79,1.15),(5.01,1.15),(5.01,0.93),(4.79,0.93)), + ) + createRL( + tech, net, 'Contact', + ((4.79,1.43),(4.79,1.65),(5.01,1.65),(5.01,1.43),(4.79,1.43)), + ) + net = nets['_net1'] + createRL( + tech, net, 'COMP', + ((1.54,8.82),(1.54,11.62),(2.66,11.62),(2.66,8.82),(1.54,8.82)), + ) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((1.26,1.88),(1.26,5.42),(0.66,5.42),(0.66,5.78),(1.26,5.78),(1.26,11.84),(1.54,11.84),(1.54,1.88),(1.26,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((0.57,3.645),(0.57,12.09),(0.83,12.09),(0.83,5.715),(1.01,5.715),(1.01,5.485),(0.83,5.485),(0.83,3.645),(0.57,3.645)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(0.26), u(3.645), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(0.26), u(3.645), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((0.73,5.49),(0.73,5.71),(0.95,5.71),(0.95,5.49),(0.73,5.49)), + ) + net = nets['_net2'] + createRL( + tech, net, 'COMP', + ((2.94,2.1),(2.94,3.5),(4.06,3.5),(4.06,2.1),(2.94,2.1)), + ) + createRL( + tech, net, 'COMP', + ((0.52,2.1),(0.52,3.5),(1.26,3.5),(1.26,2.1),(0.52,2.1)), + ) + createRL( + tech, net, 'Metal1', + ((0.53,2.185),(0.53,3.415),(0.87,3.415),(0.87,3.01),(3.33,3.01),(3.33,3.415),(3.67,3.415),(3.67,2.185),(3.33,2.185),(3.33,2.59),(0.87,2.59),(0.87,2.185),(0.53,2.185)), + ) + createRL( + tech, net, 'Contact', + ((3.39,2.19),(3.39,2.41),(3.61,2.41),(3.61,2.19),(3.39,2.19)), + ) + createRL( + tech, net, 'Contact', + ((3.39,2.69),(3.39,2.91),(3.61,2.91),(3.61,2.69),(3.39,2.69)), + ) + createRL( + tech, net, 'Contact', + ((3.39,3.19),(3.39,3.41),(3.61,3.41),(3.61,3.19),(3.39,3.19)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.19),(0.59,2.41),(0.81,2.41),(0.81,2.19),(0.59,2.19)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.69),(0.59,2.91),(0.81,2.91),(0.81,2.69),(0.59,2.69)), + ) + createRL( + tech, net, 'Contact', + ((0.59,3.19),(0.59,3.41),(0.81,3.41),(0.81,3.19),(0.59,3.19)), + ) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((2.66,1.88),(2.66,6.82),(2.06,6.82),(2.06,7.18),(2.66,7.18),(2.66,11.84),(2.94,11.84),(2.94,1.88),(2.66,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((1.97,4.9),(1.97,12.09),(2.23,12.09),(2.23,7.115),(2.41,7.115),(2.41,6.885),(2.23,6.885),(2.23,4.9),(1.97,4.9)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(0.26), u(4.9), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(0.26), u(4.9), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((2.13,6.89),(2.13,7.11),(2.35,7.11),(2.35,6.89),(2.13,6.89)), + ) + net = nets['i2'] + createRL( + tech, net, 'Poly2', + ((4.06,6.82),(4.06,11.84),(4.34,11.84),(4.34,7.18),(4.94,7.18),(4.94,6.82),(4.06,6.82)), + ) + createRL( + tech, net, 'Poly2', + ((4.06,1.88),(4.06,4.38),(4.94,4.38),(4.94,4.02),(4.34,4.02),(4.34,1.88),(4.06,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((4.77,1.91),(4.77,4.085),(4.59,4.085),(4.59,4.315),(4.77,4.315),(4.77,6.885),(4.59,6.885),(4.59,7.115),(4.77,7.115),(4.77,12.09),(5.03,12.09),(5.03,1.91),(4.77,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.9), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.9), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((4.65,6.89),(4.65,7.11),(4.87,7.11),(4.87,6.89),(4.65,6.89)), + ) + createRL( + tech, net, 'Contact', + ((4.65,4.09),(4.65,4.31),(4.87,4.31),(4.87,4.09),(4.65,4.09)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['q'].setDirection(Net.Direction.OUT) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + nets['i2'].setDirection(Net.Direction.IN) + + cell = new_cells['mx2_x2'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(9.8), u(14.0), + )) + nets = { + '*': Net.create(cell, '*'), + '_net0': Net.create(cell, '_net0'), + '_net1': Net.create(cell, '_net1'), + '_net2': Net.create(cell, '_net2'), + '_net3': Net.create(cell, '_net3'), + '_net4': Net.create(cell, '_net4'), + '_net5': Net.create(cell, '_net5'), + 'cmd': Net.create(cell, 'cmd'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'q': Net.create(cell, 'q'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((4.06,9.1),(4.06,11.9),(4.34,11.9),(4.34,9.1),(4.06,9.1)), + ) + createRL( + tech, net, 'COMP', + ((7.52,7.7),(7.52,9.1),(6.86,9.1),(6.86,11.9),(7.52,11.9),(7.52,13.3),(8.54,13.3),(8.54,7.7),(7.52,7.7)), + ) + createRL( + tech, net, 'COMP', + ((5.46,9.1),(5.46,11.9),(5.74,11.9),(5.74,9.1),(5.46,9.1)), + ) + createRL( + tech, net, 'COMP', + ((6.02,12.6),(6.02,13.16),(6.58,13.16),(6.58,12.6),(6.02,12.6)), + ) + createRL( + tech, net, 'COMP', + ((1.26,9.1),(1.26,11.9),(1.92,11.9),(1.92,12.92),(2.28,12.92),(2.28,11.9),(2.94,11.9),(2.94,9.1),(1.26,9.1)), + ) + createRL( + tech, net, 'Nwell', + ((-0.42,6.72),(-0.42,15.12),(10.22,15.12),(10.22,6.72),(-0.42,6.72)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(9.8,14.0),(9.8,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.9), u(9.8), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.9), u(9.8), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((7.59,12.42),(7.59,12.64),(7.81,12.64),(7.81,12.42),(7.59,12.42)), + ) + createRL( + tech, net, 'Contact', + ((7.59,12.92),(7.59,13.14),(7.81,13.14),(7.81,12.92),(7.59,12.92)), + ) + createRL( + tech, net, 'Contact', + ((1.99,12.63),(1.99,12.85),(2.21,12.85),(2.21,12.63),(1.99,12.63)), + ) + createRL( + tech, net, 'Contact', + ((6.19,12.77),(6.19,12.99),(6.41,12.99),(6.41,12.77),(6.19,12.77)), + ) + net = nets['q'] + createRL( + tech, net, 'COMP', + ((8.54,0.84),(8.54,3.5),(9.28,3.5),(9.28,0.84),(8.54,0.84)), + ) + createRL( + tech, net, 'COMP', + ((8.54,7.7),(8.54,13.3),(9.28,13.3),(9.28,7.7),(8.54,7.7)), + ) + createRL( + tech, net, 'Metal1', + ((8.93,1.91),(8.93,3.285),(8.97,3.285),(8.97,7.815),(8.93,7.815),(8.93,12.09),(9.27,12.09),(9.27,7.815),(9.23,7.815),(9.23,3.285),(9.27,3.285),(9.27,1.91),(8.93,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(9.1), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(9.1), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((8.99,7.82),(8.99,8.04),(9.21,8.04),(9.21,7.82),(8.99,7.82)), + ) + createRL( + tech, net, 'Contact', + ((8.99,8.32),(8.99,8.54),(9.21,8.54),(9.21,8.32),(8.99,8.32)), + ) + createRL( + tech, net, 'Contact', + ((8.99,8.82),(8.99,9.04),(9.21,9.04),(9.21,8.82),(8.99,8.82)), + ) + createRL( + tech, net, 'Contact', + ((8.99,9.32),(8.99,9.54),(9.21,9.54),(9.21,9.32),(8.99,9.32)), + ) + createRL( + tech, net, 'Contact', + ((8.99,9.82),(8.99,10.04),(9.21,10.04),(9.21,9.82),(8.99,9.82)), + ) + createRL( + tech, net, 'Contact', + ((8.99,10.32),(8.99,10.54),(9.21,10.54),(9.21,10.32),(8.99,10.32)), + ) + createRL( + tech, net, 'Contact', + ((8.99,10.82),(8.99,11.04),(9.21,11.04),(9.21,10.82),(8.99,10.82)), + ) + createRL( + tech, net, 'Contact', + ((8.99,11.32),(8.99,11.54),(9.21,11.54),(9.21,11.32),(8.99,11.32)), + ) + createRL( + tech, net, 'Contact', + ((8.99,11.82),(8.99,12.04),(9.21,12.04),(9.21,11.82),(8.99,11.82)), + ) + createRL( + tech, net, 'Contact', + ((8.99,2.06),(8.99,2.28),(9.21,2.28),(9.21,2.06),(8.99,2.06)), + ) + createRL( + tech, net, 'Contact', + ((8.99,2.56),(8.99,2.78),(9.21,2.78),(9.21,2.56),(8.99,2.56)), + ) + createRL( + tech, net, 'Contact', + ((8.99,3.06),(8.99,3.28),(9.21,3.28),(9.21,3.06),(8.99,3.06)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((7.36,7.47),(7.36,8.87),(0.36,8.87),(0.36,12.13),(1.76,12.13),(1.76,13.15),(2.44,13.15),(2.44,12.13),(7.36,12.13),(7.36,13.53),(9.44,13.53),(9.44,7.47),(7.36,7.47)), + ) + createRL( + tech, net, 'Pplus', + ((5.86,0.47),(5.86,1.49),(6.74,1.49),(6.74,0.47),(5.86,0.47)), + ) + createRL( + tech, net, 'Nplus', + ((0.36,0.61),(0.36,3.21),(1.04,3.21),(1.04,2.33),(4.56,2.33),(4.56,4.61),(5.24,4.61),(5.24,3.73),(9.44,3.73),(9.44,0.61),(7.36,0.61),(7.36,2.01),(5.24,2.01),(5.24,0.61),(0.36,0.61)), + ) + createRL( + tech, net, 'Nplus', + ((5.86,12.37),(5.86,13.39),(6.74,13.39),(6.74,12.37),(5.86,12.37)), + ) + net = nets['_net1'] + createRL( + tech, net, 'Poly2', + ((8.26,0.62),(8.26,6.82),(4.86,6.82),(4.86,7.18),(8.26,7.18),(8.26,13.52),(8.54,13.52),(8.54,0.62),(8.26,0.62)), + ) + createRL( + tech, net, 'COMP', + ((4.34,0.84),(4.34,2.1),(4.72,2.1),(4.72,4.38),(5.08,4.38),(5.08,3.5),(5.46,3.5),(5.46,2.24),(5.08,2.24),(5.08,0.84),(4.34,0.84)), + ) + createRL( + tech, net, 'COMP', + ((4.34,9.1),(4.34,11.9),(5.46,11.9),(5.46,9.1),(4.34,9.1)), + ) + createRL( + tech, net, 'Contact', + ((4.79,9.39),(4.79,9.61),(5.01,9.61),(5.01,9.39),(4.79,9.39)), + ) + createRL( + tech, net, 'Contact', + ((4.79,9.89),(4.79,10.11),(5.01,10.11),(5.01,9.89),(4.79,9.89)), + ) + createRL( + tech, net, 'Contact', + ((4.79,10.39),(4.79,10.61),(5.01,10.61),(5.01,10.39),(4.79,10.39)), + ) + createRL( + tech, net, 'Contact', + ((4.79,10.89),(4.79,11.11),(5.01,11.11),(5.01,10.89),(4.79,10.89)), + ) + createRL( + tech, net, 'Contact', + ((4.79,11.39),(4.79,11.61),(5.01,11.61),(5.01,11.39),(4.79,11.39)), + ) + createRL( + tech, net, 'Contact', + ((4.79,4.09),(4.79,4.31),(5.01,4.31),(5.01,4.09),(4.79,4.09)), + ) + createRL( + tech, net, 'Contact', + ((4.93,6.89),(4.93,7.11),(5.15,7.11),(5.15,6.89),(4.93,6.89)), + ) + createRL( + tech, net, 'Metal1', + ((4.73,4.085),(4.73,4.315),(4.785,4.315),(4.785,9.385),(4.73,9.385),(4.73,12.09),(5.07,12.09),(5.07,9.385),(5.015,9.385),(5.015,7.115),(5.21,7.115),(5.21,6.885),(5.015,6.885),(5.015,4.315),(5.07,4.315),(5.07,4.085),(4.73,4.085)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((7.52,0.84),(7.52,2.24),(6.86,2.24),(6.86,3.5),(8.54,3.5),(8.54,0.84),(7.52,0.84)), + ) + createRL( + tech, net, 'COMP', + ((6.02,0.7),(6.02,1.26),(6.58,1.26),(6.58,0.7),(6.02,0.7)), + ) + createRL( + tech, net, 'COMP', + ((5.46,2.24),(5.46,3.5),(5.74,3.5),(5.74,2.24),(5.46,2.24)), + ) + createRL( + tech, net, 'COMP', + ((1.26,0.84),(1.26,2.1),(2.94,2.1),(2.94,0.84),(1.26,0.84)), + ) + createRL( + tech, net, 'COMP', + ((4.06,0.84),(4.06,2.1),(4.34,2.1),(4.34,0.84),(4.06,0.84)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(9.8,1.68),(9.8,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.9), u(9.8), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.9), u(9.8), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((7.59,0.93),(7.59,1.15),(7.81,1.15),(7.81,0.93),(7.59,0.93)), + ) + createRL( + tech, net, 'Contact', + ((7.59,1.43),(7.59,1.65),(7.81,1.65),(7.81,1.43),(7.59,1.43)), + ) + createRL( + tech, net, 'Contact', + ((6.19,0.87),(6.19,1.09),(6.41,1.09),(6.41,0.87),(6.19,0.87)), + ) + createRL( + tech, net, 'Contact', + ((1.99,0.93),(1.99,1.15),(2.21,1.15),(2.21,0.93),(1.99,0.93)), + ) + createRL( + tech, net, 'Contact', + ((1.99,1.43),(1.99,1.65),(2.21,1.65),(2.21,1.43),(1.99,1.43)), + ) + net = nets['_net4'] + createRL( + tech, net, 'COMP', + ((5.74,9.1),(5.74,11.9),(6.86,11.9),(6.86,9.1),(5.74,9.1)), + ) + net = nets['_net5'] + createRL( + tech, net, 'Poly2', + ((5.46,8.22),(5.46,12.12),(5.74,12.12),(5.74,8.58),(5.99,8.58),(5.99,8.22),(5.46,8.22)), + ) + createRL( + tech, net, 'Poly2', + ((4.06,0.62),(4.06,2.62),(3.88,2.62),(3.88,2.98),(4.34,2.98),(4.34,0.62),(4.06,0.62)), + ) + createRL( + tech, net, 'COMP', + ((0.52,9.1),(0.52,11.9),(1.26,11.9),(1.26,9.1),(0.52,9.1)), + ) + createRL( + tech, net, 'COMP', + ((0.52,0.84),(0.52,2.98),(0.88,2.98),(0.88,2.1),(1.26,2.1),(1.26,0.84),(0.52,0.84)), + ) + createRL( + tech, net, 'Metal1', + ((0.53,2.685),(0.53,2.915),(0.585,2.915),(0.585,9.385),(0.53,9.385),(0.53,11.615),(0.87,11.615),(0.87,9.385),(0.815,9.385),(0.815,2.915),(5.835,2.915),(5.835,8.285),(5.64,8.285),(5.64,8.515),(6.065,8.515),(6.065,2.685),(0.53,2.685)), + ) + createRL( + tech, net, 'Contact', + ((5.7,8.29),(5.7,8.51),(5.92,8.51),(5.92,8.29),(5.7,8.29)), + ) + createRL( + tech, net, 'Contact', + ((3.95,2.69),(3.95,2.91),(4.17,2.91),(4.17,2.69),(3.95,2.69)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.69),(0.59,2.91),(0.81,2.91),(0.81,2.69),(0.59,2.69)), + ) + createRL( + tech, net, 'Contact', + ((0.59,9.39),(0.59,9.61),(0.81,9.61),(0.81,9.39),(0.59,9.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,9.89),(0.59,10.11),(0.81,10.11),(0.81,9.89),(0.59,9.89)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.39),(0.59,10.61),(0.81,10.61),(0.81,10.39),(0.59,10.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.89),(0.59,11.11),(0.81,11.11),(0.81,10.89),(0.59,10.89)), + ) + createRL( + tech, net, 'Contact', + ((0.59,11.39),(0.59,11.61),(0.81,11.61),(0.81,11.39),(0.59,11.39)), + ) + net = nets['_net2'] + createRL( + tech, net, 'COMP', + ((2.94,0.84),(2.94,2.1),(4.06,2.1),(4.06,0.84),(2.94,0.84)), + ) + net = nets['cmd'] + createRL( + tech, net, 'Poly2', + ((1.26,0.62),(1.26,12.12),(1.54,12.12),(1.54,5.78),(4.06,5.78),(4.06,12.12),(4.34,12.12),(4.34,5.78),(5.74,5.78),(5.74,2.02),(5.46,2.02),(5.46,5.42),(1.54,5.42),(1.54,0.62),(1.26,0.62)), + ) + createRL( + tech, net, 'Metal1', + ((3.37,3.145),(3.37,5.485),(3.33,5.485),(3.33,5.715),(3.37,5.715),(3.37,12.09),(3.63,12.09),(3.63,5.715),(3.67,5.715),(3.67,5.485),(3.63,5.485),(3.63,3.145),(3.37,3.145)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(0.26), u(3.145), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(0.26), u(3.145), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.39,5.49),(3.39,5.71),(3.61,5.71),(3.61,5.49),(3.39,5.49)), + ) + net = nets['_net3'] + createRL( + tech, net, 'COMP', + ((2.94,9.1),(2.94,11.9),(4.06,11.9),(4.06,9.1),(2.94,9.1)), + ) + net = nets['_net0'] + createRL( + tech, net, 'COMP', + ((5.74,2.24),(5.74,3.5),(6.86,3.5),(6.86,2.24),(5.74,2.24)), + ) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((2.66,0.62),(2.66,4.02),(2.06,4.02),(2.06,4.38),(2.94,4.38),(2.94,0.62),(2.66,0.62)), + ) + createRL( + tech, net, 'Poly2', + ((2.06,8.22),(2.06,8.58),(2.66,8.58),(2.66,12.12),(2.94,12.12),(2.94,8.22),(2.06,8.22)), + ) + createRL( + tech, net, 'Contact', + ((2.13,8.29),(2.13,8.51),(2.35,8.51),(2.35,8.29),(2.13,8.29)), + ) + createRL( + tech, net, 'Contact', + ((2.13,4.09),(2.13,4.31),(2.35,4.31),(2.35,4.09),(2.13,4.09)), + ) + createRL( + tech, net, 'Metal1', + ((1.97,3.145),(1.97,12.09),(2.23,12.09),(2.23,8.515),(2.41,8.515),(2.41,8.285),(2.23,8.285),(2.23,4.315),(2.41,4.315),(2.41,4.085),(2.23,4.085),(2.23,3.145),(1.97,3.145)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(0.26), u(3.145), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(0.26), u(3.145), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((6.86,2.02),(6.86,4.38),(7.74,4.38),(7.74,4.02),(7.14,4.02),(7.14,2.02),(6.86,2.02)), + ) + createRL( + tech, net, 'Poly2', + ((6.68,8.22),(6.68,8.58),(6.86,8.58),(6.86,12.12),(7.14,12.12),(7.14,8.22),(6.68,8.22)), + ) + createRL( + tech, net, 'Metal1', + ((7.57,1.91),(7.57,4.085),(7.39,4.085),(7.39,4.315),(7.57,4.315),(7.57,8.285),(6.69,8.285),(6.69,8.515),(7.57,8.515),(7.57,12.09),(7.83,12.09),(7.83,1.91),(7.57,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(7.7), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(7.7), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((7.45,4.09),(7.45,4.31),(7.67,4.31),(7.67,4.09),(7.45,4.09)), + ) + createRL( + tech, net, 'Contact', + ((6.75,8.29),(6.75,8.51),(6.97,8.51),(6.97,8.29),(6.75,8.29)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['q'].setDirection(Net.Direction.OUT) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['cmd'].setDirection(Net.Direction.IN) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + + cell = new_cells['mx3_x2'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(15.4), u(14.0), + )) + nets = { + '*': Net.create(cell, '*'), + '_net0': Net.create(cell, '_net0'), + '_net1': Net.create(cell, '_net1'), + '_net10': Net.create(cell, '_net10'), + '_net2': Net.create(cell, '_net2'), + '_net3': Net.create(cell, '_net3'), + '_net4': Net.create(cell, '_net4'), + '_net5': Net.create(cell, '_net5'), + '_net6': Net.create(cell, '_net6'), + '_net7': Net.create(cell, '_net7'), + '_net8': Net.create(cell, '_net8'), + '_net9': Net.create(cell, '_net9'), + 'cmd0': Net.create(cell, 'cmd0'), + 'cmd1': Net.create(cell, 'cmd1'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'i2': Net.create(cell, 'i2'), + 'q': Net.create(cell, 'q'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['_net5'] + createRL( + tech, net, 'COMP', + ((11.34,0.98),(11.34,2.66),(12.08,2.66),(12.08,0.98),(11.34,0.98)), + ) + createRL( + tech, net, 'COMP', + ((4.34,1.54),(4.34,3.22),(4.72,3.22),(4.72,4.38),(5.08,4.38),(5.08,3.92),(5.46,3.92),(5.46,2.24),(5.08,2.24),(5.08,1.54),(4.34,1.54)), + ) + createRL( + tech, net, 'COMP', + ((11.34,10.5),(11.34,13.3),(12.08,13.3),(12.08,10.5),(11.34,10.5)), + ) + createRL( + tech, net, 'COMP', + ((4.72,9.1),(4.72,10.5),(4.34,10.5),(4.34,13.3),(5.08,13.3),(5.08,11.9),(5.46,11.9),(5.46,9.1),(4.72,9.1)), + ) + createRL( + tech, net, 'Poly2', + ((13.86,1.88),(13.86,5.42),(13.26,5.42),(13.26,5.78),(13.86,5.78),(13.86,13.52),(14.14,13.52),(14.14,1.88),(13.86,1.88)), + ) + createRL( + tech, net, 'Contact', + ((13.33,5.49),(13.33,5.71),(13.55,5.71),(13.55,5.49),(13.33,5.49)), + ) + createRL( + tech, net, 'Contact', + ((4.79,4.09),(4.79,4.31),(5.01,4.31),(5.01,4.09),(4.79,4.09)), + ) + createRL( + tech, net, 'Contact', + ((11.79,10.72),(11.79,10.94),(12.01,10.94),(12.01,10.72),(11.79,10.72)), + ) + createRL( + tech, net, 'Contact', + ((11.79,11.22),(11.79,11.44),(12.01,11.44),(12.01,11.22),(11.79,11.22)), + ) + createRL( + tech, net, 'Contact', + ((11.79,11.72),(11.79,11.94),(12.01,11.94),(12.01,11.72),(11.79,11.72)), + ) + createRL( + tech, net, 'Contact', + ((11.79,2.14),(11.79,2.36),(12.01,2.36),(12.01,2.14),(11.79,2.14)), + ) + createRL( + tech, net, 'Contact', + ((4.79,9.4),(4.79,9.62),(5.01,9.62),(5.01,9.4),(4.79,9.4)), + ) + createRL( + tech, net, 'Contact', + ((4.79,9.9),(4.79,10.12),(5.01,10.12),(5.01,9.9),(4.79,9.9)), + ) + createRL( + tech, net, 'Contact', + ((4.79,10.4),(4.79,10.62),(5.01,10.62),(5.01,10.4),(4.79,10.4)), + ) + createRL( + tech, net, 'Metal1', + ((11.73,1.91),(11.73,2.365),(11.84,2.365),(11.84,2.915),(13.185,2.915),(13.185,9.685),(6.415,9.685),(6.415,4.085),(4.73,4.085),(4.73,4.315),(6.185,4.315),(6.185,9.685),(5.07,9.685),(5.07,9.395),(4.73,9.395),(4.73,10.855),(5.07,10.855),(5.07,9.915),(11.785,9.915),(11.785,10.715),(11.73,10.715),(11.73,12.09),(12.07,12.09),(12.07,10.715),(12.015,10.715),(12.015,9.915),(13.415,9.915),(13.415,5.715),(13.61,5.715),(13.61,5.485),(13.415,5.485),(13.415,2.685),(12.07,2.685),(12.07,1.91),(11.73,1.91)), + ) + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((5.46,9.1),(5.46,11.9),(5.74,11.9),(5.74,9.1),(5.46,9.1)), + ) + createRL( + tech, net, 'COMP', + ((4.06,10.5),(4.06,13.3),(4.34,13.3),(4.34,10.5),(4.06,10.5)), + ) + createRL( + tech, net, 'COMP', + ((12.46,7.7),(12.46,9.66),(13.12,9.66),(13.12,13.3),(14.14,13.3),(14.14,7.7),(12.46,7.7)), + ) + createRL( + tech, net, 'COMP', + ((8.26,10.5),(8.26,13.3),(9.94,13.3),(9.94,10.5),(8.26,10.5)), + ) + createRL( + tech, net, 'COMP', + ((2.66,10.5),(2.66,13.3),(2.94,13.3),(2.94,10.5),(2.66,10.5)), + ) + createRL( + tech, net, 'COMP', + ((6.02,12.6),(6.02,13.16),(6.58,13.16),(6.58,12.6),(6.02,12.6)), + ) + createRL( + tech, net, 'COMP', + ((11.06,10.5),(11.06,13.3),(11.34,13.3),(11.34,10.5),(11.06,10.5)), + ) + createRL( + tech, net, 'COMP', + ((6.86,9.1),(6.86,11.9),(7.14,11.9),(7.14,9.1),(6.86,9.1)), + ) + createRL( + tech, net, 'COMP', + ((0.52,7.7),(0.52,12.92),(0.88,12.92),(0.88,9.66),(1.54,9.66),(1.54,7.7),(0.52,7.7)), + ) + createRL( + tech, net, 'Nwell', + ((-0.42,6.72),(-0.42,15.12),(15.82,15.12),(15.82,6.72),(-0.42,6.72)), + ) + createRL( + tech, net, 'Metal1', + ((13.13,10.145),(13.13,12.32),(9.27,12.32),(9.27,10.785),(8.93,10.785),(8.93,12.32),(0.0,12.32),(0.0,14.0),(15.4,14.0),(15.4,12.32),(13.47,12.32),(13.47,10.145),(13.13,10.145)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(7.7), u(15.4), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(7.7), u(15.4), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((6.19,12.77),(6.19,12.99),(6.41,12.99),(6.41,12.77),(6.19,12.77)), + ) + createRL( + tech, net, 'Contact', + ((0.59,12.63),(0.59,12.85),(0.81,12.85),(0.81,12.63),(0.59,12.63)), + ) + createRL( + tech, net, 'Contact', + ((8.99,10.79),(8.99,11.01),(9.21,11.01),(9.21,10.79),(8.99,10.79)), + ) + createRL( + tech, net, 'Contact', + ((8.99,11.29),(8.99,11.51),(9.21,11.51),(9.21,11.29),(8.99,11.29)), + ) + createRL( + tech, net, 'Contact', + ((8.99,11.79),(8.99,12.01),(9.21,12.01),(9.21,11.79),(8.99,11.79)), + ) + createRL( + tech, net, 'Contact', + ((8.99,12.29),(8.99,12.51),(9.21,12.51),(9.21,12.29),(8.99,12.29)), + ) + createRL( + tech, net, 'Contact', + ((8.99,12.79),(8.99,13.01),(9.21,13.01),(9.21,12.79),(8.99,12.79)), + ) + createRL( + tech, net, 'Contact', + ((13.19,10.33),(13.19,10.55),(13.41,10.55),(13.41,10.33),(13.19,10.33)), + ) + createRL( + tech, net, 'Contact', + ((13.19,10.83),(13.19,11.05),(13.41,11.05),(13.41,10.83),(13.19,10.83)), + ) + createRL( + tech, net, 'Contact', + ((13.19,11.33),(13.19,11.55),(13.41,11.55),(13.41,11.33),(13.19,11.33)), + ) + createRL( + tech, net, 'Contact', + ((13.19,11.83),(13.19,12.05),(13.41,12.05),(13.41,11.83),(13.19,11.83)), + ) + createRL( + tech, net, 'Contact', + ((13.19,12.33),(13.19,12.55),(13.41,12.55),(13.41,12.33),(13.19,12.33)), + ) + createRL( + tech, net, 'Contact', + ((13.19,12.83),(13.19,13.05),(13.41,13.05),(13.41,12.83),(13.19,12.83)), + ) + net = nets['_net6'] + createRL( + tech, net, 'COMP', + ((5.74,9.1),(5.74,11.9),(6.86,11.9),(6.86,9.1),(5.74,9.1)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((0.36,7.47),(0.36,13.15),(1.04,13.15),(1.04,11.9),(1.76,11.9),(1.76,13.53),(5.24,13.53),(5.24,12.13),(7.36,12.13),(7.36,13.53),(12.24,13.53),(12.24,11.9),(12.96,11.9),(12.96,13.53),(15.04,13.53),(15.04,7.47),(11.56,7.47),(11.56,7.7),(2.44,7.7),(2.44,7.47),(0.36,7.47)), + ) + createRL( + tech, net, 'Pplus', + ((5.86,0.47),(5.86,1.49),(6.74,1.49),(6.74,0.47),(5.86,0.47)), + ) + createRL( + tech, net, 'Nplus', + ((7.36,0.75),(7.36,2.01),(5.24,2.01),(5.24,1.31),(1.76,1.31),(1.76,2.1),(1.04,2.1),(1.04,0.85),(0.36,0.85),(0.36,5.41),(2.44,5.41),(2.44,4.9),(11.56,4.9),(11.56,5.13),(15.04,5.13),(15.04,1.87),(13.64,1.87),(13.64,0.85),(12.96,0.85),(12.96,2.1),(12.24,2.1),(12.24,0.75),(7.36,0.75)), + ) + createRL( + tech, net, 'Nplus', + ((5.86,12.37),(5.86,13.39),(6.74,13.39),(6.74,12.37),(5.86,12.37)), + ) + net = nets['_net3'] + createRL( + tech, net, 'Poly2', + ((5.07,8.22),(5.07,8.58),(5.46,8.58),(5.46,12.12),(5.74,12.12),(5.74,8.22),(5.07,8.22)), + ) + createRL( + tech, net, 'Poly2', + ((4.06,1.32),(4.06,4.02),(3.88,4.02),(3.88,4.38),(4.34,4.38),(4.34,1.32),(4.06,1.32)), + ) + createRL( + tech, net, 'COMP', + ((1.54,7.7),(1.54,9.66),(2.28,9.66),(2.28,7.7),(1.54,7.7)), + ) + createRL( + tech, net, 'COMP', + ((1.54,4.06),(1.54,5.18),(2.28,5.18),(2.28,4.06),(1.54,4.06)), + ) + createRL( + tech, net, 'Contact', + ((1.99,4.26),(1.99,4.48),(2.21,4.48),(2.21,4.26),(1.99,4.26)), + ) + createRL( + tech, net, 'Contact', + ((1.99,4.76),(1.99,4.98),(2.21,4.98),(2.21,4.76),(1.99,4.76)), + ) + createRL( + tech, net, 'Contact', + ((3.95,4.09),(3.95,4.31),(4.17,4.31),(4.17,4.09),(3.95,4.09)), + ) + createRL( + tech, net, 'Contact', + ((1.99,8.0),(1.99,8.22),(2.21,8.22),(2.21,8.0),(1.99,8.0)), + ) + createRL( + tech, net, 'Contact', + ((1.99,8.5),(1.99,8.72),(2.21,8.72),(2.21,8.5),(1.99,8.5)), + ) + createRL( + tech, net, 'Contact', + ((1.99,9.0),(1.99,9.22),(2.21,9.22),(2.21,9.0),(1.99,9.0)), + ) + createRL( + tech, net, 'Contact', + ((5.14,8.29),(5.14,8.51),(5.36,8.51),(5.36,8.29),(5.14,8.29)), + ) + createRL( + tech, net, 'Metal1', + ((2.04,4.085),(2.04,4.255),(1.93,4.255),(1.93,4.985),(1.985,4.985),(1.985,7.995),(1.93,7.995),(1.93,9.455),(2.27,9.455),(2.27,8.515),(5.42,8.515),(5.42,8.285),(2.27,8.285),(2.27,7.995),(2.215,7.995),(2.215,4.985),(2.27,4.985),(2.27,4.315),(4.23,4.315),(4.23,4.085),(2.04,4.085)), + ) + net = nets['_net9'] + createRL( + tech, net, 'COMP', + ((2.94,1.54),(2.94,3.22),(4.06,3.22),(4.06,1.54),(2.94,1.54)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((13.12,1.08),(13.12,4.06),(12.46,4.06),(12.46,4.9),(14.14,4.9),(14.14,2.1),(13.48,2.1),(13.48,1.08),(13.12,1.08)), + ) + createRL( + tech, net, 'COMP', + ((6.86,2.24),(6.86,3.92),(7.14,3.92),(7.14,2.24),(6.86,2.24)), + ) + createRL( + tech, net, 'COMP', + ((8.26,0.98),(8.26,2.66),(9.94,2.66),(9.94,0.98),(8.26,0.98)), + ) + createRL( + tech, net, 'COMP', + ((6.02,0.7),(6.02,1.26),(6.58,1.26),(6.58,0.7),(6.02,0.7)), + ) + createRL( + tech, net, 'COMP', + ((2.66,1.54),(2.66,3.22),(2.94,3.22),(2.94,1.54),(2.66,1.54)), + ) + createRL( + tech, net, 'COMP', + ((0.52,1.08),(0.52,5.18),(1.54,5.18),(1.54,4.06),(0.88,4.06),(0.88,1.08),(0.52,1.08)), + ) + createRL( + tech, net, 'COMP', + ((5.46,2.24),(5.46,3.92),(5.74,3.92),(5.74,2.24),(5.46,2.24)), + ) + createRL( + tech, net, 'COMP', + ((4.06,1.54),(4.06,3.22),(4.34,3.22),(4.34,1.54),(4.06,1.54)), + ) + createRL( + tech, net, 'COMP', + ((11.06,0.98),(11.06,2.66),(11.34,2.66),(11.34,0.98),(11.06,0.98)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(15.4,1.68),(15.4,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(7.7), u(15.4), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(7.7), u(15.4), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((8.99,1.25),(8.99,1.47),(9.21,1.47),(9.21,1.25),(8.99,1.25)), + ) + createRL( + tech, net, 'Contact', + ((13.19,1.15),(13.19,1.37),(13.41,1.37),(13.41,1.15),(13.19,1.15)), + ) + createRL( + tech, net, 'Contact', + ((6.19,0.87),(6.19,1.09),(6.41,1.09),(6.41,0.87),(6.19,0.87)), + ) + createRL( + tech, net, 'Contact', + ((0.59,1.15),(0.59,1.37),(0.81,1.37),(0.81,1.15),(0.59,1.15)), + ) + net = nets['_net7'] + createRL( + tech, net, 'COMP', + ((9.94,0.98),(9.94,2.66),(11.06,2.66),(11.06,0.98),(9.94,0.98)), + ) + net = nets['_net4'] + createRL( + tech, net, 'Poly2', + ((9.66,0.76),(9.66,4.02),(8.26,4.02),(8.26,13.52),(8.54,13.52),(8.54,4.38),(10.12,4.38),(10.12,4.02),(9.94,4.02),(9.94,0.76),(9.66,0.76)), + ) + createRL( + tech, net, 'COMP', + ((11.72,4.06),(11.72,4.9),(12.46,4.9),(12.46,4.06),(11.72,4.06)), + ) + createRL( + tech, net, 'COMP', + ((11.72,7.7),(11.72,9.66),(12.46,9.66),(12.46,7.7),(11.72,7.7)), + ) + createRL( + tech, net, 'Contact', + ((11.79,8.0),(11.79,8.22),(12.01,8.22),(12.01,8.0),(11.79,8.0)), + ) + createRL( + tech, net, 'Contact', + ((11.79,8.5),(11.79,8.72),(12.01,8.72),(12.01,8.5),(11.79,8.5)), + ) + createRL( + tech, net, 'Contact', + ((11.79,9.0),(11.79,9.22),(12.01,9.22),(12.01,9.0),(11.79,9.0)), + ) + createRL( + tech, net, 'Contact', + ((11.79,4.37),(11.79,4.59),(12.01,4.59),(12.01,4.37),(11.79,4.37)), + ) + createRL( + tech, net, 'Contact', + ((9.83,4.09),(9.83,4.31),(10.05,4.31),(10.05,4.09),(9.83,4.09)), + ) + createRL( + tech, net, 'Metal1', + ((9.77,4.085),(9.77,4.315),(11.73,4.315),(11.73,4.595),(11.785,4.595),(11.785,7.995),(11.73,7.995),(11.73,9.455),(12.07,9.455),(12.07,7.995),(12.015,7.995),(12.015,4.595),(12.07,4.595),(12.07,4.365),(11.96,4.365),(11.96,4.085),(9.77,4.085)), + ) + net = nets['_net0'] + createRL( + tech, net, 'COMP', + ((1.92,10.5),(1.92,13.3),(2.66,13.3),(2.66,10.5),(1.92,10.5)), + ) + createRL( + tech, net, 'COMP', + ((7.14,9.1),(7.14,11.9),(7.52,11.9),(7.52,13.3),(8.26,13.3),(8.26,10.5),(7.88,10.5),(7.88,9.1),(7.14,9.1)), + ) + createRL( + tech, net, 'Metal1', + ((7.53,10.145),(7.53,11.085),(2.27,11.085),(2.27,10.715),(1.93,10.715),(1.93,12.09),(2.27,12.09),(2.27,11.315),(7.53,11.315),(7.53,12.09),(7.87,12.09),(7.87,10.145),(7.53,10.145)), + ) + createRL( + tech, net, 'Contact', + ((1.99,10.72),(1.99,10.94),(2.21,10.94),(2.21,10.72),(1.99,10.72)), + ) + createRL( + tech, net, 'Contact', + ((1.99,11.22),(1.99,11.44),(2.21,11.44),(2.21,11.22),(1.99,11.22)), + ) + createRL( + tech, net, 'Contact', + ((1.99,11.72),(1.99,11.94),(2.21,11.94),(2.21,11.72),(1.99,11.72)), + ) + createRL( + tech, net, 'Contact', + ((7.59,10.26),(7.59,10.48),(7.81,10.48),(7.81,10.26),(7.59,10.26)), + ) + createRL( + tech, net, 'Contact', + ((7.59,10.76),(7.59,10.98),(7.81,10.98),(7.81,10.76),(7.59,10.76)), + ) + createRL( + tech, net, 'Contact', + ((7.59,11.26),(7.59,11.48),(7.81,11.48),(7.81,11.26),(7.59,11.26)), + ) + createRL( + tech, net, 'Contact', + ((7.59,11.76),(7.59,11.98),(7.81,11.98),(7.81,11.76),(7.59,11.76)), + ) + net = nets['q'] + createRL( + tech, net, 'COMP', + ((14.14,2.1),(14.14,4.9),(14.88,4.9),(14.88,2.1),(14.14,2.1)), + ) + createRL( + tech, net, 'COMP', + ((14.14,7.7),(14.14,13.3),(14.88,13.3),(14.88,7.7),(14.14,7.7)), + ) + createRL( + tech, net, 'Metal1', + ((14.57,1.91),(14.57,2.385),(14.53,2.385),(14.53,4.615),(14.57,4.615),(14.57,7.815),(14.53,7.815),(14.53,12.09),(14.87,12.09),(14.87,7.815),(14.83,7.815),(14.83,4.615),(14.87,4.615),(14.87,2.385),(14.83,2.385),(14.83,1.91),(14.57,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(14.7), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(14.7), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((14.59,2.39),(14.59,2.61),(14.81,2.61),(14.81,2.39),(14.59,2.39)), + ) + createRL( + tech, net, 'Contact', + ((14.59,2.89),(14.59,3.11),(14.81,3.11),(14.81,2.89),(14.59,2.89)), + ) + createRL( + tech, net, 'Contact', + ((14.59,3.39),(14.59,3.61),(14.81,3.61),(14.81,3.39),(14.59,3.39)), + ) + createRL( + tech, net, 'Contact', + ((14.59,3.89),(14.59,4.11),(14.81,4.11),(14.81,3.89),(14.59,3.89)), + ) + createRL( + tech, net, 'Contact', + ((14.59,4.39),(14.59,4.61),(14.81,4.61),(14.81,4.39),(14.59,4.39)), + ) + createRL( + tech, net, 'Contact', + ((14.59,7.82),(14.59,8.04),(14.81,8.04),(14.81,7.82),(14.59,7.82)), + ) + createRL( + tech, net, 'Contact', + ((14.59,8.32),(14.59,8.54),(14.81,8.54),(14.81,8.32),(14.59,8.32)), + ) + createRL( + tech, net, 'Contact', + ((14.59,8.82),(14.59,9.04),(14.81,9.04),(14.81,8.82),(14.59,8.82)), + ) + createRL( + tech, net, 'Contact', + ((14.59,9.32),(14.59,9.54),(14.81,9.54),(14.81,9.32),(14.59,9.32)), + ) + createRL( + tech, net, 'Contact', + ((14.59,9.82),(14.59,10.04),(14.81,10.04),(14.81,9.82),(14.59,9.82)), + ) + createRL( + tech, net, 'Contact', + ((14.59,10.32),(14.59,10.54),(14.81,10.54),(14.81,10.32),(14.59,10.32)), + ) + createRL( + tech, net, 'Contact', + ((14.59,10.82),(14.59,11.04),(14.81,11.04),(14.81,10.82),(14.59,10.82)), + ) + createRL( + tech, net, 'Contact', + ((14.59,11.32),(14.59,11.54),(14.81,11.54),(14.81,11.32),(14.59,11.32)), + ) + createRL( + tech, net, 'Contact', + ((14.59,11.82),(14.59,12.04),(14.81,12.04),(14.81,11.82),(14.59,11.82)), + ) + net = nets['cmd0'] + createRL( + tech, net, 'Poly2', + ((8.26,0.76),(8.26,3.33),(9.14,3.33),(9.14,2.97),(8.54,2.97),(8.54,0.76),(8.26,0.76)), + ) + createRL( + tech, net, 'Poly2', + ((12.46,3.84),(12.46,6.82),(9.06,6.82),(9.06,7.18),(9.66,7.18),(9.66,13.52),(9.94,13.52),(9.94,7.18),(12.46,7.18),(12.46,9.88),(12.74,9.88),(12.74,3.84),(12.46,3.84)), + ) + createRL( + tech, net, 'Contact', + ((9.13,6.89),(9.13,7.11),(9.35,7.11),(9.35,6.89),(9.13,6.89)), + ) + createRL( + tech, net, 'Contact', + ((8.85,3.04),(8.85,3.26),(9.07,3.26),(9.07,3.04),(8.85,3.04)), + ) + createRL( + tech, net, 'Metal1', + ((8.97,1.91),(8.97,3.035),(8.79,3.035),(8.79,3.265),(8.97,3.265),(8.97,9.455),(9.23,9.455),(9.23,7.115),(9.41,7.115),(9.41,6.885),(9.23,6.885),(9.23,1.91),(8.97,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(9.1), u(0.26), u(1.91), u(9.455), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(9.1), u(0.26), u(1.91), u(9.455), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['_net1'] + createRL( + tech, net, 'COMP', + ((1.92,1.54),(1.92,3.22),(2.66,3.22),(2.66,1.54),(1.92,1.54)), + ) + createRL( + tech, net, 'COMP', + ((7.52,0.98),(7.52,2.24),(7.14,2.24),(7.14,3.92),(7.88,3.92),(7.88,2.66),(8.26,2.66),(8.26,0.98),(7.52,0.98)), + ) + createRL( + tech, net, 'Contact', + ((1.99,1.925),(1.99,2.145),(2.21,2.145),(2.21,1.925),(1.99,1.925)), + ) + createRL( + tech, net, 'Contact', + ((1.99,2.425),(1.99,2.645),(2.21,2.645),(2.21,2.425),(1.99,2.425)), + ) + createRL( + tech, net, 'Contact', + ((1.99,2.925),(1.99,3.145),(2.21,3.145),(2.21,2.925),(1.99,2.925)), + ) + createRL( + tech, net, 'Contact', + ((7.59,2.02),(7.59,2.24),(7.81,2.24),(7.81,2.02),(7.59,2.02)), + ) + createRL( + tech, net, 'Contact', + ((7.59,2.52),(7.59,2.74),(7.81,2.74),(7.81,2.52),(7.59,2.52)), + ) + createRL( + tech, net, 'Contact', + ((7.59,3.02),(7.59,3.24),(7.81,3.24),(7.81,3.02),(7.59,3.02)), + ) + createRL( + tech, net, 'Contact', + ((7.59,3.52),(7.59,3.74),(7.81,3.74),(7.81,3.52),(7.59,3.52)), + ) + createRL( + tech, net, 'Metal1', + ((1.93,1.91),(1.93,3.15),(2.27,3.15),(2.27,2.915),(7.53,2.915),(7.53,3.745),(7.87,3.745),(7.87,1.91),(7.53,1.91),(7.53,2.685),(2.27,2.685),(2.27,1.91),(1.93,1.91)), + ) + net = nets['_net2'] + createRL( + tech, net, 'COMP', + ((9.94,10.5),(9.94,13.3),(11.06,13.3),(11.06,10.5),(9.94,10.5)), + ) + net = nets['_net10'] + createRL( + tech, net, 'COMP', + ((5.74,2.24),(5.74,3.92),(6.86,3.92),(6.86,2.24),(5.74,2.24)), + ) + net = nets['cmd1'] + createRL( + tech, net, 'Poly2', + ((1.26,3.84),(1.26,6.82),(0.66,6.82),(0.66,7.18),(1.26,7.18),(1.26,9.88),(1.54,9.88),(1.54,3.84),(1.26,3.84)), + ) + createRL( + tech, net, 'Poly2', + ((5.46,2.02),(5.46,5.46),(4.06,5.46),(4.06,9.62),(3.88,9.62),(3.88,9.98),(4.06,9.98),(4.06,13.52),(4.34,13.52),(4.34,5.74),(5.74,5.74),(5.74,2.02),(5.46,2.02)), + ) + createRL( + tech, net, 'Metal1', + ((0.57,1.91),(0.57,12.09),(0.83,12.09),(0.83,9.915),(4.23,9.915),(4.23,9.685),(0.83,9.685),(0.83,7.115),(1.01,7.115),(1.01,6.885),(0.83,6.885),(0.83,1.91),(0.57,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((0.73,6.89),(0.73,7.11),(0.95,7.11),(0.95,6.89),(0.73,6.89)), + ) + createRL( + tech, net, 'Contact', + ((3.95,9.69),(3.95,9.91),(4.17,9.91),(4.17,9.69),(3.95,9.69)), + ) + net = nets['_net8'] + createRL( + tech, net, 'COMP', + ((2.94,10.5),(2.94,13.3),(4.06,13.3),(4.06,10.5),(2.94,10.5)), + ) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((11.06,0.76),(11.06,5.56),(10.46,5.56),(10.46,5.92),(11.34,5.92),(11.34,0.76),(11.06,0.76)), + ) + createRL( + tech, net, 'Poly2', + ((10.46,8.22),(10.46,8.58),(11.06,8.58),(11.06,13.52),(11.34,13.52),(11.34,8.22),(10.46,8.22)), + ) + createRL( + tech, net, 'Contact', + ((10.53,5.63),(10.53,5.85),(10.75,5.85),(10.75,5.63),(10.53,5.63)), + ) + createRL( + tech, net, 'Contact', + ((10.53,8.29),(10.53,8.51),(10.75,8.51),(10.75,8.29),(10.53,8.29)), + ) + createRL( + tech, net, 'Metal1', + ((10.37,4.545),(10.37,9.455),(10.63,9.455),(10.63,8.515),(10.81,8.515),(10.81,8.285),(10.63,8.285),(10.63,5.855),(10.81,5.855),(10.81,5.625),(10.63,5.625),(10.63,4.545),(10.37,4.545)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(10.5), u(0.26), u(4.545), u(9.455), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(10.5), u(0.26), u(4.545), u(9.455), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((6.86,2.02),(6.86,12.12),(7.14,12.12),(7.14,7.18),(7.74,7.18),(7.74,6.82),(7.14,6.82),(7.14,2.02),(6.86,2.02)), + ) + createRL( + tech, net, 'Metal1', + ((7.57,3.975),(7.57,6.885),(7.39,6.885),(7.39,7.115),(7.57,7.115),(7.57,9.455),(7.83,9.455),(7.83,3.975),(7.57,3.975)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(7.7), u(0.26), u(3.975), u(9.455), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(7.7), u(0.26), u(3.975), u(9.455), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((7.45,6.89),(7.45,7.11),(7.67,7.11),(7.67,6.89),(7.45,6.89)), + ) + net = nets['i2'] + createRL( + tech, net, 'Poly2', + ((2.66,1.32),(2.66,13.52),(2.94,13.52),(2.94,7.18),(3.54,7.18),(3.54,6.82),(2.94,6.82),(2.94,1.32),(2.66,1.32)), + ) + createRL( + tech, net, 'Contact', + ((3.25,6.89),(3.25,7.11),(3.47,7.11),(3.47,6.89),(3.25,6.89)), + ) + createRL( + tech, net, 'Metal1', + ((3.37,4.545),(3.37,6.885),(3.19,6.885),(3.19,7.115),(3.37,7.115),(3.37,8.055),(3.63,8.055),(3.63,4.545),(3.37,4.545)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(0.26), u(4.545), u(8.055), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(0.26), u(4.545), u(8.055), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['q'].setDirection(Net.Direction.OUT) + nets['cmd0'].setDirection(Net.Direction.IN) + nets['cmd1'].setDirection(Net.Direction.IN) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + nets['i2'].setDirection(Net.Direction.IN) + + cell = new_cells['nsnrlatch_x1'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(7.0), u(14.0), + )) + nets = { + '*': Net.create(cell, '*'), + '_net0': Net.create(cell, '_net0'), + '_net1': Net.create(cell, '_net1'), + 'nq': Net.create(cell, 'nq'), + 'nrst': Net.create(cell, 'nrst'), + 'nset': Net.create(cell, 'nset'), + 'q': Net.create(cell, 'q'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['_net1'] + createRL( + tech, net, 'COMP', + ((1.54,2.1),(1.54,4.9),(2.66,4.9),(2.66,2.1),(1.54,2.1)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((5.46,2.1),(5.46,4.9),(5.74,4.9),(5.74,2.1),(5.46,2.1)), + ) + createRL( + tech, net, 'COMP', + ((2.66,2.1),(2.66,4.9),(4.34,4.9),(4.34,2.1),(2.66,2.1)), + ) + createRL( + tech, net, 'COMP', + ((1.26,2.1),(1.26,4.9),(1.54,4.9),(1.54,2.1),(1.26,2.1)), + ) + createRL( + tech, net, 'COMP', + ((4.55,0.7),(4.55,1.26),(5.25,1.26),(5.25,0.7),(4.55,0.7)), + ) + createRL( + tech, net, 'COMP', + ((1.75,0.7),(1.75,1.26),(2.45,1.26),(2.45,0.7),(1.75,0.7)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(3.385,1.68),(3.385,2.385),(3.33,2.385),(3.33,4.615),(3.67,4.615),(3.67,2.385),(3.615,2.385),(3.615,1.68),(7.0,1.68),(7.0,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(7.0), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(7.0), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((4.79,0.87),(4.79,1.09),(5.01,1.09),(5.01,0.87),(4.79,0.87)), + ) + createRL( + tech, net, 'Contact', + ((3.39,2.39),(3.39,2.61),(3.61,2.61),(3.61,2.39),(3.39,2.39)), + ) + createRL( + tech, net, 'Contact', + ((3.39,2.89),(3.39,3.11),(3.61,3.11),(3.61,2.89),(3.39,2.89)), + ) + createRL( + tech, net, 'Contact', + ((3.39,3.39),(3.39,3.61),(3.61,3.61),(3.61,3.39),(3.39,3.39)), + ) + createRL( + tech, net, 'Contact', + ((3.39,3.89),(3.39,4.11),(3.61,4.11),(3.61,3.89),(3.39,3.89)), + ) + createRL( + tech, net, 'Contact', + ((3.39,4.39),(3.39,4.61),(3.61,4.61),(3.61,4.39),(3.39,4.39)), + ) + createRL( + tech, net, 'Contact', + ((1.99,0.87),(1.99,1.09),(2.21,1.09),(2.21,0.87),(1.99,0.87)), + ) + net = nets['*'] + createRL( + tech, net, 'Nplus', + ((4.39,12.37),(4.39,13.39),(5.41,13.39),(5.41,12.37),(4.39,12.37)), + ) + createRL( + tech, net, 'Nplus', + ((0.36,1.87),(0.36,5.13),(6.64,5.13),(6.64,1.87),(0.36,1.87)), + ) + createRL( + tech, net, 'Nplus', + ((1.59,12.37),(1.59,13.39),(2.61,13.39),(2.61,12.37),(1.59,12.37)), + ) + createRL( + tech, net, 'Pplus', + ((4.39,0.47),(4.39,1.49),(5.41,1.49),(5.41,0.47),(4.39,0.47)), + ) + createRL( + tech, net, 'Pplus', + ((0.36,8.87),(0.36,13.15),(1.04,13.15),(1.04,12.13),(5.96,12.13),(5.96,13.15),(6.64,13.15),(6.64,8.87),(0.36,8.87)), + ) + createRL( + tech, net, 'Pplus', + ((1.59,0.47),(1.59,1.49),(2.61,1.49),(2.61,0.47),(1.59,0.47)), + ) + net = nets['nq'] + createRL( + tech, net, 'Poly2', + ((2.66,1.88),(2.66,12.12),(2.94,12.12),(2.94,6.48),(3.12,6.48),(3.12,6.12),(2.94,6.12),(2.94,1.88),(2.66,1.88)), + ) + createRL( + tech, net, 'COMP', + ((5.74,2.1),(5.74,4.9),(6.48,4.9),(6.48,2.1),(5.74,2.1)), + ) + createRL( + tech, net, 'COMP', + ((4.34,9.1),(4.34,11.9),(5.46,11.9),(5.46,9.1),(4.34,9.1)), + ) + createRL( + tech, net, 'Metal1', + ((4.77,1.91),(4.77,6.185),(2.77,6.185),(2.77,6.415),(4.77,6.415),(4.77,9.385),(4.73,9.385),(4.73,11.615),(4.77,11.615),(4.77,12.09),(5.03,12.09),(5.03,11.615),(5.07,11.615),(5.07,9.385),(5.03,9.385),(5.03,3.01),(6.13,3.01),(6.13,4.615),(6.47,4.615),(6.47,1.91),(6.13,1.91),(6.13,2.59),(5.03,2.59),(5.03,1.91),(4.77,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.9), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.9), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((4.79,9.39),(4.79,9.61),(5.01,9.61),(5.01,9.39),(4.79,9.39)), + ) + createRL( + tech, net, 'Contact', + ((4.79,9.89),(4.79,10.11),(5.01,10.11),(5.01,9.89),(4.79,9.89)), + ) + createRL( + tech, net, 'Contact', + ((4.79,10.39),(4.79,10.61),(5.01,10.61),(5.01,10.39),(4.79,10.39)), + ) + createRL( + tech, net, 'Contact', + ((4.79,10.89),(4.79,11.11),(5.01,11.11),(5.01,10.89),(4.79,10.89)), + ) + createRL( + tech, net, 'Contact', + ((4.79,11.39),(4.79,11.61),(5.01,11.61),(5.01,11.39),(4.79,11.39)), + ) + createRL( + tech, net, 'Contact', + ((2.83,6.19),(2.83,6.41),(3.05,6.41),(3.05,6.19),(2.83,6.19)), + ) + createRL( + tech, net, 'Contact', + ((6.19,2.39),(6.19,2.61),(6.41,2.61),(6.41,2.39),(6.19,2.39)), + ) + createRL( + tech, net, 'Contact', + ((6.19,2.89),(6.19,3.11),(6.41,3.11),(6.41,2.89),(6.19,2.89)), + ) + createRL( + tech, net, 'Contact', + ((6.19,3.39),(6.19,3.61),(6.41,3.61),(6.41,3.39),(6.19,3.39)), + ) + createRL( + tech, net, 'Contact', + ((6.19,3.89),(6.19,4.11),(6.41,4.11),(6.41,3.89),(6.19,3.89)), + ) + createRL( + tech, net, 'Contact', + ((6.19,4.39),(6.19,4.61),(6.41,4.61),(6.41,4.39),(6.19,4.39)), + ) + net = nets['q'] + createRL( + tech, net, 'COMP', + ((0.52,2.1),(0.52,4.9),(1.26,4.9),(1.26,2.1),(0.52,2.1)), + ) + createRL( + tech, net, 'COMP', + ((1.54,9.1),(1.54,11.9),(2.66,11.9),(2.66,9.1),(1.54,9.1)), + ) + createRL( + tech, net, 'Poly2', + ((4.06,1.88),(4.06,7.52),(3.88,7.52),(3.88,7.88),(4.06,7.88),(4.06,12.12),(4.34,12.12),(4.34,1.88),(4.06,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((0.53,1.91),(0.53,4.615),(0.87,4.615),(0.87,3.01),(1.97,3.01),(1.97,9.385),(1.93,9.385),(1.93,11.615),(1.97,11.615),(1.97,12.09),(2.23,12.09),(2.23,11.615),(2.27,11.615),(2.27,9.385),(2.23,9.385),(2.23,7.815),(4.23,7.815),(4.23,7.585),(2.23,7.585),(2.23,1.91),(1.97,1.91),(1.97,2.59),(0.87,2.59),(0.87,1.91),(0.53,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((0.59,2.39),(0.59,2.61),(0.81,2.61),(0.81,2.39),(0.59,2.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.89),(0.59,3.11),(0.81,3.11),(0.81,2.89),(0.59,2.89)), + ) + createRL( + tech, net, 'Contact', + ((0.59,3.39),(0.59,3.61),(0.81,3.61),(0.81,3.39),(0.59,3.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,3.89),(0.59,4.11),(0.81,4.11),(0.81,3.89),(0.59,3.89)), + ) + createRL( + tech, net, 'Contact', + ((0.59,4.39),(0.59,4.61),(0.81,4.61),(0.81,4.39),(0.59,4.39)), + ) + createRL( + tech, net, 'Contact', + ((3.95,7.59),(3.95,7.81),(4.17,7.81),(4.17,7.59),(3.95,7.59)), + ) + createRL( + tech, net, 'Contact', + ((1.99,9.39),(1.99,9.61),(2.21,9.61),(2.21,9.39),(1.99,9.39)), + ) + createRL( + tech, net, 'Contact', + ((1.99,9.89),(1.99,10.11),(2.21,10.11),(2.21,9.89),(1.99,9.89)), + ) + createRL( + tech, net, 'Contact', + ((1.99,10.39),(1.99,10.61),(2.21,10.61),(2.21,10.39),(1.99,10.39)), + ) + createRL( + tech, net, 'Contact', + ((1.99,10.89),(1.99,11.11),(2.21,11.11),(2.21,10.89),(1.99,10.89)), + ) + createRL( + tech, net, 'Contact', + ((1.99,11.39),(1.99,11.61),(2.21,11.61),(2.21,11.39),(1.99,11.39)), + ) + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((5.46,9.1),(5.46,11.9),(6.12,11.9),(6.12,12.92),(6.48,12.92),(6.48,9.1),(5.46,9.1)), + ) + createRL( + tech, net, 'COMP', + ((2.66,9.1),(2.66,11.9),(4.34,11.9),(4.34,9.1),(2.66,9.1)), + ) + createRL( + tech, net, 'COMP', + ((4.55,12.6),(4.55,13.16),(5.25,13.16),(5.25,12.6),(4.55,12.6)), + ) + createRL( + tech, net, 'COMP', + ((0.52,9.1),(0.52,12.92),(0.88,12.92),(0.88,11.9),(1.54,11.9),(1.54,9.1),(0.52,9.1)), + ) + createRL( + tech, net, 'COMP', + ((1.75,12.6),(1.75,13.16),(2.45,13.16),(2.45,12.6),(1.75,12.6)), + ) + createRL( + tech, net, 'Nwell', + ((-0.42,6.72),(-0.42,15.12),(7.42,15.12),(7.42,6.72),(-0.42,6.72)), + ) + createRL( + tech, net, 'Metal1', + ((3.33,9.385),(3.33,11.615),(3.385,11.615),(3.385,12.32),(0.0,12.32),(0.0,14.0),(7.0,14.0),(7.0,12.32),(3.615,12.32),(3.615,11.615),(3.67,11.615),(3.67,9.385),(3.33,9.385)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(7.0), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(7.0), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((0.59,12.63),(0.59,12.85),(0.81,12.85),(0.81,12.63),(0.59,12.63)), + ) + createRL( + tech, net, 'Contact', + ((3.39,9.39),(3.39,9.61),(3.61,9.61),(3.61,9.39),(3.39,9.39)), + ) + createRL( + tech, net, 'Contact', + ((3.39,9.89),(3.39,10.11),(3.61,10.11),(3.61,9.89),(3.39,9.89)), + ) + createRL( + tech, net, 'Contact', + ((3.39,10.39),(3.39,10.61),(3.61,10.61),(3.61,10.39),(3.39,10.39)), + ) + createRL( + tech, net, 'Contact', + ((3.39,10.89),(3.39,11.11),(3.61,11.11),(3.61,10.89),(3.39,10.89)), + ) + createRL( + tech, net, 'Contact', + ((3.39,11.39),(3.39,11.61),(3.61,11.61),(3.61,11.39),(3.39,11.39)), + ) + createRL( + tech, net, 'Contact', + ((4.79,12.77),(4.79,12.99),(5.01,12.99),(5.01,12.77),(4.79,12.77)), + ) + createRL( + tech, net, 'Contact', + ((1.99,12.77),(1.99,12.99),(2.21,12.99),(2.21,12.77),(1.99,12.77)), + ) + createRL( + tech, net, 'Contact', + ((6.19,12.63),(6.19,12.85),(6.41,12.85),(6.41,12.63),(6.19,12.63)), + ) + net = nets['nrst'] + createRL( + tech, net, 'Poly2', + ((5.46,1.88),(5.46,12.12),(5.74,12.12),(5.74,7.18),(6.34,7.18),(6.34,6.82),(5.74,6.82),(5.74,1.88),(5.46,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((6.17,5.6),(6.17,6.885),(5.99,6.885),(5.99,7.115),(6.17,7.115),(6.17,12.09),(6.43,12.09),(6.43,5.6),(6.17,5.6)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(6.3), u(0.26), u(5.6), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(6.3), u(0.26), u(5.6), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((6.05,6.89),(6.05,7.11),(6.27,7.11),(6.27,6.89),(6.05,6.89)), + ) + net = nets['_net0'] + createRL( + tech, net, 'COMP', + ((4.34,2.1),(4.34,4.9),(5.46,4.9),(5.46,2.1),(4.34,2.1)), + ) + net = nets['nset'] + createRL( + tech, net, 'Poly2', + ((1.26,1.88),(1.26,6.82),(0.66,6.82),(0.66,7.18),(1.26,7.18),(1.26,12.12),(1.54,12.12),(1.54,1.88),(1.26,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((0.57,5.6),(0.57,12.09),(0.83,12.09),(0.83,7.115),(1.01,7.115),(1.01,6.885),(0.83,6.885),(0.83,5.6),(0.57,5.6)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(0.26), u(5.6), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(0.26), u(5.6), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((0.73,6.89),(0.73,7.11),(0.95,7.11),(0.95,6.89),(0.73,6.89)), + ) + nets['vss'].setGlobal(True) + nets['vdd'].setGlobal(True) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['nq'].setDirection(Net.Direction.OUT) + nets['q'].setDirection(Net.Direction.OUT) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['nrst'].setDirection(Net.Direction.IN) + nets['nset'].setDirection(Net.Direction.IN) + + cell = new_cells['nxr2_x1'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(9.8), u(14.0), + )) + nets = { + '*': Net.create(cell, '*'), + '_net0': Net.create(cell, '_net0'), + '_net1': Net.create(cell, '_net1'), + '_net2': Net.create(cell, '_net2'), + '_net3': Net.create(cell, '_net3'), + '_net4': Net.create(cell, '_net4'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'nq': Net.create(cell, 'nq'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['nq'] + createRL( + tech, net, 'COMP', + ((4.34,0.84),(4.34,3.5),(5.46,3.5),(5.46,0.84),(4.34,0.84)), + ) + createRL( + tech, net, 'COMP', + ((4.34,7.7),(4.34,13.3),(5.46,13.3),(5.46,7.7),(4.34,7.7)), + ) + createRL( + tech, net, 'Metal1', + ((3.37,1.91),(3.37,10.5),(3.63,10.5),(3.63,9.915),(4.73,9.915),(4.73,10.855),(5.07,10.855),(5.07,7.945),(4.73,7.945),(4.73,9.685),(3.63,9.685),(3.63,2.915),(4.73,2.915),(4.73,3.285),(5.07,3.285),(5.07,1.91),(4.73,1.91),(4.73,2.685),(3.63,2.685),(3.63,1.91),(3.37,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(0.26), u(1.91), u(10.5), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(0.26), u(1.91), u(10.5), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((4.79,2.06),(4.79,2.28),(5.01,2.28),(5.01,2.06),(4.79,2.06)), + ) + createRL( + tech, net, 'Contact', + ((4.79,2.56),(4.79,2.78),(5.01,2.78),(5.01,2.56),(4.79,2.56)), + ) + createRL( + tech, net, 'Contact', + ((4.79,3.06),(4.79,3.28),(5.01,3.28),(5.01,3.06),(4.79,3.06)), + ) + createRL( + tech, net, 'Contact', + ((4.79,7.95),(4.79,8.17),(5.01,8.17),(5.01,7.95),(4.79,7.95)), + ) + createRL( + tech, net, 'Contact', + ((4.79,8.45),(4.79,8.67),(5.01,8.67),(5.01,8.45),(4.79,8.45)), + ) + createRL( + tech, net, 'Contact', + ((4.79,8.95),(4.79,9.17),(5.01,9.17),(5.01,8.95),(4.79,8.95)), + ) + createRL( + tech, net, 'Contact', + ((4.79,9.45),(4.79,9.67),(5.01,9.67),(5.01,9.45),(4.79,9.45)), + ) + createRL( + tech, net, 'Contact', + ((4.79,9.95),(4.79,10.17),(5.01,10.17),(5.01,9.95),(4.79,9.95)), + ) + createRL( + tech, net, 'Contact', + ((4.79,10.45),(4.79,10.67),(5.01,10.67),(5.01,10.45),(4.79,10.45)), + ) + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((1.92,7.7),(1.92,9.1),(1.26,9.1),(1.26,11.9),(1.92,11.9),(1.92,13.3),(2.94,13.3),(2.94,7.7),(1.92,7.7)), + ) + createRL( + tech, net, 'COMP', + ((8.89,12.6),(8.89,13.3),(9.31,13.3),(9.31,12.6),(8.89,12.6)), + ) + createRL( + tech, net, 'COMP', + ((6.86,7.7),(6.86,13.3),(7.88,13.3),(7.88,11.9),(8.54,11.9),(8.54,9.1),(7.88,9.1),(7.88,7.7),(6.86,7.7)), + ) + createRL( + tech, net, 'COMP', + ((5.46,7.7),(5.46,13.3),(5.74,13.3),(5.74,7.7),(5.46,7.7)), + ) + createRL( + tech, net, 'COMP', + ((4.06,7.7),(4.06,13.3),(4.34,13.3),(4.34,7.7),(4.06,7.7)), + ) + createRL( + tech, net, 'COMP', + ((0.49,12.6),(0.49,13.3),(0.91,13.3),(0.91,12.6),(0.49,12.6)), + ) + createRL( + tech, net, 'Nwell', + ((-0.42,6.72),(-0.42,15.12),(10.22,15.12),(10.22,6.72),(-0.42,6.72)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(9.8,14.0),(9.8,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.9), u(9.8), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.9), u(9.8), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((7.59,12.42),(7.59,12.64),(7.81,12.64),(7.81,12.42),(7.59,12.42)), + ) + createRL( + tech, net, 'Contact', + ((7.59,12.92),(7.59,13.14),(7.81,13.14),(7.81,12.92),(7.59,12.92)), + ) + createRL( + tech, net, 'Contact', + ((1.99,12.42),(1.99,12.64),(2.21,12.64),(2.21,12.42),(1.99,12.42)), + ) + createRL( + tech, net, 'Contact', + ((1.99,12.92),(1.99,13.14),(2.21,13.14),(2.21,12.92),(1.99,12.92)), + ) + createRL( + tech, net, 'Contact', + ((0.59,12.77),(0.59,12.99),(0.81,12.99),(0.81,12.77),(0.59,12.77)), + ) + createRL( + tech, net, 'Contact', + ((8.99,12.77),(8.99,12.99),(9.21,12.99),(9.21,12.77),(8.99,12.77)), + ) + net = nets['_net1'] + createRL( + tech, net, 'COMP', + ((5.74,7.7),(5.74,13.3),(6.86,13.3),(6.86,7.7),(5.74,7.7)), + ) + createRL( + tech, net, 'COMP', + ((2.94,7.7),(2.94,13.3),(4.06,13.3),(4.06,7.7),(2.94,7.7)), + ) + createRL( + tech, net, 'Contact', + ((6.19,7.82),(6.19,8.04),(6.41,8.04),(6.41,7.82),(6.19,7.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,8.32),(6.19,8.54),(6.41,8.54),(6.41,8.32),(6.19,8.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,8.82),(6.19,9.04),(6.41,9.04),(6.41,8.82),(6.19,8.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,9.32),(6.19,9.54),(6.41,9.54),(6.41,9.32),(6.19,9.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,9.82),(6.19,10.04),(6.41,10.04),(6.41,9.82),(6.19,9.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,10.32),(6.19,10.54),(6.41,10.54),(6.41,10.32),(6.19,10.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,10.82),(6.19,11.04),(6.41,11.04),(6.41,10.82),(6.19,10.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,11.32),(6.19,11.54),(6.41,11.54),(6.41,11.32),(6.19,11.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,11.82),(6.19,12.04),(6.41,12.04),(6.41,11.82),(6.19,11.82)), + ) + createRL( + tech, net, 'Contact', + ((3.39,10.8),(3.39,11.02),(3.61,11.02),(3.61,10.8),(3.39,10.8)), + ) + createRL( + tech, net, 'Contact', + ((3.39,11.3),(3.39,11.52),(3.61,11.52),(3.61,11.3),(3.39,11.3)), + ) + createRL( + tech, net, 'Contact', + ((3.39,11.8),(3.39,12.02),(3.61,12.02),(3.61,11.8),(3.39,11.8)), + ) + createRL( + tech, net, 'Metal1', + ((6.13,7.815),(6.13,11.085),(3.67,11.085),(3.67,10.73),(3.33,10.73),(3.33,12.09),(3.67,12.09),(3.67,11.315),(6.13,11.315),(6.13,12.09),(6.47,12.09),(6.47,7.815),(6.13,7.815)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((1.76,7.47),(1.76,8.87),(0.36,8.87),(0.36,12.13),(1.76,12.13),(1.76,13.53),(8.04,13.53),(8.04,12.13),(9.44,12.13),(9.44,8.87),(8.04,8.87),(8.04,7.47),(1.76,7.47)), + ) + createRL( + tech, net, 'Pplus', + ((8.73,0.33),(8.73,1.49),(9.47,1.49),(9.47,0.33),(8.73,0.33)), + ) + createRL( + tech, net, 'Pplus', + ((0.33,0.33),(0.33,1.49),(1.07,1.49),(1.07,0.33),(0.33,0.33)), + ) + createRL( + tech, net, 'Nplus', + ((8.73,12.37),(8.73,13.53),(9.47,13.53),(9.47,12.37),(8.73,12.37)), + ) + createRL( + tech, net, 'Nplus', + ((1.76,0.61),(1.76,1.87),(0.36,1.87),(0.36,3.73),(9.44,3.73),(9.44,1.87),(8.04,1.87),(8.04,0.61),(1.76,0.61)), + ) + createRL( + tech, net, 'Nplus', + ((0.33,12.37),(0.33,13.53),(1.07,13.53),(1.07,12.37),(0.33,12.37)), + ) + net = nets['_net0'] + createRL( + tech, net, 'Poly2', + ((5.46,0.62),(5.46,5.42),(0.66,5.42),(0.66,5.78),(5.46,5.78),(5.46,13.52),(5.74,13.52),(5.74,0.62),(5.46,0.62)), + ) + createRL( + tech, net, 'COMP', + ((0.52,9.1),(0.52,11.9),(1.26,11.9),(1.26,9.1),(0.52,9.1)), + ) + createRL( + tech, net, 'COMP', + ((0.52,2.1),(0.52,3.5),(1.26,3.5),(1.26,2.1),(0.52,2.1)), + ) + createRL( + tech, net, 'Contact', + ((0.73,5.49),(0.73,5.71),(0.95,5.71),(0.95,5.49),(0.73,5.49)), + ) + createRL( + tech, net, 'Contact', + ((0.59,9.39),(0.59,9.61),(0.81,9.61),(0.81,9.39),(0.59,9.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,9.89),(0.59,10.11),(0.81,10.11),(0.81,9.89),(0.59,9.89)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.39),(0.59,10.61),(0.81,10.61),(0.81,10.39),(0.59,10.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.89),(0.59,11.11),(0.81,11.11),(0.81,10.89),(0.59,10.89)), + ) + createRL( + tech, net, 'Contact', + ((0.59,11.39),(0.59,11.61),(0.81,11.61),(0.81,11.39),(0.59,11.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.19),(0.59,2.41),(0.81,2.41),(0.81,2.19),(0.59,2.19)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.69),(0.59,2.91),(0.81,2.91),(0.81,2.69),(0.59,2.69)), + ) + createRL( + tech, net, 'Contact', + ((0.59,3.19),(0.59,3.41),(0.81,3.41),(0.81,3.19),(0.59,3.19)), + ) + createRL( + tech, net, 'Metal1', + ((0.53,2.185),(0.53,3.415),(0.585,3.415),(0.585,9.385),(0.53,9.385),(0.53,11.615),(0.87,11.615),(0.87,9.385),(0.815,9.385),(0.815,5.715),(1.01,5.715),(1.01,5.485),(0.815,5.485),(0.815,3.415),(0.87,3.415),(0.87,2.185),(0.53,2.185)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((8.89,0.56),(8.89,1.26),(9.31,1.26),(9.31,0.56),(8.89,0.56)), + ) + createRL( + tech, net, 'COMP', + ((6.86,0.84),(6.86,3.5),(8.54,3.5),(8.54,2.1),(7.88,2.1),(7.88,0.84),(6.86,0.84)), + ) + createRL( + tech, net, 'COMP', + ((4.06,0.84),(4.06,3.5),(4.34,3.5),(4.34,0.84),(4.06,0.84)), + ) + createRL( + tech, net, 'COMP', + ((0.49,0.56),(0.49,1.26),(0.91,1.26),(0.91,0.56),(0.49,0.56)), + ) + createRL( + tech, net, 'COMP', + ((5.46,0.84),(5.46,3.5),(5.74,3.5),(5.74,0.84),(5.46,0.84)), + ) + createRL( + tech, net, 'COMP', + ((1.92,0.84),(1.92,2.1),(1.26,2.1),(1.26,3.5),(2.94,3.5),(2.94,0.84),(1.92,0.84)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(9.8,1.68),(9.8,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.9), u(9.8), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.9), u(9.8), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((0.59,0.87),(0.59,1.09),(0.81,1.09),(0.81,0.87),(0.59,0.87)), + ) + createRL( + tech, net, 'Contact', + ((8.99,0.87),(8.99,1.09),(9.21,1.09),(9.21,0.87),(8.99,0.87)), + ) + createRL( + tech, net, 'Contact', + ((7.59,0.93),(7.59,1.15),(7.81,1.15),(7.81,0.93),(7.59,0.93)), + ) + createRL( + tech, net, 'Contact', + ((7.59,1.43),(7.59,1.65),(7.81,1.65),(7.81,1.43),(7.59,1.43)), + ) + createRL( + tech, net, 'Contact', + ((1.99,0.93),(1.99,1.15),(2.21,1.15),(2.21,0.93),(1.99,0.93)), + ) + createRL( + tech, net, 'Contact', + ((1.99,1.43),(1.99,1.65),(2.21,1.65),(2.21,1.43),(1.99,1.43)), + ) + net = nets['_net2'] + createRL( + tech, net, 'COMP', + ((5.74,0.84),(5.74,3.5),(6.86,3.5),(6.86,0.84),(5.74,0.84)), + ) + net = nets['_net4'] + createRL( + tech, net, 'COMP', + ((2.94,0.84),(2.94,3.5),(4.06,3.5),(4.06,0.84),(2.94,0.84)), + ) + net = nets['_net3'] + createRL( + tech, net, 'Poly2', + ((4.06,0.62),(4.06,4.38),(4.52,4.38),(4.52,4.02),(4.34,4.02),(4.34,0.62),(4.06,0.62)), + ) + createRL( + tech, net, 'Poly2', + ((6.26,5.42),(6.26,5.78),(6.86,5.78),(6.86,13.52),(7.14,13.52),(7.14,5.78),(9.14,5.78),(9.14,5.42),(6.26,5.42)), + ) + createRL( + tech, net, 'COMP', + ((8.54,9.1),(8.54,11.9),(9.28,11.9),(9.28,9.1),(8.54,9.1)), + ) + createRL( + tech, net, 'COMP', + ((8.54,2.1),(8.54,3.5),(9.28,3.5),(9.28,2.1),(8.54,2.1)), + ) + createRL( + tech, net, 'Contact', + ((8.85,5.49),(8.85,5.71),(9.07,5.71),(9.07,5.49),(8.85,5.49)), + ) + createRL( + tech, net, 'Contact', + ((6.33,5.49),(6.33,5.71),(6.55,5.71),(6.55,5.49),(6.33,5.49)), + ) + createRL( + tech, net, 'Contact', + ((8.99,2.19),(8.99,2.41),(9.21,2.41),(9.21,2.19),(8.99,2.19)), + ) + createRL( + tech, net, 'Contact', + ((8.99,2.69),(8.99,2.91),(9.21,2.91),(9.21,2.69),(8.99,2.69)), + ) + createRL( + tech, net, 'Contact', + ((8.99,3.19),(8.99,3.41),(9.21,3.41),(9.21,3.19),(8.99,3.19)), + ) + createRL( + tech, net, 'Contact', + ((4.23,4.09),(4.23,4.31),(4.45,4.31),(4.45,4.09),(4.23,4.09)), + ) + createRL( + tech, net, 'Contact', + ((8.99,9.39),(8.99,9.61),(9.21,9.61),(9.21,9.39),(8.99,9.39)), + ) + createRL( + tech, net, 'Contact', + ((8.99,9.89),(8.99,10.11),(9.21,10.11),(9.21,9.89),(8.99,9.89)), + ) + createRL( + tech, net, 'Contact', + ((8.99,10.39),(8.99,10.61),(9.21,10.61),(9.21,10.39),(8.99,10.39)), + ) + createRL( + tech, net, 'Contact', + ((8.99,10.89),(8.99,11.11),(9.21,11.11),(9.21,10.89),(8.99,10.89)), + ) + createRL( + tech, net, 'Contact', + ((8.99,11.39),(8.99,11.61),(9.21,11.61),(9.21,11.39),(8.99,11.39)), + ) + createRL( + tech, net, 'Metal1', + ((4.17,4.085),(4.17,4.315),(6.185,4.315),(6.185,5.715),(6.61,5.715),(6.61,5.485),(6.415,5.485),(6.415,4.085),(4.17,4.085)), + ) + createRL( + tech, net, 'Metal1', + ((8.93,2.185),(8.93,3.415),(8.985,3.415),(8.985,5.485),(8.79,5.485),(8.79,5.715),(8.985,5.715),(8.985,9.385),(8.93,9.385),(8.93,11.615),(9.27,11.615),(9.27,9.385),(9.215,9.385),(9.215,3.415),(9.27,3.415),(9.27,2.185),(8.93,2.185)), + ) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((1.26,6.82),(1.26,12.12),(1.54,12.12),(1.54,7.18),(2.66,7.18),(2.66,13.52),(2.94,13.52),(2.94,6.82),(1.26,6.82)), + ) + createRL( + tech, net, 'Poly2', + ((2.66,0.62),(2.66,4.02),(1.54,4.02),(1.54,1.88),(1.26,1.88),(1.26,4.38),(2.94,4.38),(2.94,0.62),(2.66,0.62)), + ) + createRL( + tech, net, 'Metal1', + ((1.97,1.91),(1.97,4.085),(1.93,4.085),(1.93,4.315),(1.97,4.315),(1.97,6.885),(1.93,6.885),(1.93,7.115),(1.97,7.115),(1.97,12.09),(2.23,12.09),(2.23,7.115),(2.27,7.115),(2.27,6.885),(2.23,6.885),(2.23,4.315),(2.27,4.315),(2.27,4.085),(2.23,4.085),(2.23,1.91),(1.97,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((1.99,4.09),(1.99,4.31),(2.21,4.31),(2.21,4.09),(1.99,4.09)), + ) + createRL( + tech, net, 'Contact', + ((1.99,6.89),(1.99,7.11),(2.21,7.11),(2.21,6.89),(1.99,6.89)), + ) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((7.66,6.82),(7.66,7.18),(8.26,7.18),(8.26,12.12),(8.54,12.12),(8.54,6.82),(7.66,6.82)), + ) + createRL( + tech, net, 'Poly2', + ((4.06,6.82),(4.06,13.52),(4.34,13.52),(4.34,7.18),(4.52,7.18),(4.52,6.82),(4.06,6.82)), + ) + createRL( + tech, net, 'Poly2', + ((6.86,0.62),(6.86,4.38),(8.54,4.38),(8.54,1.88),(8.26,1.88),(8.26,4.02),(7.14,4.02),(7.14,0.62),(6.86,0.62)), + ) + createRL( + tech, net, 'Metal1', + ((7.57,1.91),(7.57,4.085),(7.53,4.085),(7.53,4.315),(7.57,4.315),(7.57,6.885),(4.17,6.885),(4.17,7.115),(7.57,7.115),(7.57,12.09),(7.83,12.09),(7.83,7.115),(8.01,7.115),(8.01,6.885),(7.83,6.885),(7.83,4.315),(7.87,4.315),(7.87,4.085),(7.83,4.085),(7.83,1.91),(7.57,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(7.7), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(7.7), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((7.73,6.89),(7.73,7.11),(7.95,7.11),(7.95,6.89),(7.73,6.89)), + ) + createRL( + tech, net, 'Contact', + ((7.59,4.09),(7.59,4.31),(7.81,4.31),(7.81,4.09),(7.59,4.09)), + ) + createRL( + tech, net, 'Contact', + ((4.23,6.89),(4.23,7.11),(4.45,7.11),(4.45,6.89),(4.23,6.89)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['nq'].setDirection(Net.Direction.OUT) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + + cell = new_cells['o2_x2'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(5.6000000000000005), u(14.0), + )) + nets = { + '*': Net.create(cell, '*'), + '_net0': Net.create(cell, '_net0'), + '_net1': Net.create(cell, '_net1'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'q': Net.create(cell, 'q'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((1.26,7.7),(1.26,11.9),(1.54,11.9),(1.54,7.7),(1.26,7.7)), + ) + createRL( + tech, net, 'COMP', + ((2.66,7.7),(2.66,11.9),(3.32,11.9),(3.32,13.3),(4.34,13.3),(4.34,7.7),(2.66,7.7)), + ) + createRL( + tech, net, 'COMP', + ((1.82,12.6),(1.82,13.16),(2.38,13.16),(2.38,12.6),(1.82,12.6)), + ) + createRL( + tech, net, 'Nwell', + ((-0.42,6.72),(-0.42,15.12),(6.02,15.12),(6.02,6.72),(-0.42,6.72)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(5.6,14.0),(5.6,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.39,12.42),(3.39,12.64),(3.61,12.64),(3.61,12.42),(3.39,12.42)), + ) + createRL( + tech, net, 'Contact', + ((3.39,12.92),(3.39,13.14),(3.61,13.14),(3.61,12.92),(3.39,12.92)), + ) + createRL( + tech, net, 'Contact', + ((1.99,12.77),(1.99,12.99),(2.21,12.99),(2.21,12.77),(1.99,12.77)), + ) + net = nets['q'] + createRL( + tech, net, 'COMP', + ((4.34,7.7),(4.34,13.3),(5.08,13.3),(5.08,7.7),(4.34,7.7)), + ) + createRL( + tech, net, 'COMP', + ((4.34,0.84),(4.34,3.5),(5.08,3.5),(5.08,0.84),(4.34,0.84)), + ) + createRL( + tech, net, 'Metal1', + ((4.73,1.91),(4.73,3.285),(4.77,3.285),(4.77,7.815),(4.73,7.815),(4.73,12.09),(5.07,12.09),(5.07,7.815),(5.03,7.815),(5.03,3.285),(5.07,3.285),(5.07,1.91),(4.73,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.9), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.9), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((4.79,2.06),(4.79,2.28),(5.01,2.28),(5.01,2.06),(4.79,2.06)), + ) + createRL( + tech, net, 'Contact', + ((4.79,2.56),(4.79,2.78),(5.01,2.78),(5.01,2.56),(4.79,2.56)), + ) + createRL( + tech, net, 'Contact', + ((4.79,3.06),(4.79,3.28),(5.01,3.28),(5.01,3.06),(4.79,3.06)), + ) + createRL( + tech, net, 'Contact', + ((4.79,7.82),(4.79,8.04),(5.01,8.04),(5.01,7.82),(4.79,7.82)), + ) + createRL( + tech, net, 'Contact', + ((4.79,8.32),(4.79,8.54),(5.01,8.54),(5.01,8.32),(4.79,8.32)), + ) + createRL( + tech, net, 'Contact', + ((4.79,8.82),(4.79,9.04),(5.01,9.04),(5.01,8.82),(4.79,8.82)), + ) + createRL( + tech, net, 'Contact', + ((4.79,9.32),(4.79,9.54),(5.01,9.54),(5.01,9.32),(4.79,9.32)), + ) + createRL( + tech, net, 'Contact', + ((4.79,9.82),(4.79,10.04),(5.01,10.04),(5.01,9.82),(4.79,9.82)), + ) + createRL( + tech, net, 'Contact', + ((4.79,10.32),(4.79,10.54),(5.01,10.54),(5.01,10.32),(4.79,10.32)), + ) + createRL( + tech, net, 'Contact', + ((4.79,10.82),(4.79,11.04),(5.01,11.04),(5.01,10.82),(4.79,10.82)), + ) + createRL( + tech, net, 'Contact', + ((4.79,11.32),(4.79,11.54),(5.01,11.54),(5.01,11.32),(4.79,11.32)), + ) + createRL( + tech, net, 'Contact', + ((4.79,11.82),(4.79,12.04),(5.01,12.04),(5.01,11.82),(4.79,11.82)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((0.36,7.47),(0.36,12.13),(3.16,12.13),(3.16,13.53),(5.24,13.53),(5.24,7.47),(0.36,7.47)), + ) + createRL( + tech, net, 'Pplus', + ((1.66,0.47),(1.66,1.49),(2.54,1.49),(2.54,0.47),(1.66,0.47)), + ) + createRL( + tech, net, 'Nplus', + ((3.16,0.61),(3.16,1.87),(1.04,1.87),(1.04,0.85),(0.36,0.85),(0.36,3.73),(5.24,3.73),(5.24,0.61),(3.16,0.61)), + ) + createRL( + tech, net, 'Nplus', + ((1.66,12.37),(1.66,13.39),(2.54,13.39),(2.54,12.37),(1.66,12.37)), + ) + net = nets['_net1'] + createRL( + tech, net, 'Poly2', + ((4.06,0.62),(4.06,5.42),(2.06,5.42),(2.06,5.78),(4.06,5.78),(4.06,13.52),(4.34,13.52),(4.34,0.62),(4.06,0.62)), + ) + createRL( + tech, net, 'COMP', + ((0.52,7.7),(0.52,11.9),(1.26,11.9),(1.26,7.7),(0.52,7.7)), + ) + createRL( + tech, net, 'COMP', + ((1.54,2.1),(1.54,3.5),(2.66,3.5),(2.66,2.1),(1.54,2.1)), + ) + createRL( + tech, net, 'Metal1', + ((1.93,2.185),(1.93,3.415),(1.985,3.415),(1.985,11.085),(0.87,11.085),(0.87,10.73),(0.53,10.73),(0.53,11.645),(0.87,11.645),(0.87,11.315),(2.215,11.315),(2.215,5.715),(2.41,5.715),(2.41,5.485),(2.215,5.485),(2.215,3.415),(2.27,3.415),(2.27,2.185),(1.93,2.185)), + ) + createRL( + tech, net, 'Contact', + ((2.13,5.49),(2.13,5.71),(2.35,5.71),(2.35,5.49),(2.13,5.49)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.92),(0.59,11.14),(0.81,11.14),(0.81,10.92),(0.59,10.92)), + ) + createRL( + tech, net, 'Contact', + ((0.59,11.42),(0.59,11.64),(0.81,11.64),(0.81,11.42),(0.59,11.42)), + ) + createRL( + tech, net, 'Contact', + ((1.99,2.19),(1.99,2.41),(2.21,2.41),(2.21,2.19),(1.99,2.19)), + ) + createRL( + tech, net, 'Contact', + ((1.99,2.69),(1.99,2.91),(2.21,2.91),(2.21,2.69),(1.99,2.69)), + ) + createRL( + tech, net, 'Contact', + ((1.99,3.19),(1.99,3.41),(2.21,3.41),(2.21,3.19),(1.99,3.19)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((0.52,1.08),(0.52,3.5),(1.54,3.5),(1.54,2.1),(0.88,2.1),(0.88,1.08),(0.52,1.08)), + ) + createRL( + tech, net, 'COMP', + ((3.32,0.84),(3.32,2.1),(2.66,2.1),(2.66,3.5),(4.34,3.5),(4.34,0.84),(3.32,0.84)), + ) + createRL( + tech, net, 'COMP', + ((1.82,0.7),(1.82,1.26),(2.38,1.26),(2.38,0.7),(1.82,0.7)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(5.6,1.68),(5.6,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.39,0.93),(3.39,1.15),(3.61,1.15),(3.61,0.93),(3.39,0.93)), + ) + createRL( + tech, net, 'Contact', + ((3.39,1.43),(3.39,1.65),(3.61,1.65),(3.61,1.43),(3.39,1.43)), + ) + createRL( + tech, net, 'Contact', + ((0.59,1.15),(0.59,1.37),(0.81,1.37),(0.81,1.15),(0.59,1.15)), + ) + createRL( + tech, net, 'Contact', + ((1.99,0.87),(1.99,1.09),(2.21,1.09),(2.21,0.87),(1.99,0.87)), + ) + net = nets['_net0'] + createRL( + tech, net, 'COMP', + ((1.54,7.7),(1.54,11.9),(2.66,11.9),(2.66,7.7),(1.54,7.7)), + ) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((2.66,6.82),(2.66,12.12),(2.94,12.12),(2.94,7.18),(3.54,7.18),(3.54,6.82),(2.66,6.82)), + ) + createRL( + tech, net, 'Poly2', + ((2.66,1.88),(2.66,4.38),(3.54,4.38),(3.54,4.02),(2.94,4.02),(2.94,1.88),(2.66,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((3.37,1.91),(3.37,4.085),(3.19,4.085),(3.19,4.315),(3.37,4.315),(3.37,6.885),(3.19,6.885),(3.19,7.115),(3.37,7.115),(3.37,12.09),(3.63,12.09),(3.63,1.91),(3.37,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.25,6.89),(3.25,7.11),(3.47,7.11),(3.47,6.89),(3.25,6.89)), + ) + createRL( + tech, net, 'Contact', + ((3.25,4.09),(3.25,4.31),(3.47,4.31),(3.47,4.09),(3.25,4.09)), + ) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((1.26,1.88),(1.26,5.42),(0.66,5.42),(0.66,5.78),(1.26,5.78),(1.26,12.12),(1.54,12.12),(1.54,1.88),(1.26,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((0.57,1.91),(0.57,10.5),(0.83,10.5),(0.83,5.715),(1.01,5.715),(1.01,5.485),(0.83,5.485),(0.83,1.91),(0.57,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(0.26), u(1.91), u(10.5), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(0.26), u(1.91), u(10.5), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((0.73,5.49),(0.73,5.71),(0.95,5.71),(0.95,5.49),(0.73,5.49)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['q'].setDirection(Net.Direction.OUT) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + + cell = new_cells['o3_x2'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(7.0), u(14.0), + )) + nets = { + '*': Net.create(cell, '*'), + '_net0': Net.create(cell, '_net0'), + '_net1': Net.create(cell, '_net1'), + '_net2': Net.create(cell, '_net2'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'i2': Net.create(cell, 'i2'), + 'q': Net.create(cell, 'q'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((4.06,7.7),(4.06,11.9),(4.72,11.9),(4.72,13.3),(5.74,13.3),(5.74,7.7),(4.06,7.7)), + ) + createRL( + tech, net, 'COMP', + ((2.66,7.7),(2.66,11.9),(2.94,11.9),(2.94,7.7),(2.66,7.7)), + ) + createRL( + tech, net, 'COMP', + ((1.26,7.7),(1.26,11.9),(1.54,11.9),(1.54,7.7),(1.26,7.7)), + ) + createRL( + tech, net, 'COMP', + ((3.22,12.6),(3.22,13.16),(3.78,13.16),(3.78,12.6),(3.22,12.6)), + ) + createRL( + tech, net, 'COMP', + ((0.49,12.6),(0.49,13.3),(0.91,13.3),(0.91,12.6),(0.49,12.6)), + ) + createRL( + tech, net, 'Nwell', + ((-0.42,6.72),(-0.42,15.12),(7.42,15.12),(7.42,6.72),(-0.42,6.72)), + ) + createRL( + tech, net, 'Metal1', + ((4.73,11.545),(4.73,12.32),(0.0,12.32),(0.0,14.0),(7.0,14.0),(7.0,12.32),(5.07,12.32),(5.07,11.545),(4.73,11.545)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(7.0), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(7.0), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((4.79,11.78),(4.79,12.0),(5.01,12.0),(5.01,11.78),(4.79,11.78)), + ) + createRL( + tech, net, 'Contact', + ((4.79,12.28),(4.79,12.5),(5.01,12.5),(5.01,12.28),(4.79,12.28)), + ) + createRL( + tech, net, 'Contact', + ((4.79,12.78),(4.79,13.0),(5.01,13.0),(5.01,12.78),(4.79,12.78)), + ) + createRL( + tech, net, 'Contact', + ((3.39,12.77),(3.39,12.99),(3.61,12.99),(3.61,12.77),(3.39,12.77)), + ) + createRL( + tech, net, 'Contact', + ((0.59,12.77),(0.59,12.99),(0.81,12.99),(0.81,12.77),(0.59,12.77)), + ) + net = nets['q'] + createRL( + tech, net, 'COMP', + ((5.74,0.84),(5.74,3.5),(6.48,3.5),(6.48,0.84),(5.74,0.84)), + ) + createRL( + tech, net, 'COMP', + ((5.74,7.7),(5.74,13.3),(6.48,13.3),(6.48,7.7),(5.74,7.7)), + ) + createRL( + tech, net, 'Metal1', + ((6.13,1.91),(6.13,3.285),(6.17,3.285),(6.17,7.815),(6.13,7.815),(6.13,12.09),(6.47,12.09),(6.47,7.815),(6.43,7.815),(6.43,3.285),(6.47,3.285),(6.47,1.91),(6.13,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(6.3), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(6.3), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((6.19,2.06),(6.19,2.28),(6.41,2.28),(6.41,2.06),(6.19,2.06)), + ) + createRL( + tech, net, 'Contact', + ((6.19,2.56),(6.19,2.78),(6.41,2.78),(6.41,2.56),(6.19,2.56)), + ) + createRL( + tech, net, 'Contact', + ((6.19,3.06),(6.19,3.28),(6.41,3.28),(6.41,3.06),(6.19,3.06)), + ) + createRL( + tech, net, 'Contact', + ((6.19,7.82),(6.19,8.04),(6.41,8.04),(6.41,7.82),(6.19,7.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,8.32),(6.19,8.54),(6.41,8.54),(6.41,8.32),(6.19,8.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,8.82),(6.19,9.04),(6.41,9.04),(6.41,8.82),(6.19,8.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,9.32),(6.19,9.54),(6.41,9.54),(6.41,9.32),(6.19,9.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,9.82),(6.19,10.04),(6.41,10.04),(6.41,9.82),(6.19,9.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,10.32),(6.19,10.54),(6.41,10.54),(6.41,10.32),(6.19,10.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,10.82),(6.19,11.04),(6.41,11.04),(6.41,10.82),(6.19,10.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,11.32),(6.19,11.54),(6.41,11.54),(6.41,11.32),(6.19,11.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,11.82),(6.19,12.04),(6.41,12.04),(6.41,11.82),(6.19,11.82)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((3.06,0.47),(3.06,1.49),(3.94,1.49),(3.94,0.47),(3.06,0.47)), + ) + createRL( + tech, net, 'Pplus', + ((0.36,7.47),(0.36,12.13),(4.56,12.13),(4.56,13.53),(6.64,13.53),(6.64,7.47),(0.36,7.47)), + ) + createRL( + tech, net, 'Pplus', + ((0.33,0.33),(0.33,1.49),(1.07,1.49),(1.07,0.33),(0.33,0.33)), + ) + createRL( + tech, net, 'Nplus', + ((3.06,12.37),(3.06,13.39),(3.94,13.39),(3.94,12.37),(3.06,12.37)), + ) + createRL( + tech, net, 'Nplus', + ((4.56,0.61),(4.56,1.87),(2.44,1.87),(2.44,0.85),(1.76,0.85),(1.76,1.87),(0.36,1.87),(0.36,3.73),(6.64,3.73),(6.64,0.61),(4.56,0.61)), + ) + createRL( + tech, net, 'Nplus', + ((0.33,12.37),(0.33,13.53),(1.07,13.53),(1.07,12.37),(0.33,12.37)), + ) + net = nets['_net1'] + createRL( + tech, net, 'Poly2', + ((5.46,0.62),(5.46,5.42),(4.86,5.42),(4.86,5.78),(5.46,5.78),(5.46,13.52),(5.74,13.52),(5.74,0.62),(5.46,0.62)), + ) + createRL( + tech, net, 'COMP', + ((0.52,2.1),(0.52,3.5),(1.26,3.5),(1.26,2.1),(0.52,2.1)), + ) + createRL( + tech, net, 'COMP', + ((2.94,2.1),(2.94,3.5),(4.06,3.5),(4.06,2.1),(2.94,2.1)), + ) + createRL( + tech, net, 'COMP', + ((0.52,7.7),(0.52,11.9),(1.26,11.9),(1.26,7.7),(0.52,7.7)), + ) + createRL( + tech, net, 'Metal1', + ((0.53,2.355),(0.53,3.27),(0.87,3.27),(0.87,2.915),(3.33,2.915),(3.33,3.27),(3.67,3.27),(3.67,2.915),(4.785,2.915),(4.785,11.085),(0.87,11.085),(0.87,10.73),(0.53,10.73),(0.53,11.645),(0.87,11.645),(0.87,11.315),(5.015,11.315),(5.015,5.715),(5.21,5.715),(5.21,5.485),(5.015,5.485),(5.015,2.685),(3.67,2.685),(3.67,2.355),(3.33,2.355),(3.33,2.685),(0.87,2.685),(0.87,2.355),(0.53,2.355)), + ) + createRL( + tech, net, 'Contact', + ((4.93,5.49),(4.93,5.71),(5.15,5.71),(5.15,5.49),(4.93,5.49)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.92),(0.59,11.14),(0.81,11.14),(0.81,10.92),(0.59,10.92)), + ) + createRL( + tech, net, 'Contact', + ((0.59,11.42),(0.59,11.64),(0.81,11.64),(0.81,11.42),(0.59,11.42)), + ) + createRL( + tech, net, 'Contact', + ((3.39,2.36),(3.39,2.58),(3.61,2.58),(3.61,2.36),(3.39,2.36)), + ) + createRL( + tech, net, 'Contact', + ((3.39,2.86),(3.39,3.08),(3.61,3.08),(3.61,2.86),(3.39,2.86)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.36),(0.59,2.58),(0.81,2.58),(0.81,2.36),(0.59,2.36)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.86),(0.59,3.08),(0.81,3.08),(0.81,2.86),(0.59,2.86)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((3.22,0.7),(3.22,1.26),(3.78,1.26),(3.78,0.7),(3.22,0.7)), + ) + createRL( + tech, net, 'COMP', + ((1.92,1.08),(1.92,2.1),(1.26,2.1),(1.26,3.5),(2.94,3.5),(2.94,2.1),(2.28,2.1),(2.28,1.08),(1.92,1.08)), + ) + createRL( + tech, net, 'COMP', + ((0.49,0.56),(0.49,1.26),(0.91,1.26),(0.91,0.56),(0.49,0.56)), + ) + createRL( + tech, net, 'COMP', + ((4.72,0.84),(4.72,2.1),(4.06,2.1),(4.06,3.5),(5.74,3.5),(5.74,0.84),(4.72,0.84)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(4.73,1.68),(4.73,2.455),(5.07,2.455),(5.07,1.68),(7.0,1.68),(7.0,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(7.0), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(7.0), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.39,0.87),(3.39,1.09),(3.61,1.09),(3.61,0.87),(3.39,0.87)), + ) + createRL( + tech, net, 'Contact', + ((1.99,1.15),(1.99,1.37),(2.21,1.37),(2.21,1.15),(1.99,1.15)), + ) + createRL( + tech, net, 'Contact', + ((0.59,0.87),(0.59,1.09),(0.81,1.09),(0.81,0.87),(0.59,0.87)), + ) + createRL( + tech, net, 'Contact', + ((4.79,1.07),(4.79,1.29),(5.01,1.29),(5.01,1.07),(4.79,1.07)), + ) + createRL( + tech, net, 'Contact', + ((4.79,1.57),(4.79,1.79),(5.01,1.79),(5.01,1.57),(4.79,1.57)), + ) + createRL( + tech, net, 'Contact', + ((4.79,2.07),(4.79,2.29),(5.01,2.29),(5.01,2.07),(4.79,2.07)), + ) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((4.06,1.88),(4.06,6.82),(3.46,6.82),(3.46,7.18),(4.06,7.18),(4.06,12.12),(4.34,12.12),(4.34,1.88),(4.06,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((3.37,3.5),(3.37,10.855),(3.63,10.855),(3.63,7.115),(3.81,7.115),(3.81,6.885),(3.63,6.885),(3.63,3.5),(3.37,3.5)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(0.26), u(3.5), u(10.855), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(0.26), u(3.5), u(10.855), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.53,6.89),(3.53,7.11),(3.75,7.11),(3.75,6.89),(3.53,6.89)), + ) + net = nets['_net2'] + createRL( + tech, net, 'COMP', + ((2.94,7.7),(2.94,11.9),(4.06,11.9),(4.06,7.7),(2.94,7.7)), + ) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((2.66,1.88),(2.66,4.02),(1.92,4.02),(1.92,4.38),(2.66,4.38),(2.66,12.12),(2.94,12.12),(2.94,1.88),(2.66,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((1.97,3.145),(1.97,4.085),(1.93,4.085),(1.93,4.315),(1.97,4.315),(1.97,10.855),(2.23,10.855),(2.23,4.315),(2.27,4.315),(2.27,4.085),(2.23,4.085),(2.23,3.145),(1.97,3.145)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(0.26), u(3.145), u(10.855), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(0.26), u(3.145), u(10.855), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((1.99,4.09),(1.99,4.31),(2.21,4.31),(2.21,4.09),(1.99,4.09)), + ) + net = nets['_net0'] + createRL( + tech, net, 'COMP', + ((1.54,7.7),(1.54,11.9),(2.66,11.9),(2.66,7.7),(1.54,7.7)), + ) + net = nets['i2'] + createRL( + tech, net, 'Poly2', + ((1.26,1.88),(1.26,5.42),(0.52,5.42),(0.52,5.78),(1.26,5.78),(1.26,12.12),(1.54,12.12),(1.54,1.88),(1.26,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((0.57,3.5),(0.57,5.485),(0.53,5.485),(0.53,5.715),(0.57,5.715),(0.57,10.5),(0.83,10.5),(0.83,5.715),(0.87,5.715),(0.87,5.485),(0.83,5.485),(0.83,3.5),(0.57,3.5)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(0.26), u(3.5), u(10.5), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(0.26), u(3.5), u(10.5), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((0.59,5.49),(0.59,5.71),(0.81,5.71),(0.81,5.49),(0.59,5.49)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['q'].setDirection(Net.Direction.OUT) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + nets['i2'].setDirection(Net.Direction.IN) + + cell = new_cells['o4_x2'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(8.4), u(14.0), + )) + nets = { + '*': Net.create(cell, '*'), + '_net0': Net.create(cell, '_net0'), + '_net1': Net.create(cell, '_net1'), + '_net2': Net.create(cell, '_net2'), + '_net3': Net.create(cell, '_net3'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'i2': Net.create(cell, 'i2'), + 'i3': Net.create(cell, 'i3'), + 'q': Net.create(cell, 'q'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((5.46,7.7),(5.46,11.9),(6.12,11.9),(6.12,13.3),(7.14,13.3),(7.14,7.7),(5.46,7.7)), + ) + createRL( + tech, net, 'COMP', + ((1.26,7.7),(1.26,11.9),(1.54,11.9),(1.54,7.7),(1.26,7.7)), + ) + createRL( + tech, net, 'COMP', + ((4.06,7.7),(4.06,11.9),(4.34,11.9),(4.34,7.7),(4.06,7.7)), + ) + createRL( + tech, net, 'COMP', + ((2.66,7.7),(2.66,11.9),(2.94,11.9),(2.94,7.7),(2.66,7.7)), + ) + createRL( + tech, net, 'COMP', + ((4.62,12.6),(4.62,13.16),(5.18,13.16),(5.18,12.6),(4.62,12.6)), + ) + createRL( + tech, net, 'COMP', + ((1.82,12.6),(1.82,13.16),(2.38,13.16),(2.38,12.6),(1.82,12.6)), + ) + createRL( + tech, net, 'Nwell', + ((-0.42,6.72),(-0.42,15.12),(8.82,15.12),(8.82,6.72),(-0.42,6.72)), + ) + createRL( + tech, net, 'Metal1', + ((6.13,11.545),(6.13,12.32),(0.0,12.32),(0.0,14.0),(8.4,14.0),(8.4,12.32),(6.47,12.32),(6.47,11.545),(6.13,11.545)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.2), u(8.4), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.2), u(8.4), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((4.79,12.77),(4.79,12.99),(5.01,12.99),(5.01,12.77),(4.79,12.77)), + ) + createRL( + tech, net, 'Contact', + ((6.19,11.78),(6.19,12.0),(6.41,12.0),(6.41,11.78),(6.19,11.78)), + ) + createRL( + tech, net, 'Contact', + ((6.19,12.28),(6.19,12.5),(6.41,12.5),(6.41,12.28),(6.19,12.28)), + ) + createRL( + tech, net, 'Contact', + ((6.19,12.78),(6.19,13.0),(6.41,13.0),(6.41,12.78),(6.19,12.78)), + ) + createRL( + tech, net, 'Contact', + ((1.99,12.77),(1.99,12.99),(2.21,12.99),(2.21,12.77),(1.99,12.77)), + ) + net = nets['q'] + createRL( + tech, net, 'COMP', + ((7.14,7.7),(7.14,13.3),(7.88,13.3),(7.88,7.7),(7.14,7.7)), + ) + createRL( + tech, net, 'COMP', + ((7.14,0.84),(7.14,3.5),(7.88,3.5),(7.88,0.84),(7.14,0.84)), + ) + createRL( + tech, net, 'Metal1', + ((7.53,1.91),(7.53,3.285),(7.57,3.285),(7.57,7.815),(7.53,7.815),(7.53,12.09),(7.87,12.09),(7.87,7.815),(7.83,7.815),(7.83,3.285),(7.87,3.285),(7.87,1.91),(7.53,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(7.7), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(7.7), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((7.59,2.06),(7.59,2.28),(7.81,2.28),(7.81,2.06),(7.59,2.06)), + ) + createRL( + tech, net, 'Contact', + ((7.59,2.56),(7.59,2.78),(7.81,2.78),(7.81,2.56),(7.59,2.56)), + ) + createRL( + tech, net, 'Contact', + ((7.59,3.06),(7.59,3.28),(7.81,3.28),(7.81,3.06),(7.59,3.06)), + ) + createRL( + tech, net, 'Contact', + ((7.59,7.82),(7.59,8.04),(7.81,8.04),(7.81,7.82),(7.59,7.82)), + ) + createRL( + tech, net, 'Contact', + ((7.59,8.32),(7.59,8.54),(7.81,8.54),(7.81,8.32),(7.59,8.32)), + ) + createRL( + tech, net, 'Contact', + ((7.59,8.82),(7.59,9.04),(7.81,9.04),(7.81,8.82),(7.59,8.82)), + ) + createRL( + tech, net, 'Contact', + ((7.59,9.32),(7.59,9.54),(7.81,9.54),(7.81,9.32),(7.59,9.32)), + ) + createRL( + tech, net, 'Contact', + ((7.59,9.82),(7.59,10.04),(7.81,10.04),(7.81,9.82),(7.59,9.82)), + ) + createRL( + tech, net, 'Contact', + ((7.59,10.32),(7.59,10.54),(7.81,10.54),(7.81,10.32),(7.59,10.32)), + ) + createRL( + tech, net, 'Contact', + ((7.59,10.82),(7.59,11.04),(7.81,11.04),(7.81,10.82),(7.59,10.82)), + ) + createRL( + tech, net, 'Contact', + ((7.59,11.32),(7.59,11.54),(7.81,11.54),(7.81,11.32),(7.59,11.32)), + ) + createRL( + tech, net, 'Contact', + ((7.59,11.82),(7.59,12.04),(7.81,12.04),(7.81,11.82),(7.59,11.82)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((4.46,0.47),(4.46,1.49),(5.34,1.49),(5.34,0.47),(4.46,0.47)), + ) + createRL( + tech, net, 'Pplus', + ((0.36,7.47),(0.36,12.13),(5.96,12.13),(5.96,13.53),(8.04,13.53),(8.04,7.47),(0.36,7.47)), + ) + createRL( + tech, net, 'Pplus', + ((1.66,0.47),(1.66,1.49),(2.54,1.49),(2.54,0.47),(1.66,0.47)), + ) + createRL( + tech, net, 'Nplus', + ((5.96,0.61),(5.96,1.87),(3.84,1.87),(3.84,0.85),(3.16,0.85),(3.16,1.87),(1.04,1.87),(1.04,0.85),(0.36,0.85),(0.36,3.73),(8.04,3.73),(8.04,0.61),(5.96,0.61)), + ) + createRL( + tech, net, 'Nplus', + ((4.46,12.37),(4.46,13.39),(5.34,13.39),(5.34,12.37),(4.46,12.37)), + ) + createRL( + tech, net, 'Nplus', + ((1.66,12.37),(1.66,13.39),(2.54,13.39),(2.54,12.37),(1.66,12.37)), + ) + net = nets['_net2'] + createRL( + tech, net, 'Poly2', + ((6.86,0.62),(6.86,5.42),(6.26,5.42),(6.26,5.78),(6.86,5.78),(6.86,13.52),(7.14,13.52),(7.14,0.62),(6.86,0.62)), + ) + createRL( + tech, net, 'COMP', + ((4.34,2.1),(4.34,3.5),(5.46,3.5),(5.46,2.1),(4.34,2.1)), + ) + createRL( + tech, net, 'COMP', + ((0.52,7.7),(0.52,11.9),(1.26,11.9),(1.26,7.7),(0.52,7.7)), + ) + createRL( + tech, net, 'COMP', + ((1.54,2.1),(1.54,3.5),(2.66,3.5),(2.66,2.1),(1.54,2.1)), + ) + createRL( + tech, net, 'Metal1', + ((1.93,2.355),(1.93,3.27),(2.27,3.27),(2.27,2.915),(4.73,2.915),(4.73,3.27),(5.07,3.27),(5.07,2.915),(6.185,2.915),(6.185,11.085),(0.87,11.085),(0.87,10.73),(0.53,10.73),(0.53,11.645),(0.87,11.645),(0.87,11.315),(6.415,11.315),(6.415,5.715),(6.61,5.715),(6.61,5.485),(6.415,5.485),(6.415,2.685),(5.07,2.685),(5.07,2.355),(4.73,2.355),(4.73,2.685),(2.27,2.685),(2.27,2.355),(1.93,2.355)), + ) + createRL( + tech, net, 'Contact', + ((4.79,2.36),(4.79,2.58),(5.01,2.58),(5.01,2.36),(4.79,2.36)), + ) + createRL( + tech, net, 'Contact', + ((4.79,2.86),(4.79,3.08),(5.01,3.08),(5.01,2.86),(4.79,2.86)), + ) + createRL( + tech, net, 'Contact', + ((1.99,2.36),(1.99,2.58),(2.21,2.58),(2.21,2.36),(1.99,2.36)), + ) + createRL( + tech, net, 'Contact', + ((1.99,2.86),(1.99,3.08),(2.21,3.08),(2.21,2.86),(1.99,2.86)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.92),(0.59,11.14),(0.81,11.14),(0.81,10.92),(0.59,10.92)), + ) + createRL( + tech, net, 'Contact', + ((0.59,11.42),(0.59,11.64),(0.81,11.64),(0.81,11.42),(0.59,11.42)), + ) + createRL( + tech, net, 'Contact', + ((6.33,5.49),(6.33,5.71),(6.55,5.71),(6.55,5.49),(6.33,5.49)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((0.52,1.08),(0.52,3.5),(1.54,3.5),(1.54,2.1),(0.88,2.1),(0.88,1.08),(0.52,1.08)), + ) + createRL( + tech, net, 'COMP', + ((4.62,0.7),(4.62,1.26),(5.18,1.26),(5.18,0.7),(4.62,0.7)), + ) + createRL( + tech, net, 'COMP', + ((6.12,0.84),(6.12,2.1),(5.46,2.1),(5.46,3.5),(7.14,3.5),(7.14,0.84),(6.12,0.84)), + ) + createRL( + tech, net, 'COMP', + ((3.32,1.08),(3.32,2.1),(2.66,2.1),(2.66,3.5),(4.34,3.5),(4.34,2.1),(3.68,2.1),(3.68,1.08),(3.32,1.08)), + ) + createRL( + tech, net, 'COMP', + ((1.82,0.7),(1.82,1.26),(2.38,1.26),(2.38,0.7),(1.82,0.7)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(6.13,1.68),(6.13,2.455),(6.47,2.455),(6.47,1.68),(8.4,1.68),(8.4,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.2), u(8.4), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.2), u(8.4), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.39,1.15),(3.39,1.37),(3.61,1.37),(3.61,1.15),(3.39,1.15)), + ) + createRL( + tech, net, 'Contact', + ((4.79,0.87),(4.79,1.09),(5.01,1.09),(5.01,0.87),(4.79,0.87)), + ) + createRL( + tech, net, 'Contact', + ((6.19,1.07),(6.19,1.29),(6.41,1.29),(6.41,1.07),(6.19,1.07)), + ) + createRL( + tech, net, 'Contact', + ((6.19,1.57),(6.19,1.79),(6.41,1.79),(6.41,1.57),(6.19,1.57)), + ) + createRL( + tech, net, 'Contact', + ((6.19,2.07),(6.19,2.29),(6.41,2.29),(6.41,2.07),(6.19,2.07)), + ) + createRL( + tech, net, 'Contact', + ((0.59,1.15),(0.59,1.37),(0.81,1.37),(0.81,1.15),(0.59,1.15)), + ) + createRL( + tech, net, 'Contact', + ((1.99,0.87),(1.99,1.09),(2.21,1.09),(2.21,0.87),(1.99,0.87)), + ) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((4.06,1.88),(4.06,5.42),(3.46,5.42),(3.46,5.78),(4.06,5.78),(4.06,12.12),(4.34,12.12),(4.34,1.88),(4.06,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((3.37,3.145),(3.37,10.855),(3.63,10.855),(3.63,5.715),(3.81,5.715),(3.81,5.485),(3.63,5.485),(3.63,3.145),(3.37,3.145)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(0.26), u(3.145), u(10.855), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(0.26), u(3.145), u(10.855), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.53,5.49),(3.53,5.71),(3.75,5.71),(3.75,5.49),(3.53,5.49)), + ) + net = nets['_net3'] + createRL( + tech, net, 'COMP', + ((2.94,7.7),(2.94,11.9),(4.06,11.9),(4.06,7.7),(2.94,7.7)), + ) + net = nets['_net0'] + createRL( + tech, net, 'COMP', + ((4.34,7.7),(4.34,11.9),(5.46,11.9),(5.46,7.7),(4.34,7.7)), + ) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((2.66,1.88),(2.66,5.42),(2.06,5.42),(2.06,5.78),(2.66,5.78),(2.66,12.12),(2.94,12.12),(2.94,1.88),(2.66,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((1.97,3.5),(1.97,10.855),(2.23,10.855),(2.23,5.715),(2.41,5.715),(2.41,5.485),(2.23,5.485),(2.23,3.5),(1.97,3.5)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(0.26), u(3.5), u(10.855), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(0.26), u(3.5), u(10.855), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((2.13,5.49),(2.13,5.71),(2.35,5.71),(2.35,5.49),(2.13,5.49)), + ) + net = nets['_net1'] + createRL( + tech, net, 'COMP', + ((1.54,7.7),(1.54,11.9),(2.66,11.9),(2.66,7.7),(1.54,7.7)), + ) + net = nets['i2'] + createRL( + tech, net, 'Poly2', + ((5.46,1.88),(5.46,5.42),(4.86,5.42),(4.86,5.78),(5.46,5.78),(5.46,12.12),(5.74,12.12),(5.74,1.88),(5.46,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((4.77,3.5),(4.77,10.855),(5.03,10.855),(5.03,5.715),(5.21,5.715),(5.21,5.485),(5.03,5.485),(5.03,3.5),(4.77,3.5)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.9), u(0.26), u(3.5), u(10.855), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.9), u(0.26), u(3.5), u(10.855), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((4.93,5.49),(4.93,5.71),(5.15,5.71),(5.15,5.49),(4.93,5.49)), + ) + net = nets['i3'] + createRL( + tech, net, 'Poly2', + ((1.26,1.88),(1.26,5.42),(0.66,5.42),(0.66,5.78),(1.26,5.78),(1.26,12.12),(1.54,12.12),(1.54,1.88),(1.26,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((0.57,1.91),(0.57,10.5),(0.83,10.5),(0.83,5.715),(1.01,5.715),(1.01,5.485),(0.83,5.485),(0.83,1.91),(0.57,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(0.26), u(1.91), u(10.5), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(0.26), u(1.91), u(10.5), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((0.73,5.49),(0.73,5.71),(0.95,5.71),(0.95,5.49),(0.73,5.49)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['q'].setDirection(Net.Direction.OUT) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + nets['i2'].setDirection(Net.Direction.IN) + nets['i3'].setDirection(Net.Direction.IN) + + cell = new_cells['oa22_x2'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(7.0), u(14.0), + )) + nets = { + '*': Net.create(cell, '*'), + '_net0': Net.create(cell, '_net0'), + '_net1': Net.create(cell, '_net1'), + '_net2': Net.create(cell, '_net2'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'i2': Net.create(cell, 'i2'), + 'q': Net.create(cell, 'q'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((2.66,9.1),(2.66,11.9),(2.94,11.9),(2.94,9.1),(2.66,9.1)), + ) + createRL( + tech, net, 'COMP', + ((4.72,7.7),(4.72,9.1),(4.06,9.1),(4.06,11.9),(4.72,11.9),(4.72,13.3),(5.74,13.3),(5.74,7.7),(4.72,7.7)), + ) + createRL( + tech, net, 'COMP', + ((1.26,9.1),(1.26,11.9),(1.54,11.9),(1.54,9.1),(1.26,9.1)), + ) + createRL( + tech, net, 'COMP', + ((1.82,12.6),(1.82,13.16),(2.38,13.16),(2.38,12.6),(1.82,12.6)), + ) + createRL( + tech, net, 'Nwell', + ((-0.42,6.72),(-0.42,15.12),(7.42,15.12),(7.42,6.72),(-0.42,6.72)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(7.0,14.0),(7.0,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(7.0), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(7.0), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((4.79,12.42),(4.79,12.64),(5.01,12.64),(5.01,12.42),(4.79,12.42)), + ) + createRL( + tech, net, 'Contact', + ((4.79,12.92),(4.79,13.14),(5.01,13.14),(5.01,12.92),(4.79,12.92)), + ) + createRL( + tech, net, 'Contact', + ((1.99,12.77),(1.99,12.99),(2.21,12.99),(2.21,12.77),(1.99,12.77)), + ) + net = nets['q'] + createRL( + tech, net, 'COMP', + ((5.74,7.7),(5.74,13.3),(6.48,13.3),(6.48,7.7),(5.74,7.7)), + ) + createRL( + tech, net, 'COMP', + ((5.74,0.84),(5.74,3.5),(6.48,3.5),(6.48,0.84),(5.74,0.84)), + ) + createRL( + tech, net, 'Metal1', + ((6.13,1.91),(6.13,3.285),(6.17,3.285),(6.17,7.815),(6.13,7.815),(6.13,12.09),(6.47,12.09),(6.47,7.815),(6.43,7.815),(6.43,3.285),(6.47,3.285),(6.47,1.91),(6.13,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(6.3), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(6.3), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((6.19,2.06),(6.19,2.28),(6.41,2.28),(6.41,2.06),(6.19,2.06)), + ) + createRL( + tech, net, 'Contact', + ((6.19,2.56),(6.19,2.78),(6.41,2.78),(6.41,2.56),(6.19,2.56)), + ) + createRL( + tech, net, 'Contact', + ((6.19,3.06),(6.19,3.28),(6.41,3.28),(6.41,3.06),(6.19,3.06)), + ) + createRL( + tech, net, 'Contact', + ((6.19,7.82),(6.19,8.04),(6.41,8.04),(6.41,7.82),(6.19,7.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,8.32),(6.19,8.54),(6.41,8.54),(6.41,8.32),(6.19,8.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,8.82),(6.19,9.04),(6.41,9.04),(6.41,8.82),(6.19,8.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,9.32),(6.19,9.54),(6.41,9.54),(6.41,9.32),(6.19,9.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,9.82),(6.19,10.04),(6.41,10.04),(6.41,9.82),(6.19,9.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,10.32),(6.19,10.54),(6.41,10.54),(6.41,10.32),(6.19,10.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,10.82),(6.19,11.04),(6.41,11.04),(6.41,10.82),(6.19,10.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,11.32),(6.19,11.54),(6.41,11.54),(6.41,11.32),(6.19,11.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,11.82),(6.19,12.04),(6.41,12.04),(6.41,11.82),(6.19,11.82)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((4.56,7.47),(4.56,8.87),(0.36,8.87),(0.36,12.13),(4.56,12.13),(4.56,13.53),(6.64,13.53),(6.64,7.47),(4.56,7.47)), + ) + createRL( + tech, net, 'Pplus', + ((1.66,0.47),(1.66,1.49),(2.54,1.49),(2.54,0.47),(1.66,0.47)), + ) + createRL( + tech, net, 'Nplus', + ((3.16,0.61),(3.16,2.01),(1.04,2.01),(1.04,0.85),(0.36,0.85),(0.36,5.13),(3.84,5.13),(3.84,3.73),(6.64,3.73),(6.64,0.61),(3.16,0.61)), + ) + createRL( + tech, net, 'Nplus', + ((1.66,12.37),(1.66,13.39),(2.54,13.39),(2.54,12.37),(1.66,12.37)), + ) + net = nets['_net0'] + createRL( + tech, net, 'Poly2', + ((5.46,0.62),(5.46,5.42),(3.46,5.42),(3.46,5.78),(5.46,5.78),(5.46,13.52),(5.74,13.52),(5.74,0.62),(5.46,0.62)), + ) + createRL( + tech, net, 'COMP', + ((1.54,9.1),(1.54,11.9),(2.66,11.9),(2.66,9.1),(1.54,9.1)), + ) + createRL( + tech, net, 'COMP', + ((3.32,0.84),(3.32,2.24),(2.94,2.24),(2.94,4.9),(3.68,4.9),(3.68,3.5),(4.06,3.5),(4.06,0.84),(3.32,0.84)), + ) + createRL( + tech, net, 'Contact', + ((3.53,5.49),(3.53,5.71),(3.75,5.71),(3.75,5.49),(3.53,5.49)), + ) + createRL( + tech, net, 'Contact', + ((3.39,2.01),(3.39,2.23),(3.61,2.23),(3.61,2.01),(3.39,2.01)), + ) + createRL( + tech, net, 'Contact', + ((3.39,2.51),(3.39,2.73),(3.61,2.73),(3.61,2.51),(3.39,2.51)), + ) + createRL( + tech, net, 'Contact', + ((3.39,3.01),(3.39,3.23),(3.61,3.23),(3.61,3.01),(3.39,3.01)), + ) + createRL( + tech, net, 'Contact', + ((3.39,3.51),(3.39,3.73),(3.61,3.73),(3.61,3.51),(3.39,3.51)), + ) + createRL( + tech, net, 'Contact', + ((3.39,4.01),(3.39,4.23),(3.61,4.23),(3.61,4.01),(3.39,4.01)), + ) + createRL( + tech, net, 'Contact', + ((3.39,4.51),(3.39,4.73),(3.61,4.73),(3.61,4.51),(3.39,4.51)), + ) + createRL( + tech, net, 'Contact', + ((1.99,9.4),(1.99,9.62),(2.21,9.62),(2.21,9.4),(1.99,9.4)), + ) + createRL( + tech, net, 'Contact', + ((1.99,9.9),(1.99,10.12),(2.21,10.12),(2.21,9.9),(1.99,9.9)), + ) + createRL( + tech, net, 'Contact', + ((1.99,10.4),(1.99,10.62),(2.21,10.62),(2.21,10.4),(1.99,10.4)), + ) + createRL( + tech, net, 'Metal1', + ((3.33,1.91),(3.33,4.735),(3.385,4.735),(3.385,9.685),(2.27,9.685),(2.27,9.395),(1.93,9.395),(1.93,10.855),(2.27,10.855),(2.27,9.915),(3.615,9.915),(3.615,5.715),(3.81,5.715),(3.81,5.485),(3.615,5.485),(3.615,4.735),(3.67,4.735),(3.67,1.91),(3.33,1.91)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((4.06,0.84),(4.06,3.5),(5.74,3.5),(5.74,0.84),(4.06,0.84)), + ) + createRL( + tech, net, 'COMP', + ((0.52,1.08),(0.52,4.9),(1.54,4.9),(1.54,2.24),(0.88,2.24),(0.88,1.08),(0.52,1.08)), + ) + createRL( + tech, net, 'COMP', + ((2.66,2.24),(2.66,4.9),(2.94,4.9),(2.94,2.24),(2.66,2.24)), + ) + createRL( + tech, net, 'COMP', + ((1.82,0.7),(1.82,1.26),(2.38,1.26),(2.38,0.7),(1.82,0.7)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(7.0,1.68),(7.0,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(7.0), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(7.0), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((0.59,1.15),(0.59,1.37),(0.81,1.37),(0.81,1.15),(0.59,1.15)), + ) + createRL( + tech, net, 'Contact', + ((4.79,0.93),(4.79,1.15),(5.01,1.15),(5.01,0.93),(4.79,0.93)), + ) + createRL( + tech, net, 'Contact', + ((4.79,1.43),(4.79,1.65),(5.01,1.65),(5.01,1.43),(4.79,1.43)), + ) + createRL( + tech, net, 'Contact', + ((1.99,0.87),(1.99,1.09),(2.21,1.09),(2.21,0.87),(1.99,0.87)), + ) + net = nets['_net2'] + createRL( + tech, net, 'COMP', + ((1.54,2.24),(1.54,4.9),(2.66,4.9),(2.66,2.24),(1.54,2.24)), + ) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((1.26,2.02),(1.26,5.42),(0.66,5.42),(0.66,5.78),(1.26,5.78),(1.26,12.12),(1.54,12.12),(1.54,2.02),(1.26,2.02)), + ) + createRL( + tech, net, 'Metal1', + ((0.57,1.91),(0.57,10.5),(0.83,10.5),(0.83,5.715),(1.01,5.715),(1.01,5.485),(0.83,5.485),(0.83,1.91),(0.57,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(0.26), u(1.91), u(10.5), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(0.26), u(1.91), u(10.5), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((0.73,5.49),(0.73,5.71),(0.95,5.71),(0.95,5.49),(0.73,5.49)), + ) + net = nets['_net1'] + createRL( + tech, net, 'COMP', + ((0.52,9.1),(0.52,11.9),(1.26,11.9),(1.26,9.1),(0.52,9.1)), + ) + createRL( + tech, net, 'COMP', + ((2.94,9.1),(2.94,11.9),(4.06,11.9),(4.06,9.1),(2.94,9.1)), + ) + createRL( + tech, net, 'Metal1', + ((3.33,10.145),(3.33,11.085),(0.87,11.085),(0.87,10.73),(0.53,10.73),(0.53,11.645),(0.87,11.645),(0.87,11.315),(3.33,11.315),(3.33,11.605),(3.67,11.605),(3.67,10.145),(3.33,10.145)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.92),(0.59,11.14),(0.81,11.14),(0.81,10.92),(0.59,10.92)), + ) + createRL( + tech, net, 'Contact', + ((0.59,11.42),(0.59,11.64),(0.81,11.64),(0.81,11.42),(0.59,11.42)), + ) + createRL( + tech, net, 'Contact', + ((3.39,10.38),(3.39,10.6),(3.61,10.6),(3.61,10.38),(3.39,10.38)), + ) + createRL( + tech, net, 'Contact', + ((3.39,10.88),(3.39,11.1),(3.61,11.1),(3.61,10.88),(3.39,10.88)), + ) + createRL( + tech, net, 'Contact', + ((3.39,11.38),(3.39,11.6),(3.61,11.6),(3.61,11.38),(3.39,11.38)), + ) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((2.66,2.02),(2.66,6.82),(2.06,6.82),(2.06,7.18),(2.66,7.18),(2.66,12.12),(2.94,12.12),(2.94,2.02),(2.66,2.02)), + ) + createRL( + tech, net, 'Metal1', + ((1.97,1.91),(1.97,9.165),(2.23,9.165),(2.23,7.115),(2.41,7.115),(2.41,6.885),(2.23,6.885),(2.23,1.91),(1.97,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(0.26), u(1.91), u(9.165), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(0.26), u(1.91), u(9.165), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((2.13,6.89),(2.13,7.11),(2.35,7.11),(2.35,6.89),(2.13,6.89)), + ) + net = nets['i2'] + createRL( + tech, net, 'Poly2', + ((4.06,6.82),(4.06,12.12),(4.34,12.12),(4.34,7.18),(4.94,7.18),(4.94,6.82),(4.06,6.82)), + ) + createRL( + tech, net, 'Poly2', + ((4.06,0.62),(4.06,4.38),(4.94,4.38),(4.94,4.02),(4.34,4.02),(4.34,0.62),(4.06,0.62)), + ) + createRL( + tech, net, 'Metal1', + ((4.77,1.91),(4.77,4.085),(4.59,4.085),(4.59,4.315),(4.77,4.315),(4.77,6.885),(4.59,6.885),(4.59,7.115),(4.77,7.115),(4.77,12.09),(5.03,12.09),(5.03,1.91),(4.77,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.9), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.9), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((4.65,6.89),(4.65,7.11),(4.87,7.11),(4.87,6.89),(4.65,6.89)), + ) + createRL( + tech, net, 'Contact', + ((4.65,4.09),(4.65,4.31),(4.87,4.31),(4.87,4.09),(4.65,4.09)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['q'].setDirection(Net.Direction.OUT) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + nets['i2'].setDirection(Net.Direction.IN) + + cell = new_cells['powmid_x0'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(9.8), u(14.0), + )) + nets = { + '*': Net.create(cell, '*'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(0.585,1.68),(0.585,2.685),(0.53,2.685),(0.53,2.915),(0.87,2.915),(0.87,2.685),(0.815,2.685),(0.815,1.68),(1.985,1.68),(1.985,2.685),(1.93,2.685),(1.93,2.915),(2.27,2.915),(2.27,2.685),(2.215,2.685),(2.215,1.68),(3.385,1.68),(3.385,2.685),(3.33,2.685),(3.33,2.915),(3.67,2.915),(3.67,2.685),(3.615,2.685),(3.615,1.68),(4.785,1.68),(4.785,2.685),(4.73,2.685),(4.73,2.915),(5.07,2.915),(5.07,2.685),(5.015,2.685),(5.015,1.68),(6.185,1.68),(6.185,2.685),(6.13,2.685),(6.13,2.915),(6.47,2.915),(6.47,2.685),(6.415,2.685),(6.415,1.68),(7.585,1.68),(7.585,2.685),(7.53,2.685),(7.53,2.915),(7.87,2.915),(7.87,2.685),(7.815,2.685),(7.815,1.68),(8.985,1.68),(8.985,2.685),(8.93,2.685),(8.93,2.915),(9.27,2.915),(9.27,2.685),(9.215,2.685),(9.215,1.68),(9.8,1.68),(9.8,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.9), u(9.8), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.9), u(9.8), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Metal3', + ((5.32,0.0),(5.32,14.0),(8.68,14.0),(8.68,0.0),(5.32,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal3_Label'), + u(7.0), u(3.36), u(0.0), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal3'), + u(7.0), u(3.36), u(0.0), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Metal2', + ((5.6,0.49),(5.6,0.91),(8.4,0.91),(8.4,0.49),(5.6,0.49)), + ) + createRL( + tech, net, 'Via2', + ((7.22,0.57),(7.22,0.83),(7.48,0.83),(7.48,0.57),(7.22,0.57)), + ) + createRL( + tech, net, 'Via2', + ((7.92,0.57),(7.92,0.83),(8.18,0.83),(8.18,0.57),(7.92,0.57)), + ) + createRL( + tech, net, 'Via2', + ((5.82,0.57),(5.82,0.83),(6.08,0.83),(6.08,0.57),(5.82,0.57)), + ) + createRL( + tech, net, 'Via2', + ((6.52,0.57),(6.52,0.83),(6.78,0.83),(6.78,0.57),(6.52,0.57)), + ) + Horizontal.create( + net, tech.getLayer('Metal2_Label'), + u(0.7), u(0.42), u(5.6), u(8.4), + ) + pin = Horizontal.create( + net, tech.getLayer('Metal2'), + u(0.7), u(0.42), u(5.6), u(8.4), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Via1', + ((7.22,0.57),(7.22,0.83),(7.48,0.83),(7.48,0.57),(7.22,0.57)), + ) + createRL( + tech, net, 'Via1', + ((7.92,0.57),(7.92,0.83),(8.18,0.83),(8.18,0.57),(7.92,0.57)), + ) + createRL( + tech, net, 'Via1', + ((5.82,0.57),(5.82,0.83),(6.08,0.83),(6.08,0.57),(5.82,0.57)), + ) + createRL( + tech, net, 'Via1', + ((6.52,0.57),(6.52,0.83),(6.78,0.83),(6.78,0.57),(6.52,0.57)), + ) + createRL( + tech, net, 'Poly2', + ((0.35,2.1),(0.35,11.9),(9.45,11.9),(9.45,2.1),(0.35,2.1)), + ) + createRL( + tech, net, 'Contact', + ((4.79,1.15),(4.79,1.37),(5.01,1.37),(5.01,1.15),(4.79,1.15)), + ) + createRL( + tech, net, 'Contact', + ((3.39,1.15),(3.39,1.37),(3.61,1.37),(3.61,1.15),(3.39,1.15)), + ) + createRL( + tech, net, 'Contact', + ((6.19,2.69),(6.19,2.91),(6.41,2.91),(6.41,2.69),(6.19,2.69)), + ) + createRL( + tech, net, 'Contact', + ((8.99,2.69),(8.99,2.91),(9.21,2.91),(9.21,2.69),(8.99,2.69)), + ) + createRL( + tech, net, 'Contact', + ((1.99,1.15),(1.99,1.37),(2.21,1.37),(2.21,1.15),(1.99,1.15)), + ) + createRL( + tech, net, 'Contact', + ((4.79,2.69),(4.79,2.91),(5.01,2.91),(5.01,2.69),(4.79,2.69)), + ) + createRL( + tech, net, 'Contact', + ((7.59,2.69),(7.59,2.91),(7.81,2.91),(7.81,2.69),(7.59,2.69)), + ) + createRL( + tech, net, 'Contact', + ((6.19,1.15),(6.19,1.37),(6.41,1.37),(6.41,1.15),(6.19,1.15)), + ) + createRL( + tech, net, 'Contact', + ((1.99,2.69),(1.99,2.91),(2.21,2.91),(2.21,2.69),(1.99,2.69)), + ) + createRL( + tech, net, 'Contact', + ((0.59,1.15),(0.59,1.37),(0.81,1.37),(0.81,1.15),(0.59,1.15)), + ) + createRL( + tech, net, 'Contact', + ((3.39,2.69),(3.39,2.91),(3.61,2.91),(3.61,2.69),(3.39,2.69)), + ) + createRL( + tech, net, 'Contact', + ((8.99,1.15),(8.99,1.37),(9.21,1.37),(9.21,1.15),(8.99,1.15)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.69),(0.59,2.91),(0.81,2.91),(0.81,2.69),(0.59,2.69)), + ) + createRL( + tech, net, 'Contact', + ((7.59,1.15),(7.59,1.37),(7.81,1.37),(7.81,1.15),(7.59,1.15)), + ) + createRL( + tech, net, 'COMP', + ((0.7,1.05),(0.7,1.08),(0.52,1.08),(0.52,1.44),(0.7,1.44),(0.7,1.47),(9.1,1.47),(9.1,1.44),(9.28,1.44),(9.28,1.08),(9.1,1.08),(9.1,1.05),(0.7,1.05)), + ) + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(9.8,14.0),(9.8,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.9), u(9.8), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.9), u(9.8), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.42,6.72),(-0.42,15.12),(10.22,15.12),(10.22,6.72),(-0.42,6.72)), + ) + createRL( + tech, net, 'Metal2', + ((1.4,13.09),(1.4,13.51),(4.2,13.51),(4.2,13.09),(1.4,13.09)), + ) + Horizontal.create( + net, tech.getLayer('Metal2_Label'), + u(13.3), u(0.42), u(1.4000000000000004), u(4.2), + ) + pin = Horizontal.create( + net, tech.getLayer('Metal2'), + u(13.3), u(0.42), u(1.4000000000000004), u(4.2), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Via2', + ((3.02,13.17),(3.02,13.43),(3.28,13.43),(3.28,13.17),(3.02,13.17)), + ) + createRL( + tech, net, 'Via2', + ((3.72,13.17),(3.72,13.43),(3.98,13.43),(3.98,13.17),(3.72,13.17)), + ) + createRL( + tech, net, 'Via2', + ((2.32,13.17),(2.32,13.43),(2.58,13.43),(2.58,13.17),(2.32,13.17)), + ) + createRL( + tech, net, 'Via2', + ((1.62,13.17),(1.62,13.43),(1.88,13.43),(1.88,13.17),(1.62,13.17)), + ) + createRL( + tech, net, 'Metal3', + ((1.12,0.0),(1.12,14.0),(4.48,14.0),(4.48,0.0),(1.12,0.0)), + ) + createRL( + tech, net, 'Via1', + ((3.02,13.17),(3.02,13.43),(3.28,13.43),(3.28,13.17),(3.02,13.17)), + ) + createRL( + tech, net, 'Via1', + ((3.72,13.17),(3.72,13.43),(3.98,13.43),(3.98,13.17),(3.72,13.17)), + ) + createRL( + tech, net, 'Via1', + ((2.32,13.17),(2.32,13.43),(2.58,13.43),(2.58,13.17),(2.32,13.17)), + ) + createRL( + tech, net, 'Via1', + ((1.62,13.17),(1.62,13.43),(1.88,13.43),(1.88,13.17),(1.62,13.17)), + ) + Vertical.create( + net, tech.getLayer('Metal3_Label'), + u(2.8), u(3.36), u(0.0), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal3'), + u(2.8), u(3.36), u(0.0), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'COMP', + ((0.7,12.53),(0.7,12.56),(0.52,12.56),(0.52,12.92),(0.7,12.92),(0.7,12.95),(9.1,12.95),(9.1,12.92),(9.28,12.92),(9.28,12.56),(9.1,12.56),(9.1,12.53),(0.7,12.53)), + ) + createRL( + tech, net, 'Contact', + ((3.39,12.63),(3.39,12.85),(3.61,12.85),(3.61,12.63),(3.39,12.63)), + ) + createRL( + tech, net, 'Contact', + ((0.59,12.63),(0.59,12.85),(0.81,12.85),(0.81,12.63),(0.59,12.63)), + ) + createRL( + tech, net, 'Contact', + ((8.99,12.63),(8.99,12.85),(9.21,12.85),(9.21,12.63),(8.99,12.63)), + ) + createRL( + tech, net, 'Contact', + ((4.79,12.63),(4.79,12.85),(5.01,12.85),(5.01,12.63),(4.79,12.63)), + ) + createRL( + tech, net, 'Contact', + ((1.99,12.63),(1.99,12.85),(2.21,12.85),(2.21,12.63),(1.99,12.63)), + ) + createRL( + tech, net, 'Contact', + ((7.59,12.63),(7.59,12.85),(7.81,12.85),(7.81,12.63),(7.59,12.63)), + ) + createRL( + tech, net, 'Contact', + ((6.19,12.63),(6.19,12.85),(6.41,12.85),(6.41,12.63),(6.19,12.63)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((0.54,0.82),(0.54,0.85),(0.36,0.85),(0.36,1.67),(0.54,1.67),(0.54,1.7),(9.26,1.7),(9.26,1.67),(9.44,1.67),(9.44,0.85),(9.26,0.85),(9.26,0.82),(0.54,0.82)), + ) + createRL( + tech, net, 'Nplus', + ((0.54,12.3),(0.54,12.33),(0.36,12.33),(0.36,13.15),(0.54,13.15),(0.54,13.18),(9.26,13.18),(9.26,13.15),(9.44,13.15),(9.44,12.33),(9.26,12.33),(9.26,12.3),(0.54,12.3)), + ) + nets['vss'].setGlobal(True) + nets['vdd'].setGlobal(True) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + + cell = new_cells['sff1_x4'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(21.0), u(14.0), + )) + nets = { + '*': Net.create(cell, '*'), + '_net0': Net.create(cell, '_net0'), + '_net1': Net.create(cell, '_net1'), + '_net2': Net.create(cell, '_net2'), + '_net4': Net.create(cell, '_net4'), + '_net5': Net.create(cell, '_net5'), + '_net6': Net.create(cell, '_net6'), + 'ck': Net.create(cell, 'ck'), + 'ckr': Net.create(cell, 'ckr'), + 'i': Net.create(cell, 'i'), + 'nckr': Net.create(cell, 'nckr'), + 'q': Net.create(cell, 'q'), + 'sff_m': Net.create(cell, 'sff_m'), + 'sff_s': Net.create(cell, 'sff_s'), + 'u': Net.create(cell, 'u'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + 'y': Net.create(cell, 'y'), + } + net = nets['nckr'] + createRL( + tech, net, 'COMP', + ((0.52,9.1),(0.52,11.9),(1.26,11.9),(1.26,9.1),(0.52,9.1)), + ) + createRL( + tech, net, 'COMP', + ((0.52,2.1),(0.52,3.5),(1.26,3.5),(1.26,2.1),(0.52,2.1)), + ) + createRL( + tech, net, 'Poly2', + ((8.26,1.88),(8.26,4.38),(8.72,4.38),(8.72,4.02),(8.54,4.02),(8.54,1.88),(8.26,1.88)), + ) + createRL( + tech, net, 'Poly2', + ((2.66,1.88),(2.66,6.82),(0.66,6.82),(0.66,7.18),(2.66,7.18),(2.66,12.12),(2.94,12.12),(2.94,7.18),(9.66,7.18),(9.66,12.12),(9.94,12.12),(9.94,7.18),(13.86,7.18),(13.86,12.12),(14.14,12.12),(14.14,7.18),(15.54,7.18),(15.54,1.88),(15.26,1.88),(15.26,6.82),(2.94,6.82),(2.94,1.88),(2.66,1.88)), + ) + createRL( + tech, net, 'Contact', + ((0.73,6.89),(0.73,7.11),(0.95,7.11),(0.95,6.89),(0.73,6.89)), + ) + createRL( + tech, net, 'Contact', + ((8.29,6.89),(8.29,7.11),(8.51,7.11),(8.51,6.89),(8.29,6.89)), + ) + createRL( + tech, net, 'Contact', + ((8.43,4.09),(8.43,4.31),(8.65,4.31),(8.65,4.09),(8.43,4.09)), + ) + createRL( + tech, net, 'Contact', + ((0.59,9.39),(0.59,9.61),(0.81,9.61),(0.81,9.39),(0.59,9.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,9.89),(0.59,10.11),(0.81,10.11),(0.81,9.89),(0.59,9.89)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.39),(0.59,10.61),(0.81,10.61),(0.81,10.39),(0.59,10.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.89),(0.59,11.11),(0.81,11.11),(0.81,10.89),(0.59,10.89)), + ) + createRL( + tech, net, 'Contact', + ((0.59,11.39),(0.59,11.61),(0.81,11.61),(0.81,11.39),(0.59,11.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.19),(0.59,2.41),(0.81,2.41),(0.81,2.19),(0.59,2.19)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.69),(0.59,2.91),(0.81,2.91),(0.81,2.69),(0.59,2.69)), + ) + createRL( + tech, net, 'Contact', + ((0.59,3.19),(0.59,3.41),(0.81,3.41),(0.81,3.19),(0.59,3.19)), + ) + createRL( + tech, net, 'Metal1', + ((8.285,4.085),(8.285,6.885),(8.23,6.885),(8.23,7.115),(8.57,7.115),(8.57,6.885),(8.515,6.885),(8.515,4.315),(8.71,4.315),(8.71,4.085),(8.285,4.085)), + ) + createRL( + tech, net, 'Metal1', + ((0.53,2.185),(0.53,3.415),(0.585,3.415),(0.585,9.385),(0.53,9.385),(0.53,11.615),(0.87,11.615),(0.87,9.385),(0.815,9.385),(0.815,7.115),(1.01,7.115),(1.01,6.885),(0.815,6.885),(0.815,3.415),(0.87,3.415),(0.87,2.185),(0.53,2.185)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((1.92,0.94),(1.92,2.1),(1.26,2.1),(1.26,3.5),(2.94,3.5),(2.94,2.1),(2.28,2.1),(2.28,0.94),(1.92,0.94)), + ) + createRL( + tech, net, 'COMP', + ((17.32,0.84),(17.32,2.1),(16.66,2.1),(16.66,3.5),(18.34,3.5),(18.34,0.84),(17.32,0.84)), + ) + createRL( + tech, net, 'COMP', + ((19.46,0.84),(19.46,3.5),(20.48,3.5),(20.48,0.84),(19.46,0.84)), + ) + createRL( + tech, net, 'COMP', + ((8.75,0.7),(8.75,1.26),(9.45,1.26),(9.45,0.7),(8.75,0.7)), + ) + createRL( + tech, net, 'COMP', + ((11.06,0.84),(11.06,2.1),(12.74,2.1),(12.74,0.84),(11.06,0.84)), + ) + createRL( + tech, net, 'COMP', + ((6.12,0.94),(6.12,2.1),(5.46,2.1),(5.46,3.5),(7.14,3.5),(7.14,2.1),(6.48,2.1),(6.48,0.94),(6.12,0.94)), + ) + createRL( + tech, net, 'COMP', + ((0.49,0.56),(0.49,1.26),(0.91,1.26),(0.91,0.56),(0.49,0.56)), + ) + createRL( + tech, net, 'COMP', + ((8.26,2.1),(8.26,3.5),(8.54,3.5),(8.54,2.1),(8.26,2.1)), + ) + createRL( + tech, net, 'COMP', + ((9.66,2.1),(9.66,3.5),(9.94,3.5),(9.94,2.1),(9.66,2.1)), + ) + createRL( + tech, net, 'COMP', + ((13.86,2.1),(13.86,3.5),(14.14,3.5),(14.14,2.1),(13.86,2.1)), + ) + createRL( + tech, net, 'COMP', + ((3.22,0.7),(3.22,1.26),(3.78,1.26),(3.78,0.7),(3.22,0.7)), + ) + createRL( + tech, net, 'COMP', + ((15.75,0.7),(15.75,1.26),(16.45,1.26),(16.45,0.7),(15.75,0.7)), + ) + createRL( + tech, net, 'COMP', + ((15.26,2.1),(15.26,3.5),(15.54,3.5),(15.54,2.1),(15.26,2.1)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(11.73,1.68),(11.73,1.835),(12.07,1.835),(12.07,1.68),(17.33,1.68),(17.33,3.285),(17.67,3.285),(17.67,1.68),(20.13,1.68),(20.13,3.285),(20.47,3.285),(20.47,1.68),(21.0,1.68),(21.0,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(10.5), u(21.0), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(10.5), u(21.0), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((20.19,1.06),(20.19,1.28),(20.41,1.28),(20.41,1.06),(20.19,1.06)), + ) + createRL( + tech, net, 'Contact', + ((20.19,1.56),(20.19,1.78),(20.41,1.78),(20.41,1.56),(20.19,1.56)), + ) + createRL( + tech, net, 'Contact', + ((20.19,2.06),(20.19,2.28),(20.41,2.28),(20.41,2.06),(20.19,2.06)), + ) + createRL( + tech, net, 'Contact', + ((20.19,2.56),(20.19,2.78),(20.41,2.78),(20.41,2.56),(20.19,2.56)), + ) + createRL( + tech, net, 'Contact', + ((20.19,3.06),(20.19,3.28),(20.41,3.28),(20.41,3.06),(20.19,3.06)), + ) + createRL( + tech, net, 'Contact', + ((8.99,0.87),(8.99,1.09),(9.21,1.09),(9.21,0.87),(8.99,0.87)), + ) + createRL( + tech, net, 'Contact', + ((0.59,0.87),(0.59,1.09),(0.81,1.09),(0.81,0.87),(0.59,0.87)), + ) + createRL( + tech, net, 'Contact', + ((1.99,1.01),(1.99,1.23),(2.21,1.23),(2.21,1.01),(1.99,1.01)), + ) + createRL( + tech, net, 'Contact', + ((17.39,1.06),(17.39,1.28),(17.61,1.28),(17.61,1.06),(17.39,1.06)), + ) + createRL( + tech, net, 'Contact', + ((17.39,1.56),(17.39,1.78),(17.61,1.78),(17.61,1.56),(17.39,1.56)), + ) + createRL( + tech, net, 'Contact', + ((17.39,2.06),(17.39,2.28),(17.61,2.28),(17.61,2.06),(17.39,2.06)), + ) + createRL( + tech, net, 'Contact', + ((17.39,2.56),(17.39,2.78),(17.61,2.78),(17.61,2.56),(17.39,2.56)), + ) + createRL( + tech, net, 'Contact', + ((17.39,3.06),(17.39,3.28),(17.61,3.28),(17.61,3.06),(17.39,3.06)), + ) + createRL( + tech, net, 'Contact', + ((6.19,1.01),(6.19,1.23),(6.41,1.23),(6.41,1.01),(6.19,1.01)), + ) + createRL( + tech, net, 'Contact', + ((3.39,0.87),(3.39,1.09),(3.61,1.09),(3.61,0.87),(3.39,0.87)), + ) + createRL( + tech, net, 'Contact', + ((15.99,0.87),(15.99,1.09),(16.21,1.09),(16.21,0.87),(15.99,0.87)), + ) + createRL( + tech, net, 'Contact', + ((11.79,1.11),(11.79,1.33),(12.01,1.33),(12.01,1.11),(11.79,1.11)), + ) + createRL( + tech, net, 'Contact', + ((11.79,1.61),(11.79,1.83),(12.01,1.83),(12.01,1.61),(11.79,1.61)), + ) + net = nets['*'] + createRL( + tech, net, 'Nplus', + ((1.76,0.71),(1.76,1.87),(0.36,1.87),(0.36,3.73),(3.84,3.73),(3.84,1.87),(2.44,1.87),(2.44,0.71),(1.76,0.71)), + ) + createRL( + tech, net, 'Nplus', + ((14.19,12.37),(14.19,13.39),(15.21,13.39),(15.21,12.37),(14.19,12.37)), + ) + createRL( + tech, net, 'Nplus', + ((8.59,12.37),(8.59,13.39),(9.61,13.39),(9.61,12.37),(8.59,12.37)), + ) + createRL( + tech, net, 'Nplus', + ((3.06,12.37),(3.06,13.39),(3.94,13.39),(3.94,12.37),(3.06,12.37)), + ) + createRL( + tech, net, 'Nplus', + ((10.19,0.61),(10.19,1.87),(6.64,1.87),(6.64,0.71),(5.96,0.71),(5.96,1.87),(4.56,1.87),(4.56,3.73),(10.81,3.73),(10.81,2.33),(12.96,2.33),(12.96,3.73),(20.64,3.73),(20.64,0.61),(17.16,0.61),(17.16,1.87),(13.64,1.87),(13.64,0.61),(10.19,0.61)), + ) + createRL( + tech, net, 'Nplus', + ((0.33,12.37),(0.33,13.53),(1.07,13.53),(1.07,12.37),(0.33,12.37)), + ) + createRL( + tech, net, 'Pplus', + ((0.36,8.87),(0.36,12.13),(1.76,12.13),(1.76,13.29),(2.44,13.29),(2.44,12.13),(3.84,12.13),(3.84,8.87),(0.36,8.87)), + ) + createRL( + tech, net, 'Pplus', + ((17.16,7.47),(17.16,10.27),(16.41,10.27),(16.41,8.87),(12.96,8.87),(12.96,10.27),(10.81,10.27),(10.81,8.87),(7.39,8.87),(7.39,10.27),(4.56,10.27),(4.56,13.53),(8.01,13.53),(8.01,12.13),(10.19,12.13),(10.19,13.53),(13.64,13.53),(13.64,12.13),(15.79,12.13),(15.79,13.53),(20.64,13.53),(20.64,7.47),(17.16,7.47)), + ) + createRL( + tech, net, 'Pplus', + ((8.59,0.47),(8.59,1.49),(9.61,1.49),(9.61,0.47),(8.59,0.47)), + ) + createRL( + tech, net, 'Pplus', + ((0.33,0.33),(0.33,1.49),(1.07,1.49),(1.07,0.33),(0.33,0.33)), + ) + createRL( + tech, net, 'Pplus', + ((3.06,0.47),(3.06,1.49),(3.94,1.49),(3.94,0.47),(3.06,0.47)), + ) + createRL( + tech, net, 'Pplus', + ((15.59,0.47),(15.59,1.49),(16.61,1.49),(16.61,0.47),(15.59,0.47)), + ) + net = nets['ck'] + createRL( + tech, net, 'Poly2', + ((1.26,1.88),(1.26,4.38),(2.14,4.38),(2.14,4.02),(1.54,4.02),(1.54,1.88),(1.26,1.88)), + ) + createRL( + tech, net, 'Poly2', + ((1.26,8.22),(1.26,12.12),(1.54,12.12),(1.54,8.58),(2.14,8.58),(2.14,8.22),(1.26,8.22)), + ) + createRL( + tech, net, 'Metal1', + ((1.97,1.91),(1.97,4.085),(1.79,4.085),(1.79,4.315),(1.97,4.315),(1.97,8.285),(1.79,8.285),(1.79,8.515),(1.97,8.515),(1.97,12.09),(2.23,12.09),(2.23,1.91),(1.97,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((1.85,8.29),(1.85,8.51),(2.07,8.51),(2.07,8.29),(1.85,8.29)), + ) + createRL( + tech, net, 'Contact', + ((1.85,4.09),(1.85,4.31),(2.07,4.31),(2.07,4.09),(1.85,4.09)), + ) + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((11.06,10.5),(11.06,13.3),(12.74,13.3),(12.74,10.5),(11.06,10.5)), + ) + createRL( + tech, net, 'COMP', + ((13.86,9.1),(13.86,11.9),(14.14,11.9),(14.14,9.1),(13.86,9.1)), + ) + createRL( + tech, net, 'COMP', + ((15.26,9.1),(15.26,11.9),(15.54,11.9),(15.54,9.1),(15.26,9.1)), + ) + createRL( + tech, net, 'COMP', + ((5.46,10.5),(5.46,13.3),(7.14,13.3),(7.14,10.5),(5.46,10.5)), + ) + createRL( + tech, net, 'COMP', + ((8.26,9.1),(8.26,11.9),(8.54,11.9),(8.54,9.1),(8.26,9.1)), + ) + createRL( + tech, net, 'COMP', + ((14.35,12.6),(14.35,13.16),(15.05,13.16),(15.05,12.6),(14.35,12.6)), + ) + createRL( + tech, net, 'COMP', + ((8.75,12.6),(8.75,13.16),(9.45,13.16),(9.45,12.6),(8.75,12.6)), + ) + createRL( + tech, net, 'COMP', + ((1.26,9.1),(1.26,11.9),(1.92,11.9),(1.92,13.06),(2.28,13.06),(2.28,11.9),(2.94,11.9),(2.94,9.1),(1.26,9.1)), + ) + createRL( + tech, net, 'COMP', + ((9.66,9.1),(9.66,11.9),(9.94,11.9),(9.94,9.1),(9.66,9.1)), + ) + createRL( + tech, net, 'COMP', + ((3.22,12.6),(3.22,13.16),(3.78,13.16),(3.78,12.6),(3.22,12.6)), + ) + createRL( + tech, net, 'COMP', + ((0.49,12.6),(0.49,13.3),(0.91,13.3),(0.91,12.6),(0.49,12.6)), + ) + createRL( + tech, net, 'COMP', + ((19.46,7.7),(19.46,13.3),(20.48,13.3),(20.48,7.7),(19.46,7.7)), + ) + createRL( + tech, net, 'COMP', + ((17.32,7.7),(17.32,10.5),(16.66,10.5),(16.66,13.3),(18.34,13.3),(18.34,7.7),(17.32,7.7)), + ) + createRL( + tech, net, 'Nwell', + ((-0.42,6.72),(-0.42,15.12),(21.42,15.12),(21.42,6.72),(-0.42,6.72)), + ) + createRL( + tech, net, 'Metal1', + ((17.33,7.885),(17.33,12.32),(12.07,12.32),(12.07,10.785),(11.73,10.785),(11.73,12.32),(0.0,12.32),(0.0,14.0),(21.0,14.0),(21.0,12.32),(20.47,12.32),(20.47,7.885),(20.13,7.885),(20.13,12.32),(17.67,12.32),(17.67,7.885),(17.33,7.885)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(10.5), u(21.0), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(10.5), u(21.0), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.39,12.77),(3.39,12.99),(3.61,12.99),(3.61,12.77),(3.39,12.77)), + ) + createRL( + tech, net, 'Contact', + ((0.59,12.77),(0.59,12.99),(0.81,12.99),(0.81,12.77),(0.59,12.77)), + ) + createRL( + tech, net, 'Contact', + ((6.19,12.42),(6.19,12.64),(6.41,12.64),(6.41,12.42),(6.19,12.42)), + ) + createRL( + tech, net, 'Contact', + ((6.19,12.92),(6.19,13.14),(6.41,13.14),(6.41,12.92),(6.19,12.92)), + ) + createRL( + tech, net, 'Contact', + ((8.99,12.77),(8.99,12.99),(9.21,12.99),(9.21,12.77),(8.99,12.77)), + ) + createRL( + tech, net, 'Contact', + ((17.39,7.89),(17.39,8.11),(17.61,8.11),(17.61,7.89),(17.39,7.89)), + ) + createRL( + tech, net, 'Contact', + ((17.39,8.39),(17.39,8.61),(17.61,8.61),(17.61,8.39),(17.39,8.39)), + ) + createRL( + tech, net, 'Contact', + ((17.39,8.89),(17.39,9.11),(17.61,9.11),(17.61,8.89),(17.39,8.89)), + ) + createRL( + tech, net, 'Contact', + ((17.39,9.39),(17.39,9.61),(17.61,9.61),(17.61,9.39),(17.39,9.39)), + ) + createRL( + tech, net, 'Contact', + ((17.39,9.89),(17.39,10.11),(17.61,10.11),(17.61,9.89),(17.39,9.89)), + ) + createRL( + tech, net, 'Contact', + ((17.39,10.39),(17.39,10.61),(17.61,10.61),(17.61,10.39),(17.39,10.39)), + ) + createRL( + tech, net, 'Contact', + ((17.39,10.89),(17.39,11.11),(17.61,11.11),(17.61,10.89),(17.39,10.89)), + ) + createRL( + tech, net, 'Contact', + ((17.39,11.39),(17.39,11.61),(17.61,11.61),(17.61,11.39),(17.39,11.39)), + ) + createRL( + tech, net, 'Contact', + ((17.39,11.89),(17.39,12.11),(17.61,12.11),(17.61,11.89),(17.39,11.89)), + ) + createRL( + tech, net, 'Contact', + ((17.39,12.39),(17.39,12.61),(17.61,12.61),(17.61,12.39),(17.39,12.39)), + ) + createRL( + tech, net, 'Contact', + ((17.39,12.89),(17.39,13.11),(17.61,13.11),(17.61,12.89),(17.39,12.89)), + ) + createRL( + tech, net, 'Contact', + ((20.19,7.89),(20.19,8.11),(20.41,8.11),(20.41,7.89),(20.19,7.89)), + ) + createRL( + tech, net, 'Contact', + ((20.19,8.39),(20.19,8.61),(20.41,8.61),(20.41,8.39),(20.19,8.39)), + ) + createRL( + tech, net, 'Contact', + ((20.19,8.89),(20.19,9.11),(20.41,9.11),(20.41,8.89),(20.19,8.89)), + ) + createRL( + tech, net, 'Contact', + ((20.19,9.39),(20.19,9.61),(20.41,9.61),(20.41,9.39),(20.19,9.39)), + ) + createRL( + tech, net, 'Contact', + ((20.19,9.89),(20.19,10.11),(20.41,10.11),(20.41,9.89),(20.19,9.89)), + ) + createRL( + tech, net, 'Contact', + ((20.19,10.39),(20.19,10.61),(20.41,10.61),(20.41,10.39),(20.19,10.39)), + ) + createRL( + tech, net, 'Contact', + ((20.19,10.89),(20.19,11.11),(20.41,11.11),(20.41,10.89),(20.19,10.89)), + ) + createRL( + tech, net, 'Contact', + ((20.19,11.39),(20.19,11.61),(20.41,11.61),(20.41,11.39),(20.19,11.39)), + ) + createRL( + tech, net, 'Contact', + ((20.19,11.89),(20.19,12.11),(20.41,12.11),(20.41,11.89),(20.19,11.89)), + ) + createRL( + tech, net, 'Contact', + ((20.19,12.39),(20.19,12.61),(20.41,12.61),(20.41,12.39),(20.19,12.39)), + ) + createRL( + tech, net, 'Contact', + ((20.19,12.89),(20.19,13.11),(20.41,13.11),(20.41,12.89),(20.19,12.89)), + ) + createRL( + tech, net, 'Contact', + ((11.79,10.79),(11.79,11.01),(12.01,11.01),(12.01,10.79),(11.79,10.79)), + ) + createRL( + tech, net, 'Contact', + ((11.79,11.29),(11.79,11.51),(12.01,11.51),(12.01,11.29),(11.79,11.29)), + ) + createRL( + tech, net, 'Contact', + ((11.79,11.79),(11.79,12.01),(12.01,12.01),(12.01,11.79),(11.79,11.79)), + ) + createRL( + tech, net, 'Contact', + ((11.79,12.29),(11.79,12.51),(12.01,12.51),(12.01,12.29),(11.79,12.29)), + ) + createRL( + tech, net, 'Contact', + ((11.79,12.79),(11.79,13.01),(12.01,13.01),(12.01,12.79),(11.79,12.79)), + ) + createRL( + tech, net, 'Contact', + ((14.59,12.77),(14.59,12.99),(14.81,12.99),(14.81,12.77),(14.59,12.77)), + ) + createRL( + tech, net, 'Contact', + ((1.99,12.77),(1.99,12.99),(2.21,12.99),(2.21,12.77),(1.99,12.77)), + ) + net = nets['sff_s'] + createRL( + tech, net, 'COMP', + ((14.14,2.1),(14.14,3.5),(15.26,3.5),(15.26,2.1),(14.14,2.1)), + ) + createRL( + tech, net, 'COMP', + ((14.14,9.1),(14.14,11.9),(15.26,11.9),(15.26,9.1),(14.14,9.1)), + ) + createRL( + tech, net, 'Poly2', + ((18.06,0.62),(18.06,5.42),(17.67,5.42),(17.67,5.78),(18.06,5.78),(18.06,13.52),(18.34,13.52),(18.34,5.78),(19.46,5.78),(19.46,13.52),(19.74,13.52),(19.74,0.62),(19.46,0.62),(19.46,5.42),(18.34,5.42),(18.34,0.62),(18.06,0.62)), + ) + createRL( + tech, net, 'Metal1', + ((14.53,1.91),(14.53,3.415),(14.87,3.415),(14.87,2.915),(15.985,2.915),(15.985,11.085),(14.87,11.085),(14.87,9.385),(14.53,9.385),(14.53,12.09),(14.87,12.09),(14.87,11.315),(16.17,11.315),(16.17,11.27),(16.215,11.27),(16.215,5.715),(18.02,5.715),(18.02,5.485),(16.215,5.485),(16.215,2.73),(16.17,2.73),(16.17,2.685),(14.87,2.685),(14.87,1.91),(14.53,1.91)), + ) + createRL( + tech, net, 'Contact', + ((17.74,5.49),(17.74,5.71),(17.96,5.71),(17.96,5.49),(17.74,5.49)), + ) + createRL( + tech, net, 'Contact', + ((14.59,9.39),(14.59,9.61),(14.81,9.61),(14.81,9.39),(14.59,9.39)), + ) + createRL( + tech, net, 'Contact', + ((14.59,9.89),(14.59,10.11),(14.81,10.11),(14.81,9.89),(14.59,9.89)), + ) + createRL( + tech, net, 'Contact', + ((14.59,10.39),(14.59,10.61),(14.81,10.61),(14.81,10.39),(14.59,10.39)), + ) + createRL( + tech, net, 'Contact', + ((14.59,10.89),(14.59,11.11),(14.81,11.11),(14.81,10.89),(14.59,10.89)), + ) + createRL( + tech, net, 'Contact', + ((14.59,11.39),(14.59,11.61),(14.81,11.61),(14.81,11.39),(14.59,11.39)), + ) + createRL( + tech, net, 'Contact', + ((14.59,2.19),(14.59,2.41),(14.81,2.41),(14.81,2.19),(14.59,2.19)), + ) + createRL( + tech, net, 'Contact', + ((14.59,2.69),(14.59,2.91),(14.81,2.91),(14.81,2.69),(14.59,2.69)), + ) + createRL( + tech, net, 'Contact', + ((14.59,3.19),(14.59,3.41),(14.81,3.41),(14.81,3.19),(14.59,3.19)), + ) + net = nets['_net0'] + createRL( + tech, net, 'COMP', + ((15.54,9.1),(15.54,11.9),(15.95,11.9),(15.95,13.3),(16.66,13.3),(16.66,10.5),(16.25,10.5),(16.25,9.1),(15.54,9.1)), + ) + net = nets['ckr'] + createRL( + tech, net, 'Poly2', + ((8.26,8.22),(8.26,12.12),(8.54,12.12),(8.54,8.58),(8.86,8.58),(8.86,8.22),(8.26,8.22)), + ) + createRL( + tech, net, 'Poly2', + ((9.66,1.88),(9.66,5.42),(3.46,5.42),(3.46,5.78),(14.74,5.78),(14.74,5.42),(14.14,5.42),(14.14,1.88),(13.86,1.88),(13.86,5.42),(9.94,5.42),(9.94,1.88),(9.66,1.88)), + ) + createRL( + tech, net, 'Poly2', + ((14.66,8.22),(14.66,8.58),(15.26,8.58),(15.26,12.12),(15.54,12.12),(15.54,8.22),(14.66,8.22)), + ) + createRL( + tech, net, 'COMP', + ((2.94,2.1),(2.94,3.5),(3.68,3.5),(3.68,2.1),(2.94,2.1)), + ) + createRL( + tech, net, 'COMP', + ((2.94,9.1),(2.94,11.9),(3.68,11.9),(3.68,9.1),(2.94,9.1)), + ) + createRL( + tech, net, 'Contact', + ((8.57,8.29),(8.57,8.51),(8.79,8.51),(8.79,8.29),(8.57,8.29)), + ) + createRL( + tech, net, 'Contact', + ((9.41,5.49),(9.41,5.71),(9.63,5.71),(9.63,5.49),(9.41,5.49)), + ) + createRL( + tech, net, 'Contact', + ((3.39,9.39),(3.39,9.61),(3.61,9.61),(3.61,9.39),(3.39,9.39)), + ) + createRL( + tech, net, 'Contact', + ((3.39,9.89),(3.39,10.11),(3.61,10.11),(3.61,9.89),(3.39,9.89)), + ) + createRL( + tech, net, 'Contact', + ((3.39,10.39),(3.39,10.61),(3.61,10.61),(3.61,10.39),(3.39,10.39)), + ) + createRL( + tech, net, 'Contact', + ((3.39,10.89),(3.39,11.11),(3.61,11.11),(3.61,10.89),(3.39,10.89)), + ) + createRL( + tech, net, 'Contact', + ((3.39,11.39),(3.39,11.61),(3.61,11.61),(3.61,11.39),(3.39,11.39)), + ) + createRL( + tech, net, 'Contact', + ((3.39,2.19),(3.39,2.41),(3.61,2.41),(3.61,2.19),(3.39,2.19)), + ) + createRL( + tech, net, 'Contact', + ((3.39,2.69),(3.39,2.91),(3.61,2.91),(3.61,2.69),(3.39,2.69)), + ) + createRL( + tech, net, 'Contact', + ((3.39,3.19),(3.39,3.41),(3.61,3.41),(3.61,3.19),(3.39,3.19)), + ) + createRL( + tech, net, 'Contact', + ((3.53,5.49),(3.53,5.71),(3.75,5.71),(3.75,5.49),(3.53,5.49)), + ) + createRL( + tech, net, 'Contact', + ((14.45,5.49),(14.45,5.71),(14.67,5.71),(14.67,5.49),(14.45,5.49)), + ) + createRL( + tech, net, 'Contact', + ((14.73,8.29),(14.73,8.51),(14.95,8.51),(14.95,8.29),(14.73,8.29)), + ) + createRL( + tech, net, 'Metal1', + ((3.33,1.91),(3.33,3.415),(3.385,3.415),(3.385,9.385),(3.33,9.385),(3.33,12.09),(3.67,12.09),(3.67,9.385),(3.615,9.385),(3.615,5.715),(3.81,5.715),(3.81,5.485),(3.615,5.485),(3.615,3.415),(3.67,3.415),(3.67,1.91),(3.33,1.91)), + ) + createRL( + tech, net, 'Metal1', + ((9.335,5.485),(9.335,8.285),(8.51,8.285),(8.51,8.515),(9.52,8.515),(9.52,8.47),(9.565,8.47),(9.565,5.715),(9.69,5.715),(9.69,5.485),(9.335,5.485)), + ) + createRL( + tech, net, 'Metal1', + ((14.39,5.485),(14.39,5.715),(14.585,5.715),(14.585,8.47),(14.67,8.47),(14.67,8.515),(15.01,8.515),(15.01,8.285),(14.815,8.285),(14.815,5.53),(14.73,5.53),(14.73,5.485),(14.39,5.485)), + ) + net = nets['sff_m'] + createRL( + tech, net, 'COMP', + ((8.54,2.1),(8.54,3.5),(9.66,3.5),(9.66,2.1),(8.54,2.1)), + ) + createRL( + tech, net, 'COMP', + ((8.54,9.1),(8.54,11.9),(9.66,11.9),(9.66,9.1),(8.54,9.1)), + ) + createRL( + tech, net, 'Poly2', + ((12.07,8.22),(12.07,8.58),(12.46,8.58),(12.46,13.52),(12.74,13.52),(12.74,8.22),(12.07,8.22)), + ) + createRL( + tech, net, 'Poly2', + ((12.46,0.62),(12.46,4.02),(12.07,4.02),(12.07,4.38),(12.74,4.38),(12.74,0.62),(12.46,0.62)), + ) + createRL( + tech, net, 'Metal1', + ((8.93,2.185),(8.93,3.415),(9.27,3.415),(9.27,2.915),(10.385,2.915),(10.385,10.385),(9.27,10.385),(9.27,9.385),(8.93,9.385),(8.93,11.615),(9.27,11.615),(9.27,10.615),(10.57,10.615),(10.57,10.57),(10.615,10.57),(10.615,8.515),(12.42,8.515),(12.42,8.285),(10.615,8.285),(10.615,4.315),(12.42,4.315),(12.42,4.085),(10.615,4.085),(10.615,2.73),(10.57,2.73),(10.57,2.685),(9.27,2.685),(9.27,2.185),(8.93,2.185)), + ) + createRL( + tech, net, 'Contact', + ((12.14,8.29),(12.14,8.51),(12.36,8.51),(12.36,8.29),(12.14,8.29)), + ) + createRL( + tech, net, 'Contact', + ((12.14,4.09),(12.14,4.31),(12.36,4.31),(12.36,4.09),(12.14,4.09)), + ) + createRL( + tech, net, 'Contact', + ((8.99,2.19),(8.99,2.41),(9.21,2.41),(9.21,2.19),(8.99,2.19)), + ) + createRL( + tech, net, 'Contact', + ((8.99,2.69),(8.99,2.91),(9.21,2.91),(9.21,2.69),(8.99,2.69)), + ) + createRL( + tech, net, 'Contact', + ((8.99,3.19),(8.99,3.41),(9.21,3.41),(9.21,3.19),(8.99,3.19)), + ) + createRL( + tech, net, 'Contact', + ((8.99,9.39),(8.99,9.61),(9.21,9.61),(9.21,9.39),(8.99,9.39)), + ) + createRL( + tech, net, 'Contact', + ((8.99,9.89),(8.99,10.11),(9.21,10.11),(9.21,9.89),(8.99,9.89)), + ) + createRL( + tech, net, 'Contact', + ((8.99,10.39),(8.99,10.61),(9.21,10.61),(9.21,10.39),(8.99,10.39)), + ) + createRL( + tech, net, 'Contact', + ((8.99,10.89),(8.99,11.11),(9.21,11.11),(9.21,10.89),(8.99,10.89)), + ) + createRL( + tech, net, 'Contact', + ((8.99,11.39),(8.99,11.61),(9.21,11.61),(9.21,11.39),(8.99,11.39)), + ) + net = nets['_net4'] + createRL( + tech, net, 'COMP', + ((10.35,0.84),(10.35,2.1),(9.94,2.1),(9.94,3.5),(10.65,3.5),(10.65,2.1),(11.06,2.1),(11.06,0.84),(10.35,0.84)), + ) + net = nets['y'] + createRL( + tech, net, 'COMP', + ((12.74,0.84),(12.74,2.1),(13.12,2.1),(13.12,3.5),(13.86,3.5),(13.86,2.1),(13.48,2.1),(13.48,0.84),(12.74,0.84)), + ) + createRL( + tech, net, 'COMP', + ((13.12,9.1),(13.12,10.5),(12.74,10.5),(12.74,13.3),(13.48,13.3),(13.48,11.9),(13.86,11.9),(13.86,9.1),(13.12,9.1)), + ) + createRL( + tech, net, 'Poly2', + ((11.06,9.62),(11.06,13.52),(11.34,13.52),(11.34,9.98),(11.66,9.98),(11.66,9.62),(11.06,9.62)), + ) + createRL( + tech, net, 'Poly2', + ((11.06,0.62),(11.06,2.98),(11.66,2.98),(11.66,2.62),(11.34,2.62),(11.34,0.62),(11.06,0.62)), + ) + createRL( + tech, net, 'Contact', + ((11.37,9.69),(11.37,9.91),(11.59,9.91),(11.59,9.69),(11.37,9.69)), + ) + createRL( + tech, net, 'Contact', + ((13.19,2.06),(13.19,2.28),(13.41,2.28),(13.41,2.06),(13.19,2.06)), + ) + createRL( + tech, net, 'Contact', + ((13.19,2.56),(13.19,2.78),(13.41,2.78),(13.41,2.56),(13.19,2.56)), + ) + createRL( + tech, net, 'Contact', + ((13.19,3.06),(13.19,3.28),(13.41,3.28),(13.41,3.06),(13.19,3.06)), + ) + createRL( + tech, net, 'Contact', + ((11.37,2.69),(11.37,2.91),(11.59,2.91),(11.59,2.69),(11.37,2.69)), + ) + createRL( + tech, net, 'Contact', + ((13.19,9.27),(13.19,9.49),(13.41,9.49),(13.41,9.27),(13.19,9.27)), + ) + createRL( + tech, net, 'Contact', + ((13.19,9.77),(13.19,9.99),(13.41,9.99),(13.41,9.77),(13.19,9.77)), + ) + createRL( + tech, net, 'Contact', + ((13.19,10.27),(13.19,10.49),(13.41,10.49),(13.41,10.27),(13.19,10.27)), + ) + createRL( + tech, net, 'Contact', + ((13.19,10.77),(13.19,10.99),(13.41,10.99),(13.41,10.77),(13.19,10.77)), + ) + createRL( + tech, net, 'Contact', + ((13.19,11.27),(13.19,11.49),(13.41,11.49),(13.41,11.27),(13.19,11.27)), + ) + createRL( + tech, net, 'Contact', + ((13.19,11.77),(13.19,11.99),(13.41,11.99),(13.41,11.77),(13.19,11.77)), + ) + createRL( + tech, net, 'Metal1', + ((13.13,1.91),(13.13,2.685),(11.31,2.685),(11.31,2.915),(13.13,2.915),(13.13,3.285),(13.185,3.285),(13.185,9.265),(13.13,9.265),(13.13,9.685),(11.31,9.685),(11.31,9.915),(13.13,9.915),(13.13,12.09),(13.47,12.09),(13.47,9.265),(13.415,9.265),(13.415,3.285),(13.47,3.285),(13.47,1.91),(13.13,1.91)), + ) + net = nets['_net1'] + createRL( + tech, net, 'COMP', + ((7.55,9.1),(7.55,10.5),(7.14,10.5),(7.14,13.3),(7.85,13.3),(7.85,11.9),(8.26,11.9),(8.26,9.1),(7.55,9.1)), + ) + net = nets['u'] + createRL( + tech, net, 'COMP', + ((4.72,2.1),(4.72,3.5),(5.46,3.5),(5.46,2.1),(4.72,2.1)), + ) + createRL( + tech, net, 'COMP', + ((4.72,10.5),(4.72,13.3),(5.46,13.3),(5.46,10.5),(4.72,10.5)), + ) + createRL( + tech, net, 'Poly2', + ((6.86,1.88),(6.86,4.38),(7.46,4.38),(7.46,4.02),(7.14,4.02),(7.14,1.88),(6.86,1.88)), + ) + createRL( + tech, net, 'Poly2', + ((4.86,8.22),(4.86,8.58),(6.86,8.58),(6.86,13.52),(7.14,13.52),(7.14,8.58),(7.46,8.58),(7.46,8.22),(4.86,8.22)), + ) + createRL( + tech, net, 'Contact', + ((7.17,4.09),(7.17,4.31),(7.39,4.31),(7.39,4.09),(7.17,4.09)), + ) + createRL( + tech, net, 'Contact', + ((4.79,10.72),(4.79,10.94),(5.01,10.94),(5.01,10.72),(4.79,10.72)), + ) + createRL( + tech, net, 'Contact', + ((4.79,11.22),(4.79,11.44),(5.01,11.44),(5.01,11.22),(4.79,11.22)), + ) + createRL( + tech, net, 'Contact', + ((4.79,11.72),(4.79,11.94),(5.01,11.94),(5.01,11.72),(4.79,11.72)), + ) + createRL( + tech, net, 'Contact', + ((7.17,8.29),(7.17,8.51),(7.39,8.51),(7.39,8.29),(7.17,8.29)), + ) + createRL( + tech, net, 'Contact', + ((4.93,8.29),(4.93,8.51),(5.15,8.51),(5.15,8.29),(4.93,8.29)), + ) + createRL( + tech, net, 'Contact', + ((4.79,2.19),(4.79,2.41),(5.01,2.41),(5.01,2.19),(4.79,2.19)), + ) + createRL( + tech, net, 'Contact', + ((4.79,2.69),(4.79,2.91),(5.01,2.91),(5.01,2.69),(4.79,2.69)), + ) + createRL( + tech, net, 'Contact', + ((4.79,3.19),(4.79,3.41),(5.01,3.41),(5.01,3.19),(4.79,3.19)), + ) + createRL( + tech, net, 'Metal1', + ((7.11,4.085),(7.11,4.315),(7.165,4.315),(7.165,8.285),(7.11,8.285),(7.11,8.515),(7.45,8.515),(7.45,8.285),(7.395,8.285),(7.395,4.315),(7.45,4.315),(7.45,4.085),(7.11,4.085)), + ) + createRL( + tech, net, 'Metal1', + ((4.73,1.91),(4.73,3.415),(4.785,3.415),(4.785,10.715),(4.73,10.715),(4.73,12.09),(5.07,12.09),(5.07,10.715),(5.015,10.715),(5.015,8.515),(5.21,8.515),(5.21,8.285),(5.015,8.285),(5.015,3.415),(5.07,3.415),(5.07,1.91),(4.73,1.91)), + ) + net = nets['i'] + createRL( + tech, net, 'Poly2', + ((5.46,9.62),(5.46,13.52),(5.74,13.52),(5.74,9.98),(6.34,9.98),(6.34,9.62),(5.46,9.62)), + ) + createRL( + tech, net, 'Poly2', + ((5.46,1.88),(5.46,4.38),(6.34,4.38),(6.34,4.02),(5.74,4.02),(5.74,1.88),(5.46,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((6.17,1.91),(6.17,4.085),(5.99,4.085),(5.99,4.315),(6.17,4.315),(6.17,9.685),(5.99,9.685),(5.99,9.915),(6.17,9.915),(6.17,12.09),(6.43,12.09),(6.43,1.91),(6.17,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(6.3), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(6.3), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((6.05,9.69),(6.05,9.91),(6.27,9.91),(6.27,9.69),(6.05,9.69)), + ) + createRL( + tech, net, 'Contact', + ((6.05,4.09),(6.05,4.31),(6.27,4.31),(6.27,4.09),(6.05,4.09)), + ) + net = nets['_net5'] + createRL( + tech, net, 'COMP', + ((9.94,9.1),(9.94,11.9),(10.35,11.9),(10.35,13.3),(11.06,13.3),(11.06,10.5),(10.65,10.5),(10.65,9.1),(9.94,9.1)), + ) + net = nets['_net2'] + createRL( + tech, net, 'COMP', + ((7.14,2.1),(7.14,3.5),(8.26,3.5),(8.26,2.1),(7.14,2.1)), + ) + net = nets['_net6'] + createRL( + tech, net, 'COMP', + ((15.54,2.1),(15.54,3.5),(16.66,3.5),(16.66,2.1),(15.54,2.1)), + ) + net = nets['q'] + createRL( + tech, net, 'Poly2', + ((16.66,6.82),(16.66,13.52),(16.94,13.52),(16.94,7.18),(17.33,7.18),(17.33,6.82),(16.66,6.82)), + ) + createRL( + tech, net, 'Poly2', + ((16.66,1.88),(16.66,4.38),(17.33,4.38),(17.33,4.02),(16.94,4.02),(16.94,1.88),(16.66,1.88)), + ) + createRL( + tech, net, 'COMP', + ((18.34,7.7),(18.34,13.3),(19.46,13.3),(19.46,7.7),(18.34,7.7)), + ) + createRL( + tech, net, 'COMP', + ((18.34,0.84),(18.34,3.5),(19.46,3.5),(19.46,0.84),(18.34,0.84)), + ) + createRL( + tech, net, 'Metal1', + ((18.73,1.91),(18.73,3.285),(18.77,3.285),(18.77,4.085),(16.98,4.085),(16.98,4.315),(18.77,4.315),(18.77,6.885),(16.98,6.885),(16.98,7.115),(18.77,7.115),(18.77,7.815),(18.73,7.815),(18.73,12.09),(19.07,12.09),(19.07,7.815),(19.03,7.815),(19.03,3.285),(19.07,3.285),(19.07,1.91),(18.73,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(18.9), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(18.9), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((18.79,2.06),(18.79,2.28),(19.01,2.28),(19.01,2.06),(18.79,2.06)), + ) + createRL( + tech, net, 'Contact', + ((18.79,2.56),(18.79,2.78),(19.01,2.78),(19.01,2.56),(18.79,2.56)), + ) + createRL( + tech, net, 'Contact', + ((18.79,3.06),(18.79,3.28),(19.01,3.28),(19.01,3.06),(18.79,3.06)), + ) + createRL( + tech, net, 'Contact', + ((17.04,4.09),(17.04,4.31),(17.26,4.31),(17.26,4.09),(17.04,4.09)), + ) + createRL( + tech, net, 'Contact', + ((17.04,6.89),(17.04,7.11),(17.26,7.11),(17.26,6.89),(17.04,6.89)), + ) + createRL( + tech, net, 'Contact', + ((18.79,7.82),(18.79,8.04),(19.01,8.04),(19.01,7.82),(18.79,7.82)), + ) + createRL( + tech, net, 'Contact', + ((18.79,8.32),(18.79,8.54),(19.01,8.54),(19.01,8.32),(18.79,8.32)), + ) + createRL( + tech, net, 'Contact', + ((18.79,8.82),(18.79,9.04),(19.01,9.04),(19.01,8.82),(18.79,8.82)), + ) + createRL( + tech, net, 'Contact', + ((18.79,9.32),(18.79,9.54),(19.01,9.54),(19.01,9.32),(18.79,9.32)), + ) + createRL( + tech, net, 'Contact', + ((18.79,9.82),(18.79,10.04),(19.01,10.04),(19.01,9.82),(18.79,9.82)), + ) + createRL( + tech, net, 'Contact', + ((18.79,10.32),(18.79,10.54),(19.01,10.54),(19.01,10.32),(18.79,10.32)), + ) + createRL( + tech, net, 'Contact', + ((18.79,10.82),(18.79,11.04),(19.01,11.04),(19.01,10.82),(18.79,10.82)), + ) + createRL( + tech, net, 'Contact', + ((18.79,11.32),(18.79,11.54),(19.01,11.54),(19.01,11.32),(18.79,11.32)), + ) + createRL( + tech, net, 'Contact', + ((18.79,11.82),(18.79,12.04),(19.01,12.04),(19.01,11.82),(18.79,11.82)), + ) + nets['vss'].setGlobal(True) + nets['vdd'].setGlobal(True) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['ck'].setType(Net.Type.CLOCK) + nets['ck'].setDirection(Net.Direction.IN) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['i'].setDirection(Net.Direction.IN) + nets['q'].setDirection(Net.Direction.OUT) + + cell = new_cells['sff1r_x4'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(25.2), u(14.0), + )) + nets = { + '*': Net.create(cell, '*'), + '_net0': Net.create(cell, '_net0'), + '_net2': Net.create(cell, '_net2'), + '_net3': Net.create(cell, '_net3'), + '_net4': Net.create(cell, '_net4'), + '_net5': Net.create(cell, '_net5'), + '_net6': Net.create(cell, '_net6'), + '_net7': Net.create(cell, '_net7'), + '_net8': Net.create(cell, '_net8'), + 'ck': Net.create(cell, 'ck'), + 'ckr': Net.create(cell, 'ckr'), + 'i': Net.create(cell, 'i'), + 'nckr': Net.create(cell, 'nckr'), + 'nrst': Net.create(cell, 'nrst'), + 'q': Net.create(cell, 'q'), + 'sff_m': Net.create(cell, 'sff_m'), + 'sff_s': Net.create(cell, 'sff_s'), + 'u': Net.create(cell, 'u'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + 'y': Net.create(cell, 'y'), + } + net = nets['nckr'] + createRL( + tech, net, 'COMP', + ((0.52,2.1),(0.52,3.5),(1.26,3.5),(1.26,2.1),(0.52,2.1)), + ) + createRL( + tech, net, 'COMP', + ((0.52,9.1),(0.52,11.9),(1.26,11.9),(1.26,9.1),(0.52,9.1)), + ) + createRL( + tech, net, 'Poly2', + ((8.26,1.88),(8.26,4.38),(8.72,4.38),(8.72,4.02),(8.54,4.02),(8.54,1.88),(8.26,1.88)), + ) + createRL( + tech, net, 'Poly2', + ((2.66,1.88),(2.66,6.82),(0.66,6.82),(0.66,7.18),(2.66,7.18),(2.66,12.12),(2.94,12.12),(2.94,7.18),(9.66,7.18),(9.66,12.12),(9.94,12.12),(9.94,7.18),(18.06,7.18),(18.06,12.12),(18.34,12.12),(18.34,1.88),(18.06,1.88),(18.06,6.82),(2.94,6.82),(2.94,1.88),(2.66,1.88)), + ) + createRL( + tech, net, 'Contact', + ((0.73,6.89),(0.73,7.11),(0.95,7.11),(0.95,6.89),(0.73,6.89)), + ) + createRL( + tech, net, 'Contact', + ((8.29,6.89),(8.29,7.11),(8.51,7.11),(8.51,6.89),(8.29,6.89)), + ) + createRL( + tech, net, 'Contact', + ((8.43,4.09),(8.43,4.31),(8.65,4.31),(8.65,4.09),(8.43,4.09)), + ) + createRL( + tech, net, 'Contact', + ((0.59,9.39),(0.59,9.61),(0.81,9.61),(0.81,9.39),(0.59,9.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,9.89),(0.59,10.11),(0.81,10.11),(0.81,9.89),(0.59,9.89)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.39),(0.59,10.61),(0.81,10.61),(0.81,10.39),(0.59,10.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.89),(0.59,11.11),(0.81,11.11),(0.81,10.89),(0.59,10.89)), + ) + createRL( + tech, net, 'Contact', + ((0.59,11.39),(0.59,11.61),(0.81,11.61),(0.81,11.39),(0.59,11.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.19),(0.59,2.41),(0.81,2.41),(0.81,2.19),(0.59,2.19)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.69),(0.59,2.91),(0.81,2.91),(0.81,2.69),(0.59,2.69)), + ) + createRL( + tech, net, 'Contact', + ((0.59,3.19),(0.59,3.41),(0.81,3.41),(0.81,3.19),(0.59,3.19)), + ) + createRL( + tech, net, 'Metal1', + ((8.285,4.085),(8.285,6.885),(8.23,6.885),(8.23,7.115),(8.57,7.115),(8.57,6.885),(8.515,6.885),(8.515,4.315),(8.71,4.315),(8.71,4.085),(8.285,4.085)), + ) + createRL( + tech, net, 'Metal1', + ((0.53,2.185),(0.53,3.415),(0.585,3.415),(0.585,9.385),(0.53,9.385),(0.53,11.615),(0.87,11.615),(0.87,9.385),(0.815,9.385),(0.815,7.115),(1.01,7.115),(1.01,6.885),(0.815,6.885),(0.815,3.415),(0.87,3.415),(0.87,2.185),(0.53,2.185)), + ) + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((18.06,9.1),(18.06,11.9),(18.34,11.9),(18.34,9.1),(18.06,9.1)), + ) + createRL( + tech, net, 'COMP', + ((8.26,9.1),(8.26,11.9),(8.54,11.9),(8.54,9.1),(8.26,9.1)), + ) + createRL( + tech, net, 'COMP', + ((19.46,9.1),(19.46,11.9),(19.74,11.9),(19.74,9.1),(19.46,9.1)), + ) + createRL( + tech, net, 'COMP', + ((18.62,12.6),(18.62,13.16),(19.18,13.16),(19.18,12.6),(18.62,12.6)), + ) + createRL( + tech, net, 'COMP', + ((23.66,7.7),(23.66,13.3),(24.68,13.3),(24.68,7.7),(23.66,7.7)), + ) + createRL( + tech, net, 'COMP', + ((21.52,7.7),(21.52,10.5),(20.86,10.5),(20.86,13.3),(22.54,13.3),(22.54,7.7),(21.52,7.7)), + ) + createRL( + tech, net, 'COMP', + ((1.26,9.1),(1.26,11.9),(1.92,11.9),(1.92,12.92),(2.28,12.92),(2.28,11.9),(2.94,11.9),(2.94,9.1),(1.26,9.1)), + ) + createRL( + tech, net, 'COMP', + ((8.82,12.6),(8.82,13.16),(9.38,13.16),(9.38,12.6),(8.82,12.6)), + ) + createRL( + tech, net, 'COMP', + ((5.46,10.5),(5.46,13.3),(7.14,13.3),(7.14,10.5),(5.46,10.5)), + ) + createRL( + tech, net, 'COMP', + ((13.86,10.5),(13.86,13.3),(15.54,13.3),(15.54,10.5),(13.86,10.5)), + ) + createRL( + tech, net, 'COMP', + ((3.22,12.6),(3.22,13.16),(3.78,13.16),(3.78,12.6),(3.22,12.6)), + ) + createRL( + tech, net, 'COMP', + ((0.49,12.6),(0.49,13.3),(0.91,13.3),(0.91,12.6),(0.49,12.6)), + ) + createRL( + tech, net, 'COMP', + ((9.66,9.1),(9.66,11.9),(9.94,11.9),(9.94,9.1),(9.66,9.1)), + ) + createRL( + tech, net, 'COMP', + ((11.06,10.5),(11.06,13.3),(12.74,13.3),(12.74,10.5),(11.06,10.5)), + ) + createRL( + tech, net, 'Nwell', + ((-0.42,6.72),(-0.42,15.12),(25.62,15.12),(25.62,6.72),(-0.42,6.72)), + ) + createRL( + tech, net, 'Metal1', + ((21.53,7.885),(21.53,12.32),(14.87,12.32),(14.87,10.785),(14.53,10.785),(14.53,12.32),(12.07,12.32),(12.07,10.785),(11.73,10.785),(11.73,12.32),(0.0,12.32),(0.0,14.0),(25.2,14.0),(25.2,12.32),(24.67,12.32),(24.67,7.885),(24.33,7.885),(24.33,12.32),(21.87,12.32),(21.87,7.885),(21.53,7.885)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(12.6), u(25.2), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(12.6), u(25.2), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((3.39,12.77),(3.39,12.99),(3.61,12.99),(3.61,12.77),(3.39,12.77)), + ) + createRL( + tech, net, 'Contact', + ((18.79,12.77),(18.79,12.99),(19.01,12.99),(19.01,12.77),(18.79,12.77)), + ) + createRL( + tech, net, 'Contact', + ((0.59,12.77),(0.59,12.99),(0.81,12.99),(0.81,12.77),(0.59,12.77)), + ) + createRL( + tech, net, 'Contact', + ((6.19,12.42),(6.19,12.64),(6.41,12.64),(6.41,12.42),(6.19,12.42)), + ) + createRL( + tech, net, 'Contact', + ((6.19,12.92),(6.19,13.14),(6.41,13.14),(6.41,12.92),(6.19,12.92)), + ) + createRL( + tech, net, 'Contact', + ((24.39,7.89),(24.39,8.11),(24.61,8.11),(24.61,7.89),(24.39,7.89)), + ) + createRL( + tech, net, 'Contact', + ((24.39,8.39),(24.39,8.61),(24.61,8.61),(24.61,8.39),(24.39,8.39)), + ) + createRL( + tech, net, 'Contact', + ((24.39,8.89),(24.39,9.11),(24.61,9.11),(24.61,8.89),(24.39,8.89)), + ) + createRL( + tech, net, 'Contact', + ((24.39,9.39),(24.39,9.61),(24.61,9.61),(24.61,9.39),(24.39,9.39)), + ) + createRL( + tech, net, 'Contact', + ((24.39,9.89),(24.39,10.11),(24.61,10.11),(24.61,9.89),(24.39,9.89)), + ) + createRL( + tech, net, 'Contact', + ((24.39,10.39),(24.39,10.61),(24.61,10.61),(24.61,10.39),(24.39,10.39)), + ) + createRL( + tech, net, 'Contact', + ((24.39,10.89),(24.39,11.11),(24.61,11.11),(24.61,10.89),(24.39,10.89)), + ) + createRL( + tech, net, 'Contact', + ((24.39,11.39),(24.39,11.61),(24.61,11.61),(24.61,11.39),(24.39,11.39)), + ) + createRL( + tech, net, 'Contact', + ((24.39,11.89),(24.39,12.11),(24.61,12.11),(24.61,11.89),(24.39,11.89)), + ) + createRL( + tech, net, 'Contact', + ((24.39,12.39),(24.39,12.61),(24.61,12.61),(24.61,12.39),(24.39,12.39)), + ) + createRL( + tech, net, 'Contact', + ((24.39,12.89),(24.39,13.11),(24.61,13.11),(24.61,12.89),(24.39,12.89)), + ) + createRL( + tech, net, 'Contact', + ((8.99,12.77),(8.99,12.99),(9.21,12.99),(9.21,12.77),(8.99,12.77)), + ) + createRL( + tech, net, 'Contact', + ((11.79,10.79),(11.79,11.01),(12.01,11.01),(12.01,10.79),(11.79,10.79)), + ) + createRL( + tech, net, 'Contact', + ((11.79,11.29),(11.79,11.51),(12.01,11.51),(12.01,11.29),(11.79,11.29)), + ) + createRL( + tech, net, 'Contact', + ((11.79,11.79),(11.79,12.01),(12.01,12.01),(12.01,11.79),(11.79,11.79)), + ) + createRL( + tech, net, 'Contact', + ((11.79,12.29),(11.79,12.51),(12.01,12.51),(12.01,12.29),(11.79,12.29)), + ) + createRL( + tech, net, 'Contact', + ((11.79,12.79),(11.79,13.01),(12.01,13.01),(12.01,12.79),(11.79,12.79)), + ) + createRL( + tech, net, 'Contact', + ((14.59,10.79),(14.59,11.01),(14.81,11.01),(14.81,10.79),(14.59,10.79)), + ) + createRL( + tech, net, 'Contact', + ((14.59,11.29),(14.59,11.51),(14.81,11.51),(14.81,11.29),(14.59,11.29)), + ) + createRL( + tech, net, 'Contact', + ((14.59,11.79),(14.59,12.01),(14.81,12.01),(14.81,11.79),(14.59,11.79)), + ) + createRL( + tech, net, 'Contact', + ((14.59,12.29),(14.59,12.51),(14.81,12.51),(14.81,12.29),(14.59,12.29)), + ) + createRL( + tech, net, 'Contact', + ((14.59,12.79),(14.59,13.01),(14.81,13.01),(14.81,12.79),(14.59,12.79)), + ) + createRL( + tech, net, 'Contact', + ((1.99,12.63),(1.99,12.85),(2.21,12.85),(2.21,12.63),(1.99,12.63)), + ) + createRL( + tech, net, 'Contact', + ((21.59,7.89),(21.59,8.11),(21.81,8.11),(21.81,7.89),(21.59,7.89)), + ) + createRL( + tech, net, 'Contact', + ((21.59,8.39),(21.59,8.61),(21.81,8.61),(21.81,8.39),(21.59,8.39)), + ) + createRL( + tech, net, 'Contact', + ((21.59,8.89),(21.59,9.11),(21.81,9.11),(21.81,8.89),(21.59,8.89)), + ) + createRL( + tech, net, 'Contact', + ((21.59,9.39),(21.59,9.61),(21.81,9.61),(21.81,9.39),(21.59,9.39)), + ) + createRL( + tech, net, 'Contact', + ((21.59,9.89),(21.59,10.11),(21.81,10.11),(21.81,9.89),(21.59,9.89)), + ) + createRL( + tech, net, 'Contact', + ((21.59,10.39),(21.59,10.61),(21.81,10.61),(21.81,10.39),(21.59,10.39)), + ) + createRL( + tech, net, 'Contact', + ((21.59,10.89),(21.59,11.11),(21.81,11.11),(21.81,10.89),(21.59,10.89)), + ) + createRL( + tech, net, 'Contact', + ((21.59,11.39),(21.59,11.61),(21.81,11.61),(21.81,11.39),(21.59,11.39)), + ) + createRL( + tech, net, 'Contact', + ((21.59,11.89),(21.59,12.11),(21.81,12.11),(21.81,11.89),(21.59,11.89)), + ) + createRL( + tech, net, 'Contact', + ((21.59,12.39),(21.59,12.61),(21.81,12.61),(21.81,12.39),(21.59,12.39)), + ) + createRL( + tech, net, 'Contact', + ((21.59,12.89),(21.59,13.11),(21.81,13.11),(21.81,12.89),(21.59,12.89)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((0.36,8.87),(0.36,12.13),(1.76,12.13),(1.76,13.15),(2.44,13.15),(2.44,12.13),(3.84,12.13),(3.84,8.87),(0.36,8.87)), + ) + createRL( + tech, net, 'Pplus', + ((8.66,0.47),(8.66,1.49),(9.54,1.49),(9.54,0.47),(8.66,0.47)), + ) + createRL( + tech, net, 'Pplus', + ((21.36,7.47),(21.36,10.27),(20.64,10.27),(20.64,8.87),(17.16,8.87),(17.16,12.13),(19.96,12.13),(19.96,13.53),(24.84,13.53),(24.84,7.47),(21.36,7.47)), + ) + createRL( + tech, net, 'Pplus', + ((7.39,8.87),(7.39,10.27),(4.56,10.27),(4.56,13.53),(8.01,13.53),(8.01,12.13),(10.19,12.13),(10.19,13.53),(16.44,13.53),(16.44,10.27),(10.81,10.27),(10.81,8.87),(7.39,8.87)), + ) + createRL( + tech, net, 'Pplus', + ((0.33,0.33),(0.33,1.49),(1.07,1.49),(1.07,0.33),(0.33,0.33)), + ) + createRL( + tech, net, 'Pplus', + ((3.06,0.47),(3.06,1.49),(3.94,1.49),(3.94,0.47),(3.06,0.47)), + ) + createRL( + tech, net, 'Pplus', + ((19.86,0.47),(19.86,1.49),(20.74,1.49),(20.74,0.47),(19.86,0.47)), + ) + createRL( + tech, net, 'Nplus', + ((1.76,0.85),(1.76,1.87),(0.36,1.87),(0.36,3.73),(3.84,3.73),(3.84,1.87),(2.44,1.87),(2.44,0.85),(1.76,0.85)), + ) + createRL( + tech, net, 'Nplus', + ((18.46,12.37),(18.46,13.39),(19.34,13.39),(19.34,12.37),(18.46,12.37)), + ) + createRL( + tech, net, 'Nplus', + ((10.19,0.61),(10.19,1.87),(6.64,1.87),(6.64,0.85),(5.96,0.85),(5.96,1.87),(4.56,1.87),(4.56,3.73),(10.81,3.73),(10.81,2.33),(14.36,2.33),(14.36,3.73),(24.84,3.73),(24.84,0.61),(21.36,0.61),(21.36,1.87),(15.04,1.87),(15.04,0.61),(10.19,0.61)), + ) + createRL( + tech, net, 'Nplus', + ((8.66,12.37),(8.66,13.39),(9.54,13.39),(9.54,12.37),(8.66,12.37)), + ) + createRL( + tech, net, 'Nplus', + ((3.06,12.37),(3.06,13.39),(3.94,13.39),(3.94,12.37),(3.06,12.37)), + ) + createRL( + tech, net, 'Nplus', + ((0.33,12.37),(0.33,13.53),(1.07,13.53),(1.07,12.37),(0.33,12.37)), + ) + net = nets['ck'] + createRL( + tech, net, 'Poly2', + ((1.26,1.88),(1.26,4.38),(2.28,4.38),(2.28,4.02),(1.54,4.02),(1.54,1.88),(1.26,1.88)), + ) + createRL( + tech, net, 'Poly2', + ((1.26,8.22),(1.26,12.12),(1.54,12.12),(1.54,8.58),(2.28,8.58),(2.28,8.22),(1.26,8.22)), + ) + createRL( + tech, net, 'Metal1', + ((1.97,1.91),(1.97,4.085),(1.93,4.085),(1.93,4.315),(1.97,4.315),(1.97,8.285),(1.93,8.285),(1.93,8.515),(1.97,8.515),(1.97,12.09),(2.23,12.09),(2.23,8.515),(2.27,8.515),(2.27,8.285),(2.23,8.285),(2.23,4.315),(2.27,4.315),(2.27,4.085),(2.23,4.085),(2.23,1.91),(1.97,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((1.99,8.29),(1.99,8.51),(2.21,8.51),(2.21,8.29),(1.99,8.29)), + ) + createRL( + tech, net, 'Contact', + ((1.99,4.09),(1.99,4.31),(2.21,4.31),(2.21,4.09),(1.99,4.09)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((20.02,0.7),(20.02,1.26),(20.58,1.26),(20.58,0.7),(20.02,0.7)), + ) + createRL( + tech, net, 'COMP', + ((19.46,2.1),(19.46,3.5),(19.74,3.5),(19.74,2.1),(19.46,2.1)), + ) + createRL( + tech, net, 'COMP', + ((21.52,0.84),(21.52,2.1),(20.86,2.1),(20.86,3.5),(22.54,3.5),(22.54,0.84),(21.52,0.84)), + ) + createRL( + tech, net, 'COMP', + ((8.82,0.7),(8.82,1.26),(9.38,1.26),(9.38,0.7),(8.82,0.7)), + ) + createRL( + tech, net, 'COMP', + ((0.49,0.56),(0.49,1.26),(0.91,1.26),(0.91,0.56),(0.49,0.56)), + ) + createRL( + tech, net, 'COMP', + ((9.66,2.1),(9.66,3.5),(9.94,3.5),(9.94,2.1),(9.66,2.1)), + ) + createRL( + tech, net, 'COMP', + ((8.26,2.1),(8.26,3.5),(8.54,3.5),(8.54,2.1),(8.26,2.1)), + ) + createRL( + tech, net, 'COMP', + ((23.66,0.84),(23.66,3.5),(24.68,3.5),(24.68,0.84),(23.66,0.84)), + ) + createRL( + tech, net, 'COMP', + ((13.86,0.84),(13.86,2.1),(14.14,2.1),(14.14,0.84),(13.86,0.84)), + ) + createRL( + tech, net, 'COMP', + ((18.06,2.1),(18.06,3.5),(18.34,3.5),(18.34,2.1),(18.06,2.1)), + ) + createRL( + tech, net, 'COMP', + ((11.06,0.84),(11.06,2.1),(12.74,2.1),(12.74,0.84),(11.06,0.84)), + ) + createRL( + tech, net, 'COMP', + ((3.22,0.7),(3.22,1.26),(3.78,1.26),(3.78,0.7),(3.22,0.7)), + ) + createRL( + tech, net, 'COMP', + ((6.12,1.08),(6.12,2.1),(5.46,2.1),(5.46,3.5),(7.14,3.5),(7.14,2.1),(6.48,2.1),(6.48,1.08),(6.12,1.08)), + ) + createRL( + tech, net, 'COMP', + ((1.92,1.08),(1.92,2.1),(1.26,2.1),(1.26,3.5),(2.94,3.5),(2.94,2.1),(2.28,2.1),(2.28,1.08),(1.92,1.08)), + ) + createRL( + tech, net, 'COMP', + ((16.66,2.1),(16.66,3.5),(16.94,3.5),(16.94,2.1),(16.66,2.1)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(11.73,1.68),(11.73,1.835),(12.07,1.835),(12.07,1.68),(21.53,1.68),(21.53,3.285),(21.87,3.285),(21.87,1.68),(24.33,1.68),(24.33,3.285),(24.67,3.285),(24.67,1.68),(25.2,1.68),(25.2,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(12.6), u(25.2), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(12.6), u(25.2), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((21.59,1.06),(21.59,1.28),(21.81,1.28),(21.81,1.06),(21.59,1.06)), + ) + createRL( + tech, net, 'Contact', + ((21.59,1.56),(21.59,1.78),(21.81,1.78),(21.81,1.56),(21.59,1.56)), + ) + createRL( + tech, net, 'Contact', + ((21.59,2.06),(21.59,2.28),(21.81,2.28),(21.81,2.06),(21.59,2.06)), + ) + createRL( + tech, net, 'Contact', + ((21.59,2.56),(21.59,2.78),(21.81,2.78),(21.81,2.56),(21.59,2.56)), + ) + createRL( + tech, net, 'Contact', + ((21.59,3.06),(21.59,3.28),(21.81,3.28),(21.81,3.06),(21.59,3.06)), + ) + createRL( + tech, net, 'Contact', + ((20.19,0.87),(20.19,1.09),(20.41,1.09),(20.41,0.87),(20.19,0.87)), + ) + createRL( + tech, net, 'Contact', + ((8.99,0.87),(8.99,1.09),(9.21,1.09),(9.21,0.87),(8.99,0.87)), + ) + createRL( + tech, net, 'Contact', + ((0.59,0.87),(0.59,1.09),(0.81,1.09),(0.81,0.87),(0.59,0.87)), + ) + createRL( + tech, net, 'Contact', + ((1.99,1.15),(1.99,1.37),(2.21,1.37),(2.21,1.15),(1.99,1.15)), + ) + createRL( + tech, net, 'Contact', + ((6.19,1.15),(6.19,1.37),(6.41,1.37),(6.41,1.15),(6.19,1.15)), + ) + createRL( + tech, net, 'Contact', + ((3.39,0.87),(3.39,1.09),(3.61,1.09),(3.61,0.87),(3.39,0.87)), + ) + createRL( + tech, net, 'Contact', + ((24.39,1.06),(24.39,1.28),(24.61,1.28),(24.61,1.06),(24.39,1.06)), + ) + createRL( + tech, net, 'Contact', + ((24.39,1.56),(24.39,1.78),(24.61,1.78),(24.61,1.56),(24.39,1.56)), + ) + createRL( + tech, net, 'Contact', + ((24.39,2.06),(24.39,2.28),(24.61,2.28),(24.61,2.06),(24.39,2.06)), + ) + createRL( + tech, net, 'Contact', + ((24.39,2.56),(24.39,2.78),(24.61,2.78),(24.61,2.56),(24.39,2.56)), + ) + createRL( + tech, net, 'Contact', + ((24.39,3.06),(24.39,3.28),(24.61,3.28),(24.61,3.06),(24.39,3.06)), + ) + createRL( + tech, net, 'Contact', + ((11.79,1.11),(11.79,1.33),(12.01,1.33),(12.01,1.11),(11.79,1.11)), + ) + createRL( + tech, net, 'Contact', + ((11.79,1.61),(11.79,1.83),(12.01,1.83),(12.01,1.61),(11.79,1.61)), + ) + net = nets['_net0'] + createRL( + tech, net, 'COMP', + ((7.55,9.1),(7.55,10.5),(7.14,10.5),(7.14,13.3),(7.85,13.3),(7.85,11.9),(8.26,11.9),(8.26,9.1),(7.55,9.1)), + ) + net = nets['sff_m'] + createRL( + tech, net, 'COMP', + ((8.54,9.1),(8.54,11.9),(9.66,11.9),(9.66,9.1),(8.54,9.1)), + ) + createRL( + tech, net, 'COMP', + ((8.54,2.1),(8.54,3.5),(9.66,3.5),(9.66,2.1),(8.54,2.1)), + ) + createRL( + tech, net, 'Poly2', + ((12.28,8.22),(12.28,8.58),(12.46,8.58),(12.46,13.52),(12.74,13.52),(12.74,8.22),(12.28,8.22)), + ) + createRL( + tech, net, 'Poly2', + ((12.46,0.62),(12.46,4.02),(12.28,4.02),(12.28,4.38),(12.74,4.38),(12.74,0.62),(12.46,0.62)), + ) + createRL( + tech, net, 'Metal1', + ((8.93,2.185),(8.93,3.415),(9.27,3.415),(9.27,2.915),(10.385,2.915),(10.385,9.685),(9.27,9.685),(9.27,9.385),(8.93,9.385),(8.93,11.615),(9.27,11.615),(9.27,9.915),(10.615,9.915),(10.615,8.515),(12.63,8.515),(12.63,8.285),(10.615,8.285),(10.615,4.315),(12.63,4.315),(12.63,4.085),(10.615,4.085),(10.615,2.685),(9.27,2.685),(9.27,2.185),(8.93,2.185)), + ) + createRL( + tech, net, 'Contact', + ((12.35,8.29),(12.35,8.51),(12.57,8.51),(12.57,8.29),(12.35,8.29)), + ) + createRL( + tech, net, 'Contact', + ((12.35,4.09),(12.35,4.31),(12.57,4.31),(12.57,4.09),(12.35,4.09)), + ) + createRL( + tech, net, 'Contact', + ((8.99,2.19),(8.99,2.41),(9.21,2.41),(9.21,2.19),(8.99,2.19)), + ) + createRL( + tech, net, 'Contact', + ((8.99,2.69),(8.99,2.91),(9.21,2.91),(9.21,2.69),(8.99,2.69)), + ) + createRL( + tech, net, 'Contact', + ((8.99,3.19),(8.99,3.41),(9.21,3.41),(9.21,3.19),(8.99,3.19)), + ) + createRL( + tech, net, 'Contact', + ((8.99,9.39),(8.99,9.61),(9.21,9.61),(9.21,9.39),(8.99,9.39)), + ) + createRL( + tech, net, 'Contact', + ((8.99,9.89),(8.99,10.11),(9.21,10.11),(9.21,9.89),(8.99,9.89)), + ) + createRL( + tech, net, 'Contact', + ((8.99,10.39),(8.99,10.61),(9.21,10.61),(9.21,10.39),(8.99,10.39)), + ) + createRL( + tech, net, 'Contact', + ((8.99,10.89),(8.99,11.11),(9.21,11.11),(9.21,10.89),(8.99,10.89)), + ) + createRL( + tech, net, 'Contact', + ((8.99,11.39),(8.99,11.61),(9.21,11.61),(9.21,11.39),(8.99,11.39)), + ) + net = nets['ckr'] + createRL( + tech, net, 'Poly2', + ((18.86,6.82),(18.86,7.18),(19.46,7.18),(19.46,12.12),(19.74,12.12),(19.74,6.82),(18.86,6.82)), + ) + createRL( + tech, net, 'Poly2', + ((8.26,8.22),(8.26,12.12),(8.54,12.12),(8.54,8.58),(8.72,8.58),(8.72,8.22),(8.26,8.22)), + ) + createRL( + tech, net, 'Poly2', + ((9.66,1.88),(9.66,5.42),(3.46,5.42),(3.46,5.78),(17.33,5.78),(17.33,5.42),(16.94,5.42),(16.94,1.88),(16.66,1.88),(16.66,5.42),(9.94,5.42),(9.94,1.88),(9.66,1.88)), + ) + createRL( + tech, net, 'COMP', + ((2.94,9.1),(2.94,11.9),(3.68,11.9),(3.68,9.1),(2.94,9.1)), + ) + createRL( + tech, net, 'COMP', + ((2.94,2.1),(2.94,3.5),(3.68,3.5),(3.68,2.1),(2.94,2.1)), + ) + createRL( + tech, net, 'Contact', + ((18.93,6.89),(18.93,7.11),(19.15,7.11),(19.15,6.89),(18.93,6.89)), + ) + createRL( + tech, net, 'Contact', + ((8.43,8.29),(8.43,8.51),(8.65,8.51),(8.65,8.29),(8.43,8.29)), + ) + createRL( + tech, net, 'Contact', + ((9.34,5.49),(9.34,5.71),(9.56,5.71),(9.56,5.49),(9.34,5.49)), + ) + createRL( + tech, net, 'Contact', + ((3.39,9.39),(3.39,9.61),(3.61,9.61),(3.61,9.39),(3.39,9.39)), + ) + createRL( + tech, net, 'Contact', + ((3.39,9.89),(3.39,10.11),(3.61,10.11),(3.61,9.89),(3.39,9.89)), + ) + createRL( + tech, net, 'Contact', + ((3.39,10.39),(3.39,10.61),(3.61,10.61),(3.61,10.39),(3.39,10.39)), + ) + createRL( + tech, net, 'Contact', + ((3.39,10.89),(3.39,11.11),(3.61,11.11),(3.61,10.89),(3.39,10.89)), + ) + createRL( + tech, net, 'Contact', + ((3.39,11.39),(3.39,11.61),(3.61,11.61),(3.61,11.39),(3.39,11.39)), + ) + createRL( + tech, net, 'Contact', + ((3.39,2.19),(3.39,2.41),(3.61,2.41),(3.61,2.19),(3.39,2.19)), + ) + createRL( + tech, net, 'Contact', + ((3.39,2.69),(3.39,2.91),(3.61,2.91),(3.61,2.69),(3.39,2.69)), + ) + createRL( + tech, net, 'Contact', + ((3.39,3.19),(3.39,3.41),(3.61,3.41),(3.61,3.19),(3.39,3.19)), + ) + createRL( + tech, net, 'Contact', + ((3.53,5.49),(3.53,5.71),(3.75,5.71),(3.75,5.49),(3.53,5.49)), + ) + createRL( + tech, net, 'Contact', + ((17.04,5.49),(17.04,5.71),(17.26,5.71),(17.26,5.49),(17.04,5.49)), + ) + createRL( + tech, net, 'Metal1', + ((3.33,2.185),(3.33,3.415),(3.385,3.415),(3.385,9.385),(3.33,9.385),(3.33,11.615),(3.67,11.615),(3.67,9.385),(3.615,9.385),(3.615,5.715),(3.81,5.715),(3.81,5.485),(3.615,5.485),(3.615,3.415),(3.67,3.415),(3.67,2.185),(3.33,2.185)), + ) + createRL( + tech, net, 'Metal1', + ((9.28,5.485),(9.28,5.715),(9.335,5.715),(9.335,8.285),(8.37,8.285),(8.37,8.515),(9.565,8.515),(9.565,5.715),(9.62,5.715),(9.62,5.485),(9.28,5.485)), + ) + createRL( + tech, net, 'Metal1', + ((16.98,5.485),(16.98,5.715),(18.785,5.715),(18.785,7.115),(19.21,7.115),(19.21,6.885),(19.015,6.885),(19.015,5.485),(16.98,5.485)), + ) + net = nets['y'] + createRL( + tech, net, 'COMP', + ((12.74,10.5),(12.74,13.3),(13.86,13.3),(13.86,10.5),(12.74,10.5)), + ) + createRL( + tech, net, 'COMP', + ((14.14,0.84),(14.14,2.1),(14.52,2.1),(14.52,3.5),(16.66,3.5),(16.66,2.1),(14.88,2.1),(14.88,0.84),(14.14,0.84)), + ) + createRL( + tech, net, 'COMP', + ((17.32,9.1),(17.32,11.9),(18.06,11.9),(18.06,9.1),(17.32,9.1)), + ) + createRL( + tech, net, 'Poly2', + ((11.06,9.62),(11.06,13.52),(11.34,13.52),(11.34,9.98),(11.52,9.98),(11.52,9.62),(11.06,9.62)), + ) + createRL( + tech, net, 'Poly2', + ((11.06,0.62),(11.06,2.98),(11.52,2.98),(11.52,2.62),(11.34,2.62),(11.34,0.62),(11.06,0.62)), + ) + createRL( + tech, net, 'Metal1', + ((14.53,1.91),(14.53,2.685),(11.17,2.685),(11.17,2.915),(11.34,2.915),(11.34,2.94),(13.185,2.94),(13.185,9.685),(11.17,9.685),(11.17,9.915),(13.185,9.915),(13.185,10.715),(13.13,10.715),(13.13,12.09),(13.47,12.09),(13.47,10.715),(13.415,10.715),(13.415,9.915),(17.33,9.915),(17.33,10.855),(17.67,10.855),(17.67,9.395),(17.33,9.395),(17.33,9.685),(13.415,9.685),(13.415,2.915),(14.53,2.915),(14.53,3.285),(14.87,3.285),(14.87,1.91),(14.53,1.91)), + ) + createRL( + tech, net, 'Contact', + ((13.19,10.72),(13.19,10.94),(13.41,10.94),(13.41,10.72),(13.19,10.72)), + ) + createRL( + tech, net, 'Contact', + ((13.19,11.22),(13.19,11.44),(13.41,11.44),(13.41,11.22),(13.19,11.22)), + ) + createRL( + tech, net, 'Contact', + ((13.19,11.72),(13.19,11.94),(13.41,11.94),(13.41,11.72),(13.19,11.72)), + ) + createRL( + tech, net, 'Contact', + ((11.23,9.69),(11.23,9.91),(11.45,9.91),(11.45,9.69),(11.23,9.69)), + ) + createRL( + tech, net, 'Contact', + ((14.59,2.06),(14.59,2.28),(14.81,2.28),(14.81,2.06),(14.59,2.06)), + ) + createRL( + tech, net, 'Contact', + ((14.59,2.56),(14.59,2.78),(14.81,2.78),(14.81,2.56),(14.59,2.56)), + ) + createRL( + tech, net, 'Contact', + ((14.59,3.06),(14.59,3.28),(14.81,3.28),(14.81,3.06),(14.59,3.06)), + ) + createRL( + tech, net, 'Contact', + ((11.23,2.69),(11.23,2.91),(11.45,2.91),(11.45,2.69),(11.23,2.69)), + ) + createRL( + tech, net, 'Contact', + ((17.39,9.4),(17.39,9.62),(17.61,9.62),(17.61,9.4),(17.39,9.4)), + ) + createRL( + tech, net, 'Contact', + ((17.39,9.9),(17.39,10.12),(17.61,10.12),(17.61,9.9),(17.39,9.9)), + ) + createRL( + tech, net, 'Contact', + ((17.39,10.4),(17.39,10.62),(17.61,10.62),(17.61,10.4),(17.39,10.4)), + ) + net = nets['sff_s'] + createRL( + tech, net, 'COMP', + ((18.34,9.1),(18.34,11.9),(19.46,11.9),(19.46,9.1),(18.34,9.1)), + ) + createRL( + tech, net, 'COMP', + ((16.94,2.1),(16.94,3.5),(18.06,3.5),(18.06,2.1),(16.94,2.1)), + ) + createRL( + tech, net, 'Poly2', + ((22.26,0.62),(22.26,5.42),(21.66,5.42),(21.66,5.78),(22.26,5.78),(22.26,13.52),(22.54,13.52),(22.54,5.78),(23.66,5.78),(23.66,13.52),(23.94,13.52),(23.94,0.62),(23.66,0.62),(23.66,5.42),(22.54,5.42),(22.54,0.62),(22.26,0.62)), + ) + createRL( + tech, net, 'Contact', + ((18.79,9.4),(18.79,9.62),(19.01,9.62),(19.01,9.4),(18.79,9.4)), + ) + createRL( + tech, net, 'Contact', + ((18.79,9.9),(18.79,10.12),(19.01,10.12),(19.01,9.9),(18.79,9.9)), + ) + createRL( + tech, net, 'Contact', + ((18.79,10.4),(18.79,10.62),(19.01,10.62),(19.01,10.4),(18.79,10.4)), + ) + createRL( + tech, net, 'Contact', + ((21.73,5.49),(21.73,5.71),(21.95,5.71),(21.95,5.49),(21.73,5.49)), + ) + createRL( + tech, net, 'Contact', + ((17.39,2.19),(17.39,2.41),(17.61,2.41),(17.61,2.19),(17.39,2.19)), + ) + createRL( + tech, net, 'Contact', + ((17.39,2.69),(17.39,2.91),(17.61,2.91),(17.61,2.69),(17.39,2.69)), + ) + createRL( + tech, net, 'Contact', + ((17.39,3.19),(17.39,3.41),(17.61,3.41),(17.61,3.19),(17.39,3.19)), + ) + createRL( + tech, net, 'Metal1', + ((17.33,2.185),(17.33,3.415),(17.67,3.415),(17.67,2.915),(20.185,2.915),(20.185,8.285),(18.84,8.285),(18.84,9.395),(18.73,9.395),(18.73,10.855),(19.07,10.855),(19.07,8.515),(20.415,8.515),(20.415,5.715),(22.01,5.715),(22.01,5.485),(20.415,5.485),(20.415,2.685),(17.67,2.685),(17.67,2.185),(17.33,2.185)), + ) + net = nets['_net3'] + createRL( + tech, net, 'COMP', + ((15.54,10.5),(15.54,13.3),(16.28,13.3),(16.28,10.5),(15.54,10.5)), + ) + createRL( + tech, net, 'COMP', + ((19.74,9.1),(19.74,11.9),(20.12,11.9),(20.12,13.3),(20.86,13.3),(20.86,10.5),(20.48,10.5),(20.48,9.1),(19.74,9.1)), + ) + createRL( + tech, net, 'Contact', + ((15.99,10.72),(15.99,10.94),(16.21,10.94),(16.21,10.72),(15.99,10.72)), + ) + createRL( + tech, net, 'Contact', + ((15.99,11.22),(15.99,11.44),(16.21,11.44),(16.21,11.22),(15.99,11.22)), + ) + createRL( + tech, net, 'Contact', + ((15.99,11.72),(15.99,11.94),(16.21,11.94),(16.21,11.72),(15.99,11.72)), + ) + createRL( + tech, net, 'Contact', + ((20.19,9.27),(20.19,9.49),(20.41,9.49),(20.41,9.27),(20.19,9.27)), + ) + createRL( + tech, net, 'Contact', + ((20.19,9.77),(20.19,9.99),(20.41,9.99),(20.41,9.77),(20.19,9.77)), + ) + createRL( + tech, net, 'Contact', + ((20.19,10.27),(20.19,10.49),(20.41,10.49),(20.41,10.27),(20.19,10.27)), + ) + createRL( + tech, net, 'Contact', + ((20.19,10.77),(20.19,10.99),(20.41,10.99),(20.41,10.77),(20.19,10.77)), + ) + createRL( + tech, net, 'Contact', + ((20.19,11.27),(20.19,11.49),(20.41,11.49),(20.41,11.27),(20.19,11.27)), + ) + createRL( + tech, net, 'Contact', + ((20.19,11.77),(20.19,11.99),(20.41,11.99),(20.41,11.77),(20.19,11.77)), + ) + createRL( + tech, net, 'Metal1', + ((20.13,9.265),(20.13,11.085),(16.27,11.085),(16.27,10.715),(15.93,10.715),(15.93,12.09),(16.27,12.09),(16.27,11.315),(20.13,11.315),(20.13,12.09),(20.47,12.09),(20.47,9.265),(20.13,9.265)), + ) + net = nets['_net6'] + createRL( + tech, net, 'COMP', + ((10.35,0.84),(10.35,2.1),(9.94,2.1),(9.94,3.5),(10.65,3.5),(10.65,2.1),(11.06,2.1),(11.06,0.84),(10.35,0.84)), + ) + net = nets['u'] + createRL( + tech, net, 'COMP', + ((4.72,10.5),(4.72,13.3),(5.46,13.3),(5.46,10.5),(4.72,10.5)), + ) + createRL( + tech, net, 'COMP', + ((4.72,2.1),(4.72,3.5),(5.46,3.5),(5.46,2.1),(4.72,2.1)), + ) + createRL( + tech, net, 'Poly2', + ((6.86,1.88),(6.86,4.38),(7.39,4.38),(7.39,4.02),(7.14,4.02),(7.14,1.88),(6.86,1.88)), + ) + createRL( + tech, net, 'Poly2', + ((4.86,8.22),(4.86,8.58),(6.86,8.58),(6.86,13.52),(7.14,13.52),(7.14,8.58),(7.39,8.58),(7.39,8.22),(4.86,8.22)), + ) + createRL( + tech, net, 'Contact', + ((7.1,4.09),(7.1,4.31),(7.32,4.31),(7.32,4.09),(7.1,4.09)), + ) + createRL( + tech, net, 'Contact', + ((4.79,10.72),(4.79,10.94),(5.01,10.94),(5.01,10.72),(4.79,10.72)), + ) + createRL( + tech, net, 'Contact', + ((4.79,11.22),(4.79,11.44),(5.01,11.44),(5.01,11.22),(4.79,11.22)), + ) + createRL( + tech, net, 'Contact', + ((4.79,11.72),(4.79,11.94),(5.01,11.94),(5.01,11.72),(4.79,11.72)), + ) + createRL( + tech, net, 'Contact', + ((7.1,8.29),(7.1,8.51),(7.32,8.51),(7.32,8.29),(7.1,8.29)), + ) + createRL( + tech, net, 'Contact', + ((4.93,8.29),(4.93,8.51),(5.15,8.51),(5.15,8.29),(4.93,8.29)), + ) + createRL( + tech, net, 'Contact', + ((4.79,2.19),(4.79,2.41),(5.01,2.41),(5.01,2.19),(4.79,2.19)), + ) + createRL( + tech, net, 'Contact', + ((4.79,2.69),(4.79,2.91),(5.01,2.91),(5.01,2.69),(4.79,2.69)), + ) + createRL( + tech, net, 'Contact', + ((4.79,3.19),(4.79,3.41),(5.01,3.41),(5.01,3.19),(4.79,3.19)), + ) + createRL( + tech, net, 'Metal1', + ((4.73,2.185),(4.73,3.415),(4.785,3.415),(4.785,10.715),(4.73,10.715),(4.73,12.09),(5.07,12.09),(5.07,10.715),(5.015,10.715),(5.015,8.515),(5.21,8.515),(5.21,8.285),(5.015,8.285),(5.015,3.415),(5.07,3.415),(5.07,2.185),(4.73,2.185)), + ) + createRL( + tech, net, 'Metal1', + ((7.04,4.085),(7.04,4.315),(7.235,4.315),(7.235,8.285),(7.04,8.285),(7.04,8.515),(7.465,8.515),(7.465,4.085),(7.04,4.085)), + ) + net = nets['i'] + createRL( + tech, net, 'Poly2', + ((5.46,9.62),(5.46,13.52),(5.74,13.52),(5.74,9.98),(6.34,9.98),(6.34,9.62),(5.46,9.62)), + ) + createRL( + tech, net, 'Poly2', + ((5.46,1.88),(5.46,4.38),(6.34,4.38),(6.34,4.02),(5.74,4.02),(5.74,1.88),(5.46,1.88)), + ) + createRL( + tech, net, 'Metal1', + ((6.17,1.91),(6.17,4.085),(5.99,4.085),(5.99,4.315),(6.17,4.315),(6.17,9.685),(5.99,9.685),(5.99,9.915),(6.17,9.915),(6.17,12.09),(6.43,12.09),(6.43,1.91),(6.17,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(6.3), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(6.3), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((6.05,9.69),(6.05,9.91),(6.27,9.91),(6.27,9.69),(6.05,9.69)), + ) + createRL( + tech, net, 'Contact', + ((6.05,4.09),(6.05,4.31),(6.27,4.31),(6.27,4.09),(6.05,4.09)), + ) + net = nets['_net7'] + createRL( + tech, net, 'COMP', + ((7.14,2.1),(7.14,3.5),(8.26,3.5),(8.26,2.1),(7.14,2.1)), + ) + net = nets['_net8'] + createRL( + tech, net, 'COMP', + ((18.34,2.1),(18.34,3.5),(19.46,3.5),(19.46,2.1),(18.34,2.1)), + ) + net = nets['_net2'] + createRL( + tech, net, 'COMP', + ((9.94,9.1),(9.94,11.9),(10.35,11.9),(10.35,13.3),(11.06,13.3),(11.06,10.5),(10.65,10.5),(10.65,9.1),(9.94,9.1)), + ) + net = nets['_net5'] + createRL( + tech, net, 'COMP', + ((19.74,2.1),(19.74,3.5),(20.86,3.5),(20.86,2.1),(19.74,2.1)), + ) + net = nets['nrst'] + createRL( + tech, net, 'Poly2', + ((13.86,0.62),(13.86,4.38),(16.14,4.38),(16.14,4.02),(14.14,4.02),(14.14,0.62),(13.86,0.62)), + ) + createRL( + tech, net, 'Poly2', + ((19.46,1.88),(19.46,4.02),(19.28,4.02),(19.28,4.38),(19.74,4.38),(19.74,1.88),(19.46,1.88)), + ) + createRL( + tech, net, 'Poly2', + ((13.86,8.22),(13.86,13.52),(14.14,13.52),(14.14,8.58),(15.26,8.58),(15.26,13.52),(15.54,13.52),(15.54,8.58),(16.14,8.58),(16.14,8.22),(13.86,8.22)), + ) + createRL( + tech, net, 'Contact', + ((19.35,4.09),(19.35,4.31),(19.57,4.31),(19.57,4.09),(19.35,4.09)), + ) + createRL( + tech, net, 'Contact', + ((15.85,4.09),(15.85,4.31),(16.07,4.31),(16.07,4.09),(15.85,4.09)), + ) + createRL( + tech, net, 'Contact', + ((15.85,8.29),(15.85,8.51),(16.07,8.51),(16.07,8.29),(15.85,8.29)), + ) + createRL( + tech, net, 'Metal1', + ((15.97,1.91),(15.97,4.085),(15.79,4.085),(15.79,4.315),(15.97,4.315),(15.97,8.285),(15.79,8.285),(15.79,8.515),(15.97,8.515),(15.97,9.455),(16.23,9.455),(16.23,4.315),(19.63,4.315),(19.63,4.085),(16.23,4.085),(16.23,1.91),(15.97,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(16.1), u(0.26), u(1.91), u(9.455), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(16.1), u(0.26), u(1.91), u(9.455), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['_net4'] + createRL( + tech, net, 'COMP', + ((12.74,0.84),(12.74,2.1),(13.86,2.1),(13.86,0.84),(12.74,0.84)), + ) + net = nets['q'] + createRL( + tech, net, 'Poly2', + ((20.86,6.82),(20.86,13.52),(21.14,13.52),(21.14,7.18),(21.32,7.18),(21.32,6.82),(20.86,6.82)), + ) + createRL( + tech, net, 'Poly2', + ((20.86,1.88),(20.86,4.38),(21.32,4.38),(21.32,4.02),(21.14,4.02),(21.14,1.88),(20.86,1.88)), + ) + createRL( + tech, net, 'COMP', + ((22.54,0.84),(22.54,3.5),(23.66,3.5),(23.66,0.84),(22.54,0.84)), + ) + createRL( + tech, net, 'COMP', + ((22.54,7.7),(22.54,13.3),(23.66,13.3),(23.66,7.7),(22.54,7.7)), + ) + createRL( + tech, net, 'Metal1', + ((22.93,1.91),(22.93,3.285),(22.97,3.285),(22.97,4.085),(20.97,4.085),(20.97,4.315),(22.97,4.315),(22.97,6.885),(20.97,6.885),(20.97,7.115),(22.97,7.115),(22.97,7.815),(22.93,7.815),(22.93,12.09),(23.27,12.09),(23.27,7.815),(23.23,7.815),(23.23,3.285),(23.27,3.285),(23.27,1.91),(22.93,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(23.1), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(23.1), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((21.03,6.89),(21.03,7.11),(21.25,7.11),(21.25,6.89),(21.03,6.89)), + ) + createRL( + tech, net, 'Contact', + ((21.03,4.09),(21.03,4.31),(21.25,4.31),(21.25,4.09),(21.03,4.09)), + ) + createRL( + tech, net, 'Contact', + ((22.99,2.06),(22.99,2.28),(23.21,2.28),(23.21,2.06),(22.99,2.06)), + ) + createRL( + tech, net, 'Contact', + ((22.99,2.56),(22.99,2.78),(23.21,2.78),(23.21,2.56),(22.99,2.56)), + ) + createRL( + tech, net, 'Contact', + ((22.99,3.06),(22.99,3.28),(23.21,3.28),(23.21,3.06),(22.99,3.06)), + ) + createRL( + tech, net, 'Contact', + ((22.99,7.82),(22.99,8.04),(23.21,8.04),(23.21,7.82),(22.99,7.82)), + ) + createRL( + tech, net, 'Contact', + ((22.99,8.32),(22.99,8.54),(23.21,8.54),(23.21,8.32),(22.99,8.32)), + ) + createRL( + tech, net, 'Contact', + ((22.99,8.82),(22.99,9.04),(23.21,9.04),(23.21,8.82),(22.99,8.82)), + ) + createRL( + tech, net, 'Contact', + ((22.99,9.32),(22.99,9.54),(23.21,9.54),(23.21,9.32),(22.99,9.32)), + ) + createRL( + tech, net, 'Contact', + ((22.99,9.82),(22.99,10.04),(23.21,10.04),(23.21,9.82),(22.99,9.82)), + ) + createRL( + tech, net, 'Contact', + ((22.99,10.32),(22.99,10.54),(23.21,10.54),(23.21,10.32),(22.99,10.32)), + ) + createRL( + tech, net, 'Contact', + ((22.99,10.82),(22.99,11.04),(23.21,11.04),(23.21,10.82),(22.99,10.82)), + ) + createRL( + tech, net, 'Contact', + ((22.99,11.32),(22.99,11.54),(23.21,11.54),(23.21,11.32),(22.99,11.32)), + ) + createRL( + tech, net, 'Contact', + ((22.99,11.82),(22.99,12.04),(23.21,12.04),(23.21,11.82),(22.99,11.82)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['ck'].setType(Net.Type.CLOCK) + nets['ck'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i'].setDirection(Net.Direction.IN) + nets['nrst'].setDirection(Net.Direction.IN) + nets['q'].setDirection(Net.Direction.OUT) + + cell = new_cells['xr2_x1'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(9.8), u(14.0), + )) + nets = { + '*': Net.create(cell, '*'), + '_net0': Net.create(cell, '_net0'), + '_net1': Net.create(cell, '_net1'), + '_net2': Net.create(cell, '_net2'), + '_net3': Net.create(cell, '_net3'), + '_net4': Net.create(cell, '_net4'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'q': Net.create(cell, 'q'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['q'] + createRL( + tech, net, 'COMP', + ((4.34,0.84),(4.34,3.5),(5.46,3.5),(5.46,0.84),(4.34,0.84)), + ) + createRL( + tech, net, 'COMP', + ((4.34,7.7),(4.34,13.3),(5.46,13.3),(5.46,7.7),(4.34,7.7)), + ) + createRL( + tech, net, 'Metal1', + ((3.37,1.91),(3.37,9.1),(3.63,9.1),(3.63,8.61),(4.73,8.61),(4.73,10.855),(5.07,10.855),(5.07,7.945),(4.73,7.945),(4.73,8.19),(3.63,8.19),(3.63,2.915),(4.73,2.915),(4.73,3.285),(5.07,3.285),(5.07,1.91),(4.73,1.91),(4.73,2.685),(3.63,2.685),(3.63,1.91),(3.37,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.5), u(0.26), u(1.91), u(9.1), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.5), u(0.26), u(1.91), u(9.1), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((4.79,2.06),(4.79,2.28),(5.01,2.28),(5.01,2.06),(4.79,2.06)), + ) + createRL( + tech, net, 'Contact', + ((4.79,2.56),(4.79,2.78),(5.01,2.78),(5.01,2.56),(4.79,2.56)), + ) + createRL( + tech, net, 'Contact', + ((4.79,3.06),(4.79,3.28),(5.01,3.28),(5.01,3.06),(4.79,3.06)), + ) + createRL( + tech, net, 'Contact', + ((4.79,7.95),(4.79,8.17),(5.01,8.17),(5.01,7.95),(4.79,7.95)), + ) + createRL( + tech, net, 'Contact', + ((4.79,8.45),(4.79,8.67),(5.01,8.67),(5.01,8.45),(4.79,8.45)), + ) + createRL( + tech, net, 'Contact', + ((4.79,8.95),(4.79,9.17),(5.01,9.17),(5.01,8.95),(4.79,8.95)), + ) + createRL( + tech, net, 'Contact', + ((4.79,9.45),(4.79,9.67),(5.01,9.67),(5.01,9.45),(4.79,9.45)), + ) + createRL( + tech, net, 'Contact', + ((4.79,9.95),(4.79,10.17),(5.01,10.17),(5.01,9.95),(4.79,9.95)), + ) + createRL( + tech, net, 'Contact', + ((4.79,10.45),(4.79,10.67),(5.01,10.67),(5.01,10.45),(4.79,10.45)), + ) + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((1.92,7.7),(1.92,9.1),(1.26,9.1),(1.26,11.9),(1.92,11.9),(1.92,13.3),(2.94,13.3),(2.94,7.7),(1.92,7.7)), + ) + createRL( + tech, net, 'COMP', + ((8.89,12.6),(8.89,13.3),(9.31,13.3),(9.31,12.6),(8.89,12.6)), + ) + createRL( + tech, net, 'COMP', + ((6.86,7.7),(6.86,13.3),(7.88,13.3),(7.88,11.9),(8.54,11.9),(8.54,9.1),(7.88,9.1),(7.88,7.7),(6.86,7.7)), + ) + createRL( + tech, net, 'COMP', + ((5.46,7.7),(5.46,13.3),(5.74,13.3),(5.74,7.7),(5.46,7.7)), + ) + createRL( + tech, net, 'COMP', + ((4.06,7.7),(4.06,13.3),(4.34,13.3),(4.34,7.7),(4.06,7.7)), + ) + createRL( + tech, net, 'COMP', + ((0.49,12.6),(0.49,13.3),(0.91,13.3),(0.91,12.6),(0.49,12.6)), + ) + createRL( + tech, net, 'Nwell', + ((-0.42,6.72),(-0.42,15.12),(10.22,15.12),(10.22,6.72),(-0.42,6.72)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(9.8,14.0),(9.8,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.9), u(9.8), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.9), u(9.8), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((7.59,12.42),(7.59,12.64),(7.81,12.64),(7.81,12.42),(7.59,12.42)), + ) + createRL( + tech, net, 'Contact', + ((7.59,12.92),(7.59,13.14),(7.81,13.14),(7.81,12.92),(7.59,12.92)), + ) + createRL( + tech, net, 'Contact', + ((1.99,12.42),(1.99,12.64),(2.21,12.64),(2.21,12.42),(1.99,12.42)), + ) + createRL( + tech, net, 'Contact', + ((1.99,12.92),(1.99,13.14),(2.21,13.14),(2.21,12.92),(1.99,12.92)), + ) + createRL( + tech, net, 'Contact', + ((0.59,12.77),(0.59,12.99),(0.81,12.99),(0.81,12.77),(0.59,12.77)), + ) + createRL( + tech, net, 'Contact', + ((8.99,12.77),(8.99,12.99),(9.21,12.99),(9.21,12.77),(8.99,12.77)), + ) + net = nets['_net2'] + createRL( + tech, net, 'COMP', + ((5.74,7.7),(5.74,13.3),(6.86,13.3),(6.86,7.7),(5.74,7.7)), + ) + createRL( + tech, net, 'COMP', + ((2.94,7.7),(2.94,13.3),(4.06,13.3),(4.06,7.7),(2.94,7.7)), + ) + createRL( + tech, net, 'Contact', + ((3.39,9.35),(3.39,9.57),(3.61,9.57),(3.61,9.35),(3.39,9.35)), + ) + createRL( + tech, net, 'Contact', + ((3.39,9.85),(3.39,10.07),(3.61,10.07),(3.61,9.85),(3.39,9.85)), + ) + createRL( + tech, net, 'Contact', + ((3.39,10.35),(3.39,10.57),(3.61,10.57),(3.61,10.35),(3.39,10.35)), + ) + createRL( + tech, net, 'Contact', + ((3.39,10.85),(3.39,11.07),(3.61,11.07),(3.61,10.85),(3.39,10.85)), + ) + createRL( + tech, net, 'Contact', + ((3.39,11.35),(3.39,11.57),(3.61,11.57),(3.61,11.35),(3.39,11.35)), + ) + createRL( + tech, net, 'Contact', + ((3.39,11.85),(3.39,12.07),(3.61,12.07),(3.61,11.85),(3.39,11.85)), + ) + createRL( + tech, net, 'Contact', + ((6.19,7.82),(6.19,8.04),(6.41,8.04),(6.41,7.82),(6.19,7.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,8.32),(6.19,8.54),(6.41,8.54),(6.41,8.32),(6.19,8.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,8.82),(6.19,9.04),(6.41,9.04),(6.41,8.82),(6.19,8.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,9.32),(6.19,9.54),(6.41,9.54),(6.41,9.32),(6.19,9.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,9.82),(6.19,10.04),(6.41,10.04),(6.41,9.82),(6.19,9.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,10.32),(6.19,10.54),(6.41,10.54),(6.41,10.32),(6.19,10.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,10.82),(6.19,11.04),(6.41,11.04),(6.41,10.82),(6.19,10.82)), + ) + createRL( + tech, net, 'Contact', + ((6.19,11.32),(6.19,11.54),(6.41,11.54),(6.41,11.32),(6.19,11.32)), + ) + createRL( + tech, net, 'Contact', + ((6.19,11.82),(6.19,12.04),(6.41,12.04),(6.41,11.82),(6.19,11.82)), + ) + createRL( + tech, net, 'Metal1', + ((6.13,7.815),(6.13,11.085),(3.67,11.085),(3.67,9.33),(3.33,9.33),(3.33,12.09),(3.67,12.09),(3.67,11.315),(6.13,11.315),(6.13,12.09),(6.47,12.09),(6.47,7.815),(6.13,7.815)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((1.76,7.47),(1.76,8.87),(0.36,8.87),(0.36,12.13),(1.76,12.13),(1.76,13.53),(8.04,13.53),(8.04,12.13),(9.44,12.13),(9.44,8.87),(8.04,8.87),(8.04,7.47),(1.76,7.47)), + ) + createRL( + tech, net, 'Pplus', + ((8.73,0.33),(8.73,1.49),(9.47,1.49),(9.47,0.33),(8.73,0.33)), + ) + createRL( + tech, net, 'Pplus', + ((0.33,0.33),(0.33,1.49),(1.07,1.49),(1.07,0.33),(0.33,0.33)), + ) + createRL( + tech, net, 'Nplus', + ((8.73,12.37),(8.73,13.53),(9.47,13.53),(9.47,12.37),(8.73,12.37)), + ) + createRL( + tech, net, 'Nplus', + ((1.76,0.61),(1.76,1.87),(0.36,1.87),(0.36,3.73),(9.44,3.73),(9.44,1.87),(8.04,1.87),(8.04,0.61),(1.76,0.61)), + ) + createRL( + tech, net, 'Nplus', + ((0.33,12.37),(0.33,13.53),(1.07,13.53),(1.07,12.37),(0.33,12.37)), + ) + net = nets['_net0'] + createRL( + tech, net, 'Poly2', + ((5.46,0.62),(5.46,5.42),(0.66,5.42),(0.66,5.78),(5.46,5.78),(5.46,13.52),(5.74,13.52),(5.74,0.62),(5.46,0.62)), + ) + createRL( + tech, net, 'COMP', + ((0.52,9.1),(0.52,11.9),(1.26,11.9),(1.26,9.1),(0.52,9.1)), + ) + createRL( + tech, net, 'COMP', + ((0.52,2.1),(0.52,3.5),(1.26,3.5),(1.26,2.1),(0.52,2.1)), + ) + createRL( + tech, net, 'Contact', + ((0.73,5.49),(0.73,5.71),(0.95,5.71),(0.95,5.49),(0.73,5.49)), + ) + createRL( + tech, net, 'Contact', + ((0.59,9.39),(0.59,9.61),(0.81,9.61),(0.81,9.39),(0.59,9.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,9.89),(0.59,10.11),(0.81,10.11),(0.81,9.89),(0.59,9.89)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.39),(0.59,10.61),(0.81,10.61),(0.81,10.39),(0.59,10.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.89),(0.59,11.11),(0.81,11.11),(0.81,10.89),(0.59,10.89)), + ) + createRL( + tech, net, 'Contact', + ((0.59,11.39),(0.59,11.61),(0.81,11.61),(0.81,11.39),(0.59,11.39)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.19),(0.59,2.41),(0.81,2.41),(0.81,2.19),(0.59,2.19)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.69),(0.59,2.91),(0.81,2.91),(0.81,2.69),(0.59,2.69)), + ) + createRL( + tech, net, 'Contact', + ((0.59,3.19),(0.59,3.41),(0.81,3.41),(0.81,3.19),(0.59,3.19)), + ) + createRL( + tech, net, 'Metal1', + ((0.53,2.185),(0.53,3.415),(0.585,3.415),(0.585,9.385),(0.53,9.385),(0.53,11.615),(0.87,11.615),(0.87,9.385),(0.815,9.385),(0.815,5.715),(1.01,5.715),(1.01,5.485),(0.815,5.485),(0.815,3.415),(0.87,3.415),(0.87,2.185),(0.53,2.185)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((8.89,0.56),(8.89,1.26),(9.31,1.26),(9.31,0.56),(8.89,0.56)), + ) + createRL( + tech, net, 'COMP', + ((6.86,0.84),(6.86,3.5),(8.54,3.5),(8.54,2.1),(7.88,2.1),(7.88,0.84),(6.86,0.84)), + ) + createRL( + tech, net, 'COMP', + ((4.06,0.84),(4.06,3.5),(4.34,3.5),(4.34,0.84),(4.06,0.84)), + ) + createRL( + tech, net, 'COMP', + ((0.49,0.56),(0.49,1.26),(0.91,1.26),(0.91,0.56),(0.49,0.56)), + ) + createRL( + tech, net, 'COMP', + ((5.46,0.84),(5.46,3.5),(5.74,3.5),(5.74,0.84),(5.46,0.84)), + ) + createRL( + tech, net, 'COMP', + ((1.92,0.84),(1.92,2.1),(1.26,2.1),(1.26,3.5),(2.94,3.5),(2.94,0.84),(1.92,0.84)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(9.8,1.68),(9.8,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.9), u(9.8), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.9), u(9.8), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((0.59,0.87),(0.59,1.09),(0.81,1.09),(0.81,0.87),(0.59,0.87)), + ) + createRL( + tech, net, 'Contact', + ((8.99,0.87),(8.99,1.09),(9.21,1.09),(9.21,0.87),(8.99,0.87)), + ) + createRL( + tech, net, 'Contact', + ((7.59,0.93),(7.59,1.15),(7.81,1.15),(7.81,0.93),(7.59,0.93)), + ) + createRL( + tech, net, 'Contact', + ((7.59,1.43),(7.59,1.65),(7.81,1.65),(7.81,1.43),(7.59,1.43)), + ) + createRL( + tech, net, 'Contact', + ((1.99,0.93),(1.99,1.15),(2.21,1.15),(2.21,0.93),(1.99,0.93)), + ) + createRL( + tech, net, 'Contact', + ((1.99,1.43),(1.99,1.65),(2.21,1.65),(2.21,1.43),(1.99,1.43)), + ) + net = nets['_net4'] + createRL( + tech, net, 'COMP', + ((5.74,0.84),(5.74,3.5),(6.86,3.5),(6.86,0.84),(5.74,0.84)), + ) + net = nets['_net3'] + createRL( + tech, net, 'Poly2', + ((6.86,0.62),(6.86,5.42),(6.68,5.42),(6.68,5.78),(9.14,5.78),(9.14,5.42),(7.14,5.42),(7.14,0.62),(6.86,0.62)), + ) + createRL( + tech, net, 'Poly2', + ((4.06,6.82),(4.06,13.52),(4.34,13.52),(4.34,7.18),(4.94,7.18),(4.94,6.82),(4.06,6.82)), + ) + createRL( + tech, net, 'COMP', + ((8.54,9.1),(8.54,11.9),(9.28,11.9),(9.28,9.1),(8.54,9.1)), + ) + createRL( + tech, net, 'COMP', + ((8.54,2.1),(8.54,3.5),(9.28,3.5),(9.28,2.1),(8.54,2.1)), + ) + createRL( + tech, net, 'Contact', + ((8.85,5.49),(8.85,5.71),(9.07,5.71),(9.07,5.49),(8.85,5.49)), + ) + createRL( + tech, net, 'Contact', + ((6.75,5.49),(6.75,5.71),(6.97,5.71),(6.97,5.49),(6.75,5.49)), + ) + createRL( + tech, net, 'Contact', + ((8.99,2.19),(8.99,2.41),(9.21,2.41),(9.21,2.19),(8.99,2.19)), + ) + createRL( + tech, net, 'Contact', + ((8.99,2.69),(8.99,2.91),(9.21,2.91),(9.21,2.69),(8.99,2.69)), + ) + createRL( + tech, net, 'Contact', + ((8.99,3.19),(8.99,3.41),(9.21,3.41),(9.21,3.19),(8.99,3.19)), + ) + createRL( + tech, net, 'Contact', + ((4.65,6.89),(4.65,7.11),(4.87,7.11),(4.87,6.89),(4.65,6.89)), + ) + createRL( + tech, net, 'Contact', + ((8.99,9.39),(8.99,9.61),(9.21,9.61),(9.21,9.39),(8.99,9.39)), + ) + createRL( + tech, net, 'Contact', + ((8.99,9.89),(8.99,10.11),(9.21,10.11),(9.21,9.89),(8.99,9.89)), + ) + createRL( + tech, net, 'Contact', + ((8.99,10.39),(8.99,10.61),(9.21,10.61),(9.21,10.39),(8.99,10.39)), + ) + createRL( + tech, net, 'Contact', + ((8.99,10.89),(8.99,11.11),(9.21,11.11),(9.21,10.89),(8.99,10.89)), + ) + createRL( + tech, net, 'Contact', + ((8.99,11.39),(8.99,11.61),(9.21,11.61),(9.21,11.39),(8.99,11.39)), + ) + createRL( + tech, net, 'Metal1', + ((8.93,2.185),(8.93,3.415),(8.985,3.415),(8.985,5.485),(8.79,5.485),(8.79,5.715),(8.985,5.715),(8.985,9.385),(8.93,9.385),(8.93,11.615),(9.27,11.615),(9.27,9.385),(9.215,9.385),(9.215,3.415),(9.27,3.415),(9.27,2.185),(8.93,2.185)), + ) + createRL( + tech, net, 'Metal1', + ((4.785,5.485),(4.785,6.885),(4.59,6.885),(4.59,7.115),(5.015,7.115),(5.015,5.715),(7.03,5.715),(7.03,5.485),(4.785,5.485)), + ) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((1.26,6.82),(1.26,12.12),(1.54,12.12),(1.54,7.18),(2.66,7.18),(2.66,13.52),(2.94,13.52),(2.94,6.82),(1.26,6.82)), + ) + createRL( + tech, net, 'Poly2', + ((2.66,0.62),(2.66,4.02),(1.54,4.02),(1.54,1.88),(1.26,1.88),(1.26,4.38),(2.94,4.38),(2.94,0.62),(2.66,0.62)), + ) + createRL( + tech, net, 'Metal1', + ((1.97,1.91),(1.97,4.085),(1.93,4.085),(1.93,4.315),(1.97,4.315),(1.97,6.885),(1.93,6.885),(1.93,7.115),(1.97,7.115),(1.97,12.09),(2.23,12.09),(2.23,7.115),(2.27,7.115),(2.27,6.885),(2.23,6.885),(2.23,4.315),(2.27,4.315),(2.27,4.085),(2.23,4.085),(2.23,1.91),(1.97,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((1.99,4.09),(1.99,4.31),(2.21,4.31),(2.21,4.09),(1.99,4.09)), + ) + createRL( + tech, net, 'Contact', + ((1.99,6.89),(1.99,7.11),(2.21,7.11),(2.21,6.89),(1.99,6.89)), + ) + net = nets['_net1'] + createRL( + tech, net, 'COMP', + ((2.94,0.84),(2.94,3.5),(4.06,3.5),(4.06,0.84),(2.94,0.84)), + ) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((8.26,1.88),(8.26,4.02),(7.52,4.02),(7.52,4.38),(8.54,4.38),(8.54,1.88),(8.26,1.88)), + ) + createRL( + tech, net, 'Poly2', + ((4.06,0.62),(4.06,4.38),(4.52,4.38),(4.52,4.02),(4.34,4.02),(4.34,0.62),(4.06,0.62)), + ) + createRL( + tech, net, 'Poly2', + ((6.86,6.82),(6.86,13.52),(7.14,13.52),(7.14,7.18),(8.26,7.18),(8.26,12.12),(8.54,12.12),(8.54,6.82),(6.86,6.82)), + ) + createRL( + tech, net, 'Metal1', + ((7.57,1.91),(7.57,4.085),(4.17,4.085),(4.17,4.315),(7.57,4.315),(7.57,6.885),(7.53,6.885),(7.53,7.115),(7.57,7.115),(7.57,12.09),(7.83,12.09),(7.83,7.115),(7.87,7.115),(7.87,6.885),(7.83,6.885),(7.83,4.315),(7.87,4.315),(7.87,4.085),(7.83,4.085),(7.83,1.91),(7.57,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(7.7), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(7.7), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Contact', + ((7.59,6.89),(7.59,7.11),(7.81,7.11),(7.81,6.89),(7.59,6.89)), + ) + createRL( + tech, net, 'Contact', + ((7.59,4.09),(7.59,4.31),(7.81,4.31),(7.81,4.09),(7.59,4.09)), + ) + createRL( + tech, net, 'Contact', + ((4.23,4.09),(4.23,4.31),(4.45,4.31),(4.45,4.09),(4.23,4.09)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['q'].setDirection(Net.Direction.OUT) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + + cell = new_cells['fill'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(1.4000000000000001), u(14.000000000000002), + )) + nets = { + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(1.4,14.0),(1.4,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(1.4), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(1.4), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(2.0,14.6),(2.0,6.72),(-0.6,6.72)), + ) + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(1.4,1.68),(1.4,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(1.4), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(1.4), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + + cell = new_cells['tie'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(1.4000000000000001), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(1.4,14.0),(1.4,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(1.4), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(1.4), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(2.0,14.6),(2.0,6.72),(-0.6,6.72)), + ) + createRL( + tech, net, 'COMP', + ((0.52,12.71),(0.52,13.57),(0.88,13.57),(0.88,12.71),(0.52,12.71)), + ) + createRL( + tech, net, 'Contact', + ((0.59,12.78),(0.59,13.0),(0.81,13.0),(0.81,12.78),(0.59,12.78)), + ) + createRL( + tech, net, 'Contact', + ((0.59,13.28),(0.59,13.5),(0.81,13.5),(0.81,13.28),(0.59,13.28)), + ) + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(1.4,1.68),(1.4,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(1.4), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(1.4), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'COMP', + ((0.52,0.43),(0.52,1.29),(0.88,1.29),(0.88,0.43),(0.52,0.43)), + ) + createRL( + tech, net, 'Contact', + ((0.59,0.5),(0.59,0.72),(0.81,0.72),(0.81,0.5),(0.59,0.5)), + ) + createRL( + tech, net, 'Contact', + ((0.59,1.0),(0.59,1.22),(0.81,1.22),(0.81,1.0),(0.59,1.0)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((0.36,0.2),(0.36,1.52),(1.04,1.52),(1.04,0.2),(0.36,0.2)), + ) + createRL( + tech, net, 'Nplus', + ((0.36,12.48),(0.36,13.8),(1.04,13.8),(1.04,12.48),(0.36,12.48)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + + cell = new_cells['tie_diff'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(1.4000000000000001), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((0.53,7.58),(0.53,12.32),(0.0,12.32),(0.0,14.0),(1.4,14.0),(1.4,12.32),(0.87,12.32),(0.87,7.58),(0.53,7.58)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(1.4), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(1.4), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(2.0,14.6),(2.0,6.72),(-0.6,6.72)), + ) + createRL( + tech, net, 'COMP', + ((0.36,7.32),(0.36,13.57),(1.04,13.57),(1.04,7.32),(0.36,7.32)), + ) + createRL( + tech, net, 'Contact', + ((0.59,7.585),(0.59,7.805),(0.81,7.805),(0.81,7.585),(0.59,7.585)), + ) + createRL( + tech, net, 'Contact', + ((0.59,8.085),(0.59,8.305),(0.81,8.305),(0.81,8.085),(0.59,8.085)), + ) + createRL( + tech, net, 'Contact', + ((0.59,8.585),(0.59,8.805),(0.81,8.805),(0.81,8.585),(0.59,8.585)), + ) + createRL( + tech, net, 'Contact', + ((0.59,9.085),(0.59,9.305),(0.81,9.305),(0.81,9.085),(0.59,9.085)), + ) + createRL( + tech, net, 'Contact', + ((0.59,9.585),(0.59,9.805),(0.81,9.805),(0.81,9.585),(0.59,9.585)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.085),(0.59,10.305),(0.81,10.305),(0.81,10.085),(0.59,10.085)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.585),(0.59,10.805),(0.81,10.805),(0.81,10.585),(0.59,10.585)), + ) + createRL( + tech, net, 'Contact', + ((0.59,11.085),(0.59,11.305),(0.81,11.305),(0.81,11.085),(0.59,11.085)), + ) + createRL( + tech, net, 'Contact', + ((0.59,11.585),(0.59,11.805),(0.81,11.805),(0.81,11.585),(0.59,11.585)), + ) + createRL( + tech, net, 'Contact', + ((0.59,12.085),(0.59,12.305),(0.81,12.305),(0.81,12.085),(0.59,12.085)), + ) + createRL( + tech, net, 'Contact', + ((0.59,12.585),(0.59,12.805),(0.81,12.805),(0.81,12.585),(0.59,12.585)), + ) + createRL( + tech, net, 'Contact', + ((0.59,13.085),(0.59,13.305),(0.81,13.305),(0.81,13.085),(0.59,13.085)), + ) + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(0.53,1.68),(0.53,5.89),(0.87,5.89),(0.87,1.68),(1.4,1.68),(1.4,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(1.4), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(1.4), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'COMP', + ((0.36,0.43),(0.36,6.12),(1.04,6.12),(1.04,0.43),(0.36,0.43)), + ) + createRL( + tech, net, 'Contact', + ((0.59,0.665),(0.59,0.885),(0.81,0.885),(0.81,0.665),(0.59,0.665)), + ) + createRL( + tech, net, 'Contact', + ((0.59,1.165),(0.59,1.385),(0.81,1.385),(0.81,1.165),(0.59,1.165)), + ) + createRL( + tech, net, 'Contact', + ((0.59,1.665),(0.59,1.885),(0.81,1.885),(0.81,1.665),(0.59,1.665)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.165),(0.59,2.385),(0.81,2.385),(0.81,2.165),(0.59,2.165)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.665),(0.59,2.885),(0.81,2.885),(0.81,2.665),(0.59,2.665)), + ) + createRL( + tech, net, 'Contact', + ((0.59,3.165),(0.59,3.385),(0.81,3.385),(0.81,3.165),(0.59,3.165)), + ) + createRL( + tech, net, 'Contact', + ((0.59,3.665),(0.59,3.885),(0.81,3.885),(0.81,3.665),(0.59,3.665)), + ) + createRL( + tech, net, 'Contact', + ((0.59,4.165),(0.59,4.385),(0.81,4.385),(0.81,4.165),(0.59,4.165)), + ) + createRL( + tech, net, 'Contact', + ((0.59,4.665),(0.59,4.885),(0.81,4.885),(0.81,4.665),(0.59,4.665)), + ) + createRL( + tech, net, 'Contact', + ((0.59,5.165),(0.59,5.385),(0.81,5.385),(0.81,5.165),(0.59,5.165)), + ) + createRL( + tech, net, 'Contact', + ((0.59,5.665),(0.59,5.885),(0.81,5.885),(0.81,5.665),(0.59,5.665)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((0.2,0.2),(0.2,6.35),(1.2,6.35),(1.2,0.2),(0.2,0.2)), + ) + createRL( + tech, net, 'Nplus', + ((0.2,7.09),(0.2,13.8),(1.2,13.8),(1.2,7.09),(0.2,7.09)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + + cell = new_cells['tie_poly'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(1.4000000000000001), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(1.4,14.0),(1.4,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(1.4), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(1.4), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(2.0,14.6),(2.0,6.72),(-0.6,6.72)), + ) + createRL( + tech, net, 'COMP', + ((0.52,12.71),(0.52,13.57),(0.88,13.57),(0.88,12.71),(0.52,12.71)), + ) + createRL( + tech, net, 'Contact', + ((0.59,12.78),(0.59,13.0),(0.81,13.0),(0.81,12.78),(0.59,12.78)), + ) + createRL( + tech, net, 'Contact', + ((0.59,13.28),(0.59,13.5),(0.81,13.5),(0.81,13.28),(0.59,13.28)), + ) + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(0.53,1.68),(0.53,1.885),(0.87,1.885),(0.87,1.68),(1.4,1.68),(1.4,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(1.4), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(1.4), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'COMP', + ((0.52,0.43),(0.52,1.29),(0.88,1.29),(0.88,0.43),(0.52,0.43)), + ) + createRL( + tech, net, 'Contact', + ((0.59,0.5),(0.59,0.72),(0.81,0.72),(0.81,0.5),(0.59,0.5)), + ) + createRL( + tech, net, 'Contact', + ((0.59,1.0),(0.59,1.22),(0.81,1.22),(0.81,1.0),(0.59,1.0)), + ) + createRL( + tech, net, 'Contact', + ((0.59,1.66),(0.59,1.88),(0.81,1.88),(0.81,1.66),(0.59,1.66)), + ) + createRL( + tech, net, 'Poly2', + ((0.12,1.59),(0.12,12.41),(1.28,12.41),(1.28,1.59),(0.12,1.59)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((0.36,0.2),(0.36,1.52),(1.04,1.52),(1.04,0.2),(0.36,0.2)), + ) + createRL( + tech, net, 'Nplus', + ((0.36,12.48),(0.36,13.8),(1.04,13.8),(1.04,12.48),(0.36,12.48)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + + cell = new_cells['fill_w2'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(2.8000000000000003), u(14.000000000000002), + )) + nets = { + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(2.8,14.0),(2.8,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(3.4,14.6),(3.4,6.72),(-0.6,6.72)), + ) + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(2.8,1.68),(2.8,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + + cell = new_cells['tie_w2'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(2.8000000000000003), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(2.8,14.0),(2.8,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(3.4,14.6),(3.4,6.72),(-0.6,6.72)), + ) + createRL( + tech, net, 'COMP', + ((1.22,12.71),(1.22,13.57),(1.58,13.57),(1.58,12.71),(1.22,12.71)), + ) + createRL( + tech, net, 'Contact', + ((1.29,12.78),(1.29,13.0),(1.51,13.0),(1.51,12.78),(1.29,12.78)), + ) + createRL( + tech, net, 'Contact', + ((1.29,13.28),(1.29,13.5),(1.51,13.5),(1.51,13.28),(1.29,13.28)), + ) + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(2.8,1.68),(2.8,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'COMP', + ((1.22,0.43),(1.22,1.29),(1.58,1.29),(1.58,0.43),(1.22,0.43)), + ) + createRL( + tech, net, 'Contact', + ((1.29,0.5),(1.29,0.72),(1.51,0.72),(1.51,0.5),(1.29,0.5)), + ) + createRL( + tech, net, 'Contact', + ((1.29,1.0),(1.29,1.22),(1.51,1.22),(1.51,1.0),(1.29,1.0)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((1.06,0.2),(1.06,1.52),(1.74,1.52),(1.74,0.2),(1.06,0.2)), + ) + createRL( + tech, net, 'Nplus', + ((1.06,12.48),(1.06,13.8),(1.74,13.8),(1.74,12.48),(1.06,12.48)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + + cell = new_cells['tie_diff_w2'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(2.8000000000000003), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((0.48,7.58),(0.48,12.32),(0.0,12.32),(0.0,14.0),(2.8,14.0),(2.8,12.32),(2.32,12.32),(2.32,7.58),(0.48,7.58)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(3.4,14.6),(3.4,6.72),(-0.6,6.72)), + ) + createRL( + tech, net, 'COMP', + ((0.36,7.32),(0.36,13.57),(2.44,13.57),(2.44,7.32),(0.36,7.32)), + ) + createRL( + tech, net, 'Contact', + ((0.54,7.585),(0.54,7.805),(0.76,7.805),(0.76,7.585),(0.54,7.585)), + ) + createRL( + tech, net, 'Contact', + ((1.04,7.585),(1.04,7.805),(1.26,7.805),(1.26,7.585),(1.04,7.585)), + ) + createRL( + tech, net, 'Contact', + ((1.54,7.585),(1.54,7.805),(1.76,7.805),(1.76,7.585),(1.54,7.585)), + ) + createRL( + tech, net, 'Contact', + ((2.04,7.585),(2.04,7.805),(2.26,7.805),(2.26,7.585),(2.04,7.585)), + ) + createRL( + tech, net, 'Contact', + ((0.54,8.085),(0.54,8.305),(0.76,8.305),(0.76,8.085),(0.54,8.085)), + ) + createRL( + tech, net, 'Contact', + ((1.04,8.085),(1.04,8.305),(1.26,8.305),(1.26,8.085),(1.04,8.085)), + ) + createRL( + tech, net, 'Contact', + ((1.54,8.085),(1.54,8.305),(1.76,8.305),(1.76,8.085),(1.54,8.085)), + ) + createRL( + tech, net, 'Contact', + ((2.04,8.085),(2.04,8.305),(2.26,8.305),(2.26,8.085),(2.04,8.085)), + ) + createRL( + tech, net, 'Contact', + ((0.54,8.585),(0.54,8.805),(0.76,8.805),(0.76,8.585),(0.54,8.585)), + ) + createRL( + tech, net, 'Contact', + ((1.04,8.585),(1.04,8.805),(1.26,8.805),(1.26,8.585),(1.04,8.585)), + ) + createRL( + tech, net, 'Contact', + ((1.54,8.585),(1.54,8.805),(1.76,8.805),(1.76,8.585),(1.54,8.585)), + ) + createRL( + tech, net, 'Contact', + ((2.04,8.585),(2.04,8.805),(2.26,8.805),(2.26,8.585),(2.04,8.585)), + ) + createRL( + tech, net, 'Contact', + ((0.54,9.085),(0.54,9.305),(0.76,9.305),(0.76,9.085),(0.54,9.085)), + ) + createRL( + tech, net, 'Contact', + ((1.04,9.085),(1.04,9.305),(1.26,9.305),(1.26,9.085),(1.04,9.085)), + ) + createRL( + tech, net, 'Contact', + ((1.54,9.085),(1.54,9.305),(1.76,9.305),(1.76,9.085),(1.54,9.085)), + ) + createRL( + tech, net, 'Contact', + ((2.04,9.085),(2.04,9.305),(2.26,9.305),(2.26,9.085),(2.04,9.085)), + ) + createRL( + tech, net, 'Contact', + ((0.54,9.585),(0.54,9.805),(0.76,9.805),(0.76,9.585),(0.54,9.585)), + ) + createRL( + tech, net, 'Contact', + ((1.04,9.585),(1.04,9.805),(1.26,9.805),(1.26,9.585),(1.04,9.585)), + ) + createRL( + tech, net, 'Contact', + ((1.54,9.585),(1.54,9.805),(1.76,9.805),(1.76,9.585),(1.54,9.585)), + ) + createRL( + tech, net, 'Contact', + ((2.04,9.585),(2.04,9.805),(2.26,9.805),(2.26,9.585),(2.04,9.585)), + ) + createRL( + tech, net, 'Contact', + ((0.54,10.085),(0.54,10.305),(0.76,10.305),(0.76,10.085),(0.54,10.085)), + ) + createRL( + tech, net, 'Contact', + ((1.04,10.085),(1.04,10.305),(1.26,10.305),(1.26,10.085),(1.04,10.085)), + ) + createRL( + tech, net, 'Contact', + ((1.54,10.085),(1.54,10.305),(1.76,10.305),(1.76,10.085),(1.54,10.085)), + ) + createRL( + tech, net, 'Contact', + ((2.04,10.085),(2.04,10.305),(2.26,10.305),(2.26,10.085),(2.04,10.085)), + ) + createRL( + tech, net, 'Contact', + ((0.54,10.585),(0.54,10.805),(0.76,10.805),(0.76,10.585),(0.54,10.585)), + ) + createRL( + tech, net, 'Contact', + ((1.04,10.585),(1.04,10.805),(1.26,10.805),(1.26,10.585),(1.04,10.585)), + ) + createRL( + tech, net, 'Contact', + ((1.54,10.585),(1.54,10.805),(1.76,10.805),(1.76,10.585),(1.54,10.585)), + ) + createRL( + tech, net, 'Contact', + ((2.04,10.585),(2.04,10.805),(2.26,10.805),(2.26,10.585),(2.04,10.585)), + ) + createRL( + tech, net, 'Contact', + ((0.54,11.085),(0.54,11.305),(0.76,11.305),(0.76,11.085),(0.54,11.085)), + ) + createRL( + tech, net, 'Contact', + ((1.04,11.085),(1.04,11.305),(1.26,11.305),(1.26,11.085),(1.04,11.085)), + ) + createRL( + tech, net, 'Contact', + ((1.54,11.085),(1.54,11.305),(1.76,11.305),(1.76,11.085),(1.54,11.085)), + ) + createRL( + tech, net, 'Contact', + ((2.04,11.085),(2.04,11.305),(2.26,11.305),(2.26,11.085),(2.04,11.085)), + ) + createRL( + tech, net, 'Contact', + ((0.54,11.585),(0.54,11.805),(0.76,11.805),(0.76,11.585),(0.54,11.585)), + ) + createRL( + tech, net, 'Contact', + ((1.04,11.585),(1.04,11.805),(1.26,11.805),(1.26,11.585),(1.04,11.585)), + ) + createRL( + tech, net, 'Contact', + ((1.54,11.585),(1.54,11.805),(1.76,11.805),(1.76,11.585),(1.54,11.585)), + ) + createRL( + tech, net, 'Contact', + ((2.04,11.585),(2.04,11.805),(2.26,11.805),(2.26,11.585),(2.04,11.585)), + ) + createRL( + tech, net, 'Contact', + ((0.54,12.085),(0.54,12.305),(0.76,12.305),(0.76,12.085),(0.54,12.085)), + ) + createRL( + tech, net, 'Contact', + ((1.04,12.085),(1.04,12.305),(1.26,12.305),(1.26,12.085),(1.04,12.085)), + ) + createRL( + tech, net, 'Contact', + ((1.54,12.085),(1.54,12.305),(1.76,12.305),(1.76,12.085),(1.54,12.085)), + ) + createRL( + tech, net, 'Contact', + ((2.04,12.085),(2.04,12.305),(2.26,12.305),(2.26,12.085),(2.04,12.085)), + ) + createRL( + tech, net, 'Contact', + ((0.54,12.585),(0.54,12.805),(0.76,12.805),(0.76,12.585),(0.54,12.585)), + ) + createRL( + tech, net, 'Contact', + ((1.04,12.585),(1.04,12.805),(1.26,12.805),(1.26,12.585),(1.04,12.585)), + ) + createRL( + tech, net, 'Contact', + ((1.54,12.585),(1.54,12.805),(1.76,12.805),(1.76,12.585),(1.54,12.585)), + ) + createRL( + tech, net, 'Contact', + ((2.04,12.585),(2.04,12.805),(2.26,12.805),(2.26,12.585),(2.04,12.585)), + ) + createRL( + tech, net, 'Contact', + ((0.54,13.085),(0.54,13.305),(0.76,13.305),(0.76,13.085),(0.54,13.085)), + ) + createRL( + tech, net, 'Contact', + ((1.04,13.085),(1.04,13.305),(1.26,13.305),(1.26,13.085),(1.04,13.085)), + ) + createRL( + tech, net, 'Contact', + ((1.54,13.085),(1.54,13.305),(1.76,13.305),(1.76,13.085),(1.54,13.085)), + ) + createRL( + tech, net, 'Contact', + ((2.04,13.085),(2.04,13.305),(2.26,13.305),(2.26,13.085),(2.04,13.085)), + ) + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(0.48,1.68),(0.48,5.89),(2.32,5.89),(2.32,1.68),(2.8,1.68),(2.8,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'COMP', + ((0.36,0.43),(0.36,6.12),(2.44,6.12),(2.44,0.43),(0.36,0.43)), + ) + createRL( + tech, net, 'Contact', + ((0.54,0.665),(0.54,0.885),(0.76,0.885),(0.76,0.665),(0.54,0.665)), + ) + createRL( + tech, net, 'Contact', + ((1.04,0.665),(1.04,0.885),(1.26,0.885),(1.26,0.665),(1.04,0.665)), + ) + createRL( + tech, net, 'Contact', + ((1.54,0.665),(1.54,0.885),(1.76,0.885),(1.76,0.665),(1.54,0.665)), + ) + createRL( + tech, net, 'Contact', + ((2.04,0.665),(2.04,0.885),(2.26,0.885),(2.26,0.665),(2.04,0.665)), + ) + createRL( + tech, net, 'Contact', + ((0.54,1.165),(0.54,1.385),(0.76,1.385),(0.76,1.165),(0.54,1.165)), + ) + createRL( + tech, net, 'Contact', + ((1.04,1.165),(1.04,1.385),(1.26,1.385),(1.26,1.165),(1.04,1.165)), + ) + createRL( + tech, net, 'Contact', + ((1.54,1.165),(1.54,1.385),(1.76,1.385),(1.76,1.165),(1.54,1.165)), + ) + createRL( + tech, net, 'Contact', + ((2.04,1.165),(2.04,1.385),(2.26,1.385),(2.26,1.165),(2.04,1.165)), + ) + createRL( + tech, net, 'Contact', + ((0.54,1.665),(0.54,1.885),(0.76,1.885),(0.76,1.665),(0.54,1.665)), + ) + createRL( + tech, net, 'Contact', + ((1.04,1.665),(1.04,1.885),(1.26,1.885),(1.26,1.665),(1.04,1.665)), + ) + createRL( + tech, net, 'Contact', + ((1.54,1.665),(1.54,1.885),(1.76,1.885),(1.76,1.665),(1.54,1.665)), + ) + createRL( + tech, net, 'Contact', + ((2.04,1.665),(2.04,1.885),(2.26,1.885),(2.26,1.665),(2.04,1.665)), + ) + createRL( + tech, net, 'Contact', + ((0.54,2.165),(0.54,2.385),(0.76,2.385),(0.76,2.165),(0.54,2.165)), + ) + createRL( + tech, net, 'Contact', + ((1.04,2.165),(1.04,2.385),(1.26,2.385),(1.26,2.165),(1.04,2.165)), + ) + createRL( + tech, net, 'Contact', + ((1.54,2.165),(1.54,2.385),(1.76,2.385),(1.76,2.165),(1.54,2.165)), + ) + createRL( + tech, net, 'Contact', + ((2.04,2.165),(2.04,2.385),(2.26,2.385),(2.26,2.165),(2.04,2.165)), + ) + createRL( + tech, net, 'Contact', + ((0.54,2.665),(0.54,2.885),(0.76,2.885),(0.76,2.665),(0.54,2.665)), + ) + createRL( + tech, net, 'Contact', + ((1.04,2.665),(1.04,2.885),(1.26,2.885),(1.26,2.665),(1.04,2.665)), + ) + createRL( + tech, net, 'Contact', + ((1.54,2.665),(1.54,2.885),(1.76,2.885),(1.76,2.665),(1.54,2.665)), + ) + createRL( + tech, net, 'Contact', + ((2.04,2.665),(2.04,2.885),(2.26,2.885),(2.26,2.665),(2.04,2.665)), + ) + createRL( + tech, net, 'Contact', + ((0.54,3.165),(0.54,3.385),(0.76,3.385),(0.76,3.165),(0.54,3.165)), + ) + createRL( + tech, net, 'Contact', + ((1.04,3.165),(1.04,3.385),(1.26,3.385),(1.26,3.165),(1.04,3.165)), + ) + createRL( + tech, net, 'Contact', + ((1.54,3.165),(1.54,3.385),(1.76,3.385),(1.76,3.165),(1.54,3.165)), + ) + createRL( + tech, net, 'Contact', + ((2.04,3.165),(2.04,3.385),(2.26,3.385),(2.26,3.165),(2.04,3.165)), + ) + createRL( + tech, net, 'Contact', + ((0.54,3.665),(0.54,3.885),(0.76,3.885),(0.76,3.665),(0.54,3.665)), + ) + createRL( + tech, net, 'Contact', + ((1.04,3.665),(1.04,3.885),(1.26,3.885),(1.26,3.665),(1.04,3.665)), + ) + createRL( + tech, net, 'Contact', + ((1.54,3.665),(1.54,3.885),(1.76,3.885),(1.76,3.665),(1.54,3.665)), + ) + createRL( + tech, net, 'Contact', + ((2.04,3.665),(2.04,3.885),(2.26,3.885),(2.26,3.665),(2.04,3.665)), + ) + createRL( + tech, net, 'Contact', + ((0.54,4.165),(0.54,4.385),(0.76,4.385),(0.76,4.165),(0.54,4.165)), + ) + createRL( + tech, net, 'Contact', + ((1.04,4.165),(1.04,4.385),(1.26,4.385),(1.26,4.165),(1.04,4.165)), + ) + createRL( + tech, net, 'Contact', + ((1.54,4.165),(1.54,4.385),(1.76,4.385),(1.76,4.165),(1.54,4.165)), + ) + createRL( + tech, net, 'Contact', + ((2.04,4.165),(2.04,4.385),(2.26,4.385),(2.26,4.165),(2.04,4.165)), + ) + createRL( + tech, net, 'Contact', + ((0.54,4.665),(0.54,4.885),(0.76,4.885),(0.76,4.665),(0.54,4.665)), + ) + createRL( + tech, net, 'Contact', + ((1.04,4.665),(1.04,4.885),(1.26,4.885),(1.26,4.665),(1.04,4.665)), + ) + createRL( + tech, net, 'Contact', + ((1.54,4.665),(1.54,4.885),(1.76,4.885),(1.76,4.665),(1.54,4.665)), + ) + createRL( + tech, net, 'Contact', + ((2.04,4.665),(2.04,4.885),(2.26,4.885),(2.26,4.665),(2.04,4.665)), + ) + createRL( + tech, net, 'Contact', + ((0.54,5.165),(0.54,5.385),(0.76,5.385),(0.76,5.165),(0.54,5.165)), + ) + createRL( + tech, net, 'Contact', + ((1.04,5.165),(1.04,5.385),(1.26,5.385),(1.26,5.165),(1.04,5.165)), + ) + createRL( + tech, net, 'Contact', + ((1.54,5.165),(1.54,5.385),(1.76,5.385),(1.76,5.165),(1.54,5.165)), + ) + createRL( + tech, net, 'Contact', + ((2.04,5.165),(2.04,5.385),(2.26,5.385),(2.26,5.165),(2.04,5.165)), + ) + createRL( + tech, net, 'Contact', + ((0.54,5.665),(0.54,5.885),(0.76,5.885),(0.76,5.665),(0.54,5.665)), + ) + createRL( + tech, net, 'Contact', + ((1.04,5.665),(1.04,5.885),(1.26,5.885),(1.26,5.665),(1.04,5.665)), + ) + createRL( + tech, net, 'Contact', + ((1.54,5.665),(1.54,5.885),(1.76,5.885),(1.76,5.665),(1.54,5.665)), + ) + createRL( + tech, net, 'Contact', + ((2.04,5.665),(2.04,5.885),(2.26,5.885),(2.26,5.665),(2.04,5.665)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((0.2,0.2),(0.2,6.35),(2.6,6.35),(2.6,0.2),(0.2,0.2)), + ) + createRL( + tech, net, 'Nplus', + ((0.2,7.09),(0.2,13.8),(2.6,13.8),(2.6,7.09),(0.2,7.09)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + + cell = new_cells['tie_poly_w2'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(2.8000000000000003), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(2.8,14.0),(2.8,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(3.4,14.6),(3.4,6.72),(-0.6,6.72)), + ) + createRL( + tech, net, 'COMP', + ((1.22,12.71),(1.22,13.57),(1.58,13.57),(1.58,12.71),(1.22,12.71)), + ) + createRL( + tech, net, 'Contact', + ((1.29,12.78),(1.29,13.0),(1.51,13.0),(1.51,12.78),(1.29,12.78)), + ) + createRL( + tech, net, 'Contact', + ((1.29,13.28),(1.29,13.5),(1.51,13.5),(1.51,13.28),(1.29,13.28)), + ) + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(1.23,1.68),(1.23,1.885),(1.57,1.885),(1.57,1.68),(2.8,1.68),(2.8,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'COMP', + ((1.22,0.43),(1.22,1.29),(1.58,1.29),(1.58,0.43),(1.22,0.43)), + ) + createRL( + tech, net, 'Contact', + ((1.29,0.5),(1.29,0.72),(1.51,0.72),(1.51,0.5),(1.29,0.5)), + ) + createRL( + tech, net, 'Contact', + ((1.29,1.0),(1.29,1.22),(1.51,1.22),(1.51,1.0),(1.29,1.0)), + ) + createRL( + tech, net, 'Contact', + ((1.29,1.66),(1.29,1.88),(1.51,1.88),(1.51,1.66),(1.29,1.66)), + ) + createRL( + tech, net, 'Poly2', + ((0.12,1.59),(0.12,12.41),(2.68,12.41),(2.68,1.59),(0.12,1.59)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((1.06,0.2),(1.06,1.52),(1.74,1.52),(1.74,0.2),(1.06,0.2)), + ) + createRL( + tech, net, 'Nplus', + ((1.06,12.48),(1.06,13.8),(1.74,13.8),(1.74,12.48),(1.06,12.48)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + + cell = new_cells['fill_w4'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(5.6000000000000005), u(14.000000000000002), + )) + nets = { + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(5.6,14.0),(5.6,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(6.2,14.6),(6.2,6.72),(-0.6,6.72)), + ) + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(5.6,1.68),(5.6,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + + cell = new_cells['tie_w4'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(5.6000000000000005), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(5.6,14.0),(5.6,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(6.2,14.6),(6.2,6.72),(-0.6,6.72)), + ) + createRL( + tech, net, 'COMP', + ((2.62,12.71),(2.62,13.57),(2.98,13.57),(2.98,12.71),(2.62,12.71)), + ) + createRL( + tech, net, 'Contact', + ((2.69,12.78),(2.69,13.0),(2.91,13.0),(2.91,12.78),(2.69,12.78)), + ) + createRL( + tech, net, 'Contact', + ((2.69,13.28),(2.69,13.5),(2.91,13.5),(2.91,13.28),(2.69,13.28)), + ) + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(5.6,1.68),(5.6,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'COMP', + ((2.62,0.43),(2.62,1.29),(2.98,1.29),(2.98,0.43),(2.62,0.43)), + ) + createRL( + tech, net, 'Contact', + ((2.69,0.5),(2.69,0.72),(2.91,0.72),(2.91,0.5),(2.69,0.5)), + ) + createRL( + tech, net, 'Contact', + ((2.69,1.0),(2.69,1.22),(2.91,1.22),(2.91,1.0),(2.69,1.0)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((2.46,0.2),(2.46,1.52),(3.14,1.52),(3.14,0.2),(2.46,0.2)), + ) + createRL( + tech, net, 'Nplus', + ((2.46,12.48),(2.46,13.8),(3.14,13.8),(3.14,12.48),(2.46,12.48)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + + cell = new_cells['tie_diff_w4'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(5.6000000000000005), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((0.38,7.58),(0.38,12.32),(0.0,12.32),(0.0,14.0),(5.6,14.0),(5.6,12.32),(5.22,12.32),(5.22,7.58),(0.38,7.58)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(6.2,14.6),(6.2,6.72),(-0.6,6.72)), + ) + createRL( + tech, net, 'COMP', + ((0.36,7.32),(0.36,13.57),(5.24,13.57),(5.24,7.32),(0.36,7.32)), + ) + createRL( + tech, net, 'Contact', + ((0.44,7.585),(0.44,7.805),(0.66,7.805),(0.66,7.585),(0.44,7.585)), + ) + createRL( + tech, net, 'Contact', + ((0.94,7.585),(0.94,7.805),(1.16,7.805),(1.16,7.585),(0.94,7.585)), + ) + createRL( + tech, net, 'Contact', + ((1.44,7.585),(1.44,7.805),(1.66,7.805),(1.66,7.585),(1.44,7.585)), + ) + createRL( + tech, net, 'Contact', + ((1.94,7.585),(1.94,7.805),(2.16,7.805),(2.16,7.585),(1.94,7.585)), + ) + createRL( + tech, net, 'Contact', + ((2.44,7.585),(2.44,7.805),(2.66,7.805),(2.66,7.585),(2.44,7.585)), + ) + createRL( + tech, net, 'Contact', + ((2.94,7.585),(2.94,7.805),(3.16,7.805),(3.16,7.585),(2.94,7.585)), + ) + createRL( + tech, net, 'Contact', + ((3.44,7.585),(3.44,7.805),(3.66,7.805),(3.66,7.585),(3.44,7.585)), + ) + createRL( + tech, net, 'Contact', + ((3.94,7.585),(3.94,7.805),(4.16,7.805),(4.16,7.585),(3.94,7.585)), + ) + createRL( + tech, net, 'Contact', + ((4.44,7.585),(4.44,7.805),(4.66,7.805),(4.66,7.585),(4.44,7.585)), + ) + createRL( + tech, net, 'Contact', + ((4.94,7.585),(4.94,7.805),(5.16,7.805),(5.16,7.585),(4.94,7.585)), + ) + createRL( + tech, net, 'Contact', + ((0.44,8.085),(0.44,8.305),(0.66,8.305),(0.66,8.085),(0.44,8.085)), + ) + createRL( + tech, net, 'Contact', + ((0.94,8.085),(0.94,8.305),(1.16,8.305),(1.16,8.085),(0.94,8.085)), + ) + createRL( + tech, net, 'Contact', + ((1.44,8.085),(1.44,8.305),(1.66,8.305),(1.66,8.085),(1.44,8.085)), + ) + createRL( + tech, net, 'Contact', + ((1.94,8.085),(1.94,8.305),(2.16,8.305),(2.16,8.085),(1.94,8.085)), + ) + createRL( + tech, net, 'Contact', + ((2.44,8.085),(2.44,8.305),(2.66,8.305),(2.66,8.085),(2.44,8.085)), + ) + createRL( + tech, net, 'Contact', + ((2.94,8.085),(2.94,8.305),(3.16,8.305),(3.16,8.085),(2.94,8.085)), + ) + createRL( + tech, net, 'Contact', + ((3.44,8.085),(3.44,8.305),(3.66,8.305),(3.66,8.085),(3.44,8.085)), + ) + createRL( + tech, net, 'Contact', + ((3.94,8.085),(3.94,8.305),(4.16,8.305),(4.16,8.085),(3.94,8.085)), + ) + createRL( + tech, net, 'Contact', + ((4.44,8.085),(4.44,8.305),(4.66,8.305),(4.66,8.085),(4.44,8.085)), + ) + createRL( + tech, net, 'Contact', + ((4.94,8.085),(4.94,8.305),(5.16,8.305),(5.16,8.085),(4.94,8.085)), + ) + createRL( + tech, net, 'Contact', + ((0.44,8.585),(0.44,8.805),(0.66,8.805),(0.66,8.585),(0.44,8.585)), + ) + createRL( + tech, net, 'Contact', + ((0.94,8.585),(0.94,8.805),(1.16,8.805),(1.16,8.585),(0.94,8.585)), + ) + createRL( + tech, net, 'Contact', + ((1.44,8.585),(1.44,8.805),(1.66,8.805),(1.66,8.585),(1.44,8.585)), + ) + createRL( + tech, net, 'Contact', + ((1.94,8.585),(1.94,8.805),(2.16,8.805),(2.16,8.585),(1.94,8.585)), + ) + createRL( + tech, net, 'Contact', + ((2.44,8.585),(2.44,8.805),(2.66,8.805),(2.66,8.585),(2.44,8.585)), + ) + createRL( + tech, net, 'Contact', + ((2.94,8.585),(2.94,8.805),(3.16,8.805),(3.16,8.585),(2.94,8.585)), + ) + createRL( + tech, net, 'Contact', + ((3.44,8.585),(3.44,8.805),(3.66,8.805),(3.66,8.585),(3.44,8.585)), + ) + createRL( + tech, net, 'Contact', + ((3.94,8.585),(3.94,8.805),(4.16,8.805),(4.16,8.585),(3.94,8.585)), + ) + createRL( + tech, net, 'Contact', + ((4.44,8.585),(4.44,8.805),(4.66,8.805),(4.66,8.585),(4.44,8.585)), + ) + createRL( + tech, net, 'Contact', + ((4.94,8.585),(4.94,8.805),(5.16,8.805),(5.16,8.585),(4.94,8.585)), + ) + createRL( + tech, net, 'Contact', + ((0.44,9.085),(0.44,9.305),(0.66,9.305),(0.66,9.085),(0.44,9.085)), + ) + createRL( + tech, net, 'Contact', + ((0.94,9.085),(0.94,9.305),(1.16,9.305),(1.16,9.085),(0.94,9.085)), + ) + createRL( + tech, net, 'Contact', + ((1.44,9.085),(1.44,9.305),(1.66,9.305),(1.66,9.085),(1.44,9.085)), + ) + createRL( + tech, net, 'Contact', + ((1.94,9.085),(1.94,9.305),(2.16,9.305),(2.16,9.085),(1.94,9.085)), + ) + createRL( + tech, net, 'Contact', + ((2.44,9.085),(2.44,9.305),(2.66,9.305),(2.66,9.085),(2.44,9.085)), + ) + createRL( + tech, net, 'Contact', + ((2.94,9.085),(2.94,9.305),(3.16,9.305),(3.16,9.085),(2.94,9.085)), + ) + createRL( + tech, net, 'Contact', + ((3.44,9.085),(3.44,9.305),(3.66,9.305),(3.66,9.085),(3.44,9.085)), + ) + createRL( + tech, net, 'Contact', + ((3.94,9.085),(3.94,9.305),(4.16,9.305),(4.16,9.085),(3.94,9.085)), + ) + createRL( + tech, net, 'Contact', + ((4.44,9.085),(4.44,9.305),(4.66,9.305),(4.66,9.085),(4.44,9.085)), + ) + createRL( + tech, net, 'Contact', + ((4.94,9.085),(4.94,9.305),(5.16,9.305),(5.16,9.085),(4.94,9.085)), + ) + createRL( + tech, net, 'Contact', + ((0.44,9.585),(0.44,9.805),(0.66,9.805),(0.66,9.585),(0.44,9.585)), + ) + createRL( + tech, net, 'Contact', + ((0.94,9.585),(0.94,9.805),(1.16,9.805),(1.16,9.585),(0.94,9.585)), + ) + createRL( + tech, net, 'Contact', + ((1.44,9.585),(1.44,9.805),(1.66,9.805),(1.66,9.585),(1.44,9.585)), + ) + createRL( + tech, net, 'Contact', + ((1.94,9.585),(1.94,9.805),(2.16,9.805),(2.16,9.585),(1.94,9.585)), + ) + createRL( + tech, net, 'Contact', + ((2.44,9.585),(2.44,9.805),(2.66,9.805),(2.66,9.585),(2.44,9.585)), + ) + createRL( + tech, net, 'Contact', + ((2.94,9.585),(2.94,9.805),(3.16,9.805),(3.16,9.585),(2.94,9.585)), + ) + createRL( + tech, net, 'Contact', + ((3.44,9.585),(3.44,9.805),(3.66,9.805),(3.66,9.585),(3.44,9.585)), + ) + createRL( + tech, net, 'Contact', + ((3.94,9.585),(3.94,9.805),(4.16,9.805),(4.16,9.585),(3.94,9.585)), + ) + createRL( + tech, net, 'Contact', + ((4.44,9.585),(4.44,9.805),(4.66,9.805),(4.66,9.585),(4.44,9.585)), + ) + createRL( + tech, net, 'Contact', + ((4.94,9.585),(4.94,9.805),(5.16,9.805),(5.16,9.585),(4.94,9.585)), + ) + createRL( + tech, net, 'Contact', + ((0.44,10.085),(0.44,10.305),(0.66,10.305),(0.66,10.085),(0.44,10.085)), + ) + createRL( + tech, net, 'Contact', + ((0.94,10.085),(0.94,10.305),(1.16,10.305),(1.16,10.085),(0.94,10.085)), + ) + createRL( + tech, net, 'Contact', + ((1.44,10.085),(1.44,10.305),(1.66,10.305),(1.66,10.085),(1.44,10.085)), + ) + createRL( + tech, net, 'Contact', + ((1.94,10.085),(1.94,10.305),(2.16,10.305),(2.16,10.085),(1.94,10.085)), + ) + createRL( + tech, net, 'Contact', + ((2.44,10.085),(2.44,10.305),(2.66,10.305),(2.66,10.085),(2.44,10.085)), + ) + createRL( + tech, net, 'Contact', + ((2.94,10.085),(2.94,10.305),(3.16,10.305),(3.16,10.085),(2.94,10.085)), + ) + createRL( + tech, net, 'Contact', + ((3.44,10.085),(3.44,10.305),(3.66,10.305),(3.66,10.085),(3.44,10.085)), + ) + createRL( + tech, net, 'Contact', + ((3.94,10.085),(3.94,10.305),(4.16,10.305),(4.16,10.085),(3.94,10.085)), + ) + createRL( + tech, net, 'Contact', + ((4.44,10.085),(4.44,10.305),(4.66,10.305),(4.66,10.085),(4.44,10.085)), + ) + createRL( + tech, net, 'Contact', + ((4.94,10.085),(4.94,10.305),(5.16,10.305),(5.16,10.085),(4.94,10.085)), + ) + createRL( + tech, net, 'Contact', + ((0.44,10.585),(0.44,10.805),(0.66,10.805),(0.66,10.585),(0.44,10.585)), + ) + createRL( + tech, net, 'Contact', + ((0.94,10.585),(0.94,10.805),(1.16,10.805),(1.16,10.585),(0.94,10.585)), + ) + createRL( + tech, net, 'Contact', + ((1.44,10.585),(1.44,10.805),(1.66,10.805),(1.66,10.585),(1.44,10.585)), + ) + createRL( + tech, net, 'Contact', + ((1.94,10.585),(1.94,10.805),(2.16,10.805),(2.16,10.585),(1.94,10.585)), + ) + createRL( + tech, net, 'Contact', + ((2.44,10.585),(2.44,10.805),(2.66,10.805),(2.66,10.585),(2.44,10.585)), + ) + createRL( + tech, net, 'Contact', + ((2.94,10.585),(2.94,10.805),(3.16,10.805),(3.16,10.585),(2.94,10.585)), + ) + createRL( + tech, net, 'Contact', + ((3.44,10.585),(3.44,10.805),(3.66,10.805),(3.66,10.585),(3.44,10.585)), + ) + createRL( + tech, net, 'Contact', + ((3.94,10.585),(3.94,10.805),(4.16,10.805),(4.16,10.585),(3.94,10.585)), + ) + createRL( + tech, net, 'Contact', + ((4.44,10.585),(4.44,10.805),(4.66,10.805),(4.66,10.585),(4.44,10.585)), + ) + createRL( + tech, net, 'Contact', + ((4.94,10.585),(4.94,10.805),(5.16,10.805),(5.16,10.585),(4.94,10.585)), + ) + createRL( + tech, net, 'Contact', + ((0.44,11.085),(0.44,11.305),(0.66,11.305),(0.66,11.085),(0.44,11.085)), + ) + createRL( + tech, net, 'Contact', + ((0.94,11.085),(0.94,11.305),(1.16,11.305),(1.16,11.085),(0.94,11.085)), + ) + createRL( + tech, net, 'Contact', + ((1.44,11.085),(1.44,11.305),(1.66,11.305),(1.66,11.085),(1.44,11.085)), + ) + createRL( + tech, net, 'Contact', + ((1.94,11.085),(1.94,11.305),(2.16,11.305),(2.16,11.085),(1.94,11.085)), + ) + createRL( + tech, net, 'Contact', + ((2.44,11.085),(2.44,11.305),(2.66,11.305),(2.66,11.085),(2.44,11.085)), + ) + createRL( + tech, net, 'Contact', + ((2.94,11.085),(2.94,11.305),(3.16,11.305),(3.16,11.085),(2.94,11.085)), + ) + createRL( + tech, net, 'Contact', + ((3.44,11.085),(3.44,11.305),(3.66,11.305),(3.66,11.085),(3.44,11.085)), + ) + createRL( + tech, net, 'Contact', + ((3.94,11.085),(3.94,11.305),(4.16,11.305),(4.16,11.085),(3.94,11.085)), + ) + createRL( + tech, net, 'Contact', + ((4.44,11.085),(4.44,11.305),(4.66,11.305),(4.66,11.085),(4.44,11.085)), + ) + createRL( + tech, net, 'Contact', + ((4.94,11.085),(4.94,11.305),(5.16,11.305),(5.16,11.085),(4.94,11.085)), + ) + createRL( + tech, net, 'Contact', + ((0.44,11.585),(0.44,11.805),(0.66,11.805),(0.66,11.585),(0.44,11.585)), + ) + createRL( + tech, net, 'Contact', + ((0.94,11.585),(0.94,11.805),(1.16,11.805),(1.16,11.585),(0.94,11.585)), + ) + createRL( + tech, net, 'Contact', + ((1.44,11.585),(1.44,11.805),(1.66,11.805),(1.66,11.585),(1.44,11.585)), + ) + createRL( + tech, net, 'Contact', + ((1.94,11.585),(1.94,11.805),(2.16,11.805),(2.16,11.585),(1.94,11.585)), + ) + createRL( + tech, net, 'Contact', + ((2.44,11.585),(2.44,11.805),(2.66,11.805),(2.66,11.585),(2.44,11.585)), + ) + createRL( + tech, net, 'Contact', + ((2.94,11.585),(2.94,11.805),(3.16,11.805),(3.16,11.585),(2.94,11.585)), + ) + createRL( + tech, net, 'Contact', + ((3.44,11.585),(3.44,11.805),(3.66,11.805),(3.66,11.585),(3.44,11.585)), + ) + createRL( + tech, net, 'Contact', + ((3.94,11.585),(3.94,11.805),(4.16,11.805),(4.16,11.585),(3.94,11.585)), + ) + createRL( + tech, net, 'Contact', + ((4.44,11.585),(4.44,11.805),(4.66,11.805),(4.66,11.585),(4.44,11.585)), + ) + createRL( + tech, net, 'Contact', + ((4.94,11.585),(4.94,11.805),(5.16,11.805),(5.16,11.585),(4.94,11.585)), + ) + createRL( + tech, net, 'Contact', + ((0.44,12.085),(0.44,12.305),(0.66,12.305),(0.66,12.085),(0.44,12.085)), + ) + createRL( + tech, net, 'Contact', + ((0.94,12.085),(0.94,12.305),(1.16,12.305),(1.16,12.085),(0.94,12.085)), + ) + createRL( + tech, net, 'Contact', + ((1.44,12.085),(1.44,12.305),(1.66,12.305),(1.66,12.085),(1.44,12.085)), + ) + createRL( + tech, net, 'Contact', + ((1.94,12.085),(1.94,12.305),(2.16,12.305),(2.16,12.085),(1.94,12.085)), + ) + createRL( + tech, net, 'Contact', + ((2.44,12.085),(2.44,12.305),(2.66,12.305),(2.66,12.085),(2.44,12.085)), + ) + createRL( + tech, net, 'Contact', + ((2.94,12.085),(2.94,12.305),(3.16,12.305),(3.16,12.085),(2.94,12.085)), + ) + createRL( + tech, net, 'Contact', + ((3.44,12.085),(3.44,12.305),(3.66,12.305),(3.66,12.085),(3.44,12.085)), + ) + createRL( + tech, net, 'Contact', + ((3.94,12.085),(3.94,12.305),(4.16,12.305),(4.16,12.085),(3.94,12.085)), + ) + createRL( + tech, net, 'Contact', + ((4.44,12.085),(4.44,12.305),(4.66,12.305),(4.66,12.085),(4.44,12.085)), + ) + createRL( + tech, net, 'Contact', + ((4.94,12.085),(4.94,12.305),(5.16,12.305),(5.16,12.085),(4.94,12.085)), + ) + createRL( + tech, net, 'Contact', + ((0.44,12.585),(0.44,12.805),(0.66,12.805),(0.66,12.585),(0.44,12.585)), + ) + createRL( + tech, net, 'Contact', + ((0.94,12.585),(0.94,12.805),(1.16,12.805),(1.16,12.585),(0.94,12.585)), + ) + createRL( + tech, net, 'Contact', + ((1.44,12.585),(1.44,12.805),(1.66,12.805),(1.66,12.585),(1.44,12.585)), + ) + createRL( + tech, net, 'Contact', + ((1.94,12.585),(1.94,12.805),(2.16,12.805),(2.16,12.585),(1.94,12.585)), + ) + createRL( + tech, net, 'Contact', + ((2.44,12.585),(2.44,12.805),(2.66,12.805),(2.66,12.585),(2.44,12.585)), + ) + createRL( + tech, net, 'Contact', + ((2.94,12.585),(2.94,12.805),(3.16,12.805),(3.16,12.585),(2.94,12.585)), + ) + createRL( + tech, net, 'Contact', + ((3.44,12.585),(3.44,12.805),(3.66,12.805),(3.66,12.585),(3.44,12.585)), + ) + createRL( + tech, net, 'Contact', + ((3.94,12.585),(3.94,12.805),(4.16,12.805),(4.16,12.585),(3.94,12.585)), + ) + createRL( + tech, net, 'Contact', + ((4.44,12.585),(4.44,12.805),(4.66,12.805),(4.66,12.585),(4.44,12.585)), + ) + createRL( + tech, net, 'Contact', + ((4.94,12.585),(4.94,12.805),(5.16,12.805),(5.16,12.585),(4.94,12.585)), + ) + createRL( + tech, net, 'Contact', + ((0.44,13.085),(0.44,13.305),(0.66,13.305),(0.66,13.085),(0.44,13.085)), + ) + createRL( + tech, net, 'Contact', + ((0.94,13.085),(0.94,13.305),(1.16,13.305),(1.16,13.085),(0.94,13.085)), + ) + createRL( + tech, net, 'Contact', + ((1.44,13.085),(1.44,13.305),(1.66,13.305),(1.66,13.085),(1.44,13.085)), + ) + createRL( + tech, net, 'Contact', + ((1.94,13.085),(1.94,13.305),(2.16,13.305),(2.16,13.085),(1.94,13.085)), + ) + createRL( + tech, net, 'Contact', + ((2.44,13.085),(2.44,13.305),(2.66,13.305),(2.66,13.085),(2.44,13.085)), + ) + createRL( + tech, net, 'Contact', + ((2.94,13.085),(2.94,13.305),(3.16,13.305),(3.16,13.085),(2.94,13.085)), + ) + createRL( + tech, net, 'Contact', + ((3.44,13.085),(3.44,13.305),(3.66,13.305),(3.66,13.085),(3.44,13.085)), + ) + createRL( + tech, net, 'Contact', + ((3.94,13.085),(3.94,13.305),(4.16,13.305),(4.16,13.085),(3.94,13.085)), + ) + createRL( + tech, net, 'Contact', + ((4.44,13.085),(4.44,13.305),(4.66,13.305),(4.66,13.085),(4.44,13.085)), + ) + createRL( + tech, net, 'Contact', + ((4.94,13.085),(4.94,13.305),(5.16,13.305),(5.16,13.085),(4.94,13.085)), + ) + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(0.38,1.68),(0.38,5.89),(5.22,5.89),(5.22,1.68),(5.6,1.68),(5.6,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'COMP', + ((0.36,0.43),(0.36,6.12),(5.24,6.12),(5.24,0.43),(0.36,0.43)), + ) + createRL( + tech, net, 'Contact', + ((0.44,0.665),(0.44,0.885),(0.66,0.885),(0.66,0.665),(0.44,0.665)), + ) + createRL( + tech, net, 'Contact', + ((0.94,0.665),(0.94,0.885),(1.16,0.885),(1.16,0.665),(0.94,0.665)), + ) + createRL( + tech, net, 'Contact', + ((1.44,0.665),(1.44,0.885),(1.66,0.885),(1.66,0.665),(1.44,0.665)), + ) + createRL( + tech, net, 'Contact', + ((1.94,0.665),(1.94,0.885),(2.16,0.885),(2.16,0.665),(1.94,0.665)), + ) + createRL( + tech, net, 'Contact', + ((2.44,0.665),(2.44,0.885),(2.66,0.885),(2.66,0.665),(2.44,0.665)), + ) + createRL( + tech, net, 'Contact', + ((2.94,0.665),(2.94,0.885),(3.16,0.885),(3.16,0.665),(2.94,0.665)), + ) + createRL( + tech, net, 'Contact', + ((3.44,0.665),(3.44,0.885),(3.66,0.885),(3.66,0.665),(3.44,0.665)), + ) + createRL( + tech, net, 'Contact', + ((3.94,0.665),(3.94,0.885),(4.16,0.885),(4.16,0.665),(3.94,0.665)), + ) + createRL( + tech, net, 'Contact', + ((4.44,0.665),(4.44,0.885),(4.66,0.885),(4.66,0.665),(4.44,0.665)), + ) + createRL( + tech, net, 'Contact', + ((4.94,0.665),(4.94,0.885),(5.16,0.885),(5.16,0.665),(4.94,0.665)), + ) + createRL( + tech, net, 'Contact', + ((0.44,1.165),(0.44,1.385),(0.66,1.385),(0.66,1.165),(0.44,1.165)), + ) + createRL( + tech, net, 'Contact', + ((0.94,1.165),(0.94,1.385),(1.16,1.385),(1.16,1.165),(0.94,1.165)), + ) + createRL( + tech, net, 'Contact', + ((1.44,1.165),(1.44,1.385),(1.66,1.385),(1.66,1.165),(1.44,1.165)), + ) + createRL( + tech, net, 'Contact', + ((1.94,1.165),(1.94,1.385),(2.16,1.385),(2.16,1.165),(1.94,1.165)), + ) + createRL( + tech, net, 'Contact', + ((2.44,1.165),(2.44,1.385),(2.66,1.385),(2.66,1.165),(2.44,1.165)), + ) + createRL( + tech, net, 'Contact', + ((2.94,1.165),(2.94,1.385),(3.16,1.385),(3.16,1.165),(2.94,1.165)), + ) + createRL( + tech, net, 'Contact', + ((3.44,1.165),(3.44,1.385),(3.66,1.385),(3.66,1.165),(3.44,1.165)), + ) + createRL( + tech, net, 'Contact', + ((3.94,1.165),(3.94,1.385),(4.16,1.385),(4.16,1.165),(3.94,1.165)), + ) + createRL( + tech, net, 'Contact', + ((4.44,1.165),(4.44,1.385),(4.66,1.385),(4.66,1.165),(4.44,1.165)), + ) + createRL( + tech, net, 'Contact', + ((4.94,1.165),(4.94,1.385),(5.16,1.385),(5.16,1.165),(4.94,1.165)), + ) + createRL( + tech, net, 'Contact', + ((0.44,1.665),(0.44,1.885),(0.66,1.885),(0.66,1.665),(0.44,1.665)), + ) + createRL( + tech, net, 'Contact', + ((0.94,1.665),(0.94,1.885),(1.16,1.885),(1.16,1.665),(0.94,1.665)), + ) + createRL( + tech, net, 'Contact', + ((1.44,1.665),(1.44,1.885),(1.66,1.885),(1.66,1.665),(1.44,1.665)), + ) + createRL( + tech, net, 'Contact', + ((1.94,1.665),(1.94,1.885),(2.16,1.885),(2.16,1.665),(1.94,1.665)), + ) + createRL( + tech, net, 'Contact', + ((2.44,1.665),(2.44,1.885),(2.66,1.885),(2.66,1.665),(2.44,1.665)), + ) + createRL( + tech, net, 'Contact', + ((2.94,1.665),(2.94,1.885),(3.16,1.885),(3.16,1.665),(2.94,1.665)), + ) + createRL( + tech, net, 'Contact', + ((3.44,1.665),(3.44,1.885),(3.66,1.885),(3.66,1.665),(3.44,1.665)), + ) + createRL( + tech, net, 'Contact', + ((3.94,1.665),(3.94,1.885),(4.16,1.885),(4.16,1.665),(3.94,1.665)), + ) + createRL( + tech, net, 'Contact', + ((4.44,1.665),(4.44,1.885),(4.66,1.885),(4.66,1.665),(4.44,1.665)), + ) + createRL( + tech, net, 'Contact', + ((4.94,1.665),(4.94,1.885),(5.16,1.885),(5.16,1.665),(4.94,1.665)), + ) + createRL( + tech, net, 'Contact', + ((0.44,2.165),(0.44,2.385),(0.66,2.385),(0.66,2.165),(0.44,2.165)), + ) + createRL( + tech, net, 'Contact', + ((0.94,2.165),(0.94,2.385),(1.16,2.385),(1.16,2.165),(0.94,2.165)), + ) + createRL( + tech, net, 'Contact', + ((1.44,2.165),(1.44,2.385),(1.66,2.385),(1.66,2.165),(1.44,2.165)), + ) + createRL( + tech, net, 'Contact', + ((1.94,2.165),(1.94,2.385),(2.16,2.385),(2.16,2.165),(1.94,2.165)), + ) + createRL( + tech, net, 'Contact', + ((2.44,2.165),(2.44,2.385),(2.66,2.385),(2.66,2.165),(2.44,2.165)), + ) + createRL( + tech, net, 'Contact', + ((2.94,2.165),(2.94,2.385),(3.16,2.385),(3.16,2.165),(2.94,2.165)), + ) + createRL( + tech, net, 'Contact', + ((3.44,2.165),(3.44,2.385),(3.66,2.385),(3.66,2.165),(3.44,2.165)), + ) + createRL( + tech, net, 'Contact', + ((3.94,2.165),(3.94,2.385),(4.16,2.385),(4.16,2.165),(3.94,2.165)), + ) + createRL( + tech, net, 'Contact', + ((4.44,2.165),(4.44,2.385),(4.66,2.385),(4.66,2.165),(4.44,2.165)), + ) + createRL( + tech, net, 'Contact', + ((4.94,2.165),(4.94,2.385),(5.16,2.385),(5.16,2.165),(4.94,2.165)), + ) + createRL( + tech, net, 'Contact', + ((0.44,2.665),(0.44,2.885),(0.66,2.885),(0.66,2.665),(0.44,2.665)), + ) + createRL( + tech, net, 'Contact', + ((0.94,2.665),(0.94,2.885),(1.16,2.885),(1.16,2.665),(0.94,2.665)), + ) + createRL( + tech, net, 'Contact', + ((1.44,2.665),(1.44,2.885),(1.66,2.885),(1.66,2.665),(1.44,2.665)), + ) + createRL( + tech, net, 'Contact', + ((1.94,2.665),(1.94,2.885),(2.16,2.885),(2.16,2.665),(1.94,2.665)), + ) + createRL( + tech, net, 'Contact', + ((2.44,2.665),(2.44,2.885),(2.66,2.885),(2.66,2.665),(2.44,2.665)), + ) + createRL( + tech, net, 'Contact', + ((2.94,2.665),(2.94,2.885),(3.16,2.885),(3.16,2.665),(2.94,2.665)), + ) + createRL( + tech, net, 'Contact', + ((3.44,2.665),(3.44,2.885),(3.66,2.885),(3.66,2.665),(3.44,2.665)), + ) + createRL( + tech, net, 'Contact', + ((3.94,2.665),(3.94,2.885),(4.16,2.885),(4.16,2.665),(3.94,2.665)), + ) + createRL( + tech, net, 'Contact', + ((4.44,2.665),(4.44,2.885),(4.66,2.885),(4.66,2.665),(4.44,2.665)), + ) + createRL( + tech, net, 'Contact', + ((4.94,2.665),(4.94,2.885),(5.16,2.885),(5.16,2.665),(4.94,2.665)), + ) + createRL( + tech, net, 'Contact', + ((0.44,3.165),(0.44,3.385),(0.66,3.385),(0.66,3.165),(0.44,3.165)), + ) + createRL( + tech, net, 'Contact', + ((0.94,3.165),(0.94,3.385),(1.16,3.385),(1.16,3.165),(0.94,3.165)), + ) + createRL( + tech, net, 'Contact', + ((1.44,3.165),(1.44,3.385),(1.66,3.385),(1.66,3.165),(1.44,3.165)), + ) + createRL( + tech, net, 'Contact', + ((1.94,3.165),(1.94,3.385),(2.16,3.385),(2.16,3.165),(1.94,3.165)), + ) + createRL( + tech, net, 'Contact', + ((2.44,3.165),(2.44,3.385),(2.66,3.385),(2.66,3.165),(2.44,3.165)), + ) + createRL( + tech, net, 'Contact', + ((2.94,3.165),(2.94,3.385),(3.16,3.385),(3.16,3.165),(2.94,3.165)), + ) + createRL( + tech, net, 'Contact', + ((3.44,3.165),(3.44,3.385),(3.66,3.385),(3.66,3.165),(3.44,3.165)), + ) + createRL( + tech, net, 'Contact', + ((3.94,3.165),(3.94,3.385),(4.16,3.385),(4.16,3.165),(3.94,3.165)), + ) + createRL( + tech, net, 'Contact', + ((4.44,3.165),(4.44,3.385),(4.66,3.385),(4.66,3.165),(4.44,3.165)), + ) + createRL( + tech, net, 'Contact', + ((4.94,3.165),(4.94,3.385),(5.16,3.385),(5.16,3.165),(4.94,3.165)), + ) + createRL( + tech, net, 'Contact', + ((0.44,3.665),(0.44,3.885),(0.66,3.885),(0.66,3.665),(0.44,3.665)), + ) + createRL( + tech, net, 'Contact', + ((0.94,3.665),(0.94,3.885),(1.16,3.885),(1.16,3.665),(0.94,3.665)), + ) + createRL( + tech, net, 'Contact', + ((1.44,3.665),(1.44,3.885),(1.66,3.885),(1.66,3.665),(1.44,3.665)), + ) + createRL( + tech, net, 'Contact', + ((1.94,3.665),(1.94,3.885),(2.16,3.885),(2.16,3.665),(1.94,3.665)), + ) + createRL( + tech, net, 'Contact', + ((2.44,3.665),(2.44,3.885),(2.66,3.885),(2.66,3.665),(2.44,3.665)), + ) + createRL( + tech, net, 'Contact', + ((2.94,3.665),(2.94,3.885),(3.16,3.885),(3.16,3.665),(2.94,3.665)), + ) + createRL( + tech, net, 'Contact', + ((3.44,3.665),(3.44,3.885),(3.66,3.885),(3.66,3.665),(3.44,3.665)), + ) + createRL( + tech, net, 'Contact', + ((3.94,3.665),(3.94,3.885),(4.16,3.885),(4.16,3.665),(3.94,3.665)), + ) + createRL( + tech, net, 'Contact', + ((4.44,3.665),(4.44,3.885),(4.66,3.885),(4.66,3.665),(4.44,3.665)), + ) + createRL( + tech, net, 'Contact', + ((4.94,3.665),(4.94,3.885),(5.16,3.885),(5.16,3.665),(4.94,3.665)), + ) + createRL( + tech, net, 'Contact', + ((0.44,4.165),(0.44,4.385),(0.66,4.385),(0.66,4.165),(0.44,4.165)), + ) + createRL( + tech, net, 'Contact', + ((0.94,4.165),(0.94,4.385),(1.16,4.385),(1.16,4.165),(0.94,4.165)), + ) + createRL( + tech, net, 'Contact', + ((1.44,4.165),(1.44,4.385),(1.66,4.385),(1.66,4.165),(1.44,4.165)), + ) + createRL( + tech, net, 'Contact', + ((1.94,4.165),(1.94,4.385),(2.16,4.385),(2.16,4.165),(1.94,4.165)), + ) + createRL( + tech, net, 'Contact', + ((2.44,4.165),(2.44,4.385),(2.66,4.385),(2.66,4.165),(2.44,4.165)), + ) + createRL( + tech, net, 'Contact', + ((2.94,4.165),(2.94,4.385),(3.16,4.385),(3.16,4.165),(2.94,4.165)), + ) + createRL( + tech, net, 'Contact', + ((3.44,4.165),(3.44,4.385),(3.66,4.385),(3.66,4.165),(3.44,4.165)), + ) + createRL( + tech, net, 'Contact', + ((3.94,4.165),(3.94,4.385),(4.16,4.385),(4.16,4.165),(3.94,4.165)), + ) + createRL( + tech, net, 'Contact', + ((4.44,4.165),(4.44,4.385),(4.66,4.385),(4.66,4.165),(4.44,4.165)), + ) + createRL( + tech, net, 'Contact', + ((4.94,4.165),(4.94,4.385),(5.16,4.385),(5.16,4.165),(4.94,4.165)), + ) + createRL( + tech, net, 'Contact', + ((0.44,4.665),(0.44,4.885),(0.66,4.885),(0.66,4.665),(0.44,4.665)), + ) + createRL( + tech, net, 'Contact', + ((0.94,4.665),(0.94,4.885),(1.16,4.885),(1.16,4.665),(0.94,4.665)), + ) + createRL( + tech, net, 'Contact', + ((1.44,4.665),(1.44,4.885),(1.66,4.885),(1.66,4.665),(1.44,4.665)), + ) + createRL( + tech, net, 'Contact', + ((1.94,4.665),(1.94,4.885),(2.16,4.885),(2.16,4.665),(1.94,4.665)), + ) + createRL( + tech, net, 'Contact', + ((2.44,4.665),(2.44,4.885),(2.66,4.885),(2.66,4.665),(2.44,4.665)), + ) + createRL( + tech, net, 'Contact', + ((2.94,4.665),(2.94,4.885),(3.16,4.885),(3.16,4.665),(2.94,4.665)), + ) + createRL( + tech, net, 'Contact', + ((3.44,4.665),(3.44,4.885),(3.66,4.885),(3.66,4.665),(3.44,4.665)), + ) + createRL( + tech, net, 'Contact', + ((3.94,4.665),(3.94,4.885),(4.16,4.885),(4.16,4.665),(3.94,4.665)), + ) + createRL( + tech, net, 'Contact', + ((4.44,4.665),(4.44,4.885),(4.66,4.885),(4.66,4.665),(4.44,4.665)), + ) + createRL( + tech, net, 'Contact', + ((4.94,4.665),(4.94,4.885),(5.16,4.885),(5.16,4.665),(4.94,4.665)), + ) + createRL( + tech, net, 'Contact', + ((0.44,5.165),(0.44,5.385),(0.66,5.385),(0.66,5.165),(0.44,5.165)), + ) + createRL( + tech, net, 'Contact', + ((0.94,5.165),(0.94,5.385),(1.16,5.385),(1.16,5.165),(0.94,5.165)), + ) + createRL( + tech, net, 'Contact', + ((1.44,5.165),(1.44,5.385),(1.66,5.385),(1.66,5.165),(1.44,5.165)), + ) + createRL( + tech, net, 'Contact', + ((1.94,5.165),(1.94,5.385),(2.16,5.385),(2.16,5.165),(1.94,5.165)), + ) + createRL( + tech, net, 'Contact', + ((2.44,5.165),(2.44,5.385),(2.66,5.385),(2.66,5.165),(2.44,5.165)), + ) + createRL( + tech, net, 'Contact', + ((2.94,5.165),(2.94,5.385),(3.16,5.385),(3.16,5.165),(2.94,5.165)), + ) + createRL( + tech, net, 'Contact', + ((3.44,5.165),(3.44,5.385),(3.66,5.385),(3.66,5.165),(3.44,5.165)), + ) + createRL( + tech, net, 'Contact', + ((3.94,5.165),(3.94,5.385),(4.16,5.385),(4.16,5.165),(3.94,5.165)), + ) + createRL( + tech, net, 'Contact', + ((4.44,5.165),(4.44,5.385),(4.66,5.385),(4.66,5.165),(4.44,5.165)), + ) + createRL( + tech, net, 'Contact', + ((4.94,5.165),(4.94,5.385),(5.16,5.385),(5.16,5.165),(4.94,5.165)), + ) + createRL( + tech, net, 'Contact', + ((0.44,5.665),(0.44,5.885),(0.66,5.885),(0.66,5.665),(0.44,5.665)), + ) + createRL( + tech, net, 'Contact', + ((0.94,5.665),(0.94,5.885),(1.16,5.885),(1.16,5.665),(0.94,5.665)), + ) + createRL( + tech, net, 'Contact', + ((1.44,5.665),(1.44,5.885),(1.66,5.885),(1.66,5.665),(1.44,5.665)), + ) + createRL( + tech, net, 'Contact', + ((1.94,5.665),(1.94,5.885),(2.16,5.885),(2.16,5.665),(1.94,5.665)), + ) + createRL( + tech, net, 'Contact', + ((2.44,5.665),(2.44,5.885),(2.66,5.885),(2.66,5.665),(2.44,5.665)), + ) + createRL( + tech, net, 'Contact', + ((2.94,5.665),(2.94,5.885),(3.16,5.885),(3.16,5.665),(2.94,5.665)), + ) + createRL( + tech, net, 'Contact', + ((3.44,5.665),(3.44,5.885),(3.66,5.885),(3.66,5.665),(3.44,5.665)), + ) + createRL( + tech, net, 'Contact', + ((3.94,5.665),(3.94,5.885),(4.16,5.885),(4.16,5.665),(3.94,5.665)), + ) + createRL( + tech, net, 'Contact', + ((4.44,5.665),(4.44,5.885),(4.66,5.885),(4.66,5.665),(4.44,5.665)), + ) + createRL( + tech, net, 'Contact', + ((4.94,5.665),(4.94,5.885),(5.16,5.885),(5.16,5.665),(4.94,5.665)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((0.2,0.2),(0.2,6.35),(5.4,6.35),(5.4,0.2),(0.2,0.2)), + ) + createRL( + tech, net, 'Nplus', + ((0.2,7.09),(0.2,13.8),(5.4,13.8),(5.4,7.09),(0.2,7.09)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + + cell = new_cells['tie_poly_w4'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(5.6000000000000005), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(5.6,14.0),(5.6,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(6.2,14.6),(6.2,6.72),(-0.6,6.72)), + ) + createRL( + tech, net, 'COMP', + ((2.62,12.71),(2.62,13.57),(2.98,13.57),(2.98,12.71),(2.62,12.71)), + ) + createRL( + tech, net, 'Contact', + ((2.69,12.78),(2.69,13.0),(2.91,13.0),(2.91,12.78),(2.69,12.78)), + ) + createRL( + tech, net, 'Contact', + ((2.69,13.28),(2.69,13.5),(2.91,13.5),(2.91,13.28),(2.69,13.28)), + ) + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(2.63,1.68),(2.63,1.885),(2.97,1.885),(2.97,1.68),(5.6,1.68),(5.6,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'COMP', + ((2.62,0.43),(2.62,1.29),(2.98,1.29),(2.98,0.43),(2.62,0.43)), + ) + createRL( + tech, net, 'Contact', + ((2.69,1.66),(2.69,1.88),(2.91,1.88),(2.91,1.66),(2.69,1.66)), + ) + createRL( + tech, net, 'Contact', + ((2.69,0.5),(2.69,0.72),(2.91,0.72),(2.91,0.5),(2.69,0.5)), + ) + createRL( + tech, net, 'Contact', + ((2.69,1.0),(2.69,1.22),(2.91,1.22),(2.91,1.0),(2.69,1.0)), + ) + createRL( + tech, net, 'Poly2', + ((0.12,1.59),(0.12,12.41),(5.48,12.41),(5.48,1.59),(0.12,1.59)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((2.46,0.2),(2.46,1.52),(3.14,1.52),(3.14,0.2),(2.46,0.2)), + ) + createRL( + tech, net, 'Nplus', + ((2.46,12.48),(2.46,13.8),(3.14,13.8),(3.14,12.48),(2.46,12.48)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + + cell = new_cells['diode_w1'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(1.4000000000000001), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'i': Net.create(cell, 'i'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((0.53,7.32),(0.53,12.09),(0.87,12.09),(0.87,7.32),(0.53,7.32)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(1.4,14.0),(1.4,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(1.4), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(1.4), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(2.0,14.6),(2.0,6.72),(-0.6,6.72)), + ) + createRL( + tech, net, 'COMP', + ((0.52,12.71),(0.52,13.57),(0.88,13.57),(0.88,12.71),(0.52,12.71)), + ) + createRL( + tech, net, 'COMP', + ((0.52,7.32),(0.52,12.09),(0.88,12.09),(0.88,7.32),(0.52,7.32)), + ) + createRL( + tech, net, 'Contact', + ((0.59,12.78),(0.59,13.0),(0.81,13.0),(0.81,12.78),(0.59,12.78)), + ) + createRL( + tech, net, 'Contact', + ((0.59,13.28),(0.59,13.5),(0.81,13.5),(0.81,13.28),(0.59,13.28)), + ) + createRL( + tech, net, 'Contact', + ((0.59,7.595),(0.59,7.815),(0.81,7.815),(0.81,7.595),(0.59,7.595)), + ) + createRL( + tech, net, 'Contact', + ((0.59,8.095),(0.59,8.315),(0.81,8.315),(0.81,8.095),(0.59,8.095)), + ) + createRL( + tech, net, 'Contact', + ((0.59,8.595),(0.59,8.815),(0.81,8.815),(0.81,8.595),(0.59,8.595)), + ) + createRL( + tech, net, 'Contact', + ((0.59,9.095),(0.59,9.315),(0.81,9.315),(0.81,9.095),(0.59,9.095)), + ) + createRL( + tech, net, 'Contact', + ((0.59,9.595),(0.59,9.815),(0.81,9.815),(0.81,9.595),(0.59,9.595)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.095),(0.59,10.315),(0.81,10.315),(0.81,10.095),(0.59,10.095)), + ) + createRL( + tech, net, 'Contact', + ((0.59,10.595),(0.59,10.815),(0.81,10.815),(0.81,10.595),(0.59,10.595)), + ) + createRL( + tech, net, 'Contact', + ((0.59,11.095),(0.59,11.315),(0.81,11.315),(0.81,11.095),(0.59,11.095)), + ) + createRL( + tech, net, 'Contact', + ((0.59,11.595),(0.59,11.815),(0.81,11.815),(0.81,11.595),(0.59,11.595)), + ) + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.53,1.91),(0.53,6.12),(0.87,6.12),(0.87,1.91),(0.53,1.91)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(1.4,1.68),(1.4,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(1.4), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(1.4), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'COMP', + ((0.52,1.91),(0.52,6.12),(0.88,6.12),(0.88,1.91),(0.52,1.91)), + ) + createRL( + tech, net, 'COMP', + ((0.52,0.43),(0.52,1.29),(0.88,1.29),(0.88,0.43),(0.52,0.43)), + ) + createRL( + tech, net, 'Contact', + ((0.59,0.5),(0.59,0.72),(0.81,0.72),(0.81,0.5),(0.59,0.5)), + ) + createRL( + tech, net, 'Contact', + ((0.59,1.0),(0.59,1.22),(0.81,1.22),(0.81,1.0),(0.59,1.0)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.155),(0.59,2.375),(0.81,2.375),(0.81,2.155),(0.59,2.155)), + ) + createRL( + tech, net, 'Contact', + ((0.59,2.655),(0.59,2.875),(0.81,2.875),(0.81,2.655),(0.59,2.655)), + ) + createRL( + tech, net, 'Contact', + ((0.59,3.155),(0.59,3.375),(0.81,3.375),(0.81,3.155),(0.59,3.155)), + ) + createRL( + tech, net, 'Contact', + ((0.59,3.655),(0.59,3.875),(0.81,3.875),(0.81,3.655),(0.59,3.655)), + ) + createRL( + tech, net, 'Contact', + ((0.59,4.155),(0.59,4.375),(0.81,4.375),(0.81,4.155),(0.59,4.155)), + ) + createRL( + tech, net, 'Contact', + ((0.59,4.655),(0.59,4.875),(0.81,4.875),(0.81,4.655),(0.59,4.655)), + ) + createRL( + tech, net, 'Contact', + ((0.59,5.155),(0.59,5.375),(0.81,5.375),(0.81,5.155),(0.59,5.155)), + ) + createRL( + tech, net, 'Contact', + ((0.59,5.655),(0.59,5.875),(0.81,5.875),(0.81,5.655),(0.59,5.655)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((0.36,7.09),(0.36,12.32),(1.04,12.32),(1.04,7.09),(0.36,7.09)), + ) + createRL( + tech, net, 'Pplus', + ((0.36,0.2),(0.36,1.52),(1.04,1.52),(1.04,0.2),(0.36,0.2)), + ) + createRL( + tech, net, 'Nplus', + ((0.36,1.68),(0.36,6.35),(1.04,6.35),(1.04,1.68),(0.36,1.68)), + ) + createRL( + tech, net, 'Nplus', + ((0.36,12.48),(0.36,13.8),(1.04,13.8),(1.04,12.48),(0.36,12.48)), + ) + net = nets['i'] + createRL( + tech, net, 'Metal1', + ((0.57,1.91),(0.57,12.09),(0.83,12.09),(0.83,1.91),(0.57,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.7), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.7), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i'].setDirection(Net.Direction.IN) + + cell = new_cells['zero_x1'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(2.8000000000000003), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'one': Net.create(cell, 'one'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + 'zero': Net.create(cell, 'zero'), + } + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((1.63,7.765),(1.63,12.32),(0.0,12.32),(0.0,14.0),(2.8,14.0),(2.8,12.32),(1.97,12.32),(1.97,7.765),(1.63,7.765)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(3.4,14.6),(3.4,6.72),(-0.6,6.72)), + ) + createRL( + tech, net, 'COMP', + ((0.97,13.28),(0.97,13.64),(1.83,13.64),(1.83,13.28),(0.97,13.28)), + ) + createRL( + tech, net, 'COMP', + ((1.26,7.5),(1.26,12.76),(1.98,12.76),(1.98,7.5),(1.26,7.5)), + ) + createRL( + tech, net, 'Contact', + ((1.04,13.35),(1.04,13.57),(1.26,13.57),(1.26,13.35),(1.04,13.35)), + ) + createRL( + tech, net, 'Contact', + ((1.54,13.35),(1.54,13.57),(1.76,13.57),(1.76,13.35),(1.54,13.35)), + ) + createRL( + tech, net, 'Contact', + ((1.69,7.77),(1.69,7.99),(1.91,7.99),(1.91,7.77),(1.69,7.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,8.27),(1.69,8.49),(1.91,8.49),(1.91,8.27),(1.69,8.27)), + ) + createRL( + tech, net, 'Contact', + ((1.69,8.77),(1.69,8.99),(1.91,8.99),(1.91,8.77),(1.69,8.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,9.27),(1.69,9.49),(1.91,9.49),(1.91,9.27),(1.69,9.27)), + ) + createRL( + tech, net, 'Contact', + ((1.69,9.77),(1.69,9.99),(1.91,9.99),(1.91,9.77),(1.69,9.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,10.27),(1.69,10.49),(1.91,10.49),(1.91,10.27),(1.69,10.27)), + ) + createRL( + tech, net, 'Contact', + ((1.69,10.77),(1.69,10.99),(1.91,10.99),(1.91,10.77),(1.69,10.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,11.27),(1.69,11.49),(1.91,11.49),(1.91,11.27),(1.69,11.27)), + ) + createRL( + tech, net, 'Contact', + ((1.69,11.77),(1.69,11.99),(1.91,11.99),(1.91,11.77),(1.69,11.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,12.27),(1.69,12.49),(1.91,12.49),(1.91,12.27),(1.69,12.27)), + ) + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(0.83,1.68),(0.83,5.705),(1.17,5.705),(1.17,1.68),(2.8,1.68),(2.8,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'COMP', + ((0.97,0.36),(0.97,0.72),(1.83,0.72),(1.83,0.36),(0.97,0.36)), + ) + createRL( + tech, net, 'COMP', + ((0.82,1.24),(0.82,5.94),(1.54,5.94),(1.54,1.24),(0.82,1.24)), + ) + createRL( + tech, net, 'Contact', + ((1.04,0.43),(1.04,0.65),(1.26,0.65),(1.26,0.43),(1.04,0.43)), + ) + createRL( + tech, net, 'Contact', + ((1.54,0.43),(1.54,0.65),(1.76,0.65),(1.76,0.43),(1.54,0.43)), + ) + createRL( + tech, net, 'Contact', + ((0.89,1.48),(0.89,1.7),(1.11,1.7),(1.11,1.48),(0.89,1.48)), + ) + createRL( + tech, net, 'Contact', + ((0.89,1.98),(0.89,2.2),(1.11,2.2),(1.11,1.98),(0.89,1.98)), + ) + createRL( + tech, net, 'Contact', + ((0.89,2.48),(0.89,2.7),(1.11,2.7),(1.11,2.48),(0.89,2.48)), + ) + createRL( + tech, net, 'Contact', + ((0.89,2.98),(0.89,3.2),(1.11,3.2),(1.11,2.98),(0.89,2.98)), + ) + createRL( + tech, net, 'Contact', + ((0.89,3.48),(0.89,3.7),(1.11,3.7),(1.11,3.48),(0.89,3.48)), + ) + createRL( + tech, net, 'Contact', + ((0.89,3.98),(0.89,4.2),(1.11,4.2),(1.11,3.98),(0.89,3.98)), + ) + createRL( + tech, net, 'Contact', + ((0.89,4.48),(0.89,4.7),(1.11,4.7),(1.11,4.48),(0.89,4.48)), + ) + createRL( + tech, net, 'Contact', + ((0.89,4.98),(0.89,5.2),(1.11,5.2),(1.11,4.98),(0.89,4.98)), + ) + createRL( + tech, net, 'Contact', + ((0.89,5.48),(0.89,5.7),(1.11,5.7),(1.11,5.48),(0.89,5.48)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((0.74,0.2),(0.74,0.88),(2.06,0.88),(2.06,0.2),(0.74,0.2)), + ) + createRL( + tech, net, 'Pplus', + ((0.66,7.27),(0.66,12.99),(2.14,12.99),(2.14,7.27),(0.66,7.27)), + ) + createRL( + tech, net, 'Nplus', + ((0.66,1.01),(0.66,6.17),(2.14,6.17),(2.14,1.01),(0.66,1.01)), + ) + createRL( + tech, net, 'Nplus', + ((0.74,13.12),(0.74,13.8),(2.06,13.8),(2.06,13.12),(0.74,13.12)), + ) + net = nets['zero'] + createRL( + tech, net, 'COMP', + ((1.54,1.24),(1.54,5.94),(1.98,5.94),(1.98,1.24),(1.54,1.24)), + ) + createRL( + tech, net, 'Poly2', + ((1.26,6.84),(1.26,12.98),(1.54,12.98),(1.54,7.2),(1.98,7.2),(1.98,6.84),(1.26,6.84)), + ) + createRL( + tech, net, 'Contact', + ((1.69,6.91),(1.69,7.13),(1.91,7.13),(1.91,6.91),(1.69,6.91)), + ) + createRL( + tech, net, 'Contact', + ((1.69,2.195),(1.69,2.415),(1.91,2.415),(1.91,2.195),(1.69,2.195)), + ) + createRL( + tech, net, 'Contact', + ((1.69,2.695),(1.69,2.915),(1.91,2.915),(1.91,2.695),(1.69,2.695)), + ) + createRL( + tech, net, 'Contact', + ((1.69,3.195),(1.69,3.415),(1.91,3.415),(1.91,3.195),(1.69,3.195)), + ) + createRL( + tech, net, 'Contact', + ((1.69,3.695),(1.69,3.915),(1.91,3.915),(1.91,3.695),(1.69,3.695)), + ) + createRL( + tech, net, 'Contact', + ((1.69,4.195),(1.69,4.415),(1.91,4.415),(1.91,4.195),(1.69,4.195)), + ) + createRL( + tech, net, 'Contact', + ((1.69,4.695),(1.69,4.915),(1.91,4.915),(1.91,4.695),(1.69,4.695)), + ) + createRL( + tech, net, 'Contact', + ((1.69,5.195),(1.69,5.415),(1.91,5.415),(1.91,5.195),(1.69,5.195)), + ) + createRL( + tech, net, 'Metal1', + ((1.63,1.91),(1.63,7.135),(1.97,7.135),(1.97,6.905),(1.89,6.905),(1.89,5.7),(1.97,5.7),(1.97,1.91),(1.63,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.76), u(0.26), u(1.91), u(7.135), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.76), u(0.26), u(1.91), u(7.135), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['one'] + createRL( + tech, net, 'Poly2', + ((1.26,1.02),(1.26,6.24),(0.82,6.24),(0.82,6.6),(1.54,6.6),(1.54,1.02),(1.26,1.02)), + ) + createRL( + tech, net, 'COMP', + ((0.82,7.5),(0.82,12.76),(1.26,12.76),(1.26,7.5),(0.82,7.5)), + ) + createRL( + tech, net, 'Contact', + ((0.89,8.07),(0.89,8.29),(1.11,8.29),(1.11,8.07),(0.89,8.07)), + ) + createRL( + tech, net, 'Contact', + ((0.89,8.57),(0.89,8.79),(1.11,8.79),(1.11,8.57),(0.89,8.57)), + ) + createRL( + tech, net, 'Contact', + ((0.89,9.07),(0.89,9.29),(1.11,9.29),(1.11,9.07),(0.89,9.07)), + ) + createRL( + tech, net, 'Contact', + ((0.89,9.57),(0.89,9.79),(1.11,9.79),(1.11,9.57),(0.89,9.57)), + ) + createRL( + tech, net, 'Contact', + ((0.89,10.07),(0.89,10.29),(1.11,10.29),(1.11,10.07),(0.89,10.07)), + ) + createRL( + tech, net, 'Contact', + ((0.89,10.57),(0.89,10.79),(1.11,10.79),(1.11,10.57),(0.89,10.57)), + ) + createRL( + tech, net, 'Contact', + ((0.89,11.07),(0.89,11.29),(1.11,11.29),(1.11,11.07),(0.89,11.07)), + ) + createRL( + tech, net, 'Contact', + ((0.89,11.57),(0.89,11.79),(1.11,11.79),(1.11,11.57),(0.89,11.57)), + ) + createRL( + tech, net, 'Contact', + ((0.89,6.31),(0.89,6.53),(1.11,6.53),(1.11,6.31),(0.89,6.31)), + ) + createRL( + tech, net, 'Metal1', + ((0.83,6.305),(0.83,6.535),(0.91,6.535),(0.91,7.77),(0.83,7.77),(0.83,12.09),(1.17,12.09),(1.17,6.305),(0.83,6.305)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['zero'].setDirection(Net.Direction.OUT) + + cell = new_cells['one_x1'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(2.8000000000000003), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'one': Net.create(cell, 'one'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + 'zero': Net.create(cell, 'zero'), + } + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((1.63,7.765),(1.63,12.32),(0.0,12.32),(0.0,14.0),(2.8,14.0),(2.8,12.32),(1.97,12.32),(1.97,7.765),(1.63,7.765)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(3.4,14.6),(3.4,6.72),(-0.6,6.72)), + ) + createRL( + tech, net, 'COMP', + ((0.97,13.28),(0.97,13.64),(1.83,13.64),(1.83,13.28),(0.97,13.28)), + ) + createRL( + tech, net, 'COMP', + ((1.26,7.5),(1.26,12.76),(1.98,12.76),(1.98,7.5),(1.26,7.5)), + ) + createRL( + tech, net, 'Contact', + ((1.04,13.35),(1.04,13.57),(1.26,13.57),(1.26,13.35),(1.04,13.35)), + ) + createRL( + tech, net, 'Contact', + ((1.54,13.35),(1.54,13.57),(1.76,13.57),(1.76,13.35),(1.54,13.35)), + ) + createRL( + tech, net, 'Contact', + ((1.69,7.77),(1.69,7.99),(1.91,7.99),(1.91,7.77),(1.69,7.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,8.27),(1.69,8.49),(1.91,8.49),(1.91,8.27),(1.69,8.27)), + ) + createRL( + tech, net, 'Contact', + ((1.69,8.77),(1.69,8.99),(1.91,8.99),(1.91,8.77),(1.69,8.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,9.27),(1.69,9.49),(1.91,9.49),(1.91,9.27),(1.69,9.27)), + ) + createRL( + tech, net, 'Contact', + ((1.69,9.77),(1.69,9.99),(1.91,9.99),(1.91,9.77),(1.69,9.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,10.27),(1.69,10.49),(1.91,10.49),(1.91,10.27),(1.69,10.27)), + ) + createRL( + tech, net, 'Contact', + ((1.69,10.77),(1.69,10.99),(1.91,10.99),(1.91,10.77),(1.69,10.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,11.27),(1.69,11.49),(1.91,11.49),(1.91,11.27),(1.69,11.27)), + ) + createRL( + tech, net, 'Contact', + ((1.69,11.77),(1.69,11.99),(1.91,11.99),(1.91,11.77),(1.69,11.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,12.27),(1.69,12.49),(1.91,12.49),(1.91,12.27),(1.69,12.27)), + ) + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(0.83,1.68),(0.83,5.705),(1.17,5.705),(1.17,1.68),(2.8,1.68),(2.8,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'COMP', + ((0.97,0.36),(0.97,0.72),(1.83,0.72),(1.83,0.36),(0.97,0.36)), + ) + createRL( + tech, net, 'COMP', + ((0.82,1.24),(0.82,5.94),(1.54,5.94),(1.54,1.24),(0.82,1.24)), + ) + createRL( + tech, net, 'Contact', + ((1.04,0.43),(1.04,0.65),(1.26,0.65),(1.26,0.43),(1.04,0.43)), + ) + createRL( + tech, net, 'Contact', + ((1.54,0.43),(1.54,0.65),(1.76,0.65),(1.76,0.43),(1.54,0.43)), + ) + createRL( + tech, net, 'Contact', + ((0.89,1.48),(0.89,1.7),(1.11,1.7),(1.11,1.48),(0.89,1.48)), + ) + createRL( + tech, net, 'Contact', + ((0.89,1.98),(0.89,2.2),(1.11,2.2),(1.11,1.98),(0.89,1.98)), + ) + createRL( + tech, net, 'Contact', + ((0.89,2.48),(0.89,2.7),(1.11,2.7),(1.11,2.48),(0.89,2.48)), + ) + createRL( + tech, net, 'Contact', + ((0.89,2.98),(0.89,3.2),(1.11,3.2),(1.11,2.98),(0.89,2.98)), + ) + createRL( + tech, net, 'Contact', + ((0.89,3.48),(0.89,3.7),(1.11,3.7),(1.11,3.48),(0.89,3.48)), + ) + createRL( + tech, net, 'Contact', + ((0.89,3.98),(0.89,4.2),(1.11,4.2),(1.11,3.98),(0.89,3.98)), + ) + createRL( + tech, net, 'Contact', + ((0.89,4.48),(0.89,4.7),(1.11,4.7),(1.11,4.48),(0.89,4.48)), + ) + createRL( + tech, net, 'Contact', + ((0.89,4.98),(0.89,5.2),(1.11,5.2),(1.11,4.98),(0.89,4.98)), + ) + createRL( + tech, net, 'Contact', + ((0.89,5.48),(0.89,5.7),(1.11,5.7),(1.11,5.48),(0.89,5.48)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((0.74,0.2),(0.74,0.88),(2.06,0.88),(2.06,0.2),(0.74,0.2)), + ) + createRL( + tech, net, 'Pplus', + ((0.66,7.27),(0.66,12.99),(2.14,12.99),(2.14,7.27),(0.66,7.27)), + ) + createRL( + tech, net, 'Nplus', + ((0.66,1.01),(0.66,6.17),(2.14,6.17),(2.14,1.01),(0.66,1.01)), + ) + createRL( + tech, net, 'Nplus', + ((0.74,13.12),(0.74,13.8),(2.06,13.8),(2.06,13.12),(0.74,13.12)), + ) + net = nets['zero'] + createRL( + tech, net, 'COMP', + ((1.54,1.24),(1.54,5.94),(1.98,5.94),(1.98,1.24),(1.54,1.24)), + ) + createRL( + tech, net, 'Poly2', + ((1.26,6.84),(1.26,12.98),(1.54,12.98),(1.54,7.2),(1.98,7.2),(1.98,6.84),(1.26,6.84)), + ) + createRL( + tech, net, 'Contact', + ((1.69,6.91),(1.69,7.13),(1.91,7.13),(1.91,6.91),(1.69,6.91)), + ) + createRL( + tech, net, 'Contact', + ((1.69,2.195),(1.69,2.415),(1.91,2.415),(1.91,2.195),(1.69,2.195)), + ) + createRL( + tech, net, 'Contact', + ((1.69,2.695),(1.69,2.915),(1.91,2.915),(1.91,2.695),(1.69,2.695)), + ) + createRL( + tech, net, 'Contact', + ((1.69,3.195),(1.69,3.415),(1.91,3.415),(1.91,3.195),(1.69,3.195)), + ) + createRL( + tech, net, 'Contact', + ((1.69,3.695),(1.69,3.915),(1.91,3.915),(1.91,3.695),(1.69,3.695)), + ) + createRL( + tech, net, 'Contact', + ((1.69,4.195),(1.69,4.415),(1.91,4.415),(1.91,4.195),(1.69,4.195)), + ) + createRL( + tech, net, 'Contact', + ((1.69,4.695),(1.69,4.915),(1.91,4.915),(1.91,4.695),(1.69,4.695)), + ) + createRL( + tech, net, 'Contact', + ((1.69,5.195),(1.69,5.415),(1.91,5.415),(1.91,5.195),(1.69,5.195)), + ) + createRL( + tech, net, 'Metal1', + ((1.63,1.91),(1.63,7.135),(1.97,7.135),(1.97,6.905),(1.89,6.905),(1.89,5.7),(1.97,5.7),(1.97,1.91),(1.63,1.91)), + ) + net = nets['one'] + createRL( + tech, net, 'Poly2', + ((1.26,1.02),(1.26,6.24),(0.82,6.24),(0.82,6.6),(1.54,6.6),(1.54,1.02),(1.26,1.02)), + ) + createRL( + tech, net, 'COMP', + ((0.82,7.5),(0.82,12.76),(1.26,12.76),(1.26,7.5),(0.82,7.5)), + ) + createRL( + tech, net, 'Contact', + ((0.89,8.07),(0.89,8.29),(1.11,8.29),(1.11,8.07),(0.89,8.07)), + ) + createRL( + tech, net, 'Contact', + ((0.89,8.57),(0.89,8.79),(1.11,8.79),(1.11,8.57),(0.89,8.57)), + ) + createRL( + tech, net, 'Contact', + ((0.89,9.07),(0.89,9.29),(1.11,9.29),(1.11,9.07),(0.89,9.07)), + ) + createRL( + tech, net, 'Contact', + ((0.89,9.57),(0.89,9.79),(1.11,9.79),(1.11,9.57),(0.89,9.57)), + ) + createRL( + tech, net, 'Contact', + ((0.89,10.07),(0.89,10.29),(1.11,10.29),(1.11,10.07),(0.89,10.07)), + ) + createRL( + tech, net, 'Contact', + ((0.89,10.57),(0.89,10.79),(1.11,10.79),(1.11,10.57),(0.89,10.57)), + ) + createRL( + tech, net, 'Contact', + ((0.89,11.07),(0.89,11.29),(1.11,11.29),(1.11,11.07),(0.89,11.07)), + ) + createRL( + tech, net, 'Contact', + ((0.89,11.57),(0.89,11.79),(1.11,11.79),(1.11,11.57),(0.89,11.57)), + ) + createRL( + tech, net, 'Contact', + ((0.89,6.31),(0.89,6.53),(1.11,6.53),(1.11,6.31),(0.89,6.31)), + ) + createRL( + tech, net, 'Metal1', + ((0.83,6.305),(0.83,6.535),(0.91,6.535),(0.91,7.77),(0.83,7.77),(0.83,12.09),(1.17,12.09),(1.17,6.305),(0.83,6.305)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.04), u(0.26), u(6.305), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.04), u(0.26), u(6.305), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['one'].setDirection(Net.Direction.OUT) + + cell = new_cells['zeroone_x1'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(2.8000000000000003), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'one': Net.create(cell, 'one'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + 'zero': Net.create(cell, 'zero'), + } + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((1.63,7.765),(1.63,12.32),(0.0,12.32),(0.0,14.0),(2.8,14.0),(2.8,12.32),(1.97,12.32),(1.97,7.765),(1.63,7.765)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(3.4,14.6),(3.4,6.72),(-0.6,6.72)), + ) + createRL( + tech, net, 'COMP', + ((0.97,13.28),(0.97,13.64),(1.83,13.64),(1.83,13.28),(0.97,13.28)), + ) + createRL( + tech, net, 'COMP', + ((1.26,7.5),(1.26,12.76),(1.98,12.76),(1.98,7.5),(1.26,7.5)), + ) + createRL( + tech, net, 'Contact', + ((1.04,13.35),(1.04,13.57),(1.26,13.57),(1.26,13.35),(1.04,13.35)), + ) + createRL( + tech, net, 'Contact', + ((1.54,13.35),(1.54,13.57),(1.76,13.57),(1.76,13.35),(1.54,13.35)), + ) + createRL( + tech, net, 'Contact', + ((1.69,7.77),(1.69,7.99),(1.91,7.99),(1.91,7.77),(1.69,7.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,8.27),(1.69,8.49),(1.91,8.49),(1.91,8.27),(1.69,8.27)), + ) + createRL( + tech, net, 'Contact', + ((1.69,8.77),(1.69,8.99),(1.91,8.99),(1.91,8.77),(1.69,8.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,9.27),(1.69,9.49),(1.91,9.49),(1.91,9.27),(1.69,9.27)), + ) + createRL( + tech, net, 'Contact', + ((1.69,9.77),(1.69,9.99),(1.91,9.99),(1.91,9.77),(1.69,9.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,10.27),(1.69,10.49),(1.91,10.49),(1.91,10.27),(1.69,10.27)), + ) + createRL( + tech, net, 'Contact', + ((1.69,10.77),(1.69,10.99),(1.91,10.99),(1.91,10.77),(1.69,10.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,11.27),(1.69,11.49),(1.91,11.49),(1.91,11.27),(1.69,11.27)), + ) + createRL( + tech, net, 'Contact', + ((1.69,11.77),(1.69,11.99),(1.91,11.99),(1.91,11.77),(1.69,11.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,12.27),(1.69,12.49),(1.91,12.49),(1.91,12.27),(1.69,12.27)), + ) + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(0.83,1.68),(0.83,5.705),(1.17,5.705),(1.17,1.68),(2.8,1.68),(2.8,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'COMP', + ((0.97,0.36),(0.97,0.72),(1.83,0.72),(1.83,0.36),(0.97,0.36)), + ) + createRL( + tech, net, 'COMP', + ((0.82,1.24),(0.82,5.94),(1.54,5.94),(1.54,1.24),(0.82,1.24)), + ) + createRL( + tech, net, 'Contact', + ((1.04,0.43),(1.04,0.65),(1.26,0.65),(1.26,0.43),(1.04,0.43)), + ) + createRL( + tech, net, 'Contact', + ((1.54,0.43),(1.54,0.65),(1.76,0.65),(1.76,0.43),(1.54,0.43)), + ) + createRL( + tech, net, 'Contact', + ((0.89,1.48),(0.89,1.7),(1.11,1.7),(1.11,1.48),(0.89,1.48)), + ) + createRL( + tech, net, 'Contact', + ((0.89,1.98),(0.89,2.2),(1.11,2.2),(1.11,1.98),(0.89,1.98)), + ) + createRL( + tech, net, 'Contact', + ((0.89,2.48),(0.89,2.7),(1.11,2.7),(1.11,2.48),(0.89,2.48)), + ) + createRL( + tech, net, 'Contact', + ((0.89,2.98),(0.89,3.2),(1.11,3.2),(1.11,2.98),(0.89,2.98)), + ) + createRL( + tech, net, 'Contact', + ((0.89,3.48),(0.89,3.7),(1.11,3.7),(1.11,3.48),(0.89,3.48)), + ) + createRL( + tech, net, 'Contact', + ((0.89,3.98),(0.89,4.2),(1.11,4.2),(1.11,3.98),(0.89,3.98)), + ) + createRL( + tech, net, 'Contact', + ((0.89,4.48),(0.89,4.7),(1.11,4.7),(1.11,4.48),(0.89,4.48)), + ) + createRL( + tech, net, 'Contact', + ((0.89,4.98),(0.89,5.2),(1.11,5.2),(1.11,4.98),(0.89,4.98)), + ) + createRL( + tech, net, 'Contact', + ((0.89,5.48),(0.89,5.7),(1.11,5.7),(1.11,5.48),(0.89,5.48)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((0.74,0.2),(0.74,0.88),(2.06,0.88),(2.06,0.2),(0.74,0.2)), + ) + createRL( + tech, net, 'Pplus', + ((0.66,7.27),(0.66,12.99),(2.14,12.99),(2.14,7.27),(0.66,7.27)), + ) + createRL( + tech, net, 'Nplus', + ((0.66,1.01),(0.66,6.17),(2.14,6.17),(2.14,1.01),(0.66,1.01)), + ) + createRL( + tech, net, 'Nplus', + ((0.74,13.12),(0.74,13.8),(2.06,13.8),(2.06,13.12),(0.74,13.12)), + ) + net = nets['zero'] + createRL( + tech, net, 'COMP', + ((1.54,1.24),(1.54,5.94),(1.98,5.94),(1.98,1.24),(1.54,1.24)), + ) + createRL( + tech, net, 'Poly2', + ((1.26,6.84),(1.26,12.98),(1.54,12.98),(1.54,7.2),(1.98,7.2),(1.98,6.84),(1.26,6.84)), + ) + createRL( + tech, net, 'Contact', + ((1.69,6.91),(1.69,7.13),(1.91,7.13),(1.91,6.91),(1.69,6.91)), + ) + createRL( + tech, net, 'Contact', + ((1.69,2.195),(1.69,2.415),(1.91,2.415),(1.91,2.195),(1.69,2.195)), + ) + createRL( + tech, net, 'Contact', + ((1.69,2.695),(1.69,2.915),(1.91,2.915),(1.91,2.695),(1.69,2.695)), + ) + createRL( + tech, net, 'Contact', + ((1.69,3.195),(1.69,3.415),(1.91,3.415),(1.91,3.195),(1.69,3.195)), + ) + createRL( + tech, net, 'Contact', + ((1.69,3.695),(1.69,3.915),(1.91,3.915),(1.91,3.695),(1.69,3.695)), + ) + createRL( + tech, net, 'Contact', + ((1.69,4.195),(1.69,4.415),(1.91,4.415),(1.91,4.195),(1.69,4.195)), + ) + createRL( + tech, net, 'Contact', + ((1.69,4.695),(1.69,4.915),(1.91,4.915),(1.91,4.695),(1.69,4.695)), + ) + createRL( + tech, net, 'Contact', + ((1.69,5.195),(1.69,5.415),(1.91,5.415),(1.91,5.195),(1.69,5.195)), + ) + createRL( + tech, net, 'Metal1', + ((1.63,1.91),(1.63,7.135),(1.97,7.135),(1.97,6.905),(1.89,6.905),(1.89,5.7),(1.97,5.7),(1.97,1.91),(1.63,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.76), u(0.26), u(1.91), u(7.135), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.76), u(0.26), u(1.91), u(7.135), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['one'] + createRL( + tech, net, 'Poly2', + ((1.26,1.02),(1.26,6.24),(0.82,6.24),(0.82,6.6),(1.54,6.6),(1.54,1.02),(1.26,1.02)), + ) + createRL( + tech, net, 'COMP', + ((0.82,7.5),(0.82,12.76),(1.26,12.76),(1.26,7.5),(0.82,7.5)), + ) + createRL( + tech, net, 'Contact', + ((0.89,8.07),(0.89,8.29),(1.11,8.29),(1.11,8.07),(0.89,8.07)), + ) + createRL( + tech, net, 'Contact', + ((0.89,8.57),(0.89,8.79),(1.11,8.79),(1.11,8.57),(0.89,8.57)), + ) + createRL( + tech, net, 'Contact', + ((0.89,9.07),(0.89,9.29),(1.11,9.29),(1.11,9.07),(0.89,9.07)), + ) + createRL( + tech, net, 'Contact', + ((0.89,9.57),(0.89,9.79),(1.11,9.79),(1.11,9.57),(0.89,9.57)), + ) + createRL( + tech, net, 'Contact', + ((0.89,10.07),(0.89,10.29),(1.11,10.29),(1.11,10.07),(0.89,10.07)), + ) + createRL( + tech, net, 'Contact', + ((0.89,10.57),(0.89,10.79),(1.11,10.79),(1.11,10.57),(0.89,10.57)), + ) + createRL( + tech, net, 'Contact', + ((0.89,11.07),(0.89,11.29),(1.11,11.29),(1.11,11.07),(0.89,11.07)), + ) + createRL( + tech, net, 'Contact', + ((0.89,11.57),(0.89,11.79),(1.11,11.79),(1.11,11.57),(0.89,11.57)), + ) + createRL( + tech, net, 'Contact', + ((0.89,6.31),(0.89,6.53),(1.11,6.53),(1.11,6.31),(0.89,6.31)), + ) + createRL( + tech, net, 'Metal1', + ((0.83,6.305),(0.83,6.535),(0.91,6.535),(0.91,7.77),(0.83,7.77),(0.83,12.09),(1.17,12.09),(1.17,6.305),(0.83,6.305)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.04), u(0.26), u(6.305), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.04), u(0.26), u(6.305), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['zero'].setDirection(Net.Direction.OUT) + nets['one'].setDirection(Net.Direction.OUT) + + cell = new_cells['decap_w0'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(2.8000000000000003), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'one': Net.create(cell, 'one'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + 'zero': Net.create(cell, 'zero'), + } + net = nets['vdd'] + createRL( + tech, net, 'Metal1', + ((1.63,7.765),(1.63,12.32),(0.0,12.32),(0.0,14.0),(2.8,14.0),(2.8,12.32),(1.97,12.32),(1.97,7.765),(1.63,7.765)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(3.4,14.6),(3.4,6.72),(-0.6,6.72)), + ) + createRL( + tech, net, 'COMP', + ((0.97,13.28),(0.97,13.64),(1.83,13.64),(1.83,13.28),(0.97,13.28)), + ) + createRL( + tech, net, 'COMP', + ((1.26,7.5),(1.26,12.76),(1.98,12.76),(1.98,7.5),(1.26,7.5)), + ) + createRL( + tech, net, 'Contact', + ((1.04,13.35),(1.04,13.57),(1.26,13.57),(1.26,13.35),(1.04,13.35)), + ) + createRL( + tech, net, 'Contact', + ((1.54,13.35),(1.54,13.57),(1.76,13.57),(1.76,13.35),(1.54,13.35)), + ) + createRL( + tech, net, 'Contact', + ((1.69,7.77),(1.69,7.99),(1.91,7.99),(1.91,7.77),(1.69,7.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,8.27),(1.69,8.49),(1.91,8.49),(1.91,8.27),(1.69,8.27)), + ) + createRL( + tech, net, 'Contact', + ((1.69,8.77),(1.69,8.99),(1.91,8.99),(1.91,8.77),(1.69,8.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,9.27),(1.69,9.49),(1.91,9.49),(1.91,9.27),(1.69,9.27)), + ) + createRL( + tech, net, 'Contact', + ((1.69,9.77),(1.69,9.99),(1.91,9.99),(1.91,9.77),(1.69,9.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,10.27),(1.69,10.49),(1.91,10.49),(1.91,10.27),(1.69,10.27)), + ) + createRL( + tech, net, 'Contact', + ((1.69,10.77),(1.69,10.99),(1.91,10.99),(1.91,10.77),(1.69,10.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,11.27),(1.69,11.49),(1.91,11.49),(1.91,11.27),(1.69,11.27)), + ) + createRL( + tech, net, 'Contact', + ((1.69,11.77),(1.69,11.99),(1.91,11.99),(1.91,11.77),(1.69,11.77)), + ) + createRL( + tech, net, 'Contact', + ((1.69,12.27),(1.69,12.49),(1.91,12.49),(1.91,12.27),(1.69,12.27)), + ) + net = nets['vss'] + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(0.83,1.68),(0.83,5.705),(1.17,5.705),(1.17,1.68),(2.8,1.68),(2.8,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'COMP', + ((0.97,0.36),(0.97,0.72),(1.83,0.72),(1.83,0.36),(0.97,0.36)), + ) + createRL( + tech, net, 'COMP', + ((0.82,1.24),(0.82,5.94),(1.54,5.94),(1.54,1.24),(0.82,1.24)), + ) + createRL( + tech, net, 'Contact', + ((1.04,0.43),(1.04,0.65),(1.26,0.65),(1.26,0.43),(1.04,0.43)), + ) + createRL( + tech, net, 'Contact', + ((1.54,0.43),(1.54,0.65),(1.76,0.65),(1.76,0.43),(1.54,0.43)), + ) + createRL( + tech, net, 'Contact', + ((0.89,1.48),(0.89,1.7),(1.11,1.7),(1.11,1.48),(0.89,1.48)), + ) + createRL( + tech, net, 'Contact', + ((0.89,1.98),(0.89,2.2),(1.11,2.2),(1.11,1.98),(0.89,1.98)), + ) + createRL( + tech, net, 'Contact', + ((0.89,2.48),(0.89,2.7),(1.11,2.7),(1.11,2.48),(0.89,2.48)), + ) + createRL( + tech, net, 'Contact', + ((0.89,2.98),(0.89,3.2),(1.11,3.2),(1.11,2.98),(0.89,2.98)), + ) + createRL( + tech, net, 'Contact', + ((0.89,3.48),(0.89,3.7),(1.11,3.7),(1.11,3.48),(0.89,3.48)), + ) + createRL( + tech, net, 'Contact', + ((0.89,3.98),(0.89,4.2),(1.11,4.2),(1.11,3.98),(0.89,3.98)), + ) + createRL( + tech, net, 'Contact', + ((0.89,4.48),(0.89,4.7),(1.11,4.7),(1.11,4.48),(0.89,4.48)), + ) + createRL( + tech, net, 'Contact', + ((0.89,4.98),(0.89,5.2),(1.11,5.2),(1.11,4.98),(0.89,4.98)), + ) + createRL( + tech, net, 'Contact', + ((0.89,5.48),(0.89,5.7),(1.11,5.7),(1.11,5.48),(0.89,5.48)), + ) + net = nets['*'] + createRL( + tech, net, 'Pplus', + ((0.74,0.2),(0.74,0.88),(2.06,0.88),(2.06,0.2),(0.74,0.2)), + ) + createRL( + tech, net, 'Pplus', + ((0.66,7.27),(0.66,12.99),(2.14,12.99),(2.14,7.27),(0.66,7.27)), + ) + createRL( + tech, net, 'Nplus', + ((0.66,1.01),(0.66,6.17),(2.14,6.17),(2.14,1.01),(0.66,1.01)), + ) + createRL( + tech, net, 'Nplus', + ((0.74,13.12),(0.74,13.8),(2.06,13.8),(2.06,13.12),(0.74,13.12)), + ) + net = nets['zero'] + createRL( + tech, net, 'COMP', + ((1.54,1.24),(1.54,5.94),(1.98,5.94),(1.98,1.24),(1.54,1.24)), + ) + createRL( + tech, net, 'Poly2', + ((1.26,6.84),(1.26,12.98),(1.54,12.98),(1.54,7.2),(1.98,7.2),(1.98,6.84),(1.26,6.84)), + ) + createRL( + tech, net, 'Contact', + ((1.69,6.91),(1.69,7.13),(1.91,7.13),(1.91,6.91),(1.69,6.91)), + ) + createRL( + tech, net, 'Contact', + ((1.69,2.195),(1.69,2.415),(1.91,2.415),(1.91,2.195),(1.69,2.195)), + ) + createRL( + tech, net, 'Contact', + ((1.69,2.695),(1.69,2.915),(1.91,2.915),(1.91,2.695),(1.69,2.695)), + ) + createRL( + tech, net, 'Contact', + ((1.69,3.195),(1.69,3.415),(1.91,3.415),(1.91,3.195),(1.69,3.195)), + ) + createRL( + tech, net, 'Contact', + ((1.69,3.695),(1.69,3.915),(1.91,3.915),(1.91,3.695),(1.69,3.695)), + ) + createRL( + tech, net, 'Contact', + ((1.69,4.195),(1.69,4.415),(1.91,4.415),(1.91,4.195),(1.69,4.195)), + ) + createRL( + tech, net, 'Contact', + ((1.69,4.695),(1.69,4.915),(1.91,4.915),(1.91,4.695),(1.69,4.695)), + ) + createRL( + tech, net, 'Contact', + ((1.69,5.195),(1.69,5.415),(1.91,5.415),(1.91,5.195),(1.69,5.195)), + ) + createRL( + tech, net, 'Metal1', + ((1.63,1.91),(1.63,7.135),(1.97,7.135),(1.97,6.905),(1.89,6.905),(1.89,5.7),(1.97,5.7),(1.97,1.91),(1.63,1.91)), + ) + net = nets['one'] + createRL( + tech, net, 'Poly2', + ((1.26,1.02),(1.26,6.24),(0.82,6.24),(0.82,6.6),(1.54,6.6),(1.54,1.02),(1.26,1.02)), + ) + createRL( + tech, net, 'COMP', + ((0.82,7.5),(0.82,12.76),(1.26,12.76),(1.26,7.5),(0.82,7.5)), + ) + createRL( + tech, net, 'Contact', + ((0.89,8.07),(0.89,8.29),(1.11,8.29),(1.11,8.07),(0.89,8.07)), + ) + createRL( + tech, net, 'Contact', + ((0.89,8.57),(0.89,8.79),(1.11,8.79),(1.11,8.57),(0.89,8.57)), + ) + createRL( + tech, net, 'Contact', + ((0.89,9.07),(0.89,9.29),(1.11,9.29),(1.11,9.07),(0.89,9.07)), + ) + createRL( + tech, net, 'Contact', + ((0.89,9.57),(0.89,9.79),(1.11,9.79),(1.11,9.57),(0.89,9.57)), + ) + createRL( + tech, net, 'Contact', + ((0.89,10.07),(0.89,10.29),(1.11,10.29),(1.11,10.07),(0.89,10.07)), + ) + createRL( + tech, net, 'Contact', + ((0.89,10.57),(0.89,10.79),(1.11,10.79),(1.11,10.57),(0.89,10.57)), + ) + createRL( + tech, net, 'Contact', + ((0.89,11.07),(0.89,11.29),(1.11,11.29),(1.11,11.07),(0.89,11.07)), + ) + createRL( + tech, net, 'Contact', + ((0.89,11.57),(0.89,11.79),(1.11,11.79),(1.11,11.57),(0.89,11.57)), + ) + createRL( + tech, net, 'Contact', + ((0.89,6.31),(0.89,6.53),(1.11,6.53),(1.11,6.31),(0.89,6.31)), + ) + createRL( + tech, net, 'Metal1', + ((0.83,6.305),(0.83,6.535),(0.91,6.535),(0.91,7.77),(0.83,7.77),(0.83,12.09),(1.17,12.09),(1.17,6.305),(0.83,6.305)), + ) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + + cell = new_cells['inv_x0'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(2.8000000000000003), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'i': Net.create(cell, 'i'), + 'nq': Net.create(cell, 'nq'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['i'] + createRL( + tech, net, 'Metal1', + ((0.23,1.91),(0.23,12.09),(0.49,12.09),(0.49,6.835),(0.66,6.835),(0.66,6.605),(0.49,6.605),(0.49,1.91),(0.23,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.36), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.36), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Poly2', + ((1.02,1.605),(1.02,6.54),(0.31,6.54),(0.31,6.9),(1.02,6.9),(1.02,12.595),(1.3,12.595),(1.3,1.605),(1.02,1.605)), + ) + createRL( + tech, net, 'Contact', + ((0.38,6.61),(0.38,6.83),(0.6,6.83),(0.6,6.61),(0.38,6.61)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((0.36,1.385),(0.36,3.225),(1.3,3.225),(1.3,1.825),(0.72,1.825),(0.72,1.385),(0.36,1.385)), + ) + createRL( + tech, net, 'COMP', + ((1.58,0.43),(1.58,0.79),(2.44,0.79),(2.44,0.43),(1.58,0.43)), + ) + createRL( + tech, net, 'Contact', + ((1.65,0.5),(1.65,0.72),(1.87,0.72),(1.87,0.5),(1.65,0.5)), + ) + createRL( + tech, net, 'Contact', + ((2.15,0.5),(2.15,0.72),(2.37,0.72),(2.37,0.5),(2.15,0.5)), + ) + createRL( + tech, net, 'Contact', + ((0.43,1.455),(0.43,1.675),(0.65,1.675),(0.65,1.455),(0.43,1.455)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(2.8,1.68),(2.8,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['*'] + createRL( + tech, net, 'Nplus', + ((0.2,1.155),(0.2,3.455),(1.9,3.455),(1.9,1.595),(0.88,1.595),(0.88,1.155),(0.2,1.155)), + ) + createRL( + tech, net, 'Nplus', + ((1.42,12.98),(1.42,13.8),(2.6,13.8),(2.6,12.98),(1.42,12.98)), + ) + createRL( + tech, net, 'Pplus', + ((0.2,9.345),(0.2,12.845),(0.88,12.845),(0.88,12.605),(1.9,12.605),(1.9,9.345),(0.2,9.345)), + ) + createRL( + tech, net, 'Pplus', + ((1.42,0.2),(1.42,1.02),(2.6,1.02),(2.6,0.2),(1.42,0.2)), + ) + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((1.58,13.21),(1.58,13.57),(2.44,13.57),(2.44,13.21),(1.58,13.21)), + ) + createRL( + tech, net, 'COMP', + ((0.36,9.575),(0.36,12.615),(0.72,12.615),(0.72,12.375),(1.3,12.375),(1.3,9.575),(0.36,9.575)), + ) + createRL( + tech, net, 'Contact', + ((1.65,13.28),(1.65,13.5),(1.87,13.5),(1.87,13.28),(1.65,13.28)), + ) + createRL( + tech, net, 'Contact', + ((2.15,13.28),(2.15,13.5),(2.37,13.5),(2.37,13.28),(2.15,13.28)), + ) + createRL( + tech, net, 'Contact', + ((0.43,12.325),(0.43,12.545),(0.65,12.545),(0.65,12.325),(0.43,12.325)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(2.8,14.0),(2.8,12.32),(0.0,12.32)), + ) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(3.4,14.6),(3.4,6.72),(-0.6,6.72)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['nq'] + createRL( + tech, net, 'COMP', + ((1.3,1.825),(1.3,3.225),(1.74,3.225),(1.74,1.825),(1.3,1.825)), + ) + createRL( + tech, net, 'COMP', + ((1.3,9.575),(1.3,12.375),(1.74,12.375),(1.74,9.575),(1.3,9.575)), + ) + createRL( + tech, net, 'Contact', + ((1.45,1.915),(1.45,2.135),(1.67,2.135),(1.67,1.915),(1.45,1.915)), + ) + createRL( + tech, net, 'Contact', + ((1.45,2.415),(1.45,2.635),(1.67,2.635),(1.67,2.415),(1.45,2.415)), + ) + createRL( + tech, net, 'Contact', + ((1.45,2.915),(1.45,3.135),(1.67,3.135),(1.67,2.915),(1.45,2.915)), + ) + createRL( + tech, net, 'Contact', + ((1.45,9.865),(1.45,10.085),(1.67,10.085),(1.67,9.865),(1.45,9.865)), + ) + createRL( + tech, net, 'Contact', + ((1.45,10.365),(1.45,10.585),(1.67,10.585),(1.67,10.365),(1.45,10.365)), + ) + createRL( + tech, net, 'Contact', + ((1.45,10.865),(1.45,11.085),(1.67,11.085),(1.67,10.865),(1.45,10.865)), + ) + createRL( + tech, net, 'Contact', + ((1.45,11.365),(1.45,11.585),(1.67,11.585),(1.67,11.365),(1.45,11.365)), + ) + createRL( + tech, net, 'Contact', + ((1.45,11.865),(1.45,12.085),(1.67,12.085),(1.67,11.865),(1.45,11.865)), + ) + createRL( + tech, net, 'Metal1', + ((1.39,1.91),(1.39,12.09),(1.73,12.09),(1.73,9.86),(1.65,9.86),(1.65,3.14),(1.73,3.14),(1.73,1.91),(1.39,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.52), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.52), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i'].setDirection(Net.Direction.IN) + nets['nq'].setDirection(Net.Direction.OUT) + + cell = new_cells['inv_x1'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(2.8000000000000003), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'i': Net.create(cell, 'i'), + 'nq': Net.create(cell, 'nq'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['i'] + createRL( + tech, net, 'Metal1', + ((0.23,1.91),(0.23,12.09),(0.49,12.09),(0.49,6.835),(0.66,6.835),(0.66,6.605),(0.49,6.605),(0.49,1.91),(0.23,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.36), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.36), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Poly2', + ((1.02,1.545),(1.02,6.54),(0.31,6.54),(0.31,6.9),(1.02,6.9),(1.02,12.58),(1.3,12.58),(1.3,1.545),(1.02,1.545)), + ) + createRL( + tech, net, 'Contact', + ((0.38,6.61),(0.38,6.83),(0.6,6.83),(0.6,6.61),(0.38,6.61)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((0.36,1.385),(0.36,4.285),(1.3,4.285),(1.3,1.765),(0.72,1.765),(0.72,1.385),(0.36,1.385)), + ) + createRL( + tech, net, 'COMP', + ((1.58,0.43),(1.58,0.79),(2.44,0.79),(2.44,0.43),(1.58,0.43)), + ) + createRL( + tech, net, 'Contact', + ((1.65,0.5),(1.65,0.72),(1.87,0.72),(1.87,0.5),(1.65,0.5)), + ) + createRL( + tech, net, 'Contact', + ((2.15,0.5),(2.15,0.72),(2.37,0.72),(2.37,0.5),(2.15,0.5)), + ) + createRL( + tech, net, 'Contact', + ((0.43,1.455),(0.43,1.675),(0.65,1.675),(0.65,1.455),(0.43,1.455)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(2.8,1.68),(2.8,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['*'] + createRL( + tech, net, 'Nplus', + ((0.2,1.155),(0.2,4.515),(1.9,4.515),(1.9,1.535),(0.88,1.535),(0.88,1.155),(0.2,1.155)), + ) + createRL( + tech, net, 'Nplus', + ((1.42,12.98),(1.42,13.8),(2.6,13.8),(2.6,12.98),(1.42,12.98)), + ) + createRL( + tech, net, 'Pplus', + ((0.2,7.09),(0.2,12.845),(0.88,12.845),(0.88,12.59),(1.9,12.59),(1.9,7.09),(0.2,7.09)), + ) + createRL( + tech, net, 'Pplus', + ((1.42,0.2),(1.42,1.02),(2.6,1.02),(2.6,0.2),(1.42,0.2)), + ) + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((1.58,13.21),(1.58,13.57),(2.44,13.57),(2.44,13.21),(1.58,13.21)), + ) + createRL( + tech, net, 'COMP', + ((0.36,7.32),(0.36,12.615),(0.72,12.615),(0.72,12.36),(1.3,12.36),(1.3,7.32),(0.36,7.32)), + ) + createRL( + tech, net, 'Contact', + ((1.65,13.28),(1.65,13.5),(1.87,13.5),(1.87,13.28),(1.65,13.28)), + ) + createRL( + tech, net, 'Contact', + ((2.15,13.28),(2.15,13.5),(2.37,13.5),(2.37,13.28),(2.15,13.28)), + ) + createRL( + tech, net, 'Contact', + ((0.43,12.325),(0.43,12.545),(0.65,12.545),(0.65,12.325),(0.43,12.325)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(2.8,14.0),(2.8,12.32),(0.0,12.32)), + ) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(3.4,14.6),(3.4,6.72),(-0.6,6.72)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.4), u(2.8), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['nq'] + createRL( + tech, net, 'COMP', + ((1.3,1.765),(1.3,4.285),(1.74,4.285),(1.74,1.765),(1.3,1.765)), + ) + createRL( + tech, net, 'COMP', + ((1.3,7.32),(1.3,12.36),(1.74,12.36),(1.74,7.32),(1.3,7.32)), + ) + createRL( + tech, net, 'Contact', + ((1.45,1.915),(1.45,2.135),(1.67,2.135),(1.67,1.915),(1.45,1.915)), + ) + createRL( + tech, net, 'Contact', + ((1.45,2.415),(1.45,2.635),(1.67,2.635),(1.67,2.415),(1.45,2.415)), + ) + createRL( + tech, net, 'Contact', + ((1.45,2.915),(1.45,3.135),(1.67,3.135),(1.67,2.915),(1.45,2.915)), + ) + createRL( + tech, net, 'Contact', + ((1.45,3.415),(1.45,3.635),(1.67,3.635),(1.67,3.415),(1.45,3.415)), + ) + createRL( + tech, net, 'Contact', + ((1.45,3.915),(1.45,4.135),(1.67,4.135),(1.67,3.915),(1.45,3.915)), + ) + createRL( + tech, net, 'Contact', + ((1.45,7.675),(1.45,7.895),(1.67,7.895),(1.67,7.675),(1.45,7.675)), + ) + createRL( + tech, net, 'Contact', + ((1.45,8.175),(1.45,8.395),(1.67,8.395),(1.67,8.175),(1.45,8.175)), + ) + createRL( + tech, net, 'Contact', + ((1.45,8.675),(1.45,8.895),(1.67,8.895),(1.67,8.675),(1.45,8.675)), + ) + createRL( + tech, net, 'Contact', + ((1.45,9.175),(1.45,9.395),(1.67,9.395),(1.67,9.175),(1.45,9.175)), + ) + createRL( + tech, net, 'Contact', + ((1.45,9.675),(1.45,9.895),(1.67,9.895),(1.67,9.675),(1.45,9.675)), + ) + createRL( + tech, net, 'Contact', + ((1.45,10.175),(1.45,10.395),(1.67,10.395),(1.67,10.175),(1.45,10.175)), + ) + createRL( + tech, net, 'Contact', + ((1.45,10.675),(1.45,10.895),(1.67,10.895),(1.67,10.675),(1.45,10.675)), + ) + createRL( + tech, net, 'Contact', + ((1.45,11.175),(1.45,11.395),(1.67,11.395),(1.67,11.175),(1.45,11.175)), + ) + createRL( + tech, net, 'Contact', + ((1.45,11.675),(1.45,11.895),(1.67,11.895),(1.67,11.675),(1.45,11.675)), + ) + createRL( + tech, net, 'Metal1', + ((1.39,1.91),(1.39,12.09),(1.73,12.09),(1.73,7.48),(1.65,7.48),(1.65,4.14),(1.73,4.14),(1.73,1.91),(1.39,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.52), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.52), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i'].setDirection(Net.Direction.IN) + nets['nq'].setDirection(Net.Direction.OUT) + + cell = new_cells['inv_x2'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(4.2), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'i': Net.create(cell, 'i'), + 'nq': Net.create(cell, 'nq'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['i'] + createRL( + tech, net, 'Metal1', + ((0.23,1.91),(0.23,12.09),(0.49,12.09),(0.49,6.835),(0.66,6.835),(0.66,6.605),(0.49,6.605),(0.49,1.91),(0.23,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.36), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.36), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Poly2', + ((1.02,1.545),(1.02,6.54),(0.31,6.54),(0.31,6.9),(1.02,6.9),(1.02,12.58),(1.3,12.58),(1.3,6.9),(1.82,6.9),(1.82,12.58),(2.1,12.58),(2.1,1.545),(1.82,1.545),(1.82,6.54),(1.3,6.54),(1.3,1.545),(1.02,1.545)), + ) + createRL( + tech, net, 'Contact', + ((0.38,6.61),(0.38,6.83),(0.6,6.83),(0.6,6.61),(0.38,6.61)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((0.36,1.385),(0.36,4.285),(1.3,4.285),(1.3,1.765),(0.72,1.765),(0.72,1.385),(0.36,1.385)), + ) + createRL( + tech, net, 'COMP', + ((2.98,0.43),(2.98,0.79),(3.84,0.79),(3.84,0.43),(2.98,0.43)), + ) + createRL( + tech, net, 'COMP', + ((2.4,1.385),(2.4,1.765),(1.82,1.765),(1.82,4.285),(2.76,4.285),(2.76,1.385),(2.4,1.385)), + ) + createRL( + tech, net, 'Contact', + ((2.47,1.455),(2.47,1.675),(2.69,1.675),(2.69,1.455),(2.47,1.455)), + ) + createRL( + tech, net, 'Contact', + ((3.05,0.5),(3.05,0.72),(3.27,0.72),(3.27,0.5),(3.05,0.5)), + ) + createRL( + tech, net, 'Contact', + ((3.55,0.5),(3.55,0.72),(3.77,0.72),(3.77,0.5),(3.55,0.5)), + ) + createRL( + tech, net, 'Contact', + ((0.43,1.455),(0.43,1.675),(0.65,1.675),(0.65,1.455),(0.43,1.455)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(4.2,1.68),(4.2,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(4.2), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(4.2), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['*'] + createRL( + tech, net, 'Nplus', + ((2.82,12.98),(2.82,13.8),(4.0,13.8),(4.0,12.98),(2.82,12.98)), + ) + createRL( + tech, net, 'Nplus', + ((0.2,1.155),(0.2,4.515),(2.92,4.515),(2.92,1.155),(2.24,1.155),(2.24,1.535),(0.88,1.535),(0.88,1.155),(0.2,1.155)), + ) + createRL( + tech, net, 'Pplus', + ((2.82,0.2),(2.82,1.02),(4.0,1.02),(4.0,0.2),(2.82,0.2)), + ) + createRL( + tech, net, 'Pplus', + ((0.2,7.09),(0.2,12.845),(0.88,12.845),(0.88,12.59),(2.24,12.59),(2.24,12.845),(2.92,12.845),(2.92,7.09),(0.2,7.09)), + ) + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((0.36,7.32),(0.36,12.615),(0.72,12.615),(0.72,12.36),(1.3,12.36),(1.3,7.32),(0.36,7.32)), + ) + createRL( + tech, net, 'COMP', + ((1.82,7.32),(1.82,12.36),(2.4,12.36),(2.4,12.615),(2.76,12.615),(2.76,7.32),(1.82,7.32)), + ) + createRL( + tech, net, 'COMP', + ((2.98,13.21),(2.98,13.57),(3.84,13.57),(3.84,13.21),(2.98,13.21)), + ) + createRL( + tech, net, 'Contact', + ((3.05,13.28),(3.05,13.5),(3.27,13.5),(3.27,13.28),(3.05,13.28)), + ) + createRL( + tech, net, 'Contact', + ((3.55,13.28),(3.55,13.5),(3.77,13.5),(3.77,13.28),(3.55,13.28)), + ) + createRL( + tech, net, 'Contact', + ((0.43,12.325),(0.43,12.545),(0.65,12.545),(0.65,12.325),(0.43,12.325)), + ) + createRL( + tech, net, 'Contact', + ((2.47,12.325),(2.47,12.545),(2.69,12.545),(2.69,12.325),(2.47,12.325)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(4.2,14.0),(4.2,12.32),(0.0,12.32)), + ) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(4.8,14.6),(4.8,6.72),(-0.6,6.72)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(4.2), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(4.2), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['nq'] + createRL( + tech, net, 'COMP', + ((1.3,1.765),(1.3,4.285),(1.82,4.285),(1.82,1.765),(1.3,1.765)), + ) + createRL( + tech, net, 'COMP', + ((1.3,7.32),(1.3,12.36),(1.82,12.36),(1.82,7.32),(1.3,7.32)), + ) + createRL( + tech, net, 'Contact', + ((1.45,1.915),(1.45,2.135),(1.67,2.135),(1.67,1.915),(1.45,1.915)), + ) + createRL( + tech, net, 'Contact', + ((1.45,2.415),(1.45,2.635),(1.67,2.635),(1.67,2.415),(1.45,2.415)), + ) + createRL( + tech, net, 'Contact', + ((1.45,2.915),(1.45,3.135),(1.67,3.135),(1.67,2.915),(1.45,2.915)), + ) + createRL( + tech, net, 'Contact', + ((1.45,3.415),(1.45,3.635),(1.67,3.635),(1.67,3.415),(1.45,3.415)), + ) + createRL( + tech, net, 'Contact', + ((1.45,3.915),(1.45,4.135),(1.67,4.135),(1.67,3.915),(1.45,3.915)), + ) + createRL( + tech, net, 'Contact', + ((1.45,7.675),(1.45,7.895),(1.67,7.895),(1.67,7.675),(1.45,7.675)), + ) + createRL( + tech, net, 'Contact', + ((1.45,8.175),(1.45,8.395),(1.67,8.395),(1.67,8.175),(1.45,8.175)), + ) + createRL( + tech, net, 'Contact', + ((1.45,8.675),(1.45,8.895),(1.67,8.895),(1.67,8.675),(1.45,8.675)), + ) + createRL( + tech, net, 'Contact', + ((1.45,9.175),(1.45,9.395),(1.67,9.395),(1.67,9.175),(1.45,9.175)), + ) + createRL( + tech, net, 'Contact', + ((1.45,9.675),(1.45,9.895),(1.67,9.895),(1.67,9.675),(1.45,9.675)), + ) + createRL( + tech, net, 'Contact', + ((1.45,10.175),(1.45,10.395),(1.67,10.395),(1.67,10.175),(1.45,10.175)), + ) + createRL( + tech, net, 'Contact', + ((1.45,10.675),(1.45,10.895),(1.67,10.895),(1.67,10.675),(1.45,10.675)), + ) + createRL( + tech, net, 'Contact', + ((1.45,11.175),(1.45,11.395),(1.67,11.395),(1.67,11.175),(1.45,11.175)), + ) + createRL( + tech, net, 'Contact', + ((1.45,11.675),(1.45,11.895),(1.67,11.895),(1.67,11.675),(1.45,11.675)), + ) + createRL( + tech, net, 'Metal1', + ((1.39,1.91),(1.39,12.09),(1.73,12.09),(1.73,7.48),(1.65,7.48),(1.65,4.14),(1.73,4.14),(1.73,1.91),(1.39,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.52), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.52), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i'].setDirection(Net.Direction.IN) + nets['nq'].setDirection(Net.Direction.OUT) + + cell = new_cells['inv_x4'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(5.6000000000000005), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'i': Net.create(cell, 'i'), + 'nq': Net.create(cell, 'nq'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['i'] + createRL( + tech, net, 'Metal1', + ((0.23,1.91),(0.23,12.09),(0.49,12.09),(0.49,6.835),(0.66,6.835),(0.66,6.605),(0.49,6.605),(0.49,1.91),(0.23,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(0.36), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(0.36), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + createRL( + tech, net, 'Poly2', + ((1.02,1.545),(1.02,6.54),(0.31,6.54),(0.31,6.9),(1.02,6.9),(1.02,12.58),(1.3,12.58),(1.3,6.9),(1.82,6.9),(1.82,12.58),(2.1,12.58),(2.1,6.9),(3.06,6.9),(3.06,12.58),(3.34,12.58),(3.34,6.9),(3.86,6.9),(3.86,12.58),(4.14,12.58),(4.14,1.545),(3.86,1.545),(3.86,6.54),(3.34,6.54),(3.34,1.545),(3.06,1.545),(3.06,6.54),(2.1,6.54),(2.1,1.545),(1.82,1.545),(1.82,6.54),(1.3,6.54),(1.3,1.545),(1.02,1.545)), + ) + createRL( + tech, net, 'Contact', + ((0.38,6.61),(0.38,6.83),(0.6,6.83),(0.6,6.61),(0.38,6.61)), + ) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((4.44,1.385),(4.44,1.765),(3.86,1.765),(3.86,4.285),(4.8,4.285),(4.8,1.385),(4.44,1.385)), + ) + createRL( + tech, net, 'COMP', + ((0.36,1.385),(0.36,4.285),(1.3,4.285),(1.3,1.765),(0.72,1.765),(0.72,1.385),(0.36,1.385)), + ) + createRL( + tech, net, 'COMP', + ((4.38,0.43),(4.38,0.79),(5.24,0.79),(5.24,0.43),(4.38,0.43)), + ) + createRL( + tech, net, 'COMP', + ((2.4,1.385),(2.4,1.765),(1.82,1.765),(1.82,4.285),(3.34,4.285),(3.34,1.765),(2.76,1.765),(2.76,1.385),(2.4,1.385)), + ) + createRL( + tech, net, 'Contact', + ((2.47,1.455),(2.47,1.675),(2.69,1.675),(2.69,1.455),(2.47,1.455)), + ) + createRL( + tech, net, 'Contact', + ((4.51,1.455),(4.51,1.675),(4.73,1.675),(4.73,1.455),(4.51,1.455)), + ) + createRL( + tech, net, 'Contact', + ((0.43,1.455),(0.43,1.675),(0.65,1.675),(0.65,1.455),(0.43,1.455)), + ) + createRL( + tech, net, 'Contact', + ((4.45,0.5),(4.45,0.72),(4.67,0.72),(4.67,0.5),(4.45,0.5)), + ) + createRL( + tech, net, 'Contact', + ((4.95,0.5),(4.95,0.72),(5.17,0.72),(5.17,0.5),(4.95,0.5)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(5.6,1.68),(5.6,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['*'] + createRL( + tech, net, 'Nplus', + ((0.2,1.155),(0.2,4.515),(4.96,4.515),(4.96,1.155),(4.28,1.155),(4.28,1.535),(2.92,1.535),(2.92,1.155),(2.24,1.155),(2.24,1.535),(0.88,1.535),(0.88,1.155),(0.2,1.155)), + ) + createRL( + tech, net, 'Nplus', + ((4.22,12.98),(4.22,13.8),(5.4,13.8),(5.4,12.98),(4.22,12.98)), + ) + createRL( + tech, net, 'Pplus', + ((0.2,7.09),(0.2,12.845),(0.88,12.845),(0.88,12.59),(2.24,12.59),(2.24,12.845),(2.92,12.845),(2.92,12.59),(4.28,12.59),(4.28,12.845),(4.96,12.845),(4.96,7.09),(0.2,7.09)), + ) + createRL( + tech, net, 'Pplus', + ((4.22,0.2),(4.22,1.02),(5.4,1.02),(5.4,0.2),(4.22,0.2)), + ) + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((4.38,13.21),(4.38,13.57),(5.24,13.57),(5.24,13.21),(4.38,13.21)), + ) + createRL( + tech, net, 'COMP', + ((1.82,7.32),(1.82,12.36),(2.4,12.36),(2.4,12.615),(2.76,12.615),(2.76,12.36),(3.34,12.36),(3.34,7.32),(1.82,7.32)), + ) + createRL( + tech, net, 'COMP', + ((3.86,7.32),(3.86,12.36),(4.44,12.36),(4.44,12.615),(4.8,12.615),(4.8,7.32),(3.86,7.32)), + ) + createRL( + tech, net, 'COMP', + ((0.36,7.32),(0.36,12.615),(0.72,12.615),(0.72,12.36),(1.3,12.36),(1.3,7.32),(0.36,7.32)), + ) + createRL( + tech, net, 'Contact', + ((4.51,12.325),(4.51,12.545),(4.73,12.545),(4.73,12.325),(4.51,12.325)), + ) + createRL( + tech, net, 'Contact', + ((0.43,12.325),(0.43,12.545),(0.65,12.545),(0.65,12.325),(0.43,12.325)), + ) + createRL( + tech, net, 'Contact', + ((4.45,13.28),(4.45,13.5),(4.67,13.5),(4.67,13.28),(4.45,13.28)), + ) + createRL( + tech, net, 'Contact', + ((4.95,13.28),(4.95,13.5),(5.17,13.5),(5.17,13.28),(4.95,13.28)), + ) + createRL( + tech, net, 'Contact', + ((2.47,12.325),(2.47,12.545),(2.69,12.545),(2.69,12.325),(2.47,12.325)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(5.6,14.0),(5.6,12.32),(0.0,12.32)), + ) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(6.2,14.6),(6.2,6.72),(-0.6,6.72)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['nq'] + createRL( + tech, net, 'COMP', + ((3.34,7.32),(3.34,12.36),(3.86,12.36),(3.86,7.32),(3.34,7.32)), + ) + createRL( + tech, net, 'COMP', + ((1.3,1.765),(1.3,4.285),(1.82,4.285),(1.82,1.765),(1.3,1.765)), + ) + createRL( + tech, net, 'COMP', + ((3.34,1.765),(3.34,4.285),(3.86,4.285),(3.86,1.765),(3.34,1.765)), + ) + createRL( + tech, net, 'COMP', + ((1.3,7.32),(1.3,12.36),(1.82,12.36),(1.82,7.32),(1.3,7.32)), + ) + createRL( + tech, net, 'Contact', + ((1.45,1.915),(1.45,2.135),(1.67,2.135),(1.67,1.915),(1.45,1.915)), + ) + createRL( + tech, net, 'Contact', + ((1.45,2.415),(1.45,2.635),(1.67,2.635),(1.67,2.415),(1.45,2.415)), + ) + createRL( + tech, net, 'Contact', + ((1.45,2.915),(1.45,3.135),(1.67,3.135),(1.67,2.915),(1.45,2.915)), + ) + createRL( + tech, net, 'Contact', + ((1.45,3.415),(1.45,3.635),(1.67,3.635),(1.67,3.415),(1.45,3.415)), + ) + createRL( + tech, net, 'Contact', + ((1.45,3.915),(1.45,4.135),(1.67,4.135),(1.67,3.915),(1.45,3.915)), + ) + createRL( + tech, net, 'Contact', + ((3.49,1.915),(3.49,2.135),(3.71,2.135),(3.71,1.915),(3.49,1.915)), + ) + createRL( + tech, net, 'Contact', + ((3.49,2.415),(3.49,2.635),(3.71,2.635),(3.71,2.415),(3.49,2.415)), + ) + createRL( + tech, net, 'Contact', + ((3.49,2.915),(3.49,3.135),(3.71,3.135),(3.71,2.915),(3.49,2.915)), + ) + createRL( + tech, net, 'Contact', + ((3.49,3.415),(3.49,3.635),(3.71,3.635),(3.71,3.415),(3.49,3.415)), + ) + createRL( + tech, net, 'Contact', + ((3.49,3.915),(3.49,4.135),(3.71,4.135),(3.71,3.915),(3.49,3.915)), + ) + createRL( + tech, net, 'Contact', + ((1.45,7.675),(1.45,7.895),(1.67,7.895),(1.67,7.675),(1.45,7.675)), + ) + createRL( + tech, net, 'Contact', + ((1.45,8.175),(1.45,8.395),(1.67,8.395),(1.67,8.175),(1.45,8.175)), + ) + createRL( + tech, net, 'Contact', + ((1.45,8.675),(1.45,8.895),(1.67,8.895),(1.67,8.675),(1.45,8.675)), + ) + createRL( + tech, net, 'Contact', + ((1.45,9.175),(1.45,9.395),(1.67,9.395),(1.67,9.175),(1.45,9.175)), + ) + createRL( + tech, net, 'Contact', + ((1.45,9.675),(1.45,9.895),(1.67,9.895),(1.67,9.675),(1.45,9.675)), + ) + createRL( + tech, net, 'Contact', + ((1.45,10.175),(1.45,10.395),(1.67,10.395),(1.67,10.175),(1.45,10.175)), + ) + createRL( + tech, net, 'Contact', + ((1.45,10.675),(1.45,10.895),(1.67,10.895),(1.67,10.675),(1.45,10.675)), + ) + createRL( + tech, net, 'Contact', + ((1.45,11.175),(1.45,11.395),(1.67,11.395),(1.67,11.175),(1.45,11.175)), + ) + createRL( + tech, net, 'Contact', + ((1.45,11.675),(1.45,11.895),(1.67,11.895),(1.67,11.675),(1.45,11.675)), + ) + createRL( + tech, net, 'Contact', + ((3.49,7.675),(3.49,7.895),(3.71,7.895),(3.71,7.675),(3.49,7.675)), + ) + createRL( + tech, net, 'Contact', + ((3.49,8.175),(3.49,8.395),(3.71,8.395),(3.71,8.175),(3.49,8.175)), + ) + createRL( + tech, net, 'Contact', + ((3.49,8.675),(3.49,8.895),(3.71,8.895),(3.71,8.675),(3.49,8.675)), + ) + createRL( + tech, net, 'Contact', + ((3.49,9.175),(3.49,9.395),(3.71,9.395),(3.71,9.175),(3.49,9.175)), + ) + createRL( + tech, net, 'Contact', + ((3.49,9.675),(3.49,9.895),(3.71,9.895),(3.71,9.675),(3.49,9.675)), + ) + createRL( + tech, net, 'Contact', + ((3.49,10.175),(3.49,10.395),(3.71,10.395),(3.71,10.175),(3.49,10.175)), + ) + createRL( + tech, net, 'Contact', + ((3.49,10.675),(3.49,10.895),(3.71,10.895),(3.71,10.675),(3.49,10.675)), + ) + createRL( + tech, net, 'Contact', + ((3.49,11.175),(3.49,11.395),(3.71,11.395),(3.71,11.175),(3.49,11.175)), + ) + createRL( + tech, net, 'Contact', + ((3.49,11.675),(3.49,11.895),(3.71,11.895),(3.71,11.675),(3.49,11.675)), + ) + createRL( + tech, net, 'Metal1', + ((1.39,1.91),(1.39,12.09),(1.73,12.09),(1.73,7.48),(1.65,7.48),(1.65,6.85),(3.43,6.85),(3.43,12.09),(3.77,12.09),(3.77,1.91),(3.43,1.91),(3.43,6.59),(1.65,6.59),(1.65,4.14),(1.73,4.14),(1.73,1.91),(1.39,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.52), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.52), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i'].setDirection(Net.Direction.IN) + nets['nq'].setDirection(Net.Direction.OUT) + + cell = new_cells['buf_x1'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(4.2), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'i': Net.create(cell, 'i'), + 'ni': Net.create(cell, 'ni'), + 'q': Net.create(cell, 'q'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['ni'] + createRL( + tech, net, 'COMP', + ((0.36,3.205),(0.36,3.905),(0.8,3.905),(0.8,3.205),(0.36,3.205)), + ) + createRL( + tech, net, 'COMP', + ((0.36,7.575),(0.36,8.975),(0.8,8.975),(0.8,7.575),(0.36,7.575)), + ) + createRL( + tech, net, 'Contact', + ((0.43,5.63),(0.43,5.85),(0.65,5.85),(0.65,5.63),(0.43,5.63)), + ) + createRL( + tech, net, 'Contact', + ((0.43,7.665),(0.43,7.885),(0.65,7.885),(0.65,7.665),(0.43,7.665)), + ) + createRL( + tech, net, 'Contact', + ((0.43,8.165),(0.43,8.385),(0.65,8.385),(0.65,8.165),(0.43,8.165)), + ) + createRL( + tech, net, 'Contact', + ((0.43,8.665),(0.43,8.885),(0.65,8.885),(0.65,8.665),(0.43,8.665)), + ) + createRL( + tech, net, 'Contact', + ((0.43,3.445),(0.43,3.665),(0.65,3.665),(0.65,3.445),(0.43,3.445)), + ) + createRL( + tech, net, 'Metal1', + ((0.37,3.205),(0.37,8.975),(0.71,8.975),(0.71,3.205),(0.37,3.205)), + ) + createRL( + tech, net, 'Poly2', + ((1.82,1.165),(1.82,5.56),(0.36,5.56),(0.36,5.92),(1.82,5.92),(1.82,12.835),(2.1,12.835),(2.1,1.165),(1.82,1.165)), + ) + net = nets['*'] + createRL( + tech, net, 'Nplus', + ((1.22,1.155),(1.22,2.975),(0.2,2.975),(0.2,4.135),(2.7,4.135),(2.7,1.155),(1.22,1.155)), + ) + createRL( + tech, net, 'Nplus', + ((0.27,12.98),(0.27,13.8),(3.93,13.8),(3.93,12.98),(0.27,12.98)), + ) + createRL( + tech, net, 'Pplus', + ((0.2,7.345),(0.2,9.205),(1.22,9.205),(1.22,12.845),(2.7,12.845),(2.7,7.345),(0.2,7.345)), + ) + createRL( + tech, net, 'Pplus', + ((0.27,0.2),(0.27,1.02),(3.93,1.02),(3.93,0.2),(0.27,0.2)), + ) + net = nets['vdd'] + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(4.8,14.6),(4.8,6.72),(-0.6,6.72)), + ) + createRL( + tech, net, 'COMP', + ((0.43,13.21),(0.43,13.57),(3.77,13.57),(3.77,13.21),(0.43,13.21)), + ) + createRL( + tech, net, 'COMP', + ((0.8,7.575),(0.8,8.975),(1.38,8.975),(1.38,12.615),(2.1,12.615),(2.1,7.575),(0.8,7.575)), + ) + createRL( + tech, net, 'Contact', + ((1.45,12.325),(1.45,12.545),(1.67,12.545),(1.67,12.325),(1.45,12.325)), + ) + createRL( + tech, net, 'Contact', + ((0.74,13.28),(0.74,13.5),(0.96,13.5),(0.96,13.28),(0.74,13.28)), + ) + createRL( + tech, net, 'Contact', + ((1.24,13.28),(1.24,13.5),(1.46,13.5),(1.46,13.28),(1.24,13.28)), + ) + createRL( + tech, net, 'Contact', + ((1.74,13.28),(1.74,13.5),(1.96,13.5),(1.96,13.28),(1.74,13.28)), + ) + createRL( + tech, net, 'Contact', + ((2.24,13.28),(2.24,13.5),(2.46,13.5),(2.46,13.28),(2.24,13.28)), + ) + createRL( + tech, net, 'Contact', + ((2.74,13.28),(2.74,13.5),(2.96,13.5),(2.96,13.28),(2.74,13.28)), + ) + createRL( + tech, net, 'Contact', + ((3.24,13.28),(3.24,13.5),(3.46,13.5),(3.46,13.28),(3.24,13.28)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(4.2,14.0),(4.2,12.32),(0.0,12.32)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(4.2), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(4.2), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((0.43,0.43),(0.43,0.79),(3.77,0.79),(3.77,0.43),(0.43,0.43)), + ) + createRL( + tech, net, 'COMP', + ((1.38,1.385),(1.38,3.205),(0.8,3.205),(0.8,3.905),(2.1,3.905),(2.1,1.385),(1.38,1.385)), + ) + createRL( + tech, net, 'Contact', + ((1.45,1.455),(1.45,1.675),(1.67,1.675),(1.67,1.455),(1.45,1.455)), + ) + createRL( + tech, net, 'Contact', + ((0.74,0.5),(0.74,0.72),(0.96,0.72),(0.96,0.5),(0.74,0.5)), + ) + createRL( + tech, net, 'Contact', + ((1.24,0.5),(1.24,0.72),(1.46,0.72),(1.46,0.5),(1.24,0.5)), + ) + createRL( + tech, net, 'Contact', + ((1.74,0.5),(1.74,0.72),(1.96,0.72),(1.96,0.5),(1.74,0.5)), + ) + createRL( + tech, net, 'Contact', + ((2.24,0.5),(2.24,0.72),(2.46,0.72),(2.46,0.5),(2.24,0.5)), + ) + createRL( + tech, net, 'Contact', + ((2.74,0.5),(2.74,0.72),(2.96,0.72),(2.96,0.5),(2.74,0.5)), + ) + createRL( + tech, net, 'Contact', + ((3.24,0.5),(3.24,0.72),(3.46,0.72),(3.46,0.5),(3.24,0.5)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(4.2,1.68),(4.2,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(4.2), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(4.2), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['i'] + createRL( + tech, net, 'Poly2', + ((0.8,2.985),(0.8,4.565),(1.235,4.565),(1.235,4.205),(1.08,4.205),(1.08,2.985),(0.8,2.985)), + ) + createRL( + tech, net, 'Poly2', + ((0.8,6.915),(0.8,9.195),(1.08,9.195),(1.08,7.275),(1.235,7.275),(1.235,6.915),(0.8,6.915)), + ) + createRL( + tech, net, 'Contact', + ((0.945,4.275),(0.945,4.495),(1.165,4.495),(1.165,4.275),(0.945,4.275)), + ) + createRL( + tech, net, 'Contact', + ((0.945,6.985),(0.945,7.205),(1.165,7.205),(1.165,6.985),(0.945,6.985)), + ) + createRL( + tech, net, 'Metal1', + ((0.94,1.91),(0.94,12.09),(1.2,12.09),(1.2,1.91),(0.94,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.07), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.07), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['q'] + createRL( + tech, net, 'COMP', + ((2.1,7.575),(2.1,12.615),(2.54,12.615),(2.54,7.575),(2.1,7.575)), + ) + createRL( + tech, net, 'COMP', + ((2.1,1.385),(2.1,3.905),(2.54,3.905),(2.54,1.385),(2.1,1.385)), + ) + createRL( + tech, net, 'Contact', + ((2.25,2.05),(2.25,2.27),(2.47,2.27),(2.47,2.05),(2.25,2.05)), + ) + createRL( + tech, net, 'Contact', + ((2.25,2.55),(2.25,2.77),(2.47,2.77),(2.47,2.55),(2.25,2.55)), + ) + createRL( + tech, net, 'Contact', + ((2.25,3.05),(2.25,3.27),(2.47,3.27),(2.47,3.05),(2.25,3.05)), + ) + createRL( + tech, net, 'Contact', + ((2.25,3.55),(2.25,3.77),(2.47,3.77),(2.47,3.55),(2.25,3.55)), + ) + createRL( + tech, net, 'Contact', + ((2.25,7.72),(2.25,7.94),(2.47,7.94),(2.47,7.72),(2.25,7.72)), + ) + createRL( + tech, net, 'Contact', + ((2.25,8.22),(2.25,8.44),(2.47,8.44),(2.47,8.22),(2.25,8.22)), + ) + createRL( + tech, net, 'Contact', + ((2.25,8.72),(2.25,8.94),(2.47,8.94),(2.47,8.72),(2.25,8.72)), + ) + createRL( + tech, net, 'Contact', + ((2.25,9.22),(2.25,9.44),(2.47,9.44),(2.47,9.22),(2.25,9.22)), + ) + createRL( + tech, net, 'Contact', + ((2.25,9.72),(2.25,9.94),(2.47,9.94),(2.47,9.72),(2.25,9.72)), + ) + createRL( + tech, net, 'Contact', + ((2.25,10.22),(2.25,10.44),(2.47,10.44),(2.47,10.22),(2.25,10.22)), + ) + createRL( + tech, net, 'Contact', + ((2.25,10.72),(2.25,10.94),(2.47,10.94),(2.47,10.72),(2.25,10.72)), + ) + createRL( + tech, net, 'Contact', + ((2.25,11.22),(2.25,11.44),(2.47,11.44),(2.47,11.22),(2.25,11.22)), + ) + createRL( + tech, net, 'Contact', + ((2.25,11.72),(2.25,11.94),(2.47,11.94),(2.47,11.72),(2.25,11.72)), + ) + createRL( + tech, net, 'Metal1', + ((2.19,1.915),(2.19,12.085),(2.53,12.085),(2.53,7.575),(2.45,7.575),(2.45,3.905),(2.53,3.905),(2.53,1.915),(2.19,1.915)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.32), u(0.26), u(1.915), u(12.085), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.32), u(0.26), u(1.915), u(12.085), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i'].setDirection(Net.Direction.IN) + nets['q'].setDirection(Net.Direction.OUT) + + cell = new_cells['buf_x2'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(4.2), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'i': Net.create(cell, 'i'), + 'ni': Net.create(cell, 'ni'), + 'q': Net.create(cell, 'q'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['ni'] + createRL( + tech, net, 'COMP', + ((0.36,7.575),(0.36,10.375),(0.8,10.375),(0.8,7.575),(0.36,7.575)), + ) + createRL( + tech, net, 'COMP', + ((0.36,2.505),(0.36,3.905),(0.8,3.905),(0.8,2.505),(0.36,2.505)), + ) + createRL( + tech, net, 'Contact', + ((0.43,7.865),(0.43,8.085),(0.65,8.085),(0.65,7.865),(0.43,7.865)), + ) + createRL( + tech, net, 'Contact', + ((0.43,8.365),(0.43,8.585),(0.65,8.585),(0.65,8.365),(0.43,8.365)), + ) + createRL( + tech, net, 'Contact', + ((0.43,8.865),(0.43,9.085),(0.65,9.085),(0.65,8.865),(0.43,8.865)), + ) + createRL( + tech, net, 'Contact', + ((0.43,9.365),(0.43,9.585),(0.65,9.585),(0.65,9.365),(0.43,9.365)), + ) + createRL( + tech, net, 'Contact', + ((0.43,9.865),(0.43,10.085),(0.65,10.085),(0.65,9.865),(0.43,9.865)), + ) + createRL( + tech, net, 'Contact', + ((0.43,2.595),(0.43,2.815),(0.65,2.815),(0.65,2.595),(0.43,2.595)), + ) + createRL( + tech, net, 'Contact', + ((0.43,3.095),(0.43,3.315),(0.65,3.315),(0.65,3.095),(0.43,3.095)), + ) + createRL( + tech, net, 'Contact', + ((0.43,3.595),(0.43,3.815),(0.65,3.815),(0.65,3.595),(0.43,3.595)), + ) + createRL( + tech, net, 'Contact', + ((0.43,5.63),(0.43,5.85),(0.65,5.85),(0.65,5.63),(0.43,5.63)), + ) + createRL( + tech, net, 'Metal1', + ((0.37,2.505),(0.37,10.375),(0.71,10.375),(0.71,2.505),(0.37,2.505)), + ) + createRL( + tech, net, 'Poly2', + ((1.82,1.165),(1.82,5.56),(0.36,5.56),(0.36,5.92),(1.82,5.92),(1.82,12.835),(2.1,12.835),(2.1,5.92),(2.62,5.92),(2.62,12.835),(2.9,12.835),(2.9,1.165),(2.62,1.165),(2.62,5.56),(2.1,5.56),(2.1,1.165),(1.82,1.165)), + ) + net = nets['*'] + createRL( + tech, net, 'Nplus', + ((1.22,1.155),(1.22,2.275),(0.2,2.275),(0.2,4.135),(3.5,4.135),(3.5,1.155),(1.22,1.155)), + ) + createRL( + tech, net, 'Nplus', + ((0.27,12.98),(0.27,13.8),(3.93,13.8),(3.93,12.98),(0.27,12.98)), + ) + createRL( + tech, net, 'Pplus', + ((0.27,0.2),(0.27,1.02),(3.93,1.02),(3.93,0.2),(0.27,0.2)), + ) + createRL( + tech, net, 'Pplus', + ((0.2,7.345),(0.2,10.605),(1.22,10.605),(1.22,12.845),(3.5,12.845),(3.5,7.345),(0.2,7.345)), + ) + net = nets['vdd'] + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(4.8,14.6),(4.8,6.72),(-0.6,6.72)), + ) + createRL( + tech, net, 'COMP', + ((0.43,13.21),(0.43,13.57),(3.77,13.57),(3.77,13.21),(0.43,13.21)), + ) + createRL( + tech, net, 'COMP', + ((0.8,7.575),(0.8,10.375),(1.38,10.375),(1.38,12.615),(2.1,12.615),(2.1,7.575),(0.8,7.575)), + ) + createRL( + tech, net, 'COMP', + ((2.62,7.575),(2.62,12.615),(3.34,12.615),(3.34,7.575),(2.62,7.575)), + ) + createRL( + tech, net, 'Contact', + ((1.45,12.325),(1.45,12.545),(1.67,12.545),(1.67,12.325),(1.45,12.325)), + ) + createRL( + tech, net, 'Contact', + ((3.05,7.735),(3.05,7.955),(3.27,7.955),(3.27,7.735),(3.05,7.735)), + ) + createRL( + tech, net, 'Contact', + ((3.05,8.235),(3.05,8.455),(3.27,8.455),(3.27,8.235),(3.05,8.235)), + ) + createRL( + tech, net, 'Contact', + ((3.05,8.735),(3.05,8.955),(3.27,8.955),(3.27,8.735),(3.05,8.735)), + ) + createRL( + tech, net, 'Contact', + ((3.05,9.235),(3.05,9.455),(3.27,9.455),(3.27,9.235),(3.05,9.235)), + ) + createRL( + tech, net, 'Contact', + ((3.05,9.735),(3.05,9.955),(3.27,9.955),(3.27,9.735),(3.05,9.735)), + ) + createRL( + tech, net, 'Contact', + ((3.05,10.235),(3.05,10.455),(3.27,10.455),(3.27,10.235),(3.05,10.235)), + ) + createRL( + tech, net, 'Contact', + ((3.05,10.735),(3.05,10.955),(3.27,10.955),(3.27,10.735),(3.05,10.735)), + ) + createRL( + tech, net, 'Contact', + ((3.05,11.235),(3.05,11.455),(3.27,11.455),(3.27,11.235),(3.05,11.235)), + ) + createRL( + tech, net, 'Contact', + ((3.05,11.735),(3.05,11.955),(3.27,11.955),(3.27,11.735),(3.05,11.735)), + ) + createRL( + tech, net, 'Contact', + ((3.05,12.235),(3.05,12.455),(3.27,12.455),(3.27,12.235),(3.05,12.235)), + ) + createRL( + tech, net, 'Contact', + ((0.74,13.28),(0.74,13.5),(0.96,13.5),(0.96,13.28),(0.74,13.28)), + ) + createRL( + tech, net, 'Contact', + ((1.24,13.28),(1.24,13.5),(1.46,13.5),(1.46,13.28),(1.24,13.28)), + ) + createRL( + tech, net, 'Contact', + ((1.74,13.28),(1.74,13.5),(1.96,13.5),(1.96,13.28),(1.74,13.28)), + ) + createRL( + tech, net, 'Contact', + ((2.24,13.28),(2.24,13.5),(2.46,13.5),(2.46,13.28),(2.24,13.28)), + ) + createRL( + tech, net, 'Contact', + ((2.74,13.28),(2.74,13.5),(2.96,13.5),(2.96,13.28),(2.74,13.28)), + ) + createRL( + tech, net, 'Contact', + ((3.24,13.28),(3.24,13.5),(3.46,13.5),(3.46,13.28),(3.24,13.28)), + ) + createRL( + tech, net, 'Metal1', + ((2.99,7.575),(2.99,12.32),(0.0,12.32),(0.0,14.0),(4.2,14.0),(4.2,12.32),(3.33,12.32),(3.33,7.575),(2.99,7.575)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(4.2), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(4.2), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((1.38,1.385),(1.38,2.505),(0.8,2.505),(0.8,3.905),(2.1,3.905),(2.1,1.385),(1.38,1.385)), + ) + createRL( + tech, net, 'COMP', + ((0.43,0.43),(0.43,0.79),(3.77,0.79),(3.77,0.43),(0.43,0.43)), + ) + createRL( + tech, net, 'COMP', + ((2.62,1.385),(2.62,3.905),(3.34,3.905),(3.34,1.385),(2.62,1.385)), + ) + createRL( + tech, net, 'Contact', + ((3.05,1.535),(3.05,1.755),(3.27,1.755),(3.27,1.535),(3.05,1.535)), + ) + createRL( + tech, net, 'Contact', + ((3.05,2.035),(3.05,2.255),(3.27,2.255),(3.27,2.035),(3.05,2.035)), + ) + createRL( + tech, net, 'Contact', + ((3.05,2.535),(3.05,2.755),(3.27,2.755),(3.27,2.535),(3.05,2.535)), + ) + createRL( + tech, net, 'Contact', + ((3.05,3.035),(3.05,3.255),(3.27,3.255),(3.27,3.035),(3.05,3.035)), + ) + createRL( + tech, net, 'Contact', + ((3.05,3.535),(3.05,3.755),(3.27,3.755),(3.27,3.535),(3.05,3.535)), + ) + createRL( + tech, net, 'Contact', + ((1.45,1.455),(1.45,1.675),(1.67,1.675),(1.67,1.455),(1.45,1.455)), + ) + createRL( + tech, net, 'Contact', + ((0.74,0.5),(0.74,0.72),(0.96,0.72),(0.96,0.5),(0.74,0.5)), + ) + createRL( + tech, net, 'Contact', + ((1.24,0.5),(1.24,0.72),(1.46,0.72),(1.46,0.5),(1.24,0.5)), + ) + createRL( + tech, net, 'Contact', + ((1.74,0.5),(1.74,0.72),(1.96,0.72),(1.96,0.5),(1.74,0.5)), + ) + createRL( + tech, net, 'Contact', + ((2.24,0.5),(2.24,0.72),(2.46,0.72),(2.46,0.5),(2.24,0.5)), + ) + createRL( + tech, net, 'Contact', + ((2.74,0.5),(2.74,0.72),(2.96,0.72),(2.96,0.5),(2.74,0.5)), + ) + createRL( + tech, net, 'Contact', + ((3.24,0.5),(3.24,0.72),(3.46,0.72),(3.46,0.5),(3.24,0.5)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(2.99,1.68),(2.99,3.905),(3.33,3.905),(3.33,1.68),(4.2,1.68),(4.2,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(4.2), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(4.2), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['i'] + createRL( + tech, net, 'Poly2', + ((0.8,2.285),(0.8,4.565),(1.235,4.565),(1.235,4.205),(1.08,4.205),(1.08,2.285),(0.8,2.285)), + ) + createRL( + tech, net, 'Poly2', + ((0.8,6.915),(0.8,10.595),(1.08,10.595),(1.08,7.275),(1.235,7.275),(1.235,6.915),(0.8,6.915)), + ) + createRL( + tech, net, 'Contact', + ((0.945,4.275),(0.945,4.495),(1.165,4.495),(1.165,4.275),(0.945,4.275)), + ) + createRL( + tech, net, 'Contact', + ((0.945,6.985),(0.945,7.205),(1.165,7.205),(1.165,6.985),(0.945,6.985)), + ) + createRL( + tech, net, 'Metal1', + ((0.94,1.91),(0.94,12.09),(1.2,12.09),(1.2,1.91),(0.94,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.07), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.07), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['q'] + createRL( + tech, net, 'COMP', + ((2.1,1.385),(2.1,3.905),(2.62,3.905),(2.62,1.385),(2.1,1.385)), + ) + createRL( + tech, net, 'COMP', + ((2.1,7.575),(2.1,12.615),(2.62,12.615),(2.62,7.575),(2.1,7.575)), + ) + createRL( + tech, net, 'Contact', + ((2.25,2.05),(2.25,2.27),(2.47,2.27),(2.47,2.05),(2.25,2.05)), + ) + createRL( + tech, net, 'Contact', + ((2.25,2.55),(2.25,2.77),(2.47,2.77),(2.47,2.55),(2.25,2.55)), + ) + createRL( + tech, net, 'Contact', + ((2.25,3.05),(2.25,3.27),(2.47,3.27),(2.47,3.05),(2.25,3.05)), + ) + createRL( + tech, net, 'Contact', + ((2.25,3.55),(2.25,3.77),(2.47,3.77),(2.47,3.55),(2.25,3.55)), + ) + createRL( + tech, net, 'Contact', + ((2.25,7.72),(2.25,7.94),(2.47,7.94),(2.47,7.72),(2.25,7.72)), + ) + createRL( + tech, net, 'Contact', + ((2.25,8.22),(2.25,8.44),(2.47,8.44),(2.47,8.22),(2.25,8.22)), + ) + createRL( + tech, net, 'Contact', + ((2.25,8.72),(2.25,8.94),(2.47,8.94),(2.47,8.72),(2.25,8.72)), + ) + createRL( + tech, net, 'Contact', + ((2.25,9.22),(2.25,9.44),(2.47,9.44),(2.47,9.22),(2.25,9.22)), + ) + createRL( + tech, net, 'Contact', + ((2.25,9.72),(2.25,9.94),(2.47,9.94),(2.47,9.72),(2.25,9.72)), + ) + createRL( + tech, net, 'Contact', + ((2.25,10.22),(2.25,10.44),(2.47,10.44),(2.47,10.22),(2.25,10.22)), + ) + createRL( + tech, net, 'Contact', + ((2.25,10.72),(2.25,10.94),(2.47,10.94),(2.47,10.72),(2.25,10.72)), + ) + createRL( + tech, net, 'Contact', + ((2.25,11.22),(2.25,11.44),(2.47,11.44),(2.47,11.22),(2.25,11.22)), + ) + createRL( + tech, net, 'Contact', + ((2.25,11.72),(2.25,11.94),(2.47,11.94),(2.47,11.72),(2.25,11.72)), + ) + createRL( + tech, net, 'Metal1', + ((2.19,1.915),(2.19,12.085),(2.53,12.085),(2.53,7.575),(2.45,7.575),(2.45,3.905),(2.53,3.905),(2.53,1.915),(2.19,1.915)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.32), u(0.26), u(1.915), u(12.085), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.32), u(0.26), u(1.915), u(12.085), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i'].setDirection(Net.Direction.IN) + nets['q'].setDirection(Net.Direction.OUT) + + cell = new_cells['buf_x4'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(5.6000000000000005), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'i': Net.create(cell, 'i'), + 'ni': Net.create(cell, 'ni'), + 'q': Net.create(cell, 'q'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['ni'] + createRL( + tech, net, 'COMP', + ((0.5,1.385),(0.5,1.915),(0.36,1.915),(0.36,3.905),(0.8,3.905),(0.8,1.385),(0.5,1.385)), + ) + createRL( + tech, net, 'COMP', + ((0.36,7.575),(0.36,12.085),(0.5,12.085),(0.5,12.615),(0.8,12.615),(0.8,7.575),(0.36,7.575)), + ) + createRL( + tech, net, 'Contact', + ((0.43,2.05),(0.43,2.27),(0.65,2.27),(0.65,2.05),(0.43,2.05)), + ) + createRL( + tech, net, 'Contact', + ((0.43,2.55),(0.43,2.77),(0.65,2.77),(0.65,2.55),(0.43,2.55)), + ) + createRL( + tech, net, 'Contact', + ((0.43,3.05),(0.43,3.27),(0.65,3.27),(0.65,3.05),(0.43,3.05)), + ) + createRL( + tech, net, 'Contact', + ((0.43,3.55),(0.43,3.77),(0.65,3.77),(0.65,3.55),(0.43,3.55)), + ) + createRL( + tech, net, 'Contact', + ((0.43,7.72),(0.43,7.94),(0.65,7.94),(0.65,7.72),(0.43,7.72)), + ) + createRL( + tech, net, 'Contact', + ((0.43,8.22),(0.43,8.44),(0.65,8.44),(0.65,8.22),(0.43,8.22)), + ) + createRL( + tech, net, 'Contact', + ((0.43,8.72),(0.43,8.94),(0.65,8.94),(0.65,8.72),(0.43,8.72)), + ) + createRL( + tech, net, 'Contact', + ((0.43,9.22),(0.43,9.44),(0.65,9.44),(0.65,9.22),(0.43,9.22)), + ) + createRL( + tech, net, 'Contact', + ((0.43,9.72),(0.43,9.94),(0.65,9.94),(0.65,9.72),(0.43,9.72)), + ) + createRL( + tech, net, 'Contact', + ((0.43,10.22),(0.43,10.44),(0.65,10.44),(0.65,10.22),(0.43,10.22)), + ) + createRL( + tech, net, 'Contact', + ((0.43,10.72),(0.43,10.94),(0.65,10.94),(0.65,10.72),(0.43,10.72)), + ) + createRL( + tech, net, 'Contact', + ((0.43,11.22),(0.43,11.44),(0.65,11.44),(0.65,11.22),(0.43,11.22)), + ) + createRL( + tech, net, 'Contact', + ((0.43,11.72),(0.43,11.94),(0.65,11.94),(0.65,11.72),(0.43,11.72)), + ) + createRL( + tech, net, 'Contact', + ((0.43,5.63),(0.43,5.85),(0.65,5.85),(0.65,5.63),(0.43,5.63)), + ) + createRL( + tech, net, 'Metal1', + ((0.37,1.915),(0.37,12.085),(0.71,12.085),(0.71,1.915),(0.37,1.915)), + ) + createRL( + tech, net, 'Poly2', + ((1.82,1.165),(1.82,5.56),(0.36,5.56),(0.36,5.92),(1.82,5.92),(1.82,12.835),(2.1,12.835),(2.1,5.92),(2.62,5.92),(2.62,12.835),(2.9,12.835),(2.9,5.92),(3.42,5.92),(3.42,12.835),(3.7,12.835),(3.7,5.92),(4.22,5.92),(4.22,12.835),(4.5,12.835),(4.5,1.165),(4.22,1.165),(4.22,5.56),(3.7,5.56),(3.7,1.165),(3.42,1.165),(3.42,5.56),(2.9,5.56),(2.9,1.165),(2.62,1.165),(2.62,5.56),(2.1,5.56),(2.1,1.165),(1.82,1.165)), + ) + net = nets['*'] + createRL( + tech, net, 'Nplus', + ((0.34,1.155),(0.34,1.685),(0.2,1.685),(0.2,4.135),(5.1,4.135),(5.1,1.155),(0.34,1.155)), + ) + createRL( + tech, net, 'Nplus', + ((0.27,12.98),(0.27,13.8),(5.33,13.8),(5.33,12.98),(0.27,12.98)), + ) + createRL( + tech, net, 'Pplus', + ((0.27,0.2),(0.27,1.02),(5.33,1.02),(5.33,0.2),(0.27,0.2)), + ) + createRL( + tech, net, 'Pplus', + ((0.2,7.345),(0.2,12.315),(0.34,12.315),(0.34,12.845),(5.1,12.845),(5.1,7.345),(0.2,7.345)), + ) + net = nets['vdd'] + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(6.2,14.6),(6.2,6.72),(-0.6,6.72)), + ) + createRL( + tech, net, 'COMP', + ((0.8,7.575),(0.8,12.615),(2.1,12.615),(2.1,7.575),(0.8,7.575)), + ) + createRL( + tech, net, 'COMP', + ((4.22,7.575),(4.22,12.615),(4.94,12.615),(4.94,7.575),(4.22,7.575)), + ) + createRL( + tech, net, 'COMP', + ((0.43,13.21),(0.43,13.57),(5.17,13.57),(5.17,13.21),(0.43,13.21)), + ) + createRL( + tech, net, 'COMP', + ((2.62,7.575),(2.62,12.615),(3.7,12.615),(3.7,7.575),(2.62,7.575)), + ) + createRL( + tech, net, 'Contact', + ((1.45,12.325),(1.45,12.545),(1.67,12.545),(1.67,12.325),(1.45,12.325)), + ) + createRL( + tech, net, 'Contact', + ((0.69,13.28),(0.69,13.5),(0.91,13.5),(0.91,13.28),(0.69,13.28)), + ) + createRL( + tech, net, 'Contact', + ((1.19,13.28),(1.19,13.5),(1.41,13.5),(1.41,13.28),(1.19,13.28)), + ) + createRL( + tech, net, 'Contact', + ((1.69,13.28),(1.69,13.5),(1.91,13.5),(1.91,13.28),(1.69,13.28)), + ) + createRL( + tech, net, 'Contact', + ((2.19,13.28),(2.19,13.5),(2.41,13.5),(2.41,13.28),(2.19,13.28)), + ) + createRL( + tech, net, 'Contact', + ((2.69,13.28),(2.69,13.5),(2.91,13.5),(2.91,13.28),(2.69,13.28)), + ) + createRL( + tech, net, 'Contact', + ((3.19,13.28),(3.19,13.5),(3.41,13.5),(3.41,13.28),(3.19,13.28)), + ) + createRL( + tech, net, 'Contact', + ((3.69,13.28),(3.69,13.5),(3.91,13.5),(3.91,13.28),(3.69,13.28)), + ) + createRL( + tech, net, 'Contact', + ((4.19,13.28),(4.19,13.5),(4.41,13.5),(4.41,13.28),(4.19,13.28)), + ) + createRL( + tech, net, 'Contact', + ((4.69,13.28),(4.69,13.5),(4.91,13.5),(4.91,13.28),(4.69,13.28)), + ) + createRL( + tech, net, 'Contact', + ((3.05,7.735),(3.05,7.955),(3.27,7.955),(3.27,7.735),(3.05,7.735)), + ) + createRL( + tech, net, 'Contact', + ((3.05,8.235),(3.05,8.455),(3.27,8.455),(3.27,8.235),(3.05,8.235)), + ) + createRL( + tech, net, 'Contact', + ((3.05,8.735),(3.05,8.955),(3.27,8.955),(3.27,8.735),(3.05,8.735)), + ) + createRL( + tech, net, 'Contact', + ((3.05,9.235),(3.05,9.455),(3.27,9.455),(3.27,9.235),(3.05,9.235)), + ) + createRL( + tech, net, 'Contact', + ((3.05,9.735),(3.05,9.955),(3.27,9.955),(3.27,9.735),(3.05,9.735)), + ) + createRL( + tech, net, 'Contact', + ((3.05,10.235),(3.05,10.455),(3.27,10.455),(3.27,10.235),(3.05,10.235)), + ) + createRL( + tech, net, 'Contact', + ((3.05,10.735),(3.05,10.955),(3.27,10.955),(3.27,10.735),(3.05,10.735)), + ) + createRL( + tech, net, 'Contact', + ((3.05,11.235),(3.05,11.455),(3.27,11.455),(3.27,11.235),(3.05,11.235)), + ) + createRL( + tech, net, 'Contact', + ((3.05,11.735),(3.05,11.955),(3.27,11.955),(3.27,11.735),(3.05,11.735)), + ) + createRL( + tech, net, 'Contact', + ((3.05,12.235),(3.05,12.455),(3.27,12.455),(3.27,12.235),(3.05,12.235)), + ) + createRL( + tech, net, 'Contact', + ((4.65,7.735),(4.65,7.955),(4.87,7.955),(4.87,7.735),(4.65,7.735)), + ) + createRL( + tech, net, 'Contact', + ((4.65,8.235),(4.65,8.455),(4.87,8.455),(4.87,8.235),(4.65,8.235)), + ) + createRL( + tech, net, 'Contact', + ((4.65,8.735),(4.65,8.955),(4.87,8.955),(4.87,8.735),(4.65,8.735)), + ) + createRL( + tech, net, 'Contact', + ((4.65,9.235),(4.65,9.455),(4.87,9.455),(4.87,9.235),(4.65,9.235)), + ) + createRL( + tech, net, 'Contact', + ((4.65,9.735),(4.65,9.955),(4.87,9.955),(4.87,9.735),(4.65,9.735)), + ) + createRL( + tech, net, 'Contact', + ((4.65,10.235),(4.65,10.455),(4.87,10.455),(4.87,10.235),(4.65,10.235)), + ) + createRL( + tech, net, 'Contact', + ((4.65,10.735),(4.65,10.955),(4.87,10.955),(4.87,10.735),(4.65,10.735)), + ) + createRL( + tech, net, 'Contact', + ((4.65,11.235),(4.65,11.455),(4.87,11.455),(4.87,11.235),(4.65,11.235)), + ) + createRL( + tech, net, 'Contact', + ((4.65,11.735),(4.65,11.955),(4.87,11.955),(4.87,11.735),(4.65,11.735)), + ) + createRL( + tech, net, 'Contact', + ((4.65,12.235),(4.65,12.455),(4.87,12.455),(4.87,12.235),(4.65,12.235)), + ) + createRL( + tech, net, 'Metal1', + ((2.99,7.575),(2.99,12.32),(0.0,12.32),(0.0,14.0),(5.6,14.0),(5.6,12.32),(4.93,12.32),(4.93,7.575),(4.59,7.575),(4.59,12.32),(3.33,12.32),(3.33,7.575),(2.99,7.575)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((0.8,1.385),(0.8,3.905),(2.1,3.905),(2.1,1.385),(0.8,1.385)), + ) + createRL( + tech, net, 'COMP', + ((0.43,0.43),(0.43,0.79),(5.17,0.79),(5.17,0.43),(0.43,0.43)), + ) + createRL( + tech, net, 'COMP', + ((2.62,1.385),(2.62,3.905),(3.7,3.905),(3.7,1.385),(2.62,1.385)), + ) + createRL( + tech, net, 'COMP', + ((4.22,1.385),(4.22,3.905),(4.94,3.905),(4.94,1.385),(4.22,1.385)), + ) + createRL( + tech, net, 'Contact', + ((4.65,1.535),(4.65,1.755),(4.87,1.755),(4.87,1.535),(4.65,1.535)), + ) + createRL( + tech, net, 'Contact', + ((4.65,2.035),(4.65,2.255),(4.87,2.255),(4.87,2.035),(4.65,2.035)), + ) + createRL( + tech, net, 'Contact', + ((4.65,2.535),(4.65,2.755),(4.87,2.755),(4.87,2.535),(4.65,2.535)), + ) + createRL( + tech, net, 'Contact', + ((4.65,3.035),(4.65,3.255),(4.87,3.255),(4.87,3.035),(4.65,3.035)), + ) + createRL( + tech, net, 'Contact', + ((4.65,3.535),(4.65,3.755),(4.87,3.755),(4.87,3.535),(4.65,3.535)), + ) + createRL( + tech, net, 'Contact', + ((0.69,0.5),(0.69,0.72),(0.91,0.72),(0.91,0.5),(0.69,0.5)), + ) + createRL( + tech, net, 'Contact', + ((1.19,0.5),(1.19,0.72),(1.41,0.72),(1.41,0.5),(1.19,0.5)), + ) + createRL( + tech, net, 'Contact', + ((1.69,0.5),(1.69,0.72),(1.91,0.72),(1.91,0.5),(1.69,0.5)), + ) + createRL( + tech, net, 'Contact', + ((2.19,0.5),(2.19,0.72),(2.41,0.72),(2.41,0.5),(2.19,0.5)), + ) + createRL( + tech, net, 'Contact', + ((2.69,0.5),(2.69,0.72),(2.91,0.72),(2.91,0.5),(2.69,0.5)), + ) + createRL( + tech, net, 'Contact', + ((3.19,0.5),(3.19,0.72),(3.41,0.72),(3.41,0.5),(3.19,0.5)), + ) + createRL( + tech, net, 'Contact', + ((3.69,0.5),(3.69,0.72),(3.91,0.72),(3.91,0.5),(3.69,0.5)), + ) + createRL( + tech, net, 'Contact', + ((4.19,0.5),(4.19,0.72),(4.41,0.72),(4.41,0.5),(4.19,0.5)), + ) + createRL( + tech, net, 'Contact', + ((4.69,0.5),(4.69,0.72),(4.91,0.72),(4.91,0.5),(4.69,0.5)), + ) + createRL( + tech, net, 'Contact', + ((3.05,1.535),(3.05,1.755),(3.27,1.755),(3.27,1.535),(3.05,1.535)), + ) + createRL( + tech, net, 'Contact', + ((3.05,2.035),(3.05,2.255),(3.27,2.255),(3.27,2.035),(3.05,2.035)), + ) + createRL( + tech, net, 'Contact', + ((3.05,2.535),(3.05,2.755),(3.27,2.755),(3.27,2.535),(3.05,2.535)), + ) + createRL( + tech, net, 'Contact', + ((3.05,3.035),(3.05,3.255),(3.27,3.255),(3.27,3.035),(3.05,3.035)), + ) + createRL( + tech, net, 'Contact', + ((3.05,3.535),(3.05,3.755),(3.27,3.755),(3.27,3.535),(3.05,3.535)), + ) + createRL( + tech, net, 'Contact', + ((1.45,1.455),(1.45,1.675),(1.67,1.675),(1.67,1.455),(1.45,1.455)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(2.99,1.68),(2.99,3.905),(3.33,3.905),(3.33,1.68),(4.59,1.68),(4.59,3.905),(4.93,3.905),(4.93,1.68),(5.6,1.68),(5.6,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['i'] + createRL( + tech, net, 'Poly2', + ((0.8,6.915),(0.8,12.835),(1.08,12.835),(1.08,7.275),(1.235,7.275),(1.235,6.915),(0.8,6.915)), + ) + createRL( + tech, net, 'Poly2', + ((0.8,1.165),(0.8,4.565),(1.235,4.565),(1.235,4.205),(1.08,4.205),(1.08,1.165),(0.8,1.165)), + ) + createRL( + tech, net, 'Contact', + ((0.945,4.275),(0.945,4.495),(1.165,4.495),(1.165,4.275),(0.945,4.275)), + ) + createRL( + tech, net, 'Contact', + ((0.945,6.985),(0.945,7.205),(1.165,7.205),(1.165,6.985),(0.945,6.985)), + ) + createRL( + tech, net, 'Metal1', + ((0.94,1.91),(0.94,12.09),(1.2,12.09),(1.2,1.91),(0.94,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.07), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.07), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['q'] + createRL( + tech, net, 'COMP', + ((2.1,7.575),(2.1,12.615),(2.62,12.615),(2.62,7.575),(2.1,7.575)), + ) + createRL( + tech, net, 'COMP', + ((2.1,1.385),(2.1,3.905),(2.62,3.905),(2.62,1.385),(2.1,1.385)), + ) + createRL( + tech, net, 'COMP', + ((3.7,1.385),(3.7,3.905),(4.22,3.905),(4.22,1.385),(3.7,1.385)), + ) + createRL( + tech, net, 'COMP', + ((3.7,7.575),(3.7,12.615),(4.22,12.615),(4.22,7.575),(3.7,7.575)), + ) + createRL( + tech, net, 'Contact', + ((2.25,2.05),(2.25,2.27),(2.47,2.27),(2.47,2.05),(2.25,2.05)), + ) + createRL( + tech, net, 'Contact', + ((2.25,2.55),(2.25,2.77),(2.47,2.77),(2.47,2.55),(2.25,2.55)), + ) + createRL( + tech, net, 'Contact', + ((2.25,3.05),(2.25,3.27),(2.47,3.27),(2.47,3.05),(2.25,3.05)), + ) + createRL( + tech, net, 'Contact', + ((2.25,3.55),(2.25,3.77),(2.47,3.77),(2.47,3.55),(2.25,3.55)), + ) + createRL( + tech, net, 'Contact', + ((2.25,7.72),(2.25,7.94),(2.47,7.94),(2.47,7.72),(2.25,7.72)), + ) + createRL( + tech, net, 'Contact', + ((2.25,8.22),(2.25,8.44),(2.47,8.44),(2.47,8.22),(2.25,8.22)), + ) + createRL( + tech, net, 'Contact', + ((2.25,8.72),(2.25,8.94),(2.47,8.94),(2.47,8.72),(2.25,8.72)), + ) + createRL( + tech, net, 'Contact', + ((2.25,9.22),(2.25,9.44),(2.47,9.44),(2.47,9.22),(2.25,9.22)), + ) + createRL( + tech, net, 'Contact', + ((2.25,9.72),(2.25,9.94),(2.47,9.94),(2.47,9.72),(2.25,9.72)), + ) + createRL( + tech, net, 'Contact', + ((2.25,10.22),(2.25,10.44),(2.47,10.44),(2.47,10.22),(2.25,10.22)), + ) + createRL( + tech, net, 'Contact', + ((2.25,10.72),(2.25,10.94),(2.47,10.94),(2.47,10.72),(2.25,10.72)), + ) + createRL( + tech, net, 'Contact', + ((2.25,11.22),(2.25,11.44),(2.47,11.44),(2.47,11.22),(2.25,11.22)), + ) + createRL( + tech, net, 'Contact', + ((2.25,11.72),(2.25,11.94),(2.47,11.94),(2.47,11.72),(2.25,11.72)), + ) + createRL( + tech, net, 'Contact', + ((3.85,2.05),(3.85,2.27),(4.07,2.27),(4.07,2.05),(3.85,2.05)), + ) + createRL( + tech, net, 'Contact', + ((3.85,2.55),(3.85,2.77),(4.07,2.77),(4.07,2.55),(3.85,2.55)), + ) + createRL( + tech, net, 'Contact', + ((3.85,3.05),(3.85,3.27),(4.07,3.27),(4.07,3.05),(3.85,3.05)), + ) + createRL( + tech, net, 'Contact', + ((3.85,3.55),(3.85,3.77),(4.07,3.77),(4.07,3.55),(3.85,3.55)), + ) + createRL( + tech, net, 'Contact', + ((3.85,7.72),(3.85,7.94),(4.07,7.94),(4.07,7.72),(3.85,7.72)), + ) + createRL( + tech, net, 'Contact', + ((3.85,8.22),(3.85,8.44),(4.07,8.44),(4.07,8.22),(3.85,8.22)), + ) + createRL( + tech, net, 'Contact', + ((3.85,8.72),(3.85,8.94),(4.07,8.94),(4.07,8.72),(3.85,8.72)), + ) + createRL( + tech, net, 'Contact', + ((3.85,9.22),(3.85,9.44),(4.07,9.44),(4.07,9.22),(3.85,9.22)), + ) + createRL( + tech, net, 'Contact', + ((3.85,9.72),(3.85,9.94),(4.07,9.94),(4.07,9.72),(3.85,9.72)), + ) + createRL( + tech, net, 'Contact', + ((3.85,10.22),(3.85,10.44),(4.07,10.44),(4.07,10.22),(3.85,10.22)), + ) + createRL( + tech, net, 'Contact', + ((3.85,10.72),(3.85,10.94),(4.07,10.94),(4.07,10.72),(3.85,10.72)), + ) + createRL( + tech, net, 'Contact', + ((3.85,11.22),(3.85,11.44),(4.07,11.44),(4.07,11.22),(3.85,11.22)), + ) + createRL( + tech, net, 'Contact', + ((3.85,11.72),(3.85,11.94),(4.07,11.94),(4.07,11.72),(3.85,11.72)), + ) + createRL( + tech, net, 'Metal1', + ((2.19,1.915),(2.19,12.085),(2.53,12.085),(2.53,7.575),(2.45,7.575),(2.45,7.345),(3.79,7.345),(3.79,12.085),(4.13,12.085),(4.13,7.575),(4.05,7.575),(4.05,3.905),(4.13,3.905),(4.13,1.915),(3.79,1.915),(3.79,4.135),(2.45,4.135),(2.45,3.905),(2.53,3.905),(2.53,1.915),(2.19,1.915)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.32), u(0.26), u(1.915), u(12.085), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.32), u(0.26), u(1.915), u(12.085), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['i'].setDirection(Net.Direction.IN) + nets['q'].setDirection(Net.Direction.OUT) + + cell = new_cells['nand2_x0'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(4.2), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'int0': Net.create(cell, 'int0'), + 'nq': Net.create(cell, 'nq'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((1.82,1.91),(1.82,4.71),(2.1,4.71),(2.1,1.91),(1.82,1.91)), + ) + createRL( + tech, net, 'COMP', + ((0.36,1.385),(0.36,4.71),(1.3,4.71),(1.3,1.91),(0.72,1.91),(0.72,1.385),(0.36,1.385)), + ) + createRL( + tech, net, 'Contact', + ((0.43,1.455),(0.43,1.675),(0.65,1.675),(0.65,1.455),(0.43,1.455)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(4.2,1.68),(4.2,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(4.2), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(4.2), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['*'] + createRL( + tech, net, 'Nplus', + ((0.2,1.155),(0.2,4.94),(2.7,4.94),(2.7,1.68),(0.88,1.68),(0.88,1.155),(0.2,1.155)), + ) + createRL( + tech, net, 'Pplus', + ((0.2,9.06),(0.2,12.845),(0.88,12.845),(0.88,12.32),(2.24,12.32),(2.24,12.845),(2.92,12.845),(2.92,9.06),(0.2,9.06)), + ) + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((1.82,9.29),(1.82,12.09),(2.4,12.09),(2.4,12.615),(2.76,12.615),(2.76,9.29),(1.82,9.29)), + ) + createRL( + tech, net, 'COMP', + ((0.36,9.29),(0.36,12.615),(0.72,12.615),(0.72,12.09),(1.3,12.09),(1.3,9.29),(0.36,9.29)), + ) + createRL( + tech, net, 'Contact', + ((0.43,12.325),(0.43,12.545),(0.65,12.545),(0.65,12.325),(0.43,12.325)), + ) + createRL( + tech, net, 'Contact', + ((2.47,12.325),(2.47,12.545),(2.69,12.545),(2.69,12.325),(2.47,12.325)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(4.2,14.0),(4.2,12.32),(0.0,12.32)), + ) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(4.8,14.6),(4.8,6.72),(-0.6,6.72)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(4.2), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(4.2), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['int0'] + createRL( + tech, net, 'COMP', + ((1.3,1.91),(1.3,4.71),(1.82,4.71),(1.82,1.91),(1.3,1.91)), + ) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((1.02,1.69),(1.02,6.54),(0.8,6.54),(0.8,6.9),(1.02,6.9),(1.02,12.31),(1.3,12.31),(1.3,1.69),(1.02,1.69)), + ) + createRL( + tech, net, 'Contact', + ((0.87,6.61),(0.87,6.83),(1.09,6.83),(1.09,6.61),(0.87,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((0.89,1.91),(0.89,6.605),(0.81,6.605),(0.81,6.835),(0.89,6.835),(0.89,12.09),(1.15,12.09),(1.15,1.91),(0.89,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.02), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.02), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['nq'] + createRL( + tech, net, 'COMP', + ((1.3,9.29),(1.3,12.09),(1.82,12.09),(1.82,9.29),(1.3,9.29)), + ) + createRL( + tech, net, 'COMP', + ((2.1,1.91),(2.1,4.71),(2.54,4.71),(2.54,1.91),(2.1,1.91)), + ) + createRL( + tech, net, 'Contact', + ((1.45,9.58),(1.45,9.8),(1.67,9.8),(1.67,9.58),(1.45,9.58)), + ) + createRL( + tech, net, 'Contact', + ((1.45,10.08),(1.45,10.3),(1.67,10.3),(1.67,10.08),(1.45,10.08)), + ) + createRL( + tech, net, 'Contact', + ((1.45,10.58),(1.45,10.8),(1.67,10.8),(1.67,10.58),(1.45,10.58)), + ) + createRL( + tech, net, 'Contact', + ((1.45,11.08),(1.45,11.3),(1.67,11.3),(1.67,11.08),(1.45,11.08)), + ) + createRL( + tech, net, 'Contact', + ((1.45,11.58),(1.45,11.8),(1.67,11.8),(1.67,11.58),(1.45,11.58)), + ) + createRL( + tech, net, 'Contact', + ((2.25,2.2),(2.25,2.42),(2.47,2.42),(2.47,2.2),(2.25,2.2)), + ) + createRL( + tech, net, 'Contact', + ((2.25,2.7),(2.25,2.92),(2.47,2.92),(2.47,2.7),(2.25,2.7)), + ) + createRL( + tech, net, 'Contact', + ((2.25,3.2),(2.25,3.42),(2.47,3.42),(2.47,3.2),(2.25,3.2)), + ) + createRL( + tech, net, 'Contact', + ((2.25,3.7),(2.25,3.92),(2.47,3.92),(2.47,3.7),(2.25,3.7)), + ) + createRL( + tech, net, 'Contact', + ((2.25,4.2),(2.25,4.42),(2.47,4.42),(2.47,4.2),(2.25,4.2)), + ) + createRL( + tech, net, 'Metal1', + ((2.19,1.91),(2.19,9.29),(1.39,9.29),(1.39,12.09),(2.45,12.09),(2.45,4.71),(2.53,4.71),(2.53,1.91),(2.19,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.32), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.32), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((1.82,1.69),(1.82,6.54),(1.6,6.54),(1.6,6.9),(1.82,6.9),(1.82,12.31),(2.1,12.31),(2.1,1.69),(1.82,1.69)), + ) + createRL( + tech, net, 'Contact', + ((1.67,6.61),(1.67,6.83),(1.89,6.83),(1.89,6.61),(1.67,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((1.69,1.91),(1.69,6.605),(1.61,6.605),(1.61,6.835),(1.69,6.835),(1.69,9.06),(1.95,9.06),(1.95,1.91),(1.69,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.82), u(0.26), u(1.91), u(9.06), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.82), u(0.26), u(1.91), u(9.06), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['nq'].setDirection(Net.Direction.OUT) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + + cell = new_cells['nand3_x0'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(4.2), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'i2': Net.create(cell, 'i2'), + 'int0': Net.create(cell, 'int0'), + 'int1': Net.create(cell, 'int1'), + 'nq': Net.create(cell, 'nq'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((1.82,1.91),(1.82,5.41),(2.1,5.41),(2.1,1.91),(1.82,1.91)), + ) + createRL( + tech, net, 'COMP', + ((3.06,1.91),(3.06,5.41),(3.34,5.41),(3.34,1.91),(3.06,1.91)), + ) + createRL( + tech, net, 'COMP', + ((0.36,1.385),(0.36,5.41),(1.3,5.41),(1.3,1.91),(0.72,1.91),(0.72,1.385),(0.36,1.385)), + ) + createRL( + tech, net, 'Contact', + ((0.43,1.455),(0.43,1.675),(0.65,1.675),(0.65,1.455),(0.43,1.455)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(4.2,1.68),(4.2,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(4.2), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(4.2), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['*'] + createRL( + tech, net, 'Nplus', + ((0.2,1.155),(0.2,5.64),(3.94,5.64),(3.94,1.68),(0.88,1.68),(0.88,1.155),(0.2,1.155)), + ) + createRL( + tech, net, 'Pplus', + ((0.2,8.36),(0.2,12.845),(0.88,12.845),(0.88,12.32),(2.24,12.32),(2.24,12.845),(2.92,12.845),(2.92,12.32),(3.94,12.32),(3.94,8.36),(0.2,8.36)), + ) + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((0.36,8.59),(0.36,12.615),(0.72,12.615),(0.72,12.09),(1.3,12.09),(1.3,8.59),(0.36,8.59)), + ) + createRL( + tech, net, 'COMP', + ((1.82,8.59),(1.82,12.09),(2.4,12.09),(2.4,12.615),(2.76,12.615),(2.76,12.09),(3.34,12.09),(3.34,8.59),(1.82,8.59)), + ) + createRL( + tech, net, 'Contact', + ((0.43,12.325),(0.43,12.545),(0.65,12.545),(0.65,12.325),(0.43,12.325)), + ) + createRL( + tech, net, 'Contact', + ((2.47,12.325),(2.47,12.545),(2.69,12.545),(2.69,12.325),(2.47,12.325)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(4.2,14.0),(4.2,12.32),(0.0,12.32)), + ) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(4.8,14.6),(4.8,6.72),(-0.6,6.72)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(4.2), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(4.2), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['int0'] + createRL( + tech, net, 'COMP', + ((1.3,1.91),(1.3,5.41),(1.82,5.41),(1.82,1.91),(1.3,1.91)), + ) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((1.02,1.69),(1.02,6.54),(0.8,6.54),(0.8,6.9),(1.02,6.9),(1.02,12.31),(1.3,12.31),(1.3,1.69),(1.02,1.69)), + ) + createRL( + tech, net, 'Contact', + ((0.87,6.61),(0.87,6.83),(1.09,6.83),(1.09,6.61),(0.87,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((0.89,1.91),(0.89,6.605),(0.81,6.605),(0.81,6.835),(0.89,6.835),(0.89,12.09),(1.15,12.09),(1.15,1.91),(0.89,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.02), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.02), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['nq'] + createRL( + tech, net, 'COMP', + ((1.3,8.59),(1.3,12.09),(1.82,12.09),(1.82,8.59),(1.3,8.59)), + ) + createRL( + tech, net, 'COMP', + ((3.34,1.91),(3.34,5.41),(3.78,5.41),(3.78,1.91),(3.34,1.91)), + ) + createRL( + tech, net, 'COMP', + ((3.34,8.59),(3.34,12.09),(3.78,12.09),(3.78,8.59),(3.34,8.59)), + ) + createRL( + tech, net, 'Contact', + ((3.49,2.05),(3.49,2.27),(3.71,2.27),(3.71,2.05),(3.49,2.05)), + ) + createRL( + tech, net, 'Contact', + ((3.49,2.55),(3.49,2.77),(3.71,2.77),(3.71,2.55),(3.49,2.55)), + ) + createRL( + tech, net, 'Contact', + ((3.49,3.05),(3.49,3.27),(3.71,3.27),(3.71,3.05),(3.49,3.05)), + ) + createRL( + tech, net, 'Contact', + ((3.49,3.55),(3.49,3.77),(3.71,3.77),(3.71,3.55),(3.49,3.55)), + ) + createRL( + tech, net, 'Contact', + ((3.49,4.05),(3.49,4.27),(3.71,4.27),(3.71,4.05),(3.49,4.05)), + ) + createRL( + tech, net, 'Contact', + ((3.49,4.55),(3.49,4.77),(3.71,4.77),(3.71,4.55),(3.49,4.55)), + ) + createRL( + tech, net, 'Contact', + ((3.49,5.05),(3.49,5.27),(3.71,5.27),(3.71,5.05),(3.49,5.05)), + ) + createRL( + tech, net, 'Contact', + ((3.49,8.73),(3.49,8.95),(3.71,8.95),(3.71,8.73),(3.49,8.73)), + ) + createRL( + tech, net, 'Contact', + ((3.49,9.23),(3.49,9.45),(3.71,9.45),(3.71,9.23),(3.49,9.23)), + ) + createRL( + tech, net, 'Contact', + ((3.49,9.73),(3.49,9.95),(3.71,9.95),(3.71,9.73),(3.49,9.73)), + ) + createRL( + tech, net, 'Contact', + ((3.49,10.23),(3.49,10.45),(3.71,10.45),(3.71,10.23),(3.49,10.23)), + ) + createRL( + tech, net, 'Contact', + ((3.49,10.73),(3.49,10.95),(3.71,10.95),(3.71,10.73),(3.49,10.73)), + ) + createRL( + tech, net, 'Contact', + ((3.49,11.23),(3.49,11.45),(3.71,11.45),(3.71,11.23),(3.49,11.23)), + ) + createRL( + tech, net, 'Contact', + ((3.49,11.73),(3.49,11.95),(3.71,11.95),(3.71,11.73),(3.49,11.73)), + ) + createRL( + tech, net, 'Contact', + ((1.45,8.73),(1.45,8.95),(1.67,8.95),(1.67,8.73),(1.45,8.73)), + ) + createRL( + tech, net, 'Contact', + ((1.45,9.23),(1.45,9.45),(1.67,9.45),(1.67,9.23),(1.45,9.23)), + ) + createRL( + tech, net, 'Contact', + ((1.45,9.73),(1.45,9.95),(1.67,9.95),(1.67,9.73),(1.45,9.73)), + ) + createRL( + tech, net, 'Contact', + ((1.45,10.23),(1.45,10.45),(1.67,10.45),(1.67,10.23),(1.45,10.23)), + ) + createRL( + tech, net, 'Contact', + ((1.45,10.73),(1.45,10.95),(1.67,10.95),(1.67,10.73),(1.45,10.73)), + ) + createRL( + tech, net, 'Contact', + ((1.45,11.23),(1.45,11.45),(1.67,11.45),(1.67,11.23),(1.45,11.23)), + ) + createRL( + tech, net, 'Contact', + ((1.45,11.73),(1.45,11.95),(1.67,11.95),(1.67,11.73),(1.45,11.73)), + ) + createRL( + tech, net, 'Metal1', + ((3.43,1.91),(3.43,8.59),(1.39,8.59),(1.39,12.09),(3.77,12.09),(3.77,8.59),(3.69,8.59),(3.69,5.41),(3.77,5.41),(3.77,1.91),(3.43,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.56), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.56), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['int1'] + createRL( + tech, net, 'COMP', + ((2.1,1.91),(2.1,5.41),(3.06,5.41),(3.06,1.91),(2.1,1.91)), + ) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((1.82,1.69),(1.82,6.54),(1.6,6.54),(1.6,6.9),(1.82,6.9),(1.82,12.31),(2.1,12.31),(2.1,1.69),(1.82,1.69)), + ) + createRL( + tech, net, 'Contact', + ((1.67,6.61),(1.67,6.83),(1.89,6.83),(1.89,6.61),(1.67,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((1.69,1.91),(1.69,6.605),(1.61,6.605),(1.61,6.835),(1.69,6.835),(1.69,8.36),(1.95,8.36),(1.95,1.91),(1.69,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.82), u(0.26), u(1.91), u(8.36), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.82), u(0.26), u(1.91), u(8.36), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['i2'] + createRL( + tech, net, 'Poly2', + ((3.06,1.69),(3.06,6.54),(2.84,6.54),(2.84,6.9),(3.06,6.9),(3.06,12.31),(3.34,12.31),(3.34,1.69),(3.06,1.69)), + ) + createRL( + tech, net, 'Contact', + ((2.91,6.61),(2.91,6.83),(3.13,6.83),(3.13,6.61),(2.91,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((2.93,1.91),(2.93,6.605),(2.85,6.605),(2.85,6.835),(2.93,6.835),(2.93,8.36),(3.19,8.36),(3.19,1.91),(2.93,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.06), u(0.26), u(1.91), u(8.36), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.06), u(0.26), u(1.91), u(8.36), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['nq'].setDirection(Net.Direction.OUT) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + nets['i2'].setDirection(Net.Direction.IN) + + cell = new_cells['nand4_x0'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(5.6000000000000005), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'i2': Net.create(cell, 'i2'), + 'i3': Net.create(cell, 'i3'), + 'int0': Net.create(cell, 'int0'), + 'int1': Net.create(cell, 'int1'), + 'int2': Net.create(cell, 'int2'), + 'nq': Net.create(cell, 'nq'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((1.82,1.91),(1.82,5.41),(2.1,5.41),(2.1,1.91),(1.82,1.91)), + ) + createRL( + tech, net, 'COMP', + ((3.06,1.91),(3.06,5.41),(3.34,5.41),(3.34,1.91),(3.06,1.91)), + ) + createRL( + tech, net, 'COMP', + ((3.86,1.91),(3.86,5.41),(4.14,5.41),(4.14,1.91),(3.86,1.91)), + ) + createRL( + tech, net, 'COMP', + ((0.36,1.385),(0.36,5.41),(1.3,5.41),(1.3,1.91),(0.72,1.91),(0.72,1.385),(0.36,1.385)), + ) + createRL( + tech, net, 'Contact', + ((0.43,1.455),(0.43,1.675),(0.65,1.675),(0.65,1.455),(0.43,1.455)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(5.6,1.68),(5.6,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['*'] + createRL( + tech, net, 'Nplus', + ((0.2,1.155),(0.2,5.64),(4.74,5.64),(4.74,1.68),(0.88,1.68),(0.88,1.155),(0.2,1.155)), + ) + createRL( + tech, net, 'Pplus', + ((0.2,8.36),(0.2,12.845),(0.88,12.845),(0.88,12.32),(2.24,12.32),(2.24,12.845),(2.92,12.845),(2.92,12.32),(4.28,12.32),(4.28,12.845),(4.96,12.845),(4.96,8.36),(0.2,8.36)), + ) + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((3.86,8.59),(3.86,12.09),(4.44,12.09),(4.44,12.615),(4.8,12.615),(4.8,8.59),(3.86,8.59)), + ) + createRL( + tech, net, 'COMP', + ((0.36,8.59),(0.36,12.615),(0.72,12.615),(0.72,12.09),(1.3,12.09),(1.3,8.59),(0.36,8.59)), + ) + createRL( + tech, net, 'COMP', + ((1.82,8.59),(1.82,12.09),(2.4,12.09),(2.4,12.615),(2.76,12.615),(2.76,12.09),(3.34,12.09),(3.34,8.59),(1.82,8.59)), + ) + createRL( + tech, net, 'Contact', + ((4.51,12.325),(4.51,12.545),(4.73,12.545),(4.73,12.325),(4.51,12.325)), + ) + createRL( + tech, net, 'Contact', + ((0.43,12.325),(0.43,12.545),(0.65,12.545),(0.65,12.325),(0.43,12.325)), + ) + createRL( + tech, net, 'Contact', + ((2.47,12.325),(2.47,12.545),(2.69,12.545),(2.69,12.325),(2.47,12.325)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(5.6,14.0),(5.6,12.32),(0.0,12.32)), + ) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(6.2,14.6),(6.2,6.72),(-0.6,6.72)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['int0'] + createRL( + tech, net, 'COMP', + ((1.3,1.91),(1.3,5.41),(1.82,5.41),(1.82,1.91),(1.3,1.91)), + ) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((1.02,1.69),(1.02,6.54),(0.8,6.54),(0.8,6.9),(1.02,6.9),(1.02,12.31),(1.3,12.31),(1.3,1.69),(1.02,1.69)), + ) + createRL( + tech, net, 'Contact', + ((0.87,6.61),(0.87,6.83),(1.09,6.83),(1.09,6.61),(0.87,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((0.89,1.91),(0.89,6.605),(0.81,6.605),(0.81,6.835),(0.89,6.835),(0.89,12.09),(1.15,12.09),(1.15,1.91),(0.89,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.02), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.02), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['nq'] + createRL( + tech, net, 'COMP', + ((1.3,8.59),(1.3,12.09),(1.82,12.09),(1.82,8.59),(1.3,8.59)), + ) + createRL( + tech, net, 'COMP', + ((3.34,8.59),(3.34,12.09),(3.86,12.09),(3.86,8.59),(3.34,8.59)), + ) + createRL( + tech, net, 'COMP', + ((4.14,1.91),(4.14,5.41),(4.58,5.41),(4.58,1.91),(4.14,1.91)), + ) + createRL( + tech, net, 'Contact', + ((4.29,2.05),(4.29,2.27),(4.51,2.27),(4.51,2.05),(4.29,2.05)), + ) + createRL( + tech, net, 'Contact', + ((4.29,2.55),(4.29,2.77),(4.51,2.77),(4.51,2.55),(4.29,2.55)), + ) + createRL( + tech, net, 'Contact', + ((4.29,3.05),(4.29,3.27),(4.51,3.27),(4.51,3.05),(4.29,3.05)), + ) + createRL( + tech, net, 'Contact', + ((4.29,3.55),(4.29,3.77),(4.51,3.77),(4.51,3.55),(4.29,3.55)), + ) + createRL( + tech, net, 'Contact', + ((4.29,4.05),(4.29,4.27),(4.51,4.27),(4.51,4.05),(4.29,4.05)), + ) + createRL( + tech, net, 'Contact', + ((4.29,4.55),(4.29,4.77),(4.51,4.77),(4.51,4.55),(4.29,4.55)), + ) + createRL( + tech, net, 'Contact', + ((4.29,5.05),(4.29,5.27),(4.51,5.27),(4.51,5.05),(4.29,5.05)), + ) + createRL( + tech, net, 'Contact', + ((3.49,8.73),(3.49,8.95),(3.71,8.95),(3.71,8.73),(3.49,8.73)), + ) + createRL( + tech, net, 'Contact', + ((3.49,9.23),(3.49,9.45),(3.71,9.45),(3.71,9.23),(3.49,9.23)), + ) + createRL( + tech, net, 'Contact', + ((3.49,9.73),(3.49,9.95),(3.71,9.95),(3.71,9.73),(3.49,9.73)), + ) + createRL( + tech, net, 'Contact', + ((3.49,10.23),(3.49,10.45),(3.71,10.45),(3.71,10.23),(3.49,10.23)), + ) + createRL( + tech, net, 'Contact', + ((3.49,10.73),(3.49,10.95),(3.71,10.95),(3.71,10.73),(3.49,10.73)), + ) + createRL( + tech, net, 'Contact', + ((3.49,11.23),(3.49,11.45),(3.71,11.45),(3.71,11.23),(3.49,11.23)), + ) + createRL( + tech, net, 'Contact', + ((3.49,11.73),(3.49,11.95),(3.71,11.95),(3.71,11.73),(3.49,11.73)), + ) + createRL( + tech, net, 'Contact', + ((1.45,8.73),(1.45,8.95),(1.67,8.95),(1.67,8.73),(1.45,8.73)), + ) + createRL( + tech, net, 'Contact', + ((1.45,9.23),(1.45,9.45),(1.67,9.45),(1.67,9.23),(1.45,9.23)), + ) + createRL( + tech, net, 'Contact', + ((1.45,9.73),(1.45,9.95),(1.67,9.95),(1.67,9.73),(1.45,9.73)), + ) + createRL( + tech, net, 'Contact', + ((1.45,10.23),(1.45,10.45),(1.67,10.45),(1.67,10.23),(1.45,10.23)), + ) + createRL( + tech, net, 'Contact', + ((1.45,10.73),(1.45,10.95),(1.67,10.95),(1.67,10.73),(1.45,10.73)), + ) + createRL( + tech, net, 'Contact', + ((1.45,11.23),(1.45,11.45),(1.67,11.45),(1.67,11.23),(1.45,11.23)), + ) + createRL( + tech, net, 'Contact', + ((1.45,11.73),(1.45,11.95),(1.67,11.95),(1.67,11.73),(1.45,11.73)), + ) + createRL( + tech, net, 'Metal1', + ((4.23,1.91),(4.23,8.59),(1.39,8.59),(1.39,12.09),(4.49,12.09),(4.49,5.41),(4.57,5.41),(4.57,1.91),(4.23,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.36), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.36), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['int1'] + createRL( + tech, net, 'COMP', + ((2.1,1.91),(2.1,5.41),(3.06,5.41),(3.06,1.91),(2.1,1.91)), + ) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((1.82,1.69),(1.82,6.54),(1.6,6.54),(1.6,6.9),(1.82,6.9),(1.82,12.31),(2.1,12.31),(2.1,1.69),(1.82,1.69)), + ) + createRL( + tech, net, 'Contact', + ((1.67,6.61),(1.67,6.83),(1.89,6.83),(1.89,6.61),(1.67,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((1.69,1.91),(1.69,6.605),(1.61,6.605),(1.61,6.835),(1.69,6.835),(1.69,8.36),(1.95,8.36),(1.95,1.91),(1.69,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.82), u(0.26), u(1.91), u(8.36), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.82), u(0.26), u(1.91), u(8.36), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['int2'] + createRL( + tech, net, 'COMP', + ((3.34,1.91),(3.34,5.41),(3.86,5.41),(3.86,1.91),(3.34,1.91)), + ) + net = nets['i2'] + createRL( + tech, net, 'Poly2', + ((3.06,1.69),(3.06,6.54),(2.84,6.54),(2.84,6.9),(3.06,6.9),(3.06,12.31),(3.34,12.31),(3.34,1.69),(3.06,1.69)), + ) + createRL( + tech, net, 'Contact', + ((2.91,6.61),(2.91,6.83),(3.13,6.83),(3.13,6.61),(2.91,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((2.93,1.91),(2.93,6.605),(2.85,6.605),(2.85,6.835),(2.93,6.835),(2.93,8.36),(3.19,8.36),(3.19,1.91),(2.93,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.06), u(0.26), u(1.91), u(8.36), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.06), u(0.26), u(1.91), u(8.36), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['i3'] + createRL( + tech, net, 'Poly2', + ((3.86,1.69),(3.86,6.54),(3.64,6.54),(3.64,6.9),(3.86,6.9),(3.86,12.31),(4.14,12.31),(4.14,1.69),(3.86,1.69)), + ) + createRL( + tech, net, 'Contact', + ((3.71,6.61),(3.71,6.83),(3.93,6.83),(3.93,6.61),(3.71,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((3.73,1.91),(3.73,6.605),(3.65,6.605),(3.65,6.835),(3.73,6.835),(3.73,8.36),(3.99,8.36),(3.99,1.91),(3.73,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.86), u(0.26), u(1.91), u(8.36), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.86), u(0.26), u(1.91), u(8.36), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['nq'].setDirection(Net.Direction.OUT) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + nets['i2'].setDirection(Net.Direction.IN) + nets['i3'].setDirection(Net.Direction.IN) + + cell = new_cells['nor2_x0'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(4.2), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'int0': Net.create(cell, 'int0'), + 'nq': Net.create(cell, 'nq'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((0.36,1.385),(0.36,3.31),(1.3,3.31),(1.3,1.91),(0.72,1.91),(0.72,1.385),(0.36,1.385)), + ) + createRL( + tech, net, 'COMP', + ((2.4,1.385),(2.4,1.91),(1.82,1.91),(1.82,3.31),(2.76,3.31),(2.76,1.385),(2.4,1.385)), + ) + createRL( + tech, net, 'Contact', + ((2.47,1.455),(2.47,1.675),(2.69,1.675),(2.69,1.455),(2.47,1.455)), + ) + createRL( + tech, net, 'Contact', + ((0.43,1.455),(0.43,1.675),(0.65,1.675),(0.65,1.455),(0.43,1.455)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(4.2,1.68),(4.2,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(4.2), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(4.2), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['*'] + createRL( + tech, net, 'Nplus', + ((0.2,1.155),(0.2,3.54),(2.92,3.54),(2.92,1.155),(2.24,1.155),(2.24,1.68),(0.88,1.68),(0.88,1.155),(0.2,1.155)), + ) + createRL( + tech, net, 'Pplus', + ((0.2,7.66),(0.2,12.845),(0.88,12.845),(0.88,12.32),(2.7,12.32),(2.7,7.66),(0.2,7.66)), + ) + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((1.82,7.89),(1.82,12.09),(2.1,12.09),(2.1,7.89),(1.82,7.89)), + ) + createRL( + tech, net, 'COMP', + ((0.36,7.89),(0.36,12.615),(0.72,12.615),(0.72,12.09),(1.3,12.09),(1.3,7.89),(0.36,7.89)), + ) + createRL( + tech, net, 'Contact', + ((0.43,12.325),(0.43,12.545),(0.65,12.545),(0.65,12.325),(0.43,12.325)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(4.2,14.0),(4.2,12.32),(0.0,12.32)), + ) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(4.8,14.6),(4.8,6.72),(-0.6,6.72)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(4.2), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(4.2), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['nq'] + createRL( + tech, net, 'COMP', + ((1.3,1.91),(1.3,3.31),(1.82,3.31),(1.82,1.91),(1.3,1.91)), + ) + createRL( + tech, net, 'COMP', + ((2.1,7.89),(2.1,12.09),(2.54,12.09),(2.54,7.89),(2.1,7.89)), + ) + createRL( + tech, net, 'Contact', + ((1.45,2.0),(1.45,2.22),(1.67,2.22),(1.67,2.0),(1.45,2.0)), + ) + createRL( + tech, net, 'Contact', + ((1.45,2.5),(1.45,2.72),(1.67,2.72),(1.67,2.5),(1.45,2.5)), + ) + createRL( + tech, net, 'Contact', + ((1.45,3.0),(1.45,3.22),(1.67,3.22),(1.67,3.0),(1.45,3.0)), + ) + createRL( + tech, net, 'Contact', + ((2.25,8.13),(2.25,8.35),(2.47,8.35),(2.47,8.13),(2.25,8.13)), + ) + createRL( + tech, net, 'Contact', + ((2.25,8.63),(2.25,8.85),(2.47,8.85),(2.47,8.63),(2.25,8.63)), + ) + createRL( + tech, net, 'Contact', + ((2.25,9.13),(2.25,9.35),(2.47,9.35),(2.47,9.13),(2.25,9.13)), + ) + createRL( + tech, net, 'Contact', + ((2.25,9.63),(2.25,9.85),(2.47,9.85),(2.47,9.63),(2.25,9.63)), + ) + createRL( + tech, net, 'Contact', + ((2.25,10.13),(2.25,10.35),(2.47,10.35),(2.47,10.13),(2.25,10.13)), + ) + createRL( + tech, net, 'Contact', + ((2.25,10.63),(2.25,10.85),(2.47,10.85),(2.47,10.63),(2.25,10.63)), + ) + createRL( + tech, net, 'Contact', + ((2.25,11.13),(2.25,11.35),(2.47,11.35),(2.47,11.13),(2.25,11.13)), + ) + createRL( + tech, net, 'Contact', + ((2.25,11.63),(2.25,11.85),(2.47,11.85),(2.47,11.63),(2.25,11.63)), + ) + createRL( + tech, net, 'Metal1', + ((1.39,1.91),(1.39,3.31),(2.19,3.31),(2.19,12.09),(2.53,12.09),(2.53,7.89),(2.45,7.89),(2.45,1.91),(1.39,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.32), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.32), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((1.02,1.69),(1.02,6.54),(0.8,6.54),(0.8,6.9),(1.02,6.9),(1.02,12.31),(1.3,12.31),(1.3,1.69),(1.02,1.69)), + ) + createRL( + tech, net, 'Contact', + ((0.87,6.61),(0.87,6.83),(1.09,6.83),(1.09,6.61),(0.87,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((0.89,1.91),(0.89,6.605),(0.81,6.605),(0.81,6.835),(0.89,6.835),(0.89,12.09),(1.15,12.09),(1.15,1.91),(0.89,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.02), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.02), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['int0'] + createRL( + tech, net, 'COMP', + ((1.3,7.89),(1.3,12.09),(1.82,12.09),(1.82,7.89),(1.3,7.89)), + ) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((1.82,1.69),(1.82,6.54),(1.6,6.54),(1.6,6.9),(1.82,6.9),(1.82,12.31),(2.1,12.31),(2.1,1.69),(1.82,1.69)), + ) + createRL( + tech, net, 'Contact', + ((1.67,6.61),(1.67,6.83),(1.89,6.83),(1.89,6.61),(1.67,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((1.69,3.54),(1.69,6.605),(1.61,6.605),(1.61,6.835),(1.69,6.835),(1.69,12.09),(1.95,12.09),(1.95,3.54),(1.69,3.54)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.82), u(0.26), u(3.54), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.82), u(0.26), u(3.54), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['nq'].setDirection(Net.Direction.OUT) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + + cell = new_cells['nor3_x0'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(4.2), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'i2': Net.create(cell, 'i2'), + 'int0': Net.create(cell, 'int0'), + 'int1': Net.create(cell, 'int1'), + 'nq': Net.create(cell, 'nq'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((2.4,1.385),(2.4,1.91),(1.82,1.91),(1.82,3.31),(3.34,3.31),(3.34,1.91),(2.76,1.91),(2.76,1.385),(2.4,1.385)), + ) + createRL( + tech, net, 'COMP', + ((0.36,1.385),(0.36,3.31),(1.3,3.31),(1.3,1.91),(0.72,1.91),(0.72,1.385),(0.36,1.385)), + ) + createRL( + tech, net, 'Contact', + ((2.47,1.455),(2.47,1.675),(2.69,1.675),(2.69,1.455),(2.47,1.455)), + ) + createRL( + tech, net, 'Contact', + ((0.43,1.455),(0.43,1.675),(0.65,1.675),(0.65,1.455),(0.43,1.455)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(4.2,1.68),(4.2,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(4.2), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(4.2), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['*'] + createRL( + tech, net, 'Nplus', + ((0.2,1.155),(0.2,3.54),(3.94,3.54),(3.94,1.68),(2.92,1.68),(2.92,1.155),(2.24,1.155),(2.24,1.68),(0.88,1.68),(0.88,1.155),(0.2,1.155)), + ) + createRL( + tech, net, 'Pplus', + ((0.2,7.66),(0.2,12.845),(0.88,12.845),(0.88,12.32),(3.94,12.32),(3.94,7.66),(0.2,7.66)), + ) + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((0.36,7.89),(0.36,12.615),(0.72,12.615),(0.72,12.09),(1.3,12.09),(1.3,7.89),(0.36,7.89)), + ) + createRL( + tech, net, 'COMP', + ((3.06,7.89),(3.06,12.09),(3.34,12.09),(3.34,7.89),(3.06,7.89)), + ) + createRL( + tech, net, 'COMP', + ((1.82,7.89),(1.82,12.09),(2.1,12.09),(2.1,7.89),(1.82,7.89)), + ) + createRL( + tech, net, 'Contact', + ((0.43,12.325),(0.43,12.545),(0.65,12.545),(0.65,12.325),(0.43,12.325)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(4.2,14.0),(4.2,12.32),(0.0,12.32)), + ) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(4.8,14.6),(4.8,6.72),(-0.6,6.72)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.1), u(4.2), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.1), u(4.2), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['nq'] + createRL( + tech, net, 'COMP', + ((3.34,7.89),(3.34,12.09),(3.78,12.09),(3.78,7.89),(3.34,7.89)), + ) + createRL( + tech, net, 'COMP', + ((3.34,1.91),(3.34,3.31),(3.78,3.31),(3.78,1.91),(3.34,1.91)), + ) + createRL( + tech, net, 'COMP', + ((1.3,1.91),(1.3,3.31),(1.82,3.31),(1.82,1.91),(1.3,1.91)), + ) + createRL( + tech, net, 'Contact', + ((3.49,8.13),(3.49,8.35),(3.71,8.35),(3.71,8.13),(3.49,8.13)), + ) + createRL( + tech, net, 'Contact', + ((3.49,8.63),(3.49,8.85),(3.71,8.85),(3.71,8.63),(3.49,8.63)), + ) + createRL( + tech, net, 'Contact', + ((3.49,9.13),(3.49,9.35),(3.71,9.35),(3.71,9.13),(3.49,9.13)), + ) + createRL( + tech, net, 'Contact', + ((3.49,9.63),(3.49,9.85),(3.71,9.85),(3.71,9.63),(3.49,9.63)), + ) + createRL( + tech, net, 'Contact', + ((3.49,10.13),(3.49,10.35),(3.71,10.35),(3.71,10.13),(3.49,10.13)), + ) + createRL( + tech, net, 'Contact', + ((3.49,10.63),(3.49,10.85),(3.71,10.85),(3.71,10.63),(3.49,10.63)), + ) + createRL( + tech, net, 'Contact', + ((3.49,11.13),(3.49,11.35),(3.71,11.35),(3.71,11.13),(3.49,11.13)), + ) + createRL( + tech, net, 'Contact', + ((3.49,11.63),(3.49,11.85),(3.71,11.85),(3.71,11.63),(3.49,11.63)), + ) + createRL( + tech, net, 'Contact', + ((3.49,2.0),(3.49,2.22),(3.71,2.22),(3.71,2.0),(3.49,2.0)), + ) + createRL( + tech, net, 'Contact', + ((3.49,2.5),(3.49,2.72),(3.71,2.72),(3.71,2.5),(3.49,2.5)), + ) + createRL( + tech, net, 'Contact', + ((3.49,3.0),(3.49,3.22),(3.71,3.22),(3.71,3.0),(3.49,3.0)), + ) + createRL( + tech, net, 'Contact', + ((1.45,2.0),(1.45,2.22),(1.67,2.22),(1.67,2.0),(1.45,2.0)), + ) + createRL( + tech, net, 'Contact', + ((1.45,2.5),(1.45,2.72),(1.67,2.72),(1.67,2.5),(1.45,2.5)), + ) + createRL( + tech, net, 'Contact', + ((1.45,3.0),(1.45,3.22),(1.67,3.22),(1.67,3.0),(1.45,3.0)), + ) + createRL( + tech, net, 'Metal1', + ((1.39,1.91),(1.39,3.31),(3.43,3.31),(3.43,12.09),(3.77,12.09),(3.77,7.89),(3.69,7.89),(3.69,3.31),(3.77,3.31),(3.77,1.91),(1.39,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.56), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.56), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((1.02,1.69),(1.02,6.54),(0.8,6.54),(0.8,6.9),(1.02,6.9),(1.02,12.31),(1.3,12.31),(1.3,1.69),(1.02,1.69)), + ) + createRL( + tech, net, 'Contact', + ((0.87,6.61),(0.87,6.83),(1.09,6.83),(1.09,6.61),(0.87,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((0.89,1.91),(0.89,6.605),(0.81,6.605),(0.81,6.835),(0.89,6.835),(0.89,12.09),(1.15,12.09),(1.15,1.91),(0.89,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.02), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.02), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['int0'] + createRL( + tech, net, 'COMP', + ((1.3,7.89),(1.3,12.09),(1.82,12.09),(1.82,7.89),(1.3,7.89)), + ) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((1.82,1.69),(1.82,6.54),(1.6,6.54),(1.6,6.9),(1.82,6.9),(1.82,12.31),(2.1,12.31),(2.1,1.69),(1.82,1.69)), + ) + createRL( + tech, net, 'Contact', + ((1.67,6.61),(1.67,6.83),(1.89,6.83),(1.89,6.61),(1.67,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((1.69,3.54),(1.69,6.605),(1.61,6.605),(1.61,6.835),(1.69,6.835),(1.69,12.09),(1.95,12.09),(1.95,3.54),(1.69,3.54)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.82), u(0.26), u(3.54), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.82), u(0.26), u(3.54), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['int1'] + createRL( + tech, net, 'COMP', + ((2.1,7.89),(2.1,12.09),(3.06,12.09),(3.06,7.89),(2.1,7.89)), + ) + net = nets['i2'] + createRL( + tech, net, 'Poly2', + ((3.06,1.69),(3.06,6.54),(2.84,6.54),(2.84,6.9),(3.06,6.9),(3.06,12.31),(3.34,12.31),(3.34,1.69),(3.06,1.69)), + ) + createRL( + tech, net, 'Contact', + ((2.91,6.61),(2.91,6.83),(3.13,6.83),(3.13,6.61),(2.91,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((2.93,3.54),(2.93,6.605),(2.85,6.605),(2.85,6.835),(2.93,6.835),(2.93,12.09),(3.19,12.09),(3.19,3.54),(2.93,3.54)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.06), u(0.26), u(3.54), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.06), u(0.26), u(3.54), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['nq'].setDirection(Net.Direction.OUT) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + nets['i2'].setDirection(Net.Direction.IN) + + cell = new_cells['nor4_x0'] + with UpdateSession(): + cell.setAbutmentBox(Box( + u(0.0), u(0.0), u(5.6000000000000005), u(14.000000000000002), + )) + nets = { + '*': Net.create(cell, '*'), + 'i0': Net.create(cell, 'i0'), + 'i1': Net.create(cell, 'i1'), + 'i2': Net.create(cell, 'i2'), + 'i3': Net.create(cell, 'i3'), + 'int0': Net.create(cell, 'int0'), + 'int1': Net.create(cell, 'int1'), + 'int2': Net.create(cell, 'int2'), + 'nq': Net.create(cell, 'nq'), + 'vdd': Net.create(cell, 'vdd'), + 'vss': Net.create(cell, 'vss'), + } + net = nets['vss'] + createRL( + tech, net, 'COMP', + ((0.36,1.385),(0.36,3.31),(1.3,3.31),(1.3,1.91),(0.72,1.91),(0.72,1.385),(0.36,1.385)), + ) + createRL( + tech, net, 'COMP', + ((4.44,1.385),(4.44,1.91),(3.86,1.91),(3.86,3.31),(4.8,3.31),(4.8,1.385),(4.44,1.385)), + ) + createRL( + tech, net, 'COMP', + ((2.4,1.385),(2.4,1.91),(1.82,1.91),(1.82,3.31),(3.34,3.31),(3.34,1.91),(2.76,1.91),(2.76,1.385),(2.4,1.385)), + ) + createRL( + tech, net, 'Contact', + ((4.51,1.455),(4.51,1.675),(4.73,1.675),(4.73,1.455),(4.51,1.455)), + ) + createRL( + tech, net, 'Contact', + ((2.47,1.455),(2.47,1.675),(2.69,1.675),(2.69,1.455),(2.47,1.455)), + ) + createRL( + tech, net, 'Contact', + ((0.43,1.455),(0.43,1.675),(0.65,1.675),(0.65,1.455),(0.43,1.455)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,0.0),(0.0,1.68),(5.6,1.68),(5.6,0.0),(0.0,0.0)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(0.0), u(1.68), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['*'] + createRL( + tech, net, 'Nplus', + ((0.2,1.155),(0.2,3.54),(4.96,3.54),(4.96,1.155),(4.28,1.155),(4.28,1.68),(2.92,1.68),(2.92,1.155),(2.24,1.155),(2.24,1.68),(0.88,1.68),(0.88,1.155),(0.2,1.155)), + ) + createRL( + tech, net, 'Pplus', + ((0.2,7.66),(0.2,12.845),(0.88,12.845),(0.88,12.32),(4.74,12.32),(4.74,7.66),(0.2,7.66)), + ) + net = nets['vdd'] + createRL( + tech, net, 'COMP', + ((3.06,7.89),(3.06,12.09),(3.34,12.09),(3.34,7.89),(3.06,7.89)), + ) + createRL( + tech, net, 'COMP', + ((0.36,7.89),(0.36,12.615),(0.72,12.615),(0.72,12.09),(1.3,12.09),(1.3,7.89),(0.36,7.89)), + ) + createRL( + tech, net, 'COMP', + ((1.82,7.89),(1.82,12.09),(2.1,12.09),(2.1,7.89),(1.82,7.89)), + ) + createRL( + tech, net, 'COMP', + ((3.86,7.89),(3.86,12.09),(4.14,12.09),(4.14,7.89),(3.86,7.89)), + ) + createRL( + tech, net, 'Contact', + ((0.43,12.325),(0.43,12.545),(0.65,12.545),(0.65,12.325),(0.43,12.325)), + ) + createRL( + tech, net, 'Metal1', + ((0.0,12.32),(0.0,14.0),(5.6,14.0),(5.6,12.32),(0.0,12.32)), + ) + createRL( + tech, net, 'Nwell', + ((-0.6,6.72),(-0.6,14.6),(6.2,14.6),(6.2,6.72),(-0.6,6.72)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(2.8), u(5.6), u(12.32), u(14.0), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['nq'] + createRL( + tech, net, 'COMP', + ((3.34,1.91),(3.34,3.31),(3.86,3.31),(3.86,1.91),(3.34,1.91)), + ) + createRL( + tech, net, 'COMP', + ((4.14,7.89),(4.14,12.09),(4.58,12.09),(4.58,7.89),(4.14,7.89)), + ) + createRL( + tech, net, 'COMP', + ((1.3,1.91),(1.3,3.31),(1.82,3.31),(1.82,1.91),(1.3,1.91)), + ) + createRL( + tech, net, 'Contact', + ((4.29,8.13),(4.29,8.35),(4.51,8.35),(4.51,8.13),(4.29,8.13)), + ) + createRL( + tech, net, 'Contact', + ((4.29,8.63),(4.29,8.85),(4.51,8.85),(4.51,8.63),(4.29,8.63)), + ) + createRL( + tech, net, 'Contact', + ((4.29,9.13),(4.29,9.35),(4.51,9.35),(4.51,9.13),(4.29,9.13)), + ) + createRL( + tech, net, 'Contact', + ((4.29,9.63),(4.29,9.85),(4.51,9.85),(4.51,9.63),(4.29,9.63)), + ) + createRL( + tech, net, 'Contact', + ((4.29,10.13),(4.29,10.35),(4.51,10.35),(4.51,10.13),(4.29,10.13)), + ) + createRL( + tech, net, 'Contact', + ((4.29,10.63),(4.29,10.85),(4.51,10.85),(4.51,10.63),(4.29,10.63)), + ) + createRL( + tech, net, 'Contact', + ((4.29,11.13),(4.29,11.35),(4.51,11.35),(4.51,11.13),(4.29,11.13)), + ) + createRL( + tech, net, 'Contact', + ((4.29,11.63),(4.29,11.85),(4.51,11.85),(4.51,11.63),(4.29,11.63)), + ) + createRL( + tech, net, 'Contact', + ((3.49,2.0),(3.49,2.22),(3.71,2.22),(3.71,2.0),(3.49,2.0)), + ) + createRL( + tech, net, 'Contact', + ((3.49,2.5),(3.49,2.72),(3.71,2.72),(3.71,2.5),(3.49,2.5)), + ) + createRL( + tech, net, 'Contact', + ((3.49,3.0),(3.49,3.22),(3.71,3.22),(3.71,3.0),(3.49,3.0)), + ) + createRL( + tech, net, 'Contact', + ((1.45,2.0),(1.45,2.22),(1.67,2.22),(1.67,2.0),(1.45,2.0)), + ) + createRL( + tech, net, 'Contact', + ((1.45,2.5),(1.45,2.72),(1.67,2.72),(1.67,2.5),(1.45,2.5)), + ) + createRL( + tech, net, 'Contact', + ((1.45,3.0),(1.45,3.22),(1.67,3.22),(1.67,3.0),(1.45,3.0)), + ) + createRL( + tech, net, 'Metal1', + ((1.39,1.91),(1.39,3.31),(4.23,3.31),(4.23,12.09),(4.57,12.09),(4.57,7.89),(4.49,7.89),(4.49,1.91),(1.39,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(4.36), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(4.36), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['i0'] + createRL( + tech, net, 'Poly2', + ((1.02,1.69),(1.02,6.54),(0.8,6.54),(0.8,6.9),(1.02,6.9),(1.02,12.31),(1.3,12.31),(1.3,1.69),(1.02,1.69)), + ) + createRL( + tech, net, 'Contact', + ((0.87,6.61),(0.87,6.83),(1.09,6.83),(1.09,6.61),(0.87,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((0.89,1.91),(0.89,6.605),(0.81,6.605),(0.81,6.835),(0.89,6.835),(0.89,12.09),(1.15,12.09),(1.15,1.91),(0.89,1.91)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.02), u(0.26), u(1.91), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.02), u(0.26), u(1.91), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['int0'] + createRL( + tech, net, 'COMP', + ((1.3,7.89),(1.3,12.09),(1.82,12.09),(1.82,7.89),(1.3,7.89)), + ) + net = nets['i1'] + createRL( + tech, net, 'Poly2', + ((1.82,1.69),(1.82,6.54),(1.6,6.54),(1.6,6.9),(1.82,6.9),(1.82,12.31),(2.1,12.31),(2.1,1.69),(1.82,1.69)), + ) + createRL( + tech, net, 'Contact', + ((1.67,6.61),(1.67,6.83),(1.89,6.83),(1.89,6.61),(1.67,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((1.69,3.54),(1.69,6.605),(1.61,6.605),(1.61,6.835),(1.69,6.835),(1.69,12.09),(1.95,12.09),(1.95,3.54),(1.69,3.54)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(1.82), u(0.26), u(3.54), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(1.82), u(0.26), u(3.54), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['int1'] + createRL( + tech, net, 'COMP', + ((2.1,7.89),(2.1,12.09),(3.06,12.09),(3.06,7.89),(2.1,7.89)), + ) + net = nets['i2'] + createRL( + tech, net, 'Poly2', + ((3.06,1.69),(3.06,6.54),(2.84,6.54),(2.84,6.9),(3.06,6.9),(3.06,12.31),(3.34,12.31),(3.34,1.69),(3.06,1.69)), + ) + createRL( + tech, net, 'Contact', + ((2.91,6.61),(2.91,6.83),(3.13,6.83),(3.13,6.61),(2.91,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((2.93,3.54),(2.93,6.605),(2.85,6.605),(2.85,6.835),(2.93,6.835),(2.93,12.09),(3.19,12.09),(3.19,3.54),(2.93,3.54)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.06), u(0.26), u(3.54), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.06), u(0.26), u(3.54), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + net = nets['int2'] + createRL( + tech, net, 'COMP', + ((3.34,7.89),(3.34,12.09),(3.86,12.09),(3.86,7.89),(3.34,7.89)), + ) + net = nets['i3'] + createRL( + tech, net, 'Poly2', + ((3.86,1.69),(3.86,6.54),(3.64,6.54),(3.64,6.9),(3.86,6.9),(3.86,12.31),(4.14,12.31),(4.14,1.69),(3.86,1.69)), + ) + createRL( + tech, net, 'Contact', + ((3.71,6.61),(3.71,6.83),(3.93,6.83),(3.93,6.61),(3.71,6.61)), + ) + createRL( + tech, net, 'Metal1', + ((3.73,3.54),(3.73,6.605),(3.65,6.605),(3.65,6.835),(3.73,6.835),(3.73,12.09),(3.99,12.09),(3.99,3.54),(3.73,3.54)), + ) + Vertical.create( + net, tech.getLayer('Metal1_Label'), + u(3.86), u(0.26), u(3.54), u(12.09), + ) + pin = Vertical.create( + net, tech.getLayer('Metal1'), + u(3.86), u(0.26), u(3.54), u(12.09), + ) + net.setExternal(True) + NetExternalComponents.setExternal(pin) + nets['vdd'].setGlobal(True) + nets['vss'].setGlobal(True) + nets['vdd'].setType(Net.Type.POWER) + nets['vdd'].setDirection(Net.Direction.IN) + nets['vss'].setType(Net.Type.GROUND) + nets['vss'].setDirection(Net.Direction.IN) + nets['nq'].setDirection(Net.Direction.OUT) + nets['i0'].setDirection(Net.Direction.IN) + nets['i1'].setDirection(Net.Direction.IN) + nets['i2'].setDirection(Net.Direction.IN) + nets['i3'].setDirection(Net.Direction.IN) + + af.wrapLibrary(lib, 0) + + return lib + +def setup(): + lib = _load() + _routing() + try: + from .StdCell3V3Lib_fix import fix + except: + pass + else: + fix(lib) + + return lib diff --git a/crlcore/python/technos/node180/gf180mcu_c4m/__init__.py b/crlcore/python/technos/node180/gf180mcu_c4m/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/crlcore/python/technos/node180/gf180mcu_c4m/iolib.py b/crlcore/python/technos/node180/gf180mcu_c4m/iolib.py new file mode 100644 index 00000000..517c36bc --- /dev/null +++ b/crlcore/python/technos/node180/gf180mcu_c4m/iolib.py @@ -0,0 +1,76 @@ + +import sys +import os.path +from coriolis import Cfg +from coriolis.Hurricane import Technology, DataBase, DbU, Library, Layer, \ + BasicLayer, Cell, Net, Horizontal, Vertical, Contact, \ + Rectilinear, Box, Point, Instance, Transformation, \ + NetExternalComponents, Pad, Path, Query +import coriolis.Viewer +from coriolis.CRL import AllianceFramework, Gds, LefImport, CellGauge, \ + RoutingGauge, RoutingLayerGauge +from coriolis.Anabatic import StyleFlags +from coriolis.helpers import trace, l, u, n, overlay, io, ndaTopDir +from coriolis.helpers.overlay import CfgCache, UpdateSession + + +__all__ = [ 'setup' ] + + +def _routing (): + """ + Define the routing gauge for I/O cells along with the various P&R tool parameters. + """ + with CfgCache(priority=Cfg.Parameter.Priority.ConfigurationFile) as cfg: + cfg.chip.block.rails.count = 2 + cfg.chip.block.rails.hWidth = u(30.0) + cfg.chip.block.rails.vWidth = u(30.0) + cfg.chip.block.rails.hSpacing = u( 6.0) + cfg.chip.block.rails.vSpacing = u( 6.0) + cfg.chip.padCorner = 'gf180mcu_fd_io__cor_5lm' + cfg.chip.padSpacers = 'gf180mcu_fd_io__fill10_5lm,gf180mcu_fd_io__fill5_5lm,gf180mcu_fd_io__fill1_5lm' + af = AllianceFramework.get() + cg = CellGauge.create( 'LEF.GF_IO_Site' + , 'Metal2' # pin layer name. + , u( 1.0) # pitch. + , u(350.0) # cell slice height. + , u( 75.0) # cell slice step. + ) + af.addCellGauge( cg ) + + +def _loadIoLib ( pdkDir ): + """ + Load the I/O cells from the LEF+GDS files. + """ + af = AllianceFramework.get() + db = DataBase.getDB() + tech = db.getTechnology() + rootlib = db.getRootLibrary() + ioLib = Library.create( rootlib, 'iolib' ) + LefImport.setMergeLibrary( ioLib ) + LefImport.load( (pdkDir / 'libraries' + / 'gf180mcu_fd_sc_mcu9t5v0' + / 'latest' + / 'tech' + / 'gf180mcu_6LM_1TM_9K_9t_tech.lef').as_posix() ) + print( ' o Setup GF180MCU I/O library in {}.'.format( ioLib.getName() )) + io.vprint( 1, ' o Setup GF180MCU I/O library in {}.'.format( ioLib.getName() )) + cellsDir = pdkDir / 'libraries' / 'gf180mcu_fd_io' / 'latest' / 'cells' + print( cellsDir ) + for lefFile in cellsDir.glob( '*/*_5lm.lef' ): + print( lefFile ) + gdsFile = lefFile.with_suffix( '.gds' ) + if gdsFile.is_file(): + Gds.setTopCellName( gdsFile.stem[:-4] ) + Gds.load( ioLib, gdsFile.as_posix(), Gds.Layer_0_IsBoundary|Gds.NoBlockages ) + LefImport.load( lefFile.as_posix() ) + af.wrapLibrary( ioLib, 1 ) + + +def setup ( pdkDir ): + #with overlay.CfgCache(priority=Cfg.Parameter.Priority.UserFile) as cfg: + # cfg.misc.minTraceLevel = 100 + # cfg.misc.maxTraceLevel = 102 + _routing() + _loadIoLib( pdkDir ) diff --git a/crlcore/python/technos/node180/gf180mcu_c4m/techno.py b/crlcore/python/technos/node180/gf180mcu_c4m/techno.py new file mode 100644 index 00000000..e0db9168 --- /dev/null +++ b/crlcore/python/technos/node180/gf180mcu_c4m/techno.py @@ -0,0 +1,403 @@ + +# Autogenerated file +# SPDX-License-Identifier: GPL-2.0-or-later OR AGPL-3.0-or-later OR CERN-OHL-S-2.0+ +# Autogenerated file. Changes will be overwritten. + +try: + import coriolis +except ImportError: + import CRL, Hurricane, Viewer, Cfg + from Hurricane import ( + Technology, DataBase, DbU, Library, + Layer, BasicLayer, + Cell, Net, Horizontal, Vertical, Rectilinear, Box, Point, + NetExternalComponents, + ) + from common.colors import toRGB + from common.patterns import toHexa + from helpers import u + from helpers.technology import createBL, createVia + from helpers.overlay import CfgCache + from helpers.analogtechno import Length, Area, Unit, Asymmetric, loadAnalogTechno +else: + from coriolis import CRL, Hurricane, Viewer, Cfg + from coriolis.Hurricane import ( + Technology, DataBase, DbU, Library, + Layer, BasicLayer, + Cell, Net, Horizontal, Vertical, Rectilinear, Box, Point, + NetExternalComponents, + ) + from coriolis.technos.common.colors import toRGB + from coriolis.technos.common.patterns import toHexa + from coriolis.helpers import u + from coriolis.helpers.technology import createBL, createVia + from coriolis.helpers.overlay import CfgCache + from coriolis.helpers.analogtechno import Length, Area, Unit, Asymmetric, loadAnalogTechno + +__all__ = ["analogTechnologyTable", "setup"] + +analogTechnologyTable = ( + ('Header', 'gf180mcu', DbU.UnitPowerMicro, 'alpha'), + ('PhysicalGrid', 0.005, Length, ''), + + ('minWidth', 'Nwell', 0.86, Length, ''), + ('minSpacing', 'Nwell', 1.7, Length, ''), + ('minWidth', 'Nplus', 0.4, Length, ''), + ('minSpacing', 'Nplus', 0.4, Length, ''), + ('minArea', 'Nplus', 0.35, Area, ''), + ('minWidth', 'Pplus', 0.4, Length, ''), + ('minSpacing', 'Pplus', 0.4, Length, ''), + ('minArea', 'Pplus', 0.35, Area, ''), + ('minWidth', 'Dualgate', 0.7, Length, ''), + ('minSpacing', 'Dualgate', 0.44, Length, ''), + ('minWidth', 'COMP', 0.3, Length, ''), + ('minSpacing', 'COMP', 0.28, Length, ''), + ('minArea', 'COMP', 0.2025, Area, ''), + ('minEnclosure', 'Nwell', 'COMP', (0.6, 0.6), Length|Asymmetric, ''), + ('minSpacing', 'Nwell', 'COMP', (0.6, 0.6), Length|Asymmetric, ''), + # TODO for COMP: + # allow_in_substrate, implant_abut, allow_contactless_implant, allow_well_crossing + ('minWidth', 'Poly2', 0.28, Length, ''), + ('minSpacing', 'Poly2', 0.24, Length, ''), + ('minWidth', 'Metal1', 0.23, Length, ''), + ('minSpacing', 'Metal1', 0.23, Length, ''), + ('minArea', 'Metal1', 0.1444, Area, ''), + ('minDensity', 'Metal1', 0.3, Unit, ''), + ('minWidth', 'Metal2', 0.28, Length, ''), + ('minSpacing', 'Metal2', 0.28, Length, ''), + ('minArea', 'Metal2', 0.1444, Area, ''), + ('minDensity', 'Metal2', 0.3, Unit, ''), + ('minWidth', 'Metal3', 0.28, Length, ''), + ('minSpacing', 'Metal3', 0.28, Length, ''), + ('minArea', 'Metal3', 0.1444, Area, ''), + ('minDensity', 'Metal3', 0.3, Unit, ''), + ('minWidth', 'Metal4', 0.28, Length, ''), + ('minSpacing', 'Metal4', 0.28, Length, ''), + ('minArea', 'Metal4', 0.1444, Area, ''), + ('minDensity', 'Metal4', 0.3, Unit, ''), + ('minWidth', 'Metal5', 0.28, Length, ''), + ('minSpacing', 'Metal5', 0.28, Length, ''), + ('minArea', 'Metal5', 0.1444, Area, ''), + ('minDensity', 'Metal5', 0.3, Unit, ''), + ('minWidth', 'MetalTop', 0.44, Length, ''), + ('minSpacing', 'MetalTop', 0.436, Length, ''), + ('minArea', 'MetalTop', 0.5625, Area, ''), + ('minDensity', 'MetalTop', 0.3, Unit, ''), + ('minWidth', 'Contact', 0.22, Length, ''), + ('maxWidth', 'Contact', 0.22, Length, ''), + ('minSpacing', 'Contact', 0.28, Length, ''), + ('minEnclosure', 'COMP', 'Contact', (0.07, 0.07), Length|Asymmetric, ''), + ('minEnclosure', 'Poly2', 'Contact', (0.07, 0.07), Length|Asymmetric, ''), + ('minEnclosure', 'Metal1', 'Contact', (0.06, 0.005), Length|Asymmetric, ''), + ('minWidth', 'Via1', 0.26, Length, ''), + ('maxWidth', 'Via1', 0.26, Length, ''), + ('minSpacing', 'Via1', 0.36, Length, ''), + ('minEnclosure', 'Metal1', 'Via1', (0.06, 0.0), Length|Asymmetric, ''), + ('minEnclosure', 'Metal2', 'Via1', (0.06, 0.01), Length|Asymmetric, ''), + ('minWidth', 'Via2', 0.26, Length, ''), + ('maxWidth', 'Via2', 0.26, Length, ''), + ('minSpacing', 'Via2', 0.36, Length, ''), + ('minEnclosure', 'Metal2', 'Via2', (0.06, 0.01), Length|Asymmetric, ''), + ('minEnclosure', 'Metal3', 'Via2', (0.06, 0.01), Length|Asymmetric, ''), + ('minWidth', 'Via3', 0.26, Length, ''), + ('maxWidth', 'Via3', 0.26, Length, ''), + ('minSpacing', 'Via3', 0.36, Length, ''), + ('minEnclosure', 'Metal3', 'Via3', (0.06, 0.01), Length|Asymmetric, ''), + ('minEnclosure', 'Metal4', 'Via3', (0.06, 0.01), Length|Asymmetric, ''), + ('minWidth', 'Via4', 0.26, Length, ''), + ('maxWidth', 'Via4', 0.26, Length, ''), + ('minSpacing', 'Via4', 0.36, Length, ''), + ('minEnclosure', 'Metal4', 'Via4', (0.06, 0.01), Length|Asymmetric, ''), + ('minEnclosure', 'Metal5', 'Via4', (0.06, 0.01), Length|Asymmetric, ''), + ('minWidth', 'Via5', 0.26, Length, ''), + ('maxWidth', 'Via5', 0.26, Length, ''), + ('minSpacing', 'Via5', 0.36, Length, ''), + ('minEnclosure', 'Metal5', 'Via5', (0.06, 0.01), Length|Asymmetric, ''), + ('minEnclosure', 'MetalTop', 'Via5', (0.06, 0.01), Length|Asymmetric, ''), + # ('minTransistorL', 'fet33gate', 0.28, Length, ''), + # ('minTransistorW', 'fet33gate', 0.22, Length, ''), + # ('minGateExtension', 'COMP', 'fet33gate', 0.3, Length|Asymmetric, ''), + # ('minGateExtension', 'Poly2', 'fet33gate', 0.22, Length|Asymmetric, ''), + # ('minGateSpacing', 'Contact', 'fet33gate', 0.15, Length|Asymmetric, ''), + # ('minTransistorL', 'fet5gate', 0.5, Length, ''), + # ('minGateExtension', 'COMP', 'fet5gate', 0.4, Length|Asymmetric, ''), + # ('minGateExtension', 'Poly2', 'fet5gate', 0.22, Length|Asymmetric, ''), + # ('minGateSpacing', 'Contact', 'fet5gate', 0.15, Length|Asymmetric, ''), + # ('minGateEnclosure', 'Nplus', 'nfet_03v3', (0.23, 0.23), Length|Asymmetric, ''), + # ('minTransistorL', 'nfet_05v0', 0.6, Length, ''), + # ('minGateEnclosure', 'Nplus', 'nfet_05v0', (0.23, 0.23), Length|Asymmetric, ''), + # ('minGateEnclosure', 'Pplus', 'pfet_03v3', (0.23, 0.23), Length|Asymmetric, ''), + # ('minGateEnclosure', 'Pplus', 'pfet_05v0', (0.23, 0.23), Length|Asymmetric, ''), + # ('minWidth', 'intersect(Poly2,Dualgate)', '0.2', Length, ''), + ('minSpacing', 'COMP', 'Poly2', 0.3, Length|Asymmetric, ''), + # ('minWidth', 'intersect(COMP,Dualgate)', '0.3', Length, ''), + # ('minSpacing', 'intersect(COMP,Dualgate)', 0.36, Length, ''), + ('minSpacing', 'COMP', 'Nwell', 0.6, Length|Asymmetric, ''), +) + +def _setup_techno(): + db = DataBase.create() + CRL.System.get() + + tech = Technology.create(db, 'gf180mcu') + + DbU.setPrecision(2) + DbU.setPhysicalsPerGrid(0.005, DbU.UnitPowerMicro) + with CfgCache(priority=Cfg.Parameter.Priority.ConfigurationFile) as cfg: + cfg.gdsDriver.metricDbu = 1e-09 + cfg.gdsDriver.dbuPerUu = 0.001 + DbU.setGridsPerLambda(56) + DbU.setSymbolicSnapGridStep(DbU.fromGrid(1.0)) + DbU.setPolygonStep(DbU.fromGrid(1.0)) + DbU.setStringMode(DbU.StringModePhysical, DbU.UnitPowerMicro) + + createBL( + tech, 'Nwell', BasicLayer.Material.nWell, + size=u(0.86), spacing=u(1.7), gds2Layer=21, gds2DataType=0, + ) + createBL( + tech, 'Nplus', BasicLayer.Material.nImplant, + size=u(0.4), spacing=u(0.4), area=0.35, gds2Layer=32, gds2DataType=0, + ) + createBL( + tech, 'Pplus', BasicLayer.Material.pImplant, + size=u(0.4), spacing=u(0.4), area=0.35, gds2Layer=31, gds2DataType=0, + ) + createBL( + tech, 'Dualgate', BasicLayer.Material.other, + gds2Layer=55, gds2DataType=0, + ) + createBL( tech, 'Metal1_Label', BasicLayer.Material.other, gds2Layer=34, gds2DataType=10 ) + createBL( tech, 'Metal2_Label', BasicLayer.Material.other, gds2Layer=36, gds2DataType=10 ) + createBL( tech, 'Metal3_Label', BasicLayer.Material.other, gds2Layer=42, gds2DataType=10 ) + createBL( tech, 'Metal4_Label', BasicLayer.Material.other, gds2Layer=46, gds2DataType=10 ) + createBL( tech, 'Metal5_Label', BasicLayer.Material.other, gds2Layer=81, gds2DataType=10 ) + createBL( tech, 'MetalTop_Label', BasicLayer.Material.other, gds2Layer=53, gds2DataType=10 ) + createBL( + tech, 'COMP', BasicLayer.Material.active, + size=u(0.3), spacing=u(0.28), area=0.2025, gds2Layer=22, gds2DataType=0, + ) + createBL( + tech, 'Poly2', BasicLayer.Material.poly, + size=u(0.28), spacing=u(0.24), gds2Layer=30, gds2DataType=0, + ) + createBL( + tech, 'Contact', BasicLayer.Material.cut, + size=u(0.22), spacing=u(0.28), gds2Layer=33, gds2DataType=0, + ) + Metal1 = createBL( tech, 'Metal1' , BasicLayer.Material.metal, size=u(0.23), spacing=u(0.23 ), area=0.1444, gds2Layer=34, gds2DataType=0, ) + Via1 = createBL( tech, 'Via1' , BasicLayer.Material.cut , size=u(0.26), spacing=u(0.36 ), gds2Layer=35, gds2DataType=0, ) + Metal2 = createBL( tech, 'Metal2' , BasicLayer.Material.metal, size=u(0.28), spacing=u(0.28 ), area=0.1444, gds2Layer=36, gds2DataType=0, ) + Via2 = createBL( tech, 'Via2' , BasicLayer.Material.cut , size=u(0.26), spacing=u(0.36 ), gds2Layer=38, gds2DataType=0, ) + Metal3 = createBL( tech, 'Metal3' , BasicLayer.Material.metal, size=u(0.28), spacing=u(0.28 ), area=0.1444, gds2Layer=42, gds2DataType=0, ) + Via3 = createBL( tech, 'Via3' , BasicLayer.Material.cut , size=u(0.26), spacing=u(0.36 ), gds2Layer=40, gds2DataType=0, ) + Metal4 = createBL( tech, 'Metal4' , BasicLayer.Material.metal, size=u(0.28), spacing=u(0.28 ), area=0.1444, gds2Layer=46, gds2DataType=0, ) + Via4 = createBL( tech, 'Via4' , BasicLayer.Material.cut , size=u(0.26), spacing=u(0.36 ), gds2Layer=41, gds2DataType=0, ) + Metal5 = createBL( tech, 'Metal5' , BasicLayer.Material.metal, size=u(0.28), spacing=u(0.28 ), area=0.1444, gds2Layer=81, gds2DataType=0, ) + Via5 = createBL( tech, 'Via5' , BasicLayer.Material.cut , size=u(0.26), spacing=u(0.36 ), gds2Layer=82, gds2DataType=0, ) + MetalTop = createBL( tech, 'MetalTop', BasicLayer.Material.metal, size=u(0.44), spacing=u(0.436), area=0.5625, gds2Layer=53, gds2DataType=0, ) + + createBL( + tech, 'V5_XTOR', BasicLayer.Material.other, + gds2Layer=112, gds2DataType=1, + ) + + # ViaLayers + # Metal1<>Via1<>Metal2 + createVia( + tech, 'Metal1_Via1_Metal2', 'Metal1', 'Via1', 'Metal2', + u(0.26), + ) + # Metal2<>Via2<>Metal3 + createVia( + tech, 'Metal2_Via2_Metal3', 'Metal2', 'Via2', 'Metal3', + u(0.26), + ) + # Metal3<>Via3<>Metal4 + createVia( + tech, 'Metal3_Via3_Metal4', 'Metal3', 'Via3', 'Metal4', + u(0.26), + ) + # Metal4<>Via4<>Metal5 + createVia( + tech, 'Metal4_Via4_Metal5', 'Metal4', 'Via4', 'Metal5', + u(0.26), + ) + # Metal5<>Via5<>MetalTop + createVia( + tech, 'Metal5_Via5_MetalTop', 'Metal5', 'Via5', 'MetalTop', + u(0.26), + ) + + # Blockages + Metal1_BLK = createBL( tech, 'Metal1_BLK', BasicLayer.Material.blockage, gds2Layer=34, gds2DataType=5 ) + Metal2_BLK = createBL( tech, 'Metal2_BLK', BasicLayer.Material.blockage, gds2Layer=36, gds2DataType=5 ) + Metal3_BLK = createBL( tech, 'Metal3_BLK', BasicLayer.Material.blockage, gds2Layer=42, gds2DataType=5 ) + Metal4_BLK = createBL( tech, 'Metal4_BLK', BasicLayer.Material.blockage, gds2Layer=46, gds2DataType=5 ) + Metal5_BLK = createBL( tech, 'Metal5_BLK', BasicLayer.Material.blockage, gds2Layer=81, gds2DataType=5 ) + MetalT_BLK = createBL( tech, 'MetalT_BLK', BasicLayer.Material.blockage, gds2Layer=53, gds2DataType=5 ) + + Via1_BLK = createBL( tech, 'Via1_BLK', BasicLayer.Material.blockage, gds2Layer=35, gds2DataType=5 ) + Via2_BLK = createBL( tech, 'Via2_BLK', BasicLayer.Material.blockage, gds2Layer=38, gds2DataType=5 ) + Via3_BLK = createBL( tech, 'Via3_BLK', BasicLayer.Material.blockage, gds2Layer=40, gds2DataType=5 ) + Via4_BLK = createBL( tech, 'Via4_BLK', BasicLayer.Material.blockage, gds2Layer=41, gds2DataType=5 ) + Via5_BLK = createBL( tech, 'Via5_BLK', BasicLayer.Material.blockage, gds2Layer=82, gds2DataType=5 ) + + Metal1.setBlockageLayer( Metal1_BLK ) + Metal2.setBlockageLayer( Metal2_BLK ) + Metal3.setBlockageLayer( Metal3_BLK ) + Metal4.setBlockageLayer( Metal4_BLK ) + Metal5.setBlockageLayer( Metal5_BLK ) + MetalTop.setBlockageLayer( MetalT_BLK ) + Via1.setBlockageLayer( Via1_BLK ) + Via2.setBlockageLayer( Via2_BLK ) + Via3.setBlockageLayer( Via3_BLK ) + Via4.setBlockageLayer( Via4_BLK ) + Via5.setBlockageLayer( Via5_BLK ) + + createBL( tech, 'Text_Label', BasicLayer.Material.other, gds2Layer=58 ) + createBL( tech, 'Border' , BasicLayer.Material.other, gds2Layer=63 ) + + # Coriolis internal layers + createBL( + tech, 'text.cell', BasicLayer.Material.other, + ) + createBL( + tech, 'text.instance', BasicLayer.Material.other, + ) + createBL( + tech, 'SPL1', BasicLayer.Material.other, + ) + createBL( + tech, 'AutoLayer', BasicLayer.Material.other, + ) + createBL( + tech, 'gmetalh', BasicLayer.Material.metal, + ) + createBL( + tech, 'gcontact', BasicLayer.Material.cut, + ) + createBL( + tech, 'gmetalv', BasicLayer.Material.metal, + ) + + # Resistors + + # Capacitors + + # Transistors + # GateLayer.create(tech, 'fet33gate', 'COMP', 'Poly2') + # GateLayer.create(tech, 'fet5gate', 'COMP', 'Poly2', 'Dualgate') + # TransistorLayer.create(tech, 'nfet_03v3', 'fet33gate', 'Nplus') + # TransistorLayer.create(tech, 'nfet_05v0', 'fet5gate', 'Nplus') + # TransistorLayer.create(tech, 'pfet_03v3', 'fet33gate', 'Pplus', 'Nwell') + # TransistorLayer.create(tech, 'pfet_05v0', 'fet5gate', 'Pplus', 'Nwell') + + # Bipolars + +def _setup_display(): + # ---------------------------------------------------------------------- + # Style: Alliance.Classic [black] + + threshold = 0.2 if Viewer.Graphics.isHighDpi() else 0.1 + + style = Viewer.DisplayStyle( 'Alliance.Classic [black]' ) + style.setDescription( 'Alliance Classic Look - black background' ) + style.setDarkening ( Viewer.DisplayStyle.HSVr(1.0, 3.0, 2.5) ) + + # Viewer. + style.addDrawingStyle( group='Viewer', name='fallback' , color=toRGB('Gray238' ), border=1, pattern='55AA55AA55AA55AA' ) + style.addDrawingStyle( group='Viewer', name='background' , color=toRGB('Gray50' ), border=1 ) + style.addDrawingStyle( group='Viewer', name='foreground' , color=toRGB('White' ), border=1 ) + style.addDrawingStyle( group='Viewer', name='rubber' , color=toRGB('192,0,192' ), border=4, threshold=0.02 ) + style.addDrawingStyle( group='Viewer', name='phantom' , color=toRGB('Seashell4' ), border=1 ) + style.addDrawingStyle( group='Viewer', name='boundaries' , color=toRGB('wheat1' ), border=2, pattern='0000000000000000', threshold=0 ) + style.addDrawingStyle( group='Viewer', name='marker' , color=toRGB('80,250,80' ), border=1 ) + style.addDrawingStyle( group='Viewer', name='selectionDraw' , color=toRGB('White' ), border=1 ) + style.addDrawingStyle( group='Viewer', name='selectionFill' , color=toRGB('White' ), border=1 ) + style.addDrawingStyle( group='Viewer', name='grid' , color=toRGB('White' ), border=1, threshold=2.0 ) + style.addDrawingStyle( group='Viewer', name='spot' , color=toRGB('White' ), border=2, threshold=6.0 ) + style.addDrawingStyle( group='Viewer', name='ghost' , color=toRGB('White' ), border=1 ) + style.addDrawingStyle( group='Viewer', name='text.ruler' , color=toRGB('White' ), border=1, threshold= 0.0 ) + style.addDrawingStyle( group='Viewer', name='text.instance' , color=toRGB('White' ), border=1, threshold=400.0 ) + style.addDrawingStyle( group='Viewer', name='text.reference', color=toRGB('White' ), border=1, threshold=200.0 ) + style.addDrawingStyle( group='Viewer', name='undef' , color=toRGB('Violet' ), border=0, pattern='2244118822441188' ) + + # Active Layers. + style.addDrawingStyle(group='Active Layers', name='Nwell', color=toRGB('Tan'), pattern=toHexa('urgo.8'), border=1, threshold=threshold) + style.addDrawingStyle(group='Active Layers', name='Nplus', color=toRGB('LawnGreen'), pattern=toHexa('antihash0.8'), border=1, threshold=threshold) + style.addDrawingStyle(group='Active Layers', name='Pplus', color=toRGB('Yellow'), pattern=toHexa('antihash0.8'), border=1, threshold=threshold) + style.addDrawingStyle(group='Active Layers', name='COMP', color=toRGB('White'), pattern=toHexa('antihash0.8'), border=1, threshold=threshold) + style.addDrawingStyle(group='Active Layers', name='Poly2', color=toRGB('Red'), pattern=toHexa('antihash0.8'), border=1, threshold=threshold) + + # Routing Layers. + style.addDrawingStyle(group='Routing Layers', name='Metal1', color=toRGB('Blue'), pattern=toHexa('slash.8'), border=1, threshold=threshold) + style.addDrawingStyle(group='Routing Layers', name='Metal1_Label', color=toRGB('Blue'), pattern=toHexa('slash.8'), border=2, threshold=threshold) + style.addDrawingStyle(group='Routing Layers', name='Metal2', color=toRGB('Aqua'), pattern=toHexa('poids4.8'), border=1, threshold=threshold) + style.addDrawingStyle(group='Routing Layers', name='Metal2_Label', color=toRGB('Aqua'), pattern=toHexa('poids4.8'), border=2, threshold=threshold) + style.addDrawingStyle(group='Routing Layers', name='Metal3', color=toRGB('LightPink'), pattern=toHexa('poids4.8'), border=1, threshold=threshold) + style.addDrawingStyle(group='Routing Layers', name='Metal3_Label', color=toRGB('LightPink'), pattern=toHexa('poids4.8'), border=2, threshold=threshold) + style.addDrawingStyle(group='Routing Layers', name='Metal4', color=toRGB('Green'), pattern=toHexa('poids4.8'), border=1, threshold=threshold) + style.addDrawingStyle(group='Routing Layers', name='Metal4_Label', color=toRGB('Green'), pattern=toHexa('poids4.8'), border=2, threshold=threshold) + style.addDrawingStyle(group='Routing Layers', name='Metal5', color=toRGB('Yellow'), pattern=toHexa('poids4.8'), border=1, threshold=threshold) + style.addDrawingStyle(group='Routing Layers', name='Metal5_Label', color=toRGB('Yellow'), pattern=toHexa('poids4.8'), border=2, threshold=threshold) + style.addDrawingStyle(group='Routing Layers', name='MetalTop', color=toRGB('Violet'), pattern=toHexa('poids4.8'), border=1, threshold=threshold) + style.addDrawingStyle(group='Routing Layers', name='MetalTop_Label', color=toRGB('Violet'), pattern=toHexa('poids4.8'), border=2, threshold=threshold) + + # Cuts (VIA holes). + style.addDrawingStyle(group='Cuts (VIA holes)', name='Contact', color=toRGB('0,150,150'), threshold=threshold) + style.addDrawingStyle(group='Cuts (VIA holes)', name='Via1' , color=toRGB('Aqua' ), threshold=threshold) + style.addDrawingStyle(group='Cuts (VIA holes)', name='Via2' , color=toRGB('LightPink'), threshold=threshold) + style.addDrawingStyle(group='Cuts (VIA holes)', name='Via3' , color=toRGB('Green' ), threshold=threshold) + style.addDrawingStyle(group='Cuts (VIA holes)', name='Via4' , color=toRGB('Yellow' ), threshold=threshold) + style.addDrawingStyle(group='Cuts (VIA holes)', name='Via5' , color=toRGB('Violet' ), threshold=threshold) + + # Group: Blockages. + style.addDrawingStyle( group='Blockages', name='Metal1_BLK' , color=toRGB('Blue' ), pattern='006070381c0e0703' , threshold=0.80, border=2 ) + style.addDrawingStyle( group='Blockages', name='Metal2_BLK' , color=toRGB('Aqua' ), pattern='8103060c183060c0' , threshold=0.80, border=2 ) + style.addDrawingStyle( group='Blockages', name='Metal3_BLK' , color=toRGB('LightPink'), pattern=toHexa('poids4.8' ), threshold=0.80, border=2 ) + style.addDrawingStyle( group='Blockages', name='Metal4_BLK' , color=toRGB('Green' ), pattern=toHexa('light_antihash2.8'), threshold=0.80, border=2 ) + style.addDrawingStyle( group='Blockages', name='Metal5_BLK' , color=toRGB('Yellow' ), pattern='1144114411441144' , threshold=0.80, border=2 ) + style.addDrawingStyle( group='Blockages', name='MetalTop_BLK', color=toRGB('Violet' ), pattern=toHexa('light_antihash0.8'), threshold=0.80, border=2 ) + style.addDrawingStyle( group='Blockages', name='Via1_BLK' , color=toRGB('Aqua' ), threshold=threshold, border=2 ) + style.addDrawingStyle( group='Blockages', name='Via2_BLK' , color=toRGB('LightPink'), threshold=threshold, border=2 ) + style.addDrawingStyle( group='Blockages', name='Via3_BLK' , color=toRGB('Green' ), threshold=threshold, border=2 ) + style.addDrawingStyle( group='Blockages', name='Via4_BLK' , color=toRGB('Yellow' ), threshold=threshold, border=2 ) + style.addDrawingStyle( group='Blockages', name='Via5_BLK' , color=toRGB('Violet' ), threshold=threshold, border=2 ) + + # Knick & Kite. + style.addDrawingStyle( group='Knik & Kite', name='SPL1' , color=toRGB('Red' ) ) + style.addDrawingStyle( group='Knik & Kite', name='AutoLayer' , color=toRGB('Magenta' ) ) + style.addDrawingStyle( group='Knik & Kite', name='gmetalh' , color=toRGB('128,255,200'), pattern=toHexa('antislash2.32' ), border=1 ) + style.addDrawingStyle( group='Knik & Kite', name='gmetalv' , color=toRGB('200,200,255'), pattern=toHexa('light_antihash1.8'), border=1 ) + style.addDrawingStyle( group='Knik & Kite', name='gcontact' , color=toRGB('255,255,190'), border=1 ) + style.addDrawingStyle( group='Knik & Kite', name='Anabatic::Edge' , color=toRGB('255,255,190'), pattern='0000000000000000' , border=4, threshold=0.02 ) + style.addDrawingStyle( group='Knik & Kite', name='Anabatic::GCell', color=toRGB('255,255,190'), pattern='0000000000000000' , border=2, threshold=threshold ) + + Viewer.Graphics.addStyle( style ) + + # ---------------------------------------------------------------------- + # Style: Alliance.Classic [white]. + + style = Viewer.DisplayStyle( 'Alliance.Classic [white]' ) + style.inheritFrom( 'Alliance.Classic [black]' ) + style.setDescription( 'Alliance Classic Look - white background' ) + style.setDarkening ( Viewer.DisplayStyle.HSVr(1.0, 3.0, 2.5) ) + + style.addDrawingStyle( group='Viewer', name='background', color=toRGB('White'), border=1 ) + style.addDrawingStyle( group='Viewer', name='foreground', color=toRGB('Black'), border=1 ) + style.addDrawingStyle( group='Viewer', name='boundaries', color=toRGB('Black'), border=1, pattern='0000000000000000' ) + Viewer.Graphics.addStyle( style ) + + Viewer.Graphics.setStyle( 'Alliance.Classic [black]' ) + +def setup(): + _setup_techno() + _setup_display() + loadAnalogTechno(analogTechnologyTable, __file__) + try: + from .techno_fix import fix + except: + pass + else: + fix() diff --git a/cumulus/src/designflow/technos.py b/cumulus/src/designflow/technos.py index f3234ba1..84748464 100644 --- a/cumulus/src/designflow/technos.py +++ b/cumulus/src/designflow/technos.py @@ -244,6 +244,58 @@ def setupSky130_c4m ( checkToolkit=None, pdkMasterTop=None ): ShellEnv.CHECK_TOOLKIT = Where.checkToolkit.as_posix() +def setupGf180mcu_c4m ( checkToolkit=None + , pdkMasterTop=Path('/usr/share/open_pdks/C4M.gf180mcu') ): + from .. import Cfg + from .. import Viewer + from .. import CRL + from ..helpers import overlay, l, u, n + from .yosys import Yosys + + if isinstance(pdkMasterTop,str): + pdkMasterTop = Path( pdkMasterTop ) + if not pdkMasterTop.is_dir(): + print( '[ERROR] technos.setupGf180mcu_c4m(): pdkMasterTop directory do *not* exists:' ) + print( ' "{}"'.format(pdkMasterTop.as_posix()) ) + #sys.path.append( (pdkMasterTop / 'libs.tech' + # / 'coriolis' + # / 'techno' + # / 'etc' + # / 'coriolis2').resolve().as_posix() ) + + Where( checkToolkit ) + + from ..technos.node180.gf180mcu_c4m import techno, StdCell3V3Lib, iolib + techno.setup() + StdCell3V3Lib.setup() + iolib.setup( Where.checkToolkit / '..' / 'gf180mcu-pdk' ) + + liberty = pdkMasterTop / 'libs.ref' / 'StdCell3V3Lib' / 'liberty' / 'StdCell3V3Lib_nom.lib' + + with overlay.CfgCache(priority=Cfg.Parameter.Priority.UserFile) as cfg: + cfg.misc.catchCore = False + cfg.misc.minTraceLevel = 12300 + cfg.misc.maxTraceLevel = 12400 + cfg.misc.info = False + cfg.misc.paranoid = False + cfg.misc.bug = False + cfg.misc.logMode = True + cfg.misc.verboseLevel1 = True + cfg.misc.verboseLevel2 = True + cfg.etesian.graphics = 3 + cfg.etesian.spaceMargin = 0.10 + cfg.anabatic.topRoutingLayer = 'metal6' + cfg.katana.eventsLimit = 4000000 + af = CRL.AllianceFramework.get() + lg5 = af.getRoutingGauge('StdCell3V3Lib').getLayerGauge( 5 ) + lg5.setType( CRL.RoutingLayerGauge.PowerSupply ) + env = af.getEnvironment() + env.setCLOCK( '^sys_clk$|^ck|^jtag_tck$' ) + + Yosys.setLiberty( liberty ) + ShellEnv.CHECK_TOOLKIT = Where.checkToolkit.as_posix() + + def setupFreePDK45_c4m ( checkToolkit=None, pdkMasterTop=None ): from .. import Cfg from .. import Viewer