WIP: better reproducablility for .lvsdb layer names, updated tests.

This commit is contained in:
Matthias Koefferlein 2019-07-07 19:39:00 +02:00
parent 993ef78575
commit 95a1e38fe3
4 changed files with 156 additions and 154 deletions

View File

@ -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

128
testdata/lvs/inv.lvsdb vendored
View File

@ -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))

View File

@ -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

View File

@ -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