diff --git a/src/drc/drc/built-in-macros/_drc_netter.rb b/src/drc/drc/built-in-macros/_drc_netter.rb index aa86fe84e..9d4712261 100644 --- a/src/drc/drc/built-in-macros/_drc_netter.rb +++ b/src/drc/drc/built-in-macros/_drc_netter.rb @@ -67,6 +67,7 @@ module DRC @netlisted = false @connect_implicit = [] @l2n = nil + @lnum = 0 end # %DRC% @@ -404,9 +405,10 @@ module DRC ensure_data @layers[id] = data + @lnum += 1 # every layer gets registered and intra-layer connections are made - @l2n.register(data, "l" + id.to_s) + @l2n.register(data, "l" + @lnum.to_s) end diff --git a/testdata/lvs/inv.lvsdb b/testdata/lvs/inv.lvsdb index e6d4b3e86..6f1013a7b 100644 --- a/testdata/lvs/inv.lvsdb +++ b/testdata/lvs/inv.lvsdb @@ -10,33 +10,33 @@ layout( # Mask layers layer(l3 'NWELL (1/0)') - layer(l8 'POLY (5/0)') - layer(l9 'CONTACT (6/0)') - layer(l10 'METAL1 (7/0)') - layer(l11 'METAL1_LABEL (7/1)') - layer(l12 'VIA1 (8/0)') - layer(l13 'METAL2 (9/0)') - layer(l14 'METAL2_LABEL (9/1)') - layer(l15) - layer(l23) - layer(l31) + layer(l4 'POLY (5/0)') + layer(l8 'CONTACT (6/0)') + layer(l9 'METAL1 (7/0)') + layer(l10 'METAL1_LABEL (7/1)') + layer(l11 'VIA1 (8/0)') + layer(l12 'METAL2 (9/0)') + layer(l13 'METAL2_LABEL (9/1)') + layer(l7) + layer(l1) + layer(l5) # Mask layer connectivity connect(l3 l3) - connect(l8 l8 l9) - connect(l9 l8 l9 l10 l23 l31) - connect(l10 l9 l10 l11 l12) - connect(l11 l10 l11) - connect(l12 l10 l12 l13) - connect(l13 l12 l13 l14) - connect(l14 l13 l14) - connect(l15 l15) - connect(l23 l9 l23) - connect(l31 l9 l31) + connect(l4 l4 l8) + connect(l8 l4 l8 l9 l1 l5) + connect(l9 l8 l9 l10 l11) + connect(l10 l9 l10) + connect(l11 l9 l11 l12) + connect(l12 l11 l12 l13) + connect(l13 l12 l13) + connect(l7 l7) + connect(l1 l8 l1) + connect(l5 l8 l5) # Global nets and connectivity global(l3 NWELL) - global(l15 SUBSTRATE) + global(l7 SUBSTRATE) # Device class section class(PMOS MOS4) @@ -46,13 +46,13 @@ layout( # Device abstracts list the pin shapes of the devices. device(D$PMOS PMOS terminal(S - rect(l23 (-575 -750) (450 1500)) + rect(l1 (-575 -750) (450 1500)) ) terminal(G - rect(l8 (-125 -750) (250 1500)) + rect(l4 (-125 -750) (250 1500)) ) terminal(D - rect(l23 (125 -750) (450 1500)) + rect(l1 (125 -750) (450 1500)) ) terminal(B rect(l3 (-125 -750) (250 1500)) @@ -60,16 +60,16 @@ layout( ) device(D$NMOS NMOS terminal(S - rect(l31 (-575 -450) (450 900)) + rect(l5 (-575 -450) (450 900)) ) terminal(G - rect(l8 (-125 -450) (250 900)) + rect(l4 (-125 -450) (250 900)) ) terminal(D - rect(l31 (125 -450) (450 900)) + rect(l5 (125 -450) (450 900)) ) terminal(B - rect(l15 (-125 -450) (250 900)) + rect(l7 (-125 -450) (250 900)) ) ) @@ -79,48 +79,48 @@ layout( # Nets with their geometries net(1 name(IN) - rect(l8 (900 50) (250 1050)) - rect(l8 (-250 0) (250 3100)) - rect(l8 (-250 0) (250 1650)) - rect(l8 (-800 -3100) (550 400)) - rect(l9 (-450 -300) (200 200)) - rect(l10 (-300 -300) (400 400)) - rect(l11 (-201 -201) (2 2)) + rect(l4 (900 50) (250 1050)) + rect(l4 (-250 0) (250 3100)) + rect(l4 (-250 0) (250 1650)) + rect(l4 (-800 -3100) (550 400)) + rect(l8 (-450 -300) (200 200)) + rect(l9 (-300 -300) (400 400)) + rect(l10 (-201 -201) (2 2)) ) net(2 name(VSS) - rect(l9 (550 300) (200 200)) - rect(l9 (-200 300) (200 200)) - rect(l10 (-250 -950) (300 1050)) - rect(l12 (-250 -950) (200 200)) - rect(l12 (-200 300) (200 200)) - rect(l13 (-750 -850) (2000 1000)) - rect(l14 (-101 -851) (2 2)) - rect(l31 (-1451 49) (450 900)) + rect(l8 (550 300) (200 200)) + rect(l8 (-200 300) (200 200)) + rect(l9 (-250 -950) (300 1050)) + rect(l11 (-250 -950) (200 200)) + rect(l11 (-200 300) (200 200)) + rect(l12 (-750 -850) (2000 1000)) + rect(l13 (-101 -851) (2 2)) + rect(l5 (-1451 49) (450 900)) ) net(3 name(VDD) - rect(l9 (550 4350) (200 200)) - rect(l9 (-200 300) (200 200)) - rect(l9 (-200 300) (200 200)) - rect(l10 (-250 -1300) (300 1600)) - rect(l12 (-250 -800) (200 200)) - rect(l12 (-200 300) (200 200)) - rect(l13 (-750 -850) (2000 1000)) - rect(l14 (-151 -851) (2 2)) - rect(l23 (-1401 -851) (450 1500)) + rect(l8 (550 4350) (200 200)) + rect(l8 (-200 300) (200 200)) + rect(l8 (-200 300) (200 200)) + rect(l9 (-250 -1300) (300 1600)) + rect(l11 (-250 -800) (200 200)) + rect(l11 (-200 300) (200 200)) + rect(l12 (-750 -850) (2000 1000)) + rect(l13 (-151 -851) (2 2)) + rect(l1 (-1401 -851) (450 1500)) ) net(4 name(OUT) - rect(l9 (1300 4350) (200 200)) - rect(l9 (-200 300) (200 200)) - rect(l9 (-200 300) (200 200)) - rect(l9 (-200 -5250) (200 200)) - rect(l9 (-200 300) (200 200)) - rect(l10 (-250 3250) (300 1400)) - rect(l10 (-300 -4600) (300 3200)) - rect(l10 (-300 -2900) (450 400)) - rect(l10 (-450 -1550) (300 850)) - rect(l11 (-51 499) (2 2)) - rect(l23 (-351 2649) (450 1500)) - rect(l31 (-450 -5500) (450 900)) + rect(l8 (1300 4350) (200 200)) + rect(l8 (-200 300) (200 200)) + rect(l8 (-200 300) (200 200)) + rect(l8 (-200 -5250) (200 200)) + rect(l8 (-200 300) (200 200)) + rect(l9 (-250 3250) (300 1400)) + rect(l9 (-300 -4600) (300 3200)) + rect(l9 (-300 -2900) (450 400)) + rect(l9 (-450 -1550) (300 850)) + rect(l10 (-51 499) (2 2)) + rect(l1 (-351 2649) (450 1500)) + rect(l5 (-450 -5500) (450 900)) ) net(5 name(NWELL) rect(l3 (0 2950) (2000 3200)) diff --git a/testdata/lvs/inv2.lvsdb b/testdata/lvs/inv2.lvsdb index 2fb4b7e4e..144461be3 100644 --- a/testdata/lvs/inv2.lvsdb +++ b/testdata/lvs/inv2.lvsdb @@ -9,38 +9,38 @@ layout( # This section lists the mask layers (drawing or derived) and their connections. # Mask layers - layer(l103 'NWELL (1/0)') - layer(l108 'POLY (5/0)') - layer(l109 'CONTACT (6/0)') - layer(l110 'METAL1 (7/0)') - layer(l111 'METAL1_LABEL (7/1)') - layer(l112 'VIA1 (8/0)') - layer(l113 'METAL2 (9/0)') - layer(l114 'METAL2_LABEL (9/1)') - layer(l115) - layer(l123) - layer(l125) - layer(l133) - layer(l135) + layer(l3 'NWELL (1/0)') + layer(l4 'POLY (5/0)') + layer(l8 'CONTACT (6/0)') + layer(l11 'METAL1 (7/0)') + layer(l12 'METAL1_LABEL (7/1)') + layer(l13 'VIA1 (8/0)') + layer(l14 'METAL2 (9/0)') + layer(l15 'METAL2_LABEL (9/1)') + layer(l7) + layer(l1) + layer(l9) + layer(l5) + layer(l10) # Mask layer connectivity - connect(l103 l103 l125) - connect(l108 l108 l109) - connect(l109 l108 l109 l110 l123 l125 l133 l135) - connect(l110 l109 l110 l111 l112) - connect(l111 l110 l111) - connect(l112 l110 l112 l113) - connect(l113 l112 l113 l114) - connect(l114 l113 l114) - connect(l115 l115) - connect(l123 l109 l123) - connect(l125 l103 l109 l125) - connect(l133 l109 l133) - connect(l135 l109 l135) + connect(l3 l3 l9) + connect(l4 l4 l8) + connect(l8 l4 l8 l11 l1 l9 l5 l10) + connect(l11 l8 l11 l12 l13) + connect(l12 l11 l12) + connect(l13 l11 l13 l14) + connect(l14 l13 l14 l15) + connect(l15 l14 l15) + connect(l7 l7) + connect(l1 l8 l1) + connect(l9 l3 l8 l9) + connect(l5 l8 l5) + connect(l10 l8 l10) # Global nets and connectivity - global(l115 SUBSTRATE) - global(l135 SUBSTRATE) + global(l7 SUBSTRATE) + global(l10 SUBSTRATE) # Device class section class(PMOS MOS4) @@ -50,30 +50,30 @@ layout( # Device abstracts list the pin shapes of the devices. device(D$PMOS PMOS terminal(S - rect(l123 (-575 -750) (450 1500)) + rect(l1 (-575 -750) (450 1500)) ) terminal(G - rect(l108 (-125 -750) (250 1500)) + rect(l4 (-125 -750) (250 1500)) ) terminal(D - rect(l123 (125 -750) (450 1500)) + rect(l1 (125 -750) (450 1500)) ) terminal(B - rect(l103 (-125 -750) (250 1500)) + rect(l3 (-125 -750) (250 1500)) ) ) device(D$NMOS NMOS terminal(S - rect(l133 (-575 -450) (450 900)) + rect(l5 (-575 -450) (450 900)) ) terminal(G - rect(l108 (-125 -450) (250 900)) + rect(l4 (-125 -450) (250 900)) ) terminal(D - rect(l133 (125 -450) (450 900)) + rect(l5 (125 -450) (450 900)) ) terminal(B - rect(l115 (-125 -450) (250 900)) + rect(l7 (-125 -450) (250 900)) ) ) @@ -83,61 +83,61 @@ layout( # Nets with their geometries net(1 name(IN) - rect(l108 (900 50) (250 1050)) - rect(l108 (-250 0) (250 3100)) - rect(l108 (-250 0) (250 1650)) - rect(l108 (-800 -3100) (550 400)) - rect(l109 (-450 -300) (200 200)) - rect(l110 (-300 -300) (400 400)) - rect(l111 (-201 -201) (2 2)) + rect(l4 (900 50) (250 1050)) + rect(l4 (-250 0) (250 3100)) + rect(l4 (-250 0) (250 1650)) + rect(l4 (-800 -3100) (550 400)) + rect(l8 (-450 -300) (200 200)) + rect(l11 (-300 -300) (400 400)) + rect(l12 (-201 -201) (2 2)) ) net(2 name(VDD) - rect(l103 (0 2950) (3000 3200)) - rect(l109 (-2450 -1800) (200 200)) - rect(l109 (-200 300) (200 200)) - rect(l109 (-200 300) (200 200)) - rect(l109 (1400 -800) (200 200)) - rect(l109 (-200 300) (200 200)) - rect(l110 (-1850 -1200) (300 1600)) - rect(l110 (1300 -1200) (300 1200)) - rect(l112 (-1850 -800) (200 200)) - rect(l112 (-200 300) (200 200)) - rect(l112 (1400 -700) (200 200)) - rect(l112 (-200 300) (200 200)) - rect(l113 (-2350 -850) (3000 1000)) - rect(l114 (-151 -851) (2 2)) - rect(l123 (-2401 -851) (450 1500)) - rect(l125 (1050 -1200) (600 1200)) + rect(l3 (0 2950) (3000 3200)) + rect(l8 (-2450 -1800) (200 200)) + rect(l8 (-200 300) (200 200)) + rect(l8 (-200 300) (200 200)) + rect(l8 (1400 -800) (200 200)) + rect(l8 (-200 300) (200 200)) + rect(l11 (-1850 -1200) (300 1600)) + rect(l11 (1300 -1200) (300 1200)) + rect(l13 (-1850 -800) (200 200)) + rect(l13 (-200 300) (200 200)) + rect(l13 (1400 -700) (200 200)) + rect(l13 (-200 300) (200 200)) + rect(l14 (-2350 -850) (3000 1000)) + rect(l15 (-151 -851) (2 2)) + rect(l1 (-2401 -851) (450 1500)) + rect(l9 (1050 -1200) (600 1200)) ) net(3 name(OUT) - rect(l109 (1300 4350) (200 200)) - rect(l109 (-200 300) (200 200)) - rect(l109 (-200 300) (200 200)) - rect(l109 (-200 -5250) (200 200)) - rect(l109 (-200 300) (200 200)) - rect(l110 (-250 3250) (300 1400)) - rect(l110 (-300 -4600) (300 3200)) - rect(l110 (-300 -2900) (450 400)) - rect(l110 (-450 -1550) (300 850)) - rect(l111 (-51 499) (2 2)) - rect(l123 (-351 2649) (450 1500)) - rect(l133 (-450 -5500) (450 900)) + rect(l8 (1300 4350) (200 200)) + rect(l8 (-200 300) (200 200)) + rect(l8 (-200 300) (200 200)) + rect(l8 (-200 -5250) (200 200)) + rect(l8 (-200 300) (200 200)) + rect(l11 (-250 3250) (300 1400)) + rect(l11 (-300 -4600) (300 3200)) + rect(l11 (-300 -2900) (450 400)) + rect(l11 (-450 -1550) (300 850)) + rect(l12 (-51 499) (2 2)) + rect(l1 (-351 2649) (450 1500)) + rect(l5 (-450 -5500) (450 900)) ) net(4 name(VSS) - rect(l109 (550 300) (200 200)) - rect(l109 (-200 300) (200 200)) - rect(l109 (1400 -550) (200 200)) - rect(l109 (-200 300) (200 200)) - rect(l110 (-1850 -1100) (300 1050)) - rect(l110 (1300 -1050) (300 1200)) - rect(l112 (-1850 -1100) (200 200)) - rect(l112 (-200 300) (200 200)) - rect(l112 (1400 -700) (200 200)) - rect(l112 (-200 300) (200 200)) - rect(l113 (-2350 -850) (3000 1000)) - rect(l114 (-151 -851) (2 2)) - rect(l133 (-2401 49) (450 900)) - rect(l135 (1050 -900) (600 1200)) + rect(l8 (550 300) (200 200)) + rect(l8 (-200 300) (200 200)) + rect(l8 (1400 -550) (200 200)) + rect(l8 (-200 300) (200 200)) + rect(l11 (-1850 -1100) (300 1050)) + rect(l11 (1300 -1050) (300 1200)) + rect(l13 (-1850 -1100) (200 200)) + rect(l13 (-200 300) (200 200)) + rect(l13 (1400 -700) (200 200)) + rect(l13 (-200 300) (200 200)) + rect(l14 (-2350 -850) (3000 1000)) + rect(l15 (-151 -851) (2 2)) + rect(l5 (-2401 49) (450 900)) + rect(l10 (1050 -900) (600 1200)) ) # Devices and their connections diff --git a/testdata/ruby/dbNetlistCompare.rb b/testdata/ruby/dbNetlistCompare.rb index 59a6910c9..236bf079a 100644 --- a/testdata/ruby/dbNetlistCompare.rb +++ b/testdata/ruby/dbNetlistCompare.rb @@ -839,10 +839,10 @@ match_devices $3 $3 match_devices $4 $4 end_circuit NAND NAND MATCH begin_circuit TOP TOP -match_nets OUT OUT -match_nets INT INT match_nets IN2 IN2 +match_nets INT INT match_nets IN1 IN1 +match_nets OUT OUT match_nets VDD VDD match_nets VSS VSS match_pins $0 $0 @@ -883,10 +883,10 @@ match_devices $3 $3 match_devices $4 $4 end_circuit NAND NAND MATCH begin_circuit TOP TOP -match_nets OUT OUT -match_nets INT INT match_nets IN2 IN2 +match_nets INT INT match_nets IN1 IN1 +match_nets OUT OUT match_nets VDD VDD match_nets VSS VSS match_pins $0 $0