From 207e44837c4d01f705cfc1b8d635ceb349548fce Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Mon, 19 Aug 2019 22:26:50 +0200 Subject: [PATCH] LVS: allow missing device classes in reference schematic Reasoning: some devices may simply not be used in the reference schematic. --- src/lvs/lvs/built-in-macros/_lvs_netter.rb | 8 +- .../lvs/ringo_simple_same_device_classes.lvs | 35 +- .../ringo_simple_same_device_classes.lvsdb.1 | 498 +++++++++--------- .../ringo_simple_same_device_classes.lvsdb.2 | 498 +++++++++--------- 4 files changed, 534 insertions(+), 505 deletions(-) diff --git a/src/lvs/lvs/built-in-macros/_lvs_netter.rb b/src/lvs/lvs/built-in-macros/_lvs_netter.rb index 4b445e3da..3e68b3d1c 100644 --- a/src/lvs/lvs/built-in-macros/_lvs_netter.rb +++ b/src/lvs/lvs/built-in-macros/_lvs_netter.rb @@ -285,9 +285,13 @@ module LVS ( nl_a, nl_b ) = _ensure_two_netlists dc_a = a && (nl_a.device_class_by_name(a) || raise("Not a valid device class in extracted netlist: #{a}")) - dc_b = b && (nl_b.device_class_by_name(b) || raise("Not a valid device class in reference netlist: #{b}")) + dc_b = b && nl_b.device_class_by_name(b) - @comparer.same_device_classes(dc_a, dc_b) + # NOTE: a device class is allowed to be missing in the reference netlist because the + # device may simply not be used there. + if dc_b + @comparer.same_device_classes(dc_a, dc_b) + end end diff --git a/testdata/lvs/ringo_simple_same_device_classes.lvs b/testdata/lvs/ringo_simple_same_device_classes.lvs index da0ec1196..9a2bad4d1 100644 --- a/testdata/lvs/ringo_simple_same_device_classes.lvs +++ b/testdata/lvs/ringo_simple_same_device_classes.lvs @@ -21,6 +21,7 @@ contact = input(8, 0) metal1 = input(9, 0) via1 = input(10, 0) metal2 = input(11, 0) +thickox = input(12, 0) # Bulk layer for terminal provisioning @@ -30,24 +31,42 @@ bulk = polygon_layer active_in_nwell = active & nwell pactive = active_in_nwell & pplus -pgate = pactive & poly -psd = pactive - pgate +pactive_hv = pactive & thickox +pgate_hv = pactive_hv & poly +psd_hv = pactive_hv - pgate_hv +pactive_lv = pactive - thickox +pgate_lv = pactive_lv & poly +psd_lv = pactive_lv - pgate_lv +psd = pactive - poly ntie = active_in_nwell & nplus active_outside_nwell = active - nwell nactive = active_outside_nwell & nplus -ngate = nactive & poly -nsd = nactive - ngate +nactive_hv = nactive & thickox +ngate_hv = nactive_hv & poly +nsd_hv = nactive_hv - ngate_hv +nactive_lv = nactive - thickox +ngate_lv = nactive_lv & poly +nsd_lv = nactive_lv - ngate_lv +nsd = nactive - poly ptie = active_outside_nwell & pplus # Device extraction # PMOS transistor device extraction -extract_devices(mos4("PM"), { "SD" => psd, "G" => pgate, "W" => nwell, - "tS" => psd, "tD" => psd, "tG" => poly, "tW" => nwell }) +extract_devices(mos4("PM"), { "SD" => psd_lv, "G" => pgate_lv, "W" => nwell, + "tS" => psd, "tD" => psd, "tG" => poly, "tW" => nwell }) # NMOS transistor device extraction -extract_devices(mos4("NM"), { "SD" => nsd, "G" => ngate, "W" => bulk, +extract_devices(mos4("NM"), { "SD" => nsd_lv, "G" => ngate_lv, "W" => bulk, + "tS" => nsd, "tD" => nsd, "tG" => poly, "tW" => bulk }) + +# PMOS transistor device extraction (HV) +extract_devices(mos4("PMHV"), { "SD" => psd_hv, "G" => pgate_hv, "W" => nwell, + "tS" => psd, "tD" => psd, "tG" => poly, "tW" => nwell }) + +# NMOS transistor device extraction (HV) +extract_devices(mos4("NMHV"), { "SD" => nsd_hv, "G" => ngate_hv, "W" => bulk, "tS" => nsd, "tD" => nsd, "tG" => poly, "tW" => bulk }) # Define connectivity for netlist extraction @@ -73,6 +92,8 @@ netlist.simplify same_device_classes("PM", "PMOS") same_device_classes("NM", "NMOS") +same_device_classes("PMHV", "PMOSHV") +same_device_classes("NMHV", "NMOSHV") compare diff --git a/testdata/lvs/ringo_simple_same_device_classes.lvsdb.1 b/testdata/lvs/ringo_simple_same_device_classes.lvsdb.1 index 7fc246d6a..bff454e1e 100644 --- a/testdata/lvs/ringo_simple_same_device_classes.lvsdb.1 +++ b/testdata/lvs/ringo_simple_same_device_classes.lvsdb.1 @@ -10,49 +10,51 @@ layout( # Mask layers layer(l3 '1/0') - layer(l4 '5/0') - layer(l8 '8/0') - layer(l11 '9/0') - layer(l12 '10/0') - layer(l13 '11/0') - layer(l7) - layer(l2) + layer(l5 '5/0') + layer(l14 '8/0') + layer(l17 '9/0') + layer(l18 '10/0') + layer(l19 '11/0') + layer(l8) + layer(l4) + layer(l15) layer(l9) - layer(l6) - layer(l10) + layer(l16) # Mask layer connectivity - connect(l3 l3 l9) - connect(l4 l4 l8) - connect(l8 l4 l8 l11 l2 l9 l6 l10) - connect(l11 l8 l11 l12) - connect(l12 l11 l12 l13) - connect(l13 l12 l13) - connect(l7 l7) - connect(l2 l8 l2) - connect(l9 l3 l8 l9) - connect(l6 l8 l6) - connect(l10 l8 l10) + connect(l3 l3 l15) + connect(l5 l5 l14) + connect(l14 l5 l14 l17 l4 l15 l9 l16) + connect(l17 l14 l17 l18) + connect(l18 l17 l18 l19) + connect(l19 l18 l19) + connect(l8 l8) + connect(l4 l14 l4) + connect(l15 l3 l14 l15) + connect(l9 l14 l9) + connect(l16 l14 l16) # Global nets and connectivity - global(l7 SUBSTRATE) - global(l10 SUBSTRATE) + global(l8 SUBSTRATE) + global(l16 SUBSTRATE) # Device class section class(PM MOS4) class(NM MOS4) + class(PMHV MOS4) + class(NMHV MOS4) # Device abstracts section # Device abstracts list the pin shapes of the devices. device(D$PM PM terminal(S - rect(l2 (-550 -750) (425 1500)) + rect(l4 (-550 -750) (425 1500)) ) terminal(G - rect(l4 (-125 -750) (250 1500)) + rect(l5 (-125 -750) (250 1500)) ) terminal(D - rect(l2 (125 -750) (450 1500)) + rect(l4 (125 -750) (450 1500)) ) terminal(B rect(l3 (-125 -750) (250 1500)) @@ -60,13 +62,13 @@ layout( ) device(D$PM$1 PM terminal(S - rect(l2 (-575 -750) (450 1500)) + rect(l4 (-575 -750) (450 1500)) ) terminal(G - rect(l4 (-125 -750) (250 1500)) + rect(l5 (-125 -750) (250 1500)) ) terminal(D - rect(l2 (125 -750) (425 1500)) + rect(l4 (125 -750) (425 1500)) ) terminal(B rect(l3 (-125 -750) (250 1500)) @@ -74,13 +76,13 @@ layout( ) device(D$PM$2 PM terminal(S - rect(l2 (-550 -750) (425 1500)) + rect(l4 (-550 -750) (425 1500)) ) terminal(G - rect(l4 (-125 -750) (250 1500)) + rect(l5 (-125 -750) (250 1500)) ) terminal(D - rect(l2 (125 -750) (425 1500)) + rect(l4 (125 -750) (425 1500)) ) terminal(B rect(l3 (-125 -750) (250 1500)) @@ -88,44 +90,44 @@ layout( ) device(D$NM NM terminal(S - rect(l6 (-550 -475) (425 950)) + rect(l9 (-550 -475) (425 950)) ) terminal(G - rect(l4 (-125 -475) (250 950)) + rect(l5 (-125 -475) (250 950)) ) terminal(D - rect(l6 (125 -475) (450 950)) + rect(l9 (125 -475) (450 950)) ) terminal(B - rect(l7 (-125 -475) (250 950)) + rect(l8 (-125 -475) (250 950)) ) ) device(D$NM$1 NM terminal(S - rect(l6 (-575 -475) (450 950)) + rect(l9 (-575 -475) (450 950)) ) terminal(G - rect(l4 (-125 -475) (250 950)) + rect(l5 (-125 -475) (250 950)) ) terminal(D - rect(l6 (125 -475) (425 950)) + rect(l9 (125 -475) (425 950)) ) terminal(B - rect(l7 (-125 -475) (250 950)) + rect(l8 (-125 -475) (250 950)) ) ) device(D$NM$2 NM terminal(S - rect(l6 (-550 -475) (425 950)) + rect(l9 (-550 -475) (425 950)) ) terminal(G - rect(l4 (-125 -475) (250 950)) + rect(l5 (-125 -475) (250 950)) ) terminal(D - rect(l6 (125 -475) (425 950)) + rect(l9 (125 -475) (425 950)) ) terminal(B - rect(l7 (-125 -475) (250 950)) + rect(l8 (-125 -475) (250 950)) ) ) @@ -138,70 +140,70 @@ layout( # Nets with their geometries net(1 name(VDD) - rect(l8 (1110 5160) (180 180)) - rect(l8 (-180 920) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l11 (-240 -790) (300 1700)) - rect(l11 (-1350 0) (2400 800)) - rect(l11 (-1151 -401) (2 2)) - rect(l2 (-276 -2151) (425 1500)) - rect(l2 (-400 -1500) (425 1500)) + rect(l14 (1110 5160) (180 180)) + rect(l14 (-180 920) (180 180)) + rect(l14 (-180 -730) (180 180)) + rect(l17 (-240 -790) (300 1700)) + rect(l17 (-1350 0) (2400 800)) + rect(l17 (-1151 -401) (2 2)) + rect(l4 (-276 -2151) (425 1500)) + rect(l4 (-400 -1500) (425 1500)) ) net(2 name(OUT) - rect(l8 (1810 1770) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l8 (-1580 3760) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l8 (1220 920) (180 180)) - rect(l8 (-180 -1280) (180 180)) - rect(l8 (-180 370) (180 180)) - polygon(l11 (-240 -4180) (0 1390) (490 0) (0 -300) (-190 0) (0 -1090)) - rect(l11 (-110 1390) (300 1400)) - polygon(l11 (-1890 0) (0 600) (300 0) (0 -300) (1590 0) (0 -300)) - rect(l11 (-141 -501) (2 2)) - rect(l11 (-1751 1099) (300 1400)) - rect(l11 (1100 -1700) (300 300)) - rect(l11 (-300 0) (300 1400)) - rect(l2 (-1750 -1450) (425 1500)) - rect(l2 (950 -1500) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (1810 1770) (180 180)) + rect(l14 (-180 370) (180 180)) + rect(l14 (-1580 3760) (180 180)) + rect(l14 (-180 -730) (180 180)) + rect(l14 (-180 -730) (180 180)) + rect(l14 (1220 920) (180 180)) + rect(l14 (-180 -1280) (180 180)) + rect(l14 (-180 370) (180 180)) + polygon(l17 (-240 -4180) (0 1390) (490 0) (0 -300) (-190 0) (0 -1090)) + rect(l17 (-110 1390) (300 1400)) + polygon(l17 (-1890 0) (0 600) (300 0) (0 -300) (1590 0) (0 -300)) + rect(l17 (-141 -501) (2 2)) + rect(l17 (-1751 1099) (300 1400)) + rect(l17 (1100 -1700) (300 300)) + rect(l17 (-300 0) (300 1400)) + rect(l4 (-1750 -1450) (425 1500)) + rect(l4 (950 -1500) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(3 name(VSS) - rect(l8 (410 1770) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l11 (-240 -1300) (300 1360)) - rect(l11 (-650 -2160) (2400 800)) - rect(l11 (-1151 -401) (2 2)) - rect(l6 (-951 859) (425 950)) + rect(l14 (410 1770) (180 180)) + rect(l14 (-180 370) (180 180)) + rect(l17 (-240 -1300) (300 1360)) + rect(l17 (-650 -2160) (2400 800)) + rect(l17 (-1151 -401) (2 2)) + rect(l9 (-951 859) (425 950)) ) net(4 rect(l3 (-100 4500) (2600 3500)) ) net(5 name(B) - rect(l4 (1425 2860) (250 1940)) - rect(l4 (-345 -950) (300 300)) - rect(l4 (-205 650) (250 2000)) - rect(l4 (-250 -2000) (250 2000)) - rect(l4 (-250 -5390) (250 1450)) - rect(l8 (-285 1050) (180 180)) - rect(l11 (-71 -91) (2 2)) - rect(l11 (-171 -151) (300 300)) + rect(l5 (1425 2860) (250 1940)) + rect(l5 (-345 -950) (300 300)) + rect(l5 (-205 650) (250 2000)) + rect(l5 (-250 -2000) (250 2000)) + rect(l5 (-250 -5390) (250 1450)) + rect(l14 (-285 1050) (180 180)) + rect(l17 (-71 -91) (2 2)) + rect(l17 (-171 -151) (300 300)) ) net(6 name(A) - rect(l4 (725 2860) (250 1940)) - rect(l4 (-325 -1850) (300 300)) - rect(l4 (-225 1550) (250 2000)) - rect(l4 (-250 -2000) (250 2000)) - rect(l4 (-250 -5390) (250 1450)) - rect(l8 (-265 150) (180 180)) - rect(l11 (-91 -91) (2 2)) - rect(l11 (-151 -151) (300 300)) + rect(l5 (725 2860) (250 1940)) + rect(l5 (-325 -1850) (300 300)) + rect(l5 (-225 1550) (250 2000)) + rect(l5 (-250 -2000) (250 2000)) + rect(l5 (-250 -5390) (250 1450)) + rect(l14 (-265 150) (180 180)) + rect(l17 (-91 -91) (2 2)) + rect(l17 (-151 -151) (300 300)) ) net(7 name(SUBSTRATE)) net(8 - rect(l6 (975 1660) (425 950)) - rect(l6 (-400 -950) (425 950)) + rect(l9 (975 1660) (425 950)) + rect(l9 (-400 -950) (425 950)) ) # Outgoing pins and their connections to nets @@ -275,46 +277,46 @@ layout( # Nets with their geometries net(1 name(VDD) - rect(l8 (410 6260) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l11 (-240 -240) (300 1400)) - rect(l11 (-650 300) (1800 800)) - rect(l11 (-1450 -1100) (300 300)) - rect(l11 (299 399) (2 2)) - rect(l2 (-651 -2151) (425 1500)) + rect(l14 (410 6260) (180 180)) + rect(l14 (-180 -730) (180 180)) + rect(l14 (-180 -730) (180 180)) + rect(l17 (-240 -240) (300 1400)) + rect(l17 (-650 300) (1800 800)) + rect(l17 (-1450 -1100) (300 300)) + rect(l17 (299 399) (2 2)) + rect(l4 (-651 -2151) (425 1500)) ) net(2 name(OUT) - rect(l8 (1110 5160) (180 180)) - rect(l8 (-180 920) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l8 (-180 -4120) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l11 (-240 -790) (300 4790)) - rect(l11 (-151 -2501) (2 2)) - rect(l2 (-226 1049) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (1110 5160) (180 180)) + rect(l14 (-180 920) (180 180)) + rect(l14 (-180 -730) (180 180)) + rect(l14 (-180 -4120) (180 180)) + rect(l14 (-180 370) (180 180)) + rect(l17 (-240 -790) (300 4790)) + rect(l17 (-151 -2501) (2 2)) + rect(l4 (-226 1049) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(3 name(VSS) - rect(l8 (410 1770) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l11 (-240 -1300) (300 1360)) - rect(l11 (-650 -2160) (1800 800)) - rect(l11 (-851 -401) (2 2)) - rect(l6 (-651 859) (425 950)) + rect(l14 (410 1770) (180 180)) + rect(l14 (-180 370) (180 180)) + rect(l17 (-240 -1300) (300 1360)) + rect(l17 (-650 -2160) (1800 800)) + rect(l17 (-851 -401) (2 2)) + rect(l9 (-651 859) (425 950)) ) net(4 rect(l3 (-100 4500) (2000 3500)) ) net(5 name(IN) - rect(l4 (725 2860) (250 1940)) - rect(l4 (-525 -1850) (300 300)) - rect(l4 (-25 1550) (250 2000)) - rect(l4 (-250 -2000) (250 2000)) - rect(l4 (-250 -5390) (250 1450)) - rect(l8 (-465 150) (180 180)) - rect(l11 (-91 -91) (2 2)) - rect(l11 (-151 -151) (300 300)) + rect(l5 (725 2860) (250 1940)) + rect(l5 (-525 -1850) (300 300)) + rect(l5 (-25 1550) (250 2000)) + rect(l5 (-250 -2000) (250 2000)) + rect(l5 (-250 -5390) (250 1450)) + rect(l14 (-465 150) (180 180)) + rect(l17 (-91 -91) (2 2)) + rect(l17 (-151 -151) (300 300)) ) net(6 name(SUBSTRATE)) @@ -362,162 +364,162 @@ layout( # Nets with their geometries net(1 - rect(l8 (4710 3010) (180 180)) - rect(l11 (-850 -240) (610 300)) - rect(l2 (-2550 1800) (425 1500)) - rect(l2 (950 -1500) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (4710 3010) (180 180)) + rect(l17 (-850 -240) (610 300)) + rect(l4 (-2550 1800) (425 1500)) + rect(l4 (950 -1500) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(2 - rect(l8 (6510 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (6510 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(3 - rect(l8 (8310 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (8310 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(4 - rect(l8 (10110 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (10110 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(5 - rect(l8 (11910 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (11910 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(6 - rect(l8 (13710 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (13710 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(7 - rect(l8 (15510 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (15510 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(8 - rect(l8 (17310 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (17310 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(9 - rect(l8 (19110 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (19110 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(10 - rect(l8 (20910 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (20910 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(11 name(FB) - rect(l8 (22710 3010) (180 180)) - rect(l8 (-19700 720) (180 180)) - rect(l11 (18380 -1140) (900 300)) - rect(l11 (-19530 590) (320 320)) - rect(l11 (17820 -320) (320 320)) - rect(l12 (-18400 -260) (200 200)) - rect(l12 (17940 -200) (200 200)) - rect(l13 (-18040 -300) (17740 400)) - rect(l13 (-17921 -201) (2 2)) - rect(l13 (-221 -201) (400 400)) - rect(l13 (17740 -400) (400 400)) - rect(l2 (-245 850) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (22710 3010) (180 180)) + rect(l14 (-19700 720) (180 180)) + rect(l17 (18380 -1140) (900 300)) + rect(l17 (-19530 590) (320 320)) + rect(l17 (17820 -320) (320 320)) + rect(l18 (-18400 -260) (200 200)) + rect(l18 (17940 -200) (200 200)) + rect(l19 (-18040 -300) (17740 400)) + rect(l19 (-17921 -201) (2 2)) + rect(l19 (-221 -201) (400 400)) + rect(l19 (17740 -400) (400 400)) + rect(l4 (-245 850) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(12 name(VDD) rect(l3 (500 4500) (1400 3500)) rect(l3 (-1900 -3500) (600 3500)) rect(l3 (23300 -3500) (1400 3500)) rect(l3 (-100 -3500) (600 3500)) - rect(l8 (-24690 -1240) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l8 (-180 -1280) (180 180)) - rect(l8 (23220 370) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l8 (-180 -1280) (180 180)) - rect(l11 (-21741 859) (2 2)) - rect(l11 (-2351 -451) (1200 800)) - rect(l11 (-750 -1450) (300 1400)) - rect(l11 (-101 -351) (2 2)) - rect(l11 (-1251 -401) (600 800)) - rect(l11 (23400 -800) (1200 800)) - rect(l11 (-750 -1450) (300 1400)) - rect(l11 (-101 -351) (2 2)) - rect(l11 (549 -401) (600 800)) - rect(l2 (-23025 -2550) (425 1500)) - rect(l2 (-400 -1500) (425 1500)) - rect(l2 (1275 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l9 (-21975 -450) (500 1500)) - rect(l9 (22900 -1500) (500 1500)) + rect(l14 (-24690 -1240) (180 180)) + rect(l14 (-180 370) (180 180)) + rect(l14 (-180 -1280) (180 180)) + rect(l14 (23220 370) (180 180)) + rect(l14 (-180 370) (180 180)) + rect(l14 (-180 -1280) (180 180)) + rect(l17 (-21741 859) (2 2)) + rect(l17 (-2351 -451) (1200 800)) + rect(l17 (-750 -1450) (300 1400)) + rect(l17 (-101 -351) (2 2)) + rect(l17 (-1251 -401) (600 800)) + rect(l17 (23400 -800) (1200 800)) + rect(l17 (-750 -1450) (300 1400)) + rect(l17 (-101 -351) (2 2)) + rect(l17 (549 -401) (600 800)) + rect(l4 (-23025 -2550) (425 1500)) + rect(l4 (-400 -1500) (425 1500)) + rect(l4 (1275 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l15 (-21975 -450) (500 1500)) + rect(l15 (22900 -1500) (500 1500)) ) net(13 name(OUT) - rect(l11 (23440 3840) (320 320)) - rect(l12 (-260 -260) (200 200)) - rect(l13 (-101 -101) (2 2)) - rect(l13 (-201 -201) (400 400)) - rect(l2 (-625 850) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l17 (23440 3840) (320 320)) + rect(l18 (-260 -260) (200 200)) + rect(l19 (-101 -101) (2 2)) + rect(l19 (-201 -201) (400 400)) + rect(l4 (-625 850) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(14 name(ENABLE) - rect(l8 (2510 3010) (180 180)) - rect(l11 (-250 -250) (320 320)) - rect(l12 (-260 -260) (200 200)) - rect(l13 (-101 -101) (2 2)) - rect(l13 (-201 -201) (400 400)) + rect(l14 (2510 3010) (180 180)) + rect(l17 (-250 -250) (320 320)) + rect(l18 (-260 -260) (200 200)) + rect(l19 (-101 -101) (2 2)) + rect(l19 (-201 -201) (400 400)) ) net(15 name(VSS) - rect(l8 (1110 1610) (180 180)) - rect(l8 (-180 -1280) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l8 (23220 370) (180 180)) - rect(l8 (-180 -1280) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l11 (-21741 -391) (2 2)) - rect(l11 (-1901 -401) (300 1400)) - rect(l11 (-750 -1450) (1200 800)) - rect(l11 (-551 -401) (2 2)) - rect(l11 (-1251 -401) (600 800)) - rect(l11 (23850 -750) (300 1400)) - rect(l11 (-750 -1450) (1200 800)) - rect(l11 (-551 -401) (2 2)) - rect(l11 (549 -401) (600 800)) - rect(l6 (-23700 460) (425 950)) - rect(l6 (1975 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l10 (-21975 -2210) (500 1500)) - rect(l10 (22900 -1500) (500 1500)) + rect(l14 (1110 1610) (180 180)) + rect(l14 (-180 -1280) (180 180)) + rect(l14 (-180 370) (180 180)) + rect(l14 (23220 370) (180 180)) + rect(l14 (-180 -1280) (180 180)) + rect(l14 (-180 370) (180 180)) + rect(l17 (-21741 -391) (2 2)) + rect(l17 (-1901 -401) (300 1400)) + rect(l17 (-750 -1450) (1200 800)) + rect(l17 (-551 -401) (2 2)) + rect(l17 (-1251 -401) (600 800)) + rect(l17 (23850 -750) (300 1400)) + rect(l17 (-750 -1450) (1200 800)) + rect(l17 (-551 -401) (2 2)) + rect(l17 (549 -401) (600 800)) + rect(l9 (-23700 460) (425 950)) + rect(l9 (1975 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l16 (-21975 -2210) (500 1500)) + rect(l16 (22900 -1500) (500 1500)) ) # Outgoing pins and their connections to nets diff --git a/testdata/lvs/ringo_simple_same_device_classes.lvsdb.2 b/testdata/lvs/ringo_simple_same_device_classes.lvsdb.2 index 7ea0be0cd..2d7583393 100644 --- a/testdata/lvs/ringo_simple_same_device_classes.lvsdb.2 +++ b/testdata/lvs/ringo_simple_same_device_classes.lvsdb.2 @@ -10,49 +10,51 @@ layout( # Mask layers layer(l3 '1/0') - layer(l4 '5/0') - layer(l8 '8/0') - layer(l11 '9/0') - layer(l12 '10/0') - layer(l13 '11/0') - layer(l7) - layer(l2) + layer(l5 '5/0') + layer(l14 '8/0') + layer(l17 '9/0') + layer(l18 '10/0') + layer(l19 '11/0') + layer(l8) + layer(l4) + layer(l15) layer(l9) - layer(l6) - layer(l10) + layer(l16) # Mask layer connectivity - connect(l3 l3 l9) - connect(l4 l4 l8) - connect(l8 l4 l8 l11 l2 l9 l6 l10) - connect(l11 l8 l11 l12) - connect(l12 l11 l12 l13) - connect(l13 l12 l13) - connect(l7 l7) - connect(l2 l8 l2) - connect(l9 l3 l8 l9) - connect(l6 l8 l6) - connect(l10 l8 l10) + connect(l3 l3 l15) + connect(l5 l5 l14) + connect(l14 l5 l14 l17 l4 l15 l9 l16) + connect(l17 l14 l17 l18) + connect(l18 l17 l18 l19) + connect(l19 l18 l19) + connect(l8 l8) + connect(l4 l14 l4) + connect(l15 l3 l14 l15) + connect(l9 l14 l9) + connect(l16 l14 l16) # Global nets and connectivity - global(l7 SUBSTRATE) - global(l10 SUBSTRATE) + global(l8 SUBSTRATE) + global(l16 SUBSTRATE) # Device class section class(PM MOS4) class(NM MOS4) + class(PMHV MOS4) + class(NMHV MOS4) # Device abstracts section # Device abstracts list the pin shapes of the devices. device(D$PM PM terminal(S - rect(l2 (-550 -750) (425 1500)) + rect(l4 (-550 -750) (425 1500)) ) terminal(G - rect(l4 (-125 -750) (250 1500)) + rect(l5 (-125 -750) (250 1500)) ) terminal(D - rect(l2 (125 -750) (450 1500)) + rect(l4 (125 -750) (450 1500)) ) terminal(B rect(l3 (-125 -750) (250 1500)) @@ -60,13 +62,13 @@ layout( ) device(D$PM$1 PM terminal(S - rect(l2 (-575 -750) (450 1500)) + rect(l4 (-575 -750) (450 1500)) ) terminal(G - rect(l4 (-125 -750) (250 1500)) + rect(l5 (-125 -750) (250 1500)) ) terminal(D - rect(l2 (125 -750) (425 1500)) + rect(l4 (125 -750) (425 1500)) ) terminal(B rect(l3 (-125 -750) (250 1500)) @@ -74,13 +76,13 @@ layout( ) device(D$PM$2 PM terminal(S - rect(l2 (-550 -750) (425 1500)) + rect(l4 (-550 -750) (425 1500)) ) terminal(G - rect(l4 (-125 -750) (250 1500)) + rect(l5 (-125 -750) (250 1500)) ) terminal(D - rect(l2 (125 -750) (425 1500)) + rect(l4 (125 -750) (425 1500)) ) terminal(B rect(l3 (-125 -750) (250 1500)) @@ -88,44 +90,44 @@ layout( ) device(D$NM NM terminal(S - rect(l6 (-550 -475) (425 950)) + rect(l9 (-550 -475) (425 950)) ) terminal(G - rect(l4 (-125 -475) (250 950)) + rect(l5 (-125 -475) (250 950)) ) terminal(D - rect(l6 (125 -475) (450 950)) + rect(l9 (125 -475) (450 950)) ) terminal(B - rect(l7 (-125 -475) (250 950)) + rect(l8 (-125 -475) (250 950)) ) ) device(D$NM$1 NM terminal(S - rect(l6 (-575 -475) (450 950)) + rect(l9 (-575 -475) (450 950)) ) terminal(G - rect(l4 (-125 -475) (250 950)) + rect(l5 (-125 -475) (250 950)) ) terminal(D - rect(l6 (125 -475) (425 950)) + rect(l9 (125 -475) (425 950)) ) terminal(B - rect(l7 (-125 -475) (250 950)) + rect(l8 (-125 -475) (250 950)) ) ) device(D$NM$2 NM terminal(S - rect(l6 (-550 -475) (425 950)) + rect(l9 (-550 -475) (425 950)) ) terminal(G - rect(l4 (-125 -475) (250 950)) + rect(l5 (-125 -475) (250 950)) ) terminal(D - rect(l6 (125 -475) (425 950)) + rect(l9 (125 -475) (425 950)) ) terminal(B - rect(l7 (-125 -475) (250 950)) + rect(l8 (-125 -475) (250 950)) ) ) @@ -138,70 +140,70 @@ layout( # Nets with their geometries net(1 name(VDD) - rect(l8 (1110 5160) (180 180)) - rect(l8 (-180 920) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l11 (-240 -790) (300 1700)) - rect(l11 (-1350 0) (2400 800)) - rect(l11 (-1151 -401) (2 2)) - rect(l2 (-276 -2151) (425 1500)) - rect(l2 (-400 -1500) (425 1500)) + rect(l14 (1110 5160) (180 180)) + rect(l14 (-180 920) (180 180)) + rect(l14 (-180 -730) (180 180)) + rect(l17 (-240 -790) (300 1700)) + rect(l17 (-1350 0) (2400 800)) + rect(l17 (-1151 -401) (2 2)) + rect(l4 (-276 -2151) (425 1500)) + rect(l4 (-400 -1500) (425 1500)) ) net(2 name(OUT) - rect(l8 (1810 1770) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l8 (-1580 3760) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l8 (1220 920) (180 180)) - rect(l8 (-180 -1280) (180 180)) - rect(l8 (-180 370) (180 180)) - polygon(l11 (-240 -4180) (0 1390) (490 0) (0 -300) (-190 0) (0 -1090)) - rect(l11 (-110 1390) (300 1400)) - polygon(l11 (-1890 0) (0 600) (300 0) (0 -300) (1590 0) (0 -300)) - rect(l11 (-141 -501) (2 2)) - rect(l11 (-1751 1099) (300 1400)) - rect(l11 (1100 -1700) (300 300)) - rect(l11 (-300 0) (300 1400)) - rect(l2 (-375 -1450) (425 1500)) - rect(l2 (-1800 -1500) (425 1500)) - rect(l6 (950 -4890) (425 950)) + rect(l14 (1810 1770) (180 180)) + rect(l14 (-180 370) (180 180)) + rect(l14 (-1580 3760) (180 180)) + rect(l14 (-180 -730) (180 180)) + rect(l14 (-180 -730) (180 180)) + rect(l14 (1220 920) (180 180)) + rect(l14 (-180 -1280) (180 180)) + rect(l14 (-180 370) (180 180)) + polygon(l17 (-240 -4180) (0 1390) (490 0) (0 -300) (-190 0) (0 -1090)) + rect(l17 (-110 1390) (300 1400)) + polygon(l17 (-1890 0) (0 600) (300 0) (0 -300) (1590 0) (0 -300)) + rect(l17 (-141 -501) (2 2)) + rect(l17 (-1751 1099) (300 1400)) + rect(l17 (1100 -1700) (300 300)) + rect(l17 (-300 0) (300 1400)) + rect(l4 (-375 -1450) (425 1500)) + rect(l4 (-1800 -1500) (425 1500)) + rect(l9 (950 -4890) (425 950)) ) net(3 name(VSS) - rect(l8 (410 1770) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l11 (-240 -1300) (300 1360)) - rect(l11 (-650 -2160) (2400 800)) - rect(l11 (-1151 -401) (2 2)) - rect(l6 (-951 859) (425 950)) + rect(l14 (410 1770) (180 180)) + rect(l14 (-180 370) (180 180)) + rect(l17 (-240 -1300) (300 1360)) + rect(l17 (-650 -2160) (2400 800)) + rect(l17 (-1151 -401) (2 2)) + rect(l9 (-951 859) (425 950)) ) net(4 rect(l3 (-100 4500) (2600 3500)) ) net(5 name(B) - rect(l4 (1425 2860) (250 1940)) - rect(l4 (-345 -950) (300 300)) - rect(l4 (-205 650) (250 2000)) - rect(l4 (-250 -2000) (250 2000)) - rect(l4 (-250 -5390) (250 1450)) - rect(l8 (-285 1050) (180 180)) - rect(l11 (-71 -91) (2 2)) - rect(l11 (-171 -151) (300 300)) + rect(l5 (1425 2860) (250 1940)) + rect(l5 (-345 -950) (300 300)) + rect(l5 (-205 650) (250 2000)) + rect(l5 (-250 -2000) (250 2000)) + rect(l5 (-250 -5390) (250 1450)) + rect(l14 (-285 1050) (180 180)) + rect(l17 (-71 -91) (2 2)) + rect(l17 (-171 -151) (300 300)) ) net(6 name(A) - rect(l4 (725 2860) (250 1940)) - rect(l4 (-325 -1850) (300 300)) - rect(l4 (-225 1550) (250 2000)) - rect(l4 (-250 -2000) (250 2000)) - rect(l4 (-250 -5390) (250 1450)) - rect(l8 (-265 150) (180 180)) - rect(l11 (-91 -91) (2 2)) - rect(l11 (-151 -151) (300 300)) + rect(l5 (725 2860) (250 1940)) + rect(l5 (-325 -1850) (300 300)) + rect(l5 (-225 1550) (250 2000)) + rect(l5 (-250 -2000) (250 2000)) + rect(l5 (-250 -5390) (250 1450)) + rect(l14 (-265 150) (180 180)) + rect(l17 (-91 -91) (2 2)) + rect(l17 (-151 -151) (300 300)) ) net(7 name(SUBSTRATE)) net(8 - rect(l6 (975 1660) (425 950)) - rect(l6 (-400 -950) (425 950)) + rect(l9 (975 1660) (425 950)) + rect(l9 (-400 -950) (425 950)) ) # Outgoing pins and their connections to nets @@ -275,46 +277,46 @@ layout( # Nets with their geometries net(1 name(VDD) - rect(l8 (410 6260) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l11 (-240 -240) (300 1400)) - rect(l11 (-650 300) (1800 800)) - rect(l11 (-1450 -1100) (300 300)) - rect(l11 (299 399) (2 2)) - rect(l2 (-651 -2151) (425 1500)) + rect(l14 (410 6260) (180 180)) + rect(l14 (-180 -730) (180 180)) + rect(l14 (-180 -730) (180 180)) + rect(l17 (-240 -240) (300 1400)) + rect(l17 (-650 300) (1800 800)) + rect(l17 (-1450 -1100) (300 300)) + rect(l17 (299 399) (2 2)) + rect(l4 (-651 -2151) (425 1500)) ) net(2 name(OUT) - rect(l8 (1110 5160) (180 180)) - rect(l8 (-180 920) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l8 (-180 -4120) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l11 (-240 -790) (300 4790)) - rect(l11 (-151 -2501) (2 2)) - rect(l2 (-226 1049) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (1110 5160) (180 180)) + rect(l14 (-180 920) (180 180)) + rect(l14 (-180 -730) (180 180)) + rect(l14 (-180 -4120) (180 180)) + rect(l14 (-180 370) (180 180)) + rect(l17 (-240 -790) (300 4790)) + rect(l17 (-151 -2501) (2 2)) + rect(l4 (-226 1049) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(3 name(VSS) - rect(l8 (410 1770) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l11 (-240 -1300) (300 1360)) - rect(l11 (-650 -2160) (1800 800)) - rect(l11 (-851 -401) (2 2)) - rect(l6 (-651 859) (425 950)) + rect(l14 (410 1770) (180 180)) + rect(l14 (-180 370) (180 180)) + rect(l17 (-240 -1300) (300 1360)) + rect(l17 (-650 -2160) (1800 800)) + rect(l17 (-851 -401) (2 2)) + rect(l9 (-651 859) (425 950)) ) net(4 rect(l3 (-100 4500) (2000 3500)) ) net(5 name(IN) - rect(l4 (725 2860) (250 1940)) - rect(l4 (-525 -1850) (300 300)) - rect(l4 (-25 1550) (250 2000)) - rect(l4 (-250 -2000) (250 2000)) - rect(l4 (-250 -5390) (250 1450)) - rect(l8 (-465 150) (180 180)) - rect(l11 (-91 -91) (2 2)) - rect(l11 (-151 -151) (300 300)) + rect(l5 (725 2860) (250 1940)) + rect(l5 (-525 -1850) (300 300)) + rect(l5 (-25 1550) (250 2000)) + rect(l5 (-250 -2000) (250 2000)) + rect(l5 (-250 -5390) (250 1450)) + rect(l14 (-465 150) (180 180)) + rect(l17 (-91 -91) (2 2)) + rect(l17 (-151 -151) (300 300)) ) net(6 name(SUBSTRATE)) @@ -362,162 +364,162 @@ layout( # Nets with their geometries net(1 - rect(l8 (4710 3010) (180 180)) - rect(l11 (-850 -240) (610 300)) - rect(l2 (-1175 1800) (425 1500)) - rect(l2 (-1800 -1500) (425 1500)) - rect(l6 (950 -4890) (425 950)) + rect(l14 (4710 3010) (180 180)) + rect(l17 (-850 -240) (610 300)) + rect(l4 (-1175 1800) (425 1500)) + rect(l4 (-1800 -1500) (425 1500)) + rect(l9 (950 -4890) (425 950)) ) net(2 - rect(l8 (6510 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (6510 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(3 - rect(l8 (8310 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (8310 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(4 - rect(l8 (10110 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (10110 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(5 - rect(l8 (11910 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (11910 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(6 - rect(l8 (13710 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (13710 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(7 - rect(l8 (15510 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (15510 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(8 - rect(l8 (17310 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (17310 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(9 - rect(l8 (19110 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (19110 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(10 - rect(l8 (20910 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (20910 3010) (180 180)) + rect(l17 (-1140 -240) (900 300)) + rect(l4 (-1275 1800) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(11 name(FB) - rect(l8 (22710 3010) (180 180)) - rect(l8 (-19700 720) (180 180)) - rect(l11 (18380 -1140) (900 300)) - rect(l11 (-19530 590) (320 320)) - rect(l11 (17820 -320) (320 320)) - rect(l12 (-18400 -260) (200 200)) - rect(l12 (17940 -200) (200 200)) - rect(l13 (-18040 -300) (17740 400)) - rect(l13 (-17921 -201) (2 2)) - rect(l13 (-221 -201) (400 400)) - rect(l13 (17740 -400) (400 400)) - rect(l2 (-245 850) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l14 (22710 3010) (180 180)) + rect(l14 (-19700 720) (180 180)) + rect(l17 (18380 -1140) (900 300)) + rect(l17 (-19530 590) (320 320)) + rect(l17 (17820 -320) (320 320)) + rect(l18 (-18400 -260) (200 200)) + rect(l18 (17940 -200) (200 200)) + rect(l19 (-18040 -300) (17740 400)) + rect(l19 (-17921 -201) (2 2)) + rect(l19 (-221 -201) (400 400)) + rect(l19 (17740 -400) (400 400)) + rect(l4 (-245 850) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(12 name(VDD) rect(l3 (500 4500) (1400 3500)) rect(l3 (-1900 -3500) (600 3500)) rect(l3 (23300 -3500) (1400 3500)) rect(l3 (-100 -3500) (600 3500)) - rect(l8 (-24690 -1240) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l8 (-180 -1280) (180 180)) - rect(l8 (23220 370) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l8 (-180 -1280) (180 180)) - rect(l11 (-21741 859) (2 2)) - rect(l11 (-2351 -451) (1200 800)) - rect(l11 (-750 -1450) (300 1400)) - rect(l11 (-101 -351) (2 2)) - rect(l11 (-1251 -401) (600 800)) - rect(l11 (23400 -800) (1200 800)) - rect(l11 (-750 -1450) (300 1400)) - rect(l11 (-101 -351) (2 2)) - rect(l11 (549 -401) (600 800)) - rect(l2 (-23025 -2550) (425 1500)) - rect(l2 (-400 -1500) (425 1500)) - rect(l2 (1275 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l9 (-21975 -450) (500 1500)) - rect(l9 (22900 -1500) (500 1500)) + rect(l14 (-24690 -1240) (180 180)) + rect(l14 (-180 370) (180 180)) + rect(l14 (-180 -1280) (180 180)) + rect(l14 (23220 370) (180 180)) + rect(l14 (-180 370) (180 180)) + rect(l14 (-180 -1280) (180 180)) + rect(l17 (-21741 859) (2 2)) + rect(l17 (-2351 -451) (1200 800)) + rect(l17 (-750 -1450) (300 1400)) + rect(l17 (-101 -351) (2 2)) + rect(l17 (-1251 -401) (600 800)) + rect(l17 (23400 -800) (1200 800)) + rect(l17 (-750 -1450) (300 1400)) + rect(l17 (-101 -351) (2 2)) + rect(l17 (549 -401) (600 800)) + rect(l4 (-23025 -2550) (425 1500)) + rect(l4 (-400 -1500) (425 1500)) + rect(l4 (1275 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l4 (1375 -1500) (425 1500)) + rect(l15 (-21975 -450) (500 1500)) + rect(l15 (22900 -1500) (500 1500)) ) net(13 name(OUT) - rect(l11 (23440 3840) (320 320)) - rect(l12 (-260 -260) (200 200)) - rect(l13 (-101 -101) (2 2)) - rect(l13 (-201 -201) (400 400)) - rect(l2 (-625 850) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l17 (23440 3840) (320 320)) + rect(l18 (-260 -260) (200 200)) + rect(l19 (-101 -101) (2 2)) + rect(l19 (-201 -201) (400 400)) + rect(l4 (-625 850) (425 1500)) + rect(l9 (-425 -4890) (425 950)) ) net(14 name(ENABLE) - rect(l8 (2510 3010) (180 180)) - rect(l11 (-250 -250) (320 320)) - rect(l12 (-260 -260) (200 200)) - rect(l13 (-101 -101) (2 2)) - rect(l13 (-201 -201) (400 400)) + rect(l14 (2510 3010) (180 180)) + rect(l17 (-250 -250) (320 320)) + rect(l18 (-260 -260) (200 200)) + rect(l19 (-101 -101) (2 2)) + rect(l19 (-201 -201) (400 400)) ) net(15 name(VSS) - rect(l8 (1110 1610) (180 180)) - rect(l8 (-180 -1280) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l8 (23220 370) (180 180)) - rect(l8 (-180 -1280) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l11 (-21741 -391) (2 2)) - rect(l11 (-1901 -401) (300 1400)) - rect(l11 (-750 -1450) (1200 800)) - rect(l11 (-551 -401) (2 2)) - rect(l11 (-1251 -401) (600 800)) - rect(l11 (23850 -750) (300 1400)) - rect(l11 (-750 -1450) (1200 800)) - rect(l11 (-551 -401) (2 2)) - rect(l11 (549 -401) (600 800)) - rect(l6 (-23700 460) (425 950)) - rect(l6 (1975 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l10 (-21975 -2210) (500 1500)) - rect(l10 (22900 -1500) (500 1500)) + rect(l14 (1110 1610) (180 180)) + rect(l14 (-180 -1280) (180 180)) + rect(l14 (-180 370) (180 180)) + rect(l14 (23220 370) (180 180)) + rect(l14 (-180 -1280) (180 180)) + rect(l14 (-180 370) (180 180)) + rect(l17 (-21741 -391) (2 2)) + rect(l17 (-1901 -401) (300 1400)) + rect(l17 (-750 -1450) (1200 800)) + rect(l17 (-551 -401) (2 2)) + rect(l17 (-1251 -401) (600 800)) + rect(l17 (23850 -750) (300 1400)) + rect(l17 (-750 -1450) (1200 800)) + rect(l17 (-551 -401) (2 2)) + rect(l17 (549 -401) (600 800)) + rect(l9 (-23700 460) (425 950)) + rect(l9 (1975 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l9 (1375 -950) (425 950)) + rect(l16 (-21975 -2210) (500 1500)) + rect(l16 (22900 -1500) (500 1500)) ) # Outgoing pins and their connections to nets