Updates for 'cheats' testcase which was entirely broken.

This commit is contained in:
Matthias Koefferlein 2019-11-23 19:24:59 +01:00
parent 1309aa59cb
commit ccb1871fb3
8 changed files with 368 additions and 573 deletions

View File

@ -1,30 +1,25 @@
* Extracted by KLayout * Extracted by KLayout
.SUBCKT INVCHAIN .SUBCKT INVCHAIN IN OUT VSS VDD
X$1 \$7 \$1 \$9 \$8 \$6 \$9 \$5 \$5 \$3 \$2 \$I2 \$I1 INV3 X$1 IN \$2 \$3 \$2 \$3 \$4 VDD VSS INV3
X$2 \$8 \$11 \$9 \$10 \$8 \$11 \$2 \$I3 \$2 \$I3 \$5 \$4 \$I2 \$I1 INV2 X$2 \$5 \$6 \$4 \$5 VDD VSS INV2
X$3 \$I1 \$I2 \$11 \$I3 \$4 \$4 \$10 \$10 INV X$3 VSS VDD \$6 OUT INV
.ENDS INVCHAIN .ENDS INVCHAIN
.SUBCKT INV3 \$I18 \$I17 \$I15 \$I14 \$I13 \$I11 \$I10 \$I8 \$I7 \$I5 \$I4 \$I2 .SUBCKT INV3 3 5 7 4 6 8 \$I4 \$I2
X$1 \$I2 \$I4 \$I13 \$I17 \$I7 \$I7 \$I18 \$I18 INV X$1 \$I2 \$I4 3 4 INV
X$2 \$I2 \$I4 \$I18 \$I7 \$I17 \$I17 \$I13 \$I13 INV X$2 \$I2 \$I4 5 6 INV
X$3 \$I2 \$I4 \$I14 \$I5 \$I8 \$I10 \$I15 \$I11 INV X$3 \$I2 \$I4 7 8 INV
.ENDS INV3 .ENDS INV3
.SUBCKT INV2 \$I16 \$I15 \$I14 \$I13 \$I12 \$I11 \$I10 \$I9 \$I8 \$I7 \$I6 \$I5 .SUBCKT INV2 \$I8 \$I7 \$I6 \$I5 \$I4 \$I2
+ \$I4 \$I2 X$1 \$I2 \$I4 \$I6 \$I8 INV
X$1 \$I2 \$I4 \$I14 \$I6 \$I8 \$I10 \$I16 \$I12 INV X$2 \$I2 \$I4 \$I5 \$I7 INV
X$2 \$I2 \$I4 \$I13 \$I5 \$I7 \$I9 \$I15 \$I11 INV
.ENDS INV2 .ENDS INV2
.SUBCKT INV \$1 \$2 \$3 \$4 \$5 \$9 \$I8 \$I7 .SUBCKT INV \$1 \$2 \$3 \$4
M$1 \$4 \$3 \$2 \$4 PMOS L=0.25U W=0.95U AS=0.79325P AD=0.26125P PS=3.57U M$1 \$4 \$3 \$2 \$4 PMOS L=0.25U W=0.95U AS=0.73625P AD=0.73625P PS=3.45U
+ PD=1.5U + PD=3.45U
M$2 \$2 \$I8 \$5 \$2 PMOS L=0.25U W=0.95U AS=0.26125P AD=0.03325P PS=1.5U M$2 \$4 \$3 \$1 \$4 NMOS L=0.25U W=0.95U AS=0.73625P AD=0.73625P PS=3.45U
+ PD=1.97U + PD=3.45U
M$3 \$4 \$3 \$1 \$4 NMOS L=0.25U W=0.95U AS=0.79325P AD=0.26125P PS=3.57U
+ PD=1.5U
M$4 \$1 \$I7 \$9 \$1 NMOS L=0.25U W=0.95U AS=0.26125P AD=0.03325P PS=1.5U
+ PD=1.97U
.ENDS INV .ENDS INV

View File

@ -1,30 +0,0 @@
* Extracted by KLayout
.SUBCKT INVCHAIN
X$1 \$7 \$1 \$9 \$8 \$6 \$9 \$5 \$5 \$3 \$2 \$I2 \$I1 INV3
X$2 \$8 \$11 \$9 \$10 \$8 \$11 \$2 \$I3 \$2 \$I3 \$5 \$4 \$I2 \$I1 INV2
X$3 \$I1 \$I2 \$11 \$I3 \$4 \$4 \$10 \$10 INV
.ENDS INVCHAIN
.SUBCKT INV3 \$I18 \$I17 \$I15 \$I14 \$I13 \$I11 \$I10 \$I8 \$I7 \$I5 \$I4 \$I2
X$1 \$I2 \$I4 \$I13 \$I17 \$I7 \$I7 \$I18 \$I18 INV
X$2 \$I2 \$I4 \$I18 \$I7 \$I17 \$I17 \$I13 \$I13 INV
X$3 \$I2 \$I4 \$I14 \$I5 \$I8 \$I10 \$I15 \$I11 INV
.ENDS INV3
.SUBCKT INV2 \$I16 \$I15 \$I14 \$I13 \$I12 \$I11 \$I10 \$I9 \$I8 \$I7 \$I6 \$I5
+ \$I4 \$I2
X$1 \$I2 \$I4 \$I14 \$I6 \$I8 \$I10 \$I16 \$I12 INV
X$2 \$I2 \$I4 \$I13 \$I5 \$I7 \$I9 \$I15 \$I11 INV
.ENDS INV2
.SUBCKT INV \$1 \$2 \$3 \$4 \$5 \$8 \$I8 \$I7
M$1 \$4 \$3 \$2 \$4 PMOS L=0.25U W=0.95U AS=0.79325P AD=0.26125P PS=3.57U
+ PD=1.5U
M$2 \$2 \$I8 \$5 \$2 PMOS L=0.25U W=0.95U AS=0.26125P AD=0.03325P PS=1.5U
+ PD=1.97U
M$3 \$4 \$3 \$1 \$4 NMOS L=0.25U W=0.95U AS=0.79325P AD=0.26125P PS=3.57U
+ PD=1.5U
M$4 \$1 \$I7 \$8 \$1 NMOS L=0.25U W=0.95U AS=0.26125P AD=0.03325P PS=1.5U
+ PD=1.97U
.ENDS INV

View File

@ -1,30 +0,0 @@
* Extracted by KLayout
.SUBCKT INVCHAIN
X$1 \$7 \$1 \$9 \$8 \$6 \$9 \$5 \$5 \$3 \$2 \$I2 \$I1 INV3
X$2 \$8 \$11 \$9 \$10 \$8 \$11 \$2 \$I3 \$2 \$I3 \$5 \$4 \$I2 \$I1 INV2
X$3 \$I1 \$I2 \$11 \$I3 \$4 \$4 \$10 \$10 INV
.ENDS INVCHAIN
.SUBCKT INV3 \$I18 \$I17 \$I15 \$I14 \$I13 \$I11 \$I10 \$I8 \$I7 \$I5 \$I4 \$I2
X$1 \$I2 \$I4 \$I13 \$I17 \$I7 \$I7 \$I18 \$I18 INV
X$2 \$I2 \$I4 \$I18 \$I7 \$I17 \$I17 \$I13 \$I13 INV
X$3 \$I2 \$I4 \$I14 \$I5 \$I8 \$I10 \$I15 \$I11 INV
.ENDS INV3
.SUBCKT INV2 \$I16 \$I15 \$I14 \$I13 \$I12 \$I11 \$I10 \$I9 \$I8 \$I7 \$I6 \$I5
+ \$I4 \$I2
X$1 \$I2 \$I4 \$I14 \$I6 \$I8 \$I10 \$I16 \$I12 INV
X$2 \$I2 \$I4 \$I13 \$I5 \$I7 \$I9 \$I15 \$I11 INV
.ENDS INV2
.SUBCKT INV \$1 \$2 \$3 \$4 \$7 \$10 \$I8 \$I7
M$1 \$4 \$3 \$2 \$4 PMOS L=0.25U W=0.95U AS=0.79325P AD=0.26125P PS=3.57U
+ PD=1.5U
M$2 \$2 \$I8 \$7 \$2 PMOS L=0.25U W=0.95U AS=0.26125P AD=0.03325P PS=1.5U
+ PD=1.97U
M$3 \$4 \$3 \$1 \$4 NMOS L=0.25U W=0.95U AS=0.79325P AD=0.26125P PS=3.57U
+ PD=1.5U
M$4 \$1 \$I7 \$10 \$1 NMOS L=0.25U W=0.95U AS=0.26125P AD=0.03325P PS=1.5U
+ PD=1.97U
.ENDS INV

View File

@ -1,30 +0,0 @@
* Extracted by KLayout
.SUBCKT INVCHAIN
X$1 \$7 \$1 \$9 \$8 \$6 \$9 \$5 \$5 \$3 \$2 \$I2 \$I1 INV3
X$2 \$8 \$11 \$9 \$10 \$8 \$11 \$2 \$I3 \$2 \$I3 \$5 \$4 \$I2 \$I1 INV2
X$3 \$I1 \$I2 \$11 \$I3 \$4 \$4 \$10 \$10 INV
.ENDS INVCHAIN
.SUBCKT INV3 \$I18 \$I17 \$I15 \$I14 \$I13 \$I11 \$I10 \$I8 \$I7 \$I5 \$I4 \$I2
X$1 \$I2 \$I4 \$I13 \$I17 \$I7 \$I7 \$I18 \$I18 INV
X$2 \$I2 \$I4 \$I18 \$I7 \$I17 \$I17 \$I13 \$I13 INV
X$3 \$I2 \$I4 \$I14 \$I5 \$I8 \$I10 \$I15 \$I11 INV
.ENDS INV3
.SUBCKT INV2 \$I16 \$I15 \$I14 \$I13 \$I12 \$I11 \$I10 \$I9 \$I8 \$I7 \$I6 \$I5
+ \$I4 \$I2
X$1 \$I2 \$I4 \$I14 \$I6 \$I8 \$I10 \$I16 \$I12 INV
X$2 \$I2 \$I4 \$I13 \$I5 \$I7 \$I9 \$I15 \$I11 INV
.ENDS INV2
.SUBCKT INV \$1 \$2 \$3 \$4 \$6 \$9 \$I8 \$I7
M$1 \$4 \$3 \$2 \$4 PMOS L=0.25U W=0.95U AS=0.79325P AD=0.26125P PS=3.57U
+ PD=1.5U
M$2 \$2 \$I8 \$6 \$2 PMOS L=0.25U W=0.95U AS=0.26125P AD=0.03325P PS=1.5U
+ PD=1.97U
M$3 \$4 \$3 \$1 \$4 NMOS L=0.25U W=0.95U AS=0.79325P AD=0.26125P PS=3.57U
+ PD=1.5U
M$4 \$1 \$I7 \$9 \$1 NMOS L=0.25U W=0.95U AS=0.26125P AD=0.03325P PS=1.5U
+ PD=1.97U
.ENDS INV

View File

@ -6,7 +6,52 @@ report_lvs($lvs_test_target_lvsdb)
writer = write_spice(true, false) writer = write_spice(true, false)
target_netlist($lvs_test_target_cir, writer, "Extracted by KLayout") target_netlist($lvs_test_target_cir, writer, "Extracted by KLayout")
schematic("invchain_for_cheat.cir") # needs this delegate because we use MOS3 which is not available in Spice
class SpiceReaderDelegate < RBA::NetlistSpiceReaderDelegate
# says we want to catch these subcircuits as devices
def wants_subcircuit(name)
name == "HVNMOS" || name == "HVPMOS"
end
# translate the element
def element(circuit, el, name, model, value, nets, params)
if el != "M"
# all other elements are left to the standard implementation
return super
end
if nets.size != 4
error("Device #{model} needs four nodes")
end
# provide a device class
cls = circuit.netlist.device_class_by_name(model)
if ! cls
cls = RBA::DeviceClassMOS3Transistor::new
cls.name = model
circuit.netlist.add(cls)
end
# create a device
device = circuit.create_device(cls, name)
# and configure the device
[ "S", "G", "D" ].each_with_index do |t,index|
device.connect_terminal(t, nets[index])
end
device.set_parameter("W", params["W"] * 1e6)
device.set_parameter("L", params["L"] * 1e6)
device
end
end
reader = RBA::NetlistSpiceReader::new(SpiceReaderDelegate::new)
schematic("invchain_for_cheat.cir", reader)
deep deep
@ -15,32 +60,38 @@ deep
nwell = input(1, 0) nwell = input(1, 0)
active = input(2, 0) active = input(2, 0)
poly = input(3, 0) poly = input(3, 0)
poly_lbl = input(3, 1)
diff_cont = input(4, 0) diff_cont = input(4, 0)
poly_cont = input(5, 0) poly_cont = input(5, 0)
metal1 = input(6, 0) metal1 = input(6, 0)
metal1_lbl = input(6, 1)
via1 = input(7, 0) via1 = input(7, 0)
metal2 = input(8, 0) metal2 = input(8, 0)
metal2_lbl = input(8, 1)
# Bulk layer for terminal provisioning # Bulk layer for terminal provisioning
bulk = polygon_layer bulk = polygon_layer
# Computed layers psd = nil
nsd = nil
active_in_nwell = active & nwell
pactive = active_in_nwell
pgate = pactive & poly
psd = pactive - pgate
active_outside_nwell = active - nwell
nactive = active_outside_nwell
ngate = nactive & poly
nsd = nactive - ngate
# Device extraction
cheat("INV") do cheat("INV") do
# Computed layers
active_in_nwell = active & nwell
pactive = active_in_nwell
pgate = pactive & poly
psd = pactive - pgate
active_outside_nwell = active - nwell
nactive = active_outside_nwell
ngate = nactive & poly
nsd = nactive - ngate
# Device extraction
# PMOS transistor device extraction # PMOS transistor device extraction
extract_devices(mos3("PMOS"), { "SD" => psd, "G" => pgate, extract_devices(mos3("PMOS"), { "SD" => psd, "G" => pgate,
"tS" => psd, "tD" => psd, "tG" => poly }) "tS" => psd, "tD" => psd, "tG" => poly })
@ -62,12 +113,18 @@ connect(poly_cont, metal1)
connect(metal1, via1) connect(metal1, via1)
connect(via1, metal2) connect(via1, metal2)
# attach labels
connect(poly, poly_lbl)
connect(metal1, metal1_lbl)
connect(metal2, metal2_lbl)
# Global # Global
connect_global(bulk, "SUBSTRATE") connect_global(bulk, "SUBSTRATE")
# Compare section # Compare section
netlist.simplify netlist.simplify
align
compare compare

View File

@ -3,66 +3,50 @@ J(
W(INVCHAIN) W(INVCHAIN)
U(0.001) U(0.001)
L(l3 '3/0') L(l3 '3/0')
L(l11 '3/1')
L(l6 '4/0') L(l6 '4/0')
L(l7 '2/0') L(l7 '5/0')
L(l8 '6/0') L(l8 '6/0')
L(l12 '6/1')
L(l9 '7/0') L(l9 '7/0')
L(l10 '8/0') L(l10 '8/0')
L(l11) L(l13 '8/1')
L(l14)
L(l2) L(l2)
L(l5) L(l5)
C(l3 l3 l7) C(l3 l3 l11 l7)
C(l11 l3 l11)
C(l6 l6 l8 l2 l5) C(l6 l6 l8 l2 l5)
C(l7 l3 l7 l8) C(l7 l3 l7 l8)
C(l8 l6 l7 l8 l9) C(l8 l6 l7 l8 l12 l9)
C(l12 l8 l12)
C(l9 l8 l9 l10) C(l9 l8 l9 l10)
C(l10 l9 l10) C(l10 l9 l10 l13)
C(l11 l11) C(l13 l10 l13)
C(l14 l14)
C(l2 l6 l2) C(l2 l6 l2)
C(l5 l6 l5) C(l5 l6 l5)
G(l11 SUBSTRATE) G(l14 SUBSTRATE)
D(D$PMOS PMOS D(D$PMOS PMOS
T(S T(S
R(l2 (-960 -475) (835 950)) R(l2 (-900 -475) (775 950))
) )
T(G T(G
R(l3 (-125 -475) (250 950)) R(l3 (-125 -475) (250 950))
) )
T(D T(D
R(l2 (125 -475) (550 950)) R(l2 (125 -475) (775 950))
)
)
D(D$PMOS$1 PMOS
T(S
R(l2 (-675 -475) (550 950))
)
T(G
R(l3 (-125 -475) (250 950))
)
T(D
R(l2 (125 -475) (35 950))
) )
) )
D(D$NMOS NMOS D(D$NMOS NMOS
T(S T(S
R(l5 (-960 -475) (835 950)) R(l5 (-900 -475) (775 950))
) )
T(G T(G
R(l3 (-125 -475) (250 950)) R(l3 (-125 -475) (250 950))
) )
T(D T(D
R(l5 (125 -475) (550 950)) R(l5 (125 -475) (775 950))
)
)
D(D$NMOS$1 NMOS
T(S
R(l5 (-675 -475) (550 950))
)
T(G
R(l3 (-125 -475) (250 950))
)
T(D
R(l5 (125 -475) (35 950))
) )
) )
X(INV X(INV
@ -74,7 +58,7 @@ J(
R(l9 (-305 -705) (250 250)) R(l9 (-305 -705) (250 250))
R(l9 (-250 150) (250 250)) R(l9 (-250 150) (250 250))
R(l10 (-2025 -775) (3000 900)) R(l10 (-2025 -775) (3000 900))
R(l5 (-1375 -925) (550 950)) R(l5 (-1375 -925) (775 950))
) )
N(2 N(2
R(l6 (290 2490) (220 220)) R(l6 (290 2490) (220 220))
@ -83,7 +67,7 @@ J(
R(l9 (-305 -705) (250 250)) R(l9 (-305 -705) (250 250))
R(l9 (-250 150) (250 250)) R(l9 (-250 150) (250 250))
R(l10 (-2025 -775) (3000 900)) R(l10 (-2025 -775) (3000 900))
R(l2 (-1375 -925) (550 950)) R(l2 (-1375 -925) (775 950))
) )
N(3 N(3
R(l3 (-125 -250) (250 2500)) R(l3 (-125 -250) (250 2500))
@ -98,99 +82,55 @@ J(
R(l8 (-290 -3530) (360 2840)) R(l8 (-290 -3530) (360 2840))
R(l8 (-360 -2800) (360 760)) R(l8 (-360 -2800) (360 760))
R(l8 (-360 2040) (360 760)) R(l8 (-360 2040) (360 760))
R(l2 (-740 -855) (835 950)) R(l2 (-680 -855) (775 950))
R(l5 (-835 -3750) (835 950)) R(l5 (-775 -3750) (775 950))
) )
N(5
R(l2 (925 2325) (35 950))
)
N(6
R(l5 (925 -475) (35 950))
)
N(7)
N(8)
P(1) P(1)
P(2) P(2)
P(3) P(3)
P(4) P(4)
P(5)
P(6)
P(7)
P(8)
D(1 D$PMOS D(1 D$PMOS
Y(0 2800) Y(0 2800)
E(L 0.25) E(L 0.25)
E(W 0.95) E(W 0.95)
E(AS 0.79325) E(AS 0.73625)
E(AD 0.26125) E(AD 0.73625)
E(PS 3.57) E(PS 3.45)
E(PD 1.5) E(PD 3.45)
T(S 4) T(S 4)
T(G 3) T(G 3)
T(D 2) T(D 2)
) )
D(2 D$PMOS$1 D(2 D$NMOS
Y(800 2800)
E(L 0.25)
E(W 0.95)
E(AS 0.26125)
E(AD 0.03325)
E(PS 1.5)
E(PD 1.97)
T(S 2)
T(G 7)
T(D 5)
)
D(3 D$NMOS
Y(0 0) Y(0 0)
E(L 0.25) E(L 0.25)
E(W 0.95) E(W 0.95)
E(AS 0.79325) E(AS 0.73625)
E(AD 0.26125) E(AD 0.73625)
E(PS 3.57) E(PS 3.45)
E(PD 1.5) E(PD 3.45)
T(S 4) T(S 4)
T(G 3) T(G 3)
T(D 1) T(D 1)
) )
D(4 D$NMOS$1
Y(800 0)
E(L 0.25)
E(W 0.95)
E(AS 0.26125)
E(AD 0.03325)
E(PS 1.5)
E(PD 1.97)
T(S 1)
T(G 8)
T(D 6)
)
) )
X(INV2 X(INV2
R((0 0) (5500 4600)) R((0 0) (5500 4600))
N(1) N(1
N(2)
N(3)
N(4)
N(5)
N(6)
N(7)
N(8)
N(9)
N(10)
N(11
R(l6 (1790 490) (220 220)) R(l6 (1790 490) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l6 (-220 2180) (220 220)) R(l6 (-220 2180) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
) )
N(12 N(2
R(l6 (3490 490) (220 220)) R(l6 (3490 490) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l6 (-220 2180) (220 220)) R(l6 (-220 2180) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
) )
N(13 N(3)
N(4)
N(5
R(l6 (990 3290) (220 220)) R(l6 (990 3290) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l6 (3080 -620) (220 220)) R(l6 (3080 -620) (220 220))
@ -198,7 +138,7 @@ J(
R(l8 (-3590 -690) (360 760)) R(l8 (-3590 -690) (360 760))
R(l8 (2940 -760) (360 760)) R(l8 (2940 -760) (360 760))
) )
N(14 N(6
R(l6 (990 490) (220 220)) R(l6 (990 490) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l6 (3080 -620) (220 220)) R(l6 (3080 -620) (220 220))
@ -212,63 +152,52 @@ J(
P(4) P(4)
P(5) P(5)
P(6) P(6)
P(7)
P(8)
P(9)
P(10)
P(11)
P(12)
P(13)
P(14)
X(1 INV M O(180) Y(1500 800) X(1 INV M O(180) Y(1500 800)
P(0 14) P(0 6)
P(1 13) P(1 5)
P(2 3) P(2 3)
P(3 11) P(3 1)
P(4 9)
P(5 7)
P(6 1)
P(7 5)
) )
X(2 INV Y(4000 800) X(2 INV Y(4000 800)
P(0 14) P(0 6)
P(1 13) P(1 5)
P(2 4) P(2 4)
P(3 12) P(3 2)
P(4 10)
P(5 8)
P(6 2)
P(7 6)
) )
) )
X(INV3 X(INV3
R((0 0) (6300 4600)) R((0 0) (6300 4600))
N(1) N(1 I('3')
N(2 R(l11 (1509 1929) (2 2))
)
N(2 I('5')
R(l11 (2319 1909) (2 2))
)
N(3 I('7')
R(l11 (4829 1889) (2 2))
)
N(4 I('4')
R(l6 (990 490) (220 220)) R(l6 (990 490) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l6 (-220 2180) (220 220)) R(l6 (-220 2180) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l12 (-121 -1941) (2 2))
) )
N(3) N(5 I('6')
N(4)
N(5)
N(6)
N(7)
N(8)
N(9
R(l6 (2590 490) (220 220)) R(l6 (2590 490) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l6 (-220 2180) (220 220)) R(l6 (-220 2180) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l12 (-131 -1971) (2 2))
) )
N(10 N(6 I('8')
R(l6 (4290 490) (220 220)) R(l6 (4290 490) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l6 (-220 2180) (220 220)) R(l6 (-220 2180) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l12 (-101 -1991) (2 2))
) )
N(11 N(7
R(l6 (1790 3290) (220 220)) R(l6 (1790 3290) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l6 (-220 -620) (220 220)) R(l6 (-220 -620) (220 220))
@ -279,7 +208,7 @@ J(
R(l8 (-360 -760) (360 760)) R(l8 (-360 -760) (360 760))
R(l8 (2940 -760) (360 760)) R(l8 (2940 -760) (360 760))
) )
N(12 N(8
R(l6 (1790 490) (220 220)) R(l6 (1790 490) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l6 (-220 -620) (220 220)) R(l6 (-220 -620) (220 220))
@ -290,136 +219,92 @@ J(
R(l8 (-360 -760) (360 760)) R(l8 (-360 -760) (360 760))
R(l8 (2940 -760) (360 760)) R(l8 (2940 -760) (360 760))
) )
P(1) P(1 I('3'))
P(2) P(2 I('5'))
P(3) P(3 I('7'))
P(4) P(4 I('4'))
P(5) P(5 I('6'))
P(6) P(6 I('8'))
P(7) P(7)
P(8) P(8)
P(9)
P(10)
P(11)
P(12)
X(1 INV Y(1500 800) X(1 INV Y(1500 800)
P(0 12) P(0 8)
P(1 11) P(1 7)
P(2 5) P(2 1)
P(3 2) P(3 4)
P(4 9)
P(5 9)
P(6 1)
P(7 1)
) )
X(2 INV M O(180) Y(2300 800) X(2 INV M O(180) Y(2300 800)
P(0 12) P(0 8)
P(1 11) P(1 7)
P(2 1) P(2 2)
P(3 9) P(3 5)
P(4 2)
P(5 2)
P(6 5)
P(7 5)
) )
X(3 INV Y(4800 800) X(3 INV Y(4800 800)
P(0 12) P(0 8)
P(1 11) P(1 7)
P(2 4) P(2 3)
P(3 10) P(3 6)
P(4 8)
P(5 7)
P(6 3)
P(7 6)
) )
) )
X(INVCHAIN X(INVCHAIN
R((-1500 -800) (10400 4600)) R((-1500 -800) (10400 4600))
N(1 N(1 I(IN)
R(l6 (490 990) (220 220)) R(l3 (-1295 925) (1235 350))
R(l6 (-1220 -1520) (220 220)) R(l11 (-911 -151) (2 2))
R(l6 (-220 180) (220 220))
R(l6 (-220 2180) (220 220))
R(l6 (-220 180) (220 220))
R(l8 (-65 -2185) (1105 350))
) )
N(2 N(2
R(l6 (3790 990) (220 220)) R(l3 (445 805) (480 550))
R(l6 (-1220 -1520) (220 220)) R(l6 (-1435 -1665) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l6 (-220 2180) (220 220)) R(l6 (-220 2180) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l8 (-65 -2185) (1105 350)) R(l7 (780 -2120) (220 220))
R(l8 (-1065 -285) (1105 350))
) )
N(3 N(3
R(l6 (1405 990) (220 220)) R(l3 (1345 925) (1945 350))
R(l6 (-535 -1520) (220 220)) R(l6 (-2200 -1585) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l6 (-220 2180) (220 220)) R(l6 (-220 2180) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l8 (20 -2270) (440 520)) R(l7 (95 -2120) (220 220))
R(l8 (-295 -370) (440 520))
) )
N(4 N(4
R(l6 (7090 990) (220 220)) R(l3 (3745 805) (480 550))
R(l6 (-1220 -1520) (220 220)) R(l6 (-1435 -1665) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l6 (-220 2180) (220 220)) R(l6 (-220 2180) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l8 (-65 -2185) (1105 350)) R(l7 (780 -2120) (220 220))
R(l8 (-1065 -285) (1105 350))
) )
N(5 N(5
R(l6 (4705 990) (220 220)) R(l3 (4645 925) (1945 350))
R(l6 (-535 -1520) (220 220)) R(l6 (-2200 -1585) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l6 (-220 2180) (220 220)) R(l6 (-220 2180) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l8 (20 -2270) (440 520)) R(l7 (95 -2120) (220 220))
R(l8 (-295 -370) (440 520))
) )
N(6 N(6
R(l3 (-1295 925) (1235 350))
)
N(7
R(l3 (445 805) (480 550))
)
N(8
R(l3 (1345 925) (1945 350))
)
N(9
R(l3 (3745 805) (480 550))
)
N(10
R(l3 (4645 925) (1945 350))
)
N(11
R(l3 (7045 805) (480 550)) R(l3 (7045 805) (480 550))
R(l6 (-1435 -1665) (220 220))
R(l6 (-220 180) (220 220))
R(l6 (-220 2180) (220 220))
R(l6 (-220 180) (220 220))
R(l7 (780 -2120) (220 220))
R(l8 (-1065 -285) (1105 350))
) )
N(12 N(7 I(OUT)
R(l6 (7690 -310) (220 220)) R(l6 (7690 -310) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l6 (-220 2180) (220 220)) R(l6 (-220 2180) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l12 (-121 -2011) (2 2))
) )
N(13 N(8 I(VSS)
R(l6 (6890 2490) (220 220))
R(l6 (-220 180) (220 220))
R(l6 (-3520 -620) (220 220))
R(l6 (-220 180) (220 220))
R(l6 (3080 -620) (220 220))
R(l6 (-220 180) (220 220))
R(l6 (-6820 -620) (220 220))
R(l6 (-220 180) (220 220))
R(l6 (-220 -620) (220 220))
R(l6 (-220 180) (220 220))
R(l6 (3080 -620) (220 220))
R(l6 (-220 180) (220 220))
R(l8 (3010 -690) (360 760))
R(l8 (-3660 -760) (360 760))
R(l8 (2940 -760) (360 760))
R(l8 (-6960 -760) (360 760))
R(l8 (-360 -760) (360 760))
R(l8 (2940 -760) (360 760))
)
N(14
R(l6 (6890 -310) (220 220)) R(l6 (6890 -310) (220 220))
R(l6 (-220 180) (220 220)) R(l6 (-220 180) (220 220))
R(l6 (-3520 -620) (220 220)) R(l6 (-3520 -620) (220 220))
@ -438,136 +323,96 @@ J(
R(l8 (-6960 -760) (360 760)) R(l8 (-6960 -760) (360 760))
R(l8 (-360 -760) (360 760)) R(l8 (-360 -760) (360 760))
R(l8 (2940 -760) (360 760)) R(l8 (2940 -760) (360 760))
R(l13 (2719 -381) (2 2))
R(l13 (-3302 -2) (2 2))
R(l13 (-3302 -2) (2 2))
) )
N(9 I(VDD)
R(l6 (6890 2490) (220 220))
R(l6 (-220 180) (220 220))
R(l6 (-3520 -620) (220 220))
R(l6 (-220 180) (220 220))
R(l6 (3080 -620) (220 220))
R(l6 (-220 180) (220 220))
R(l6 (-6820 -620) (220 220))
R(l6 (-220 180) (220 220))
R(l6 (-220 -620) (220 220))
R(l6 (-220 180) (220 220))
R(l6 (3080 -620) (220 220))
R(l6 (-220 180) (220 220))
R(l8 (3010 -690) (360 760))
R(l8 (-3660 -760) (360 760))
R(l8 (2940 -760) (360 760))
R(l8 (-6960 -760) (360 760))
R(l8 (-360 -760) (360 760))
R(l8 (2940 -760) (360 760))
R(l13 (-581 -381) (2 2))
R(l13 (3298 -2) (2 2))
R(l13 (-6602 -2) (2 2))
)
P(1 I(IN))
P(7 I(OUT))
P(8 I(VSS))
P(9 I(VDD))
X(1 INV3 Y(-1500 -800) X(1 INV3 Y(-1500 -800)
P(0 7) P(0 1)
P(1 1) P(1 2)
P(2 9) P(2 3)
P(3 8) P(3 2)
P(4 6) P(4 3)
P(5 9) P(5 4)
P(6 5) P(6 9)
P(7 5) P(7 8)
P(8 3)
P(9 2)
P(10 13)
P(11 14)
) )
X(2 INV2 Y(2600 -800) X(2 INV2 Y(2600 -800)
P(0 8) P(0 5)
P(1 11) P(1 6)
P(2 9) P(2 4)
P(3 10) P(3 5)
P(4 8) P(4 9)
P(5 11) P(5 8)
P(6 2)
P(7 12)
P(8 2)
P(9 12)
P(10 5)
P(11 4)
P(12 13)
P(13 14)
) )
X(3 INV M O(180) Y(7400 0) X(3 INV M O(180) Y(7400 0)
P(0 14) P(0 8)
P(1 13) P(1 9)
P(2 11) P(2 6)
P(3 12) P(3 7)
P(4 4)
P(5 4)
P(6 10)
P(7 10)
) )
) )
) )
H( H(
X(TRANS
N(1 I('1'))
N(2 I('2'))
N(3 I('3'))
P(1 I('1'))
P(2 I('2'))
P(3 I('3'))
)
X(INV X(INV
N(1 I('1')) N(1 I('1'))
N(2 I('2')) N(2 I('2'))
N(3 I('3')) N(3 I('3'))
N(4 I('4')) N(4 I('4'))
N(5 I('5'))
N(6 I('6'))
N(7 I('7'))
N(8 I('8'))
P(1 I('1')) P(1 I('1'))
P(2 I('2')) P(2 I('2'))
P(3 I('3')) P(3 I('3'))
P(4 I('4')) P(4 I('4'))
P(5 I('5'))
P(6 I('6'))
P(7 I('7'))
P(8 I('8'))
D(1 PMOS D(1 PMOS
I($1) I($1)
E(L 0.25) E(L 0.25)
E(W 0.95) E(W 0.95)
E(AS 0.79325) E(AS 0)
E(AD 0.26125) E(AD 0)
E(PS 3.57) E(PS 0)
E(PD 1.5) E(PD 0)
T(S 4) T(S 1)
T(G 3) T(G 3)
T(D 2) T(D 4)
T(B 4)
) )
D(2 PMOS D(2 NMOS
I($2)
E(L 0.25)
E(W 0.95)
E(AS 0.26125)
E(AD 0.03325)
E(PS 1.5)
E(PD 1.97)
T(S 2)
T(G 7)
T(D 5)
T(B 2)
)
D(3 NMOS
I($3) I($3)
E(L 0.25) E(L 0.25)
E(W 0.95) E(W 0.95)
E(AS 0.79325) E(AS 0)
E(AD 0.26125) E(AD 0)
E(PS 3.57) E(PS 0)
E(PD 1.5) E(PD 0)
T(S 4) T(S 2)
T(G 3) T(G 3)
T(D 1) T(D 4)
T(B 4)
)
D(4 NMOS
I($4)
E(L 0.25)
E(W 0.95)
E(AS 0.26125)
E(AD 0.03325)
E(PS 1.5)
E(PD 1.97)
T(S 1)
T(G 8)
T(D 6)
T(B 1)
)
X(1 TRANS I($1)
P(0 4)
P(1 1)
P(2 3)
)
X(2 TRANS I($2)
P(0 4)
P(1 2)
P(2 3)
) )
) )
X(INV3 X(INV3
@ -579,10 +424,6 @@ H(
N(6 I('6')) N(6 I('6'))
N(7 I('7')) N(7 I('7'))
N(8 I('8')) N(8 I('8'))
N(9 I('9'))
N(10 I('10'))
N(11 I('11'))
N(12 I('12'))
P(1 I('1')) P(1 I('1'))
P(2 I('2')) P(2 I('2'))
P(3 I('3')) P(3 I('3'))
@ -591,39 +432,23 @@ H(
P(6 I('6')) P(6 I('6'))
P(7 I('7')) P(7 I('7'))
P(8 I('8')) P(8 I('8'))
P(9 I('9'))
P(10 I('10'))
P(11 I('11'))
P(12 I('12'))
X(1 INV I($1) X(1 INV I($1)
P(0 12) P(0 1)
P(1 11) P(1 2)
P(2 3) P(2 3)
P(3 10) P(3 4)
P(4 8)
P(5 6)
P(6 1)
P(7 5)
) )
X(2 INV I($2) X(2 INV I($2)
P(0 12) P(0 1)
P(1 11) P(1 2)
P(2 4) P(2 5)
P(3 7) P(3 6)
P(4 9)
P(5 9)
P(6 2)
P(7 2)
) )
X(3 INV I($3) X(3 INV I($3)
P(0 12) P(0 1)
P(1 11) P(1 2)
P(2 2) P(2 7)
P(3 9) P(3 8)
P(4 7)
P(5 7)
P(6 4)
P(7 4)
) )
) )
X(INV2 X(INV2
@ -633,125 +458,135 @@ H(
N(4 I('4')) N(4 I('4'))
N(5 I('5')) N(5 I('5'))
N(6 I('6')) N(6 I('6'))
N(7 I('7'))
N(8 I('8'))
N(9 I('9'))
N(10 I('10'))
N(11 I('11'))
N(12 I('12'))
N(13 I('13'))
N(14 I('14'))
P(1 I('1')) P(1 I('1'))
P(2 I('2')) P(2 I('2'))
P(3 I('3')) P(3 I('3'))
P(4 I('4')) P(4 I('4'))
P(5 I('5')) P(5 I('5'))
P(6 I('6')) P(6 I('6'))
P(7 I('7'))
P(8 I('8'))
P(9 I('9'))
P(10 I('10'))
P(11 I('11'))
P(12 I('12'))
P(13 I('13'))
P(14 I('14'))
X(1 INV I($1) X(1 INV I($1)
P(0 14) P(0 1)
P(1 13) P(1 2)
P(2 3) P(2 3)
P(3 11) P(3 4)
P(4 9)
P(5 7)
P(6 1)
P(7 5)
) )
X(2 INV I($2) X(2 INV I($2)
P(0 14) P(0 1)
P(1 13) P(1 2)
P(2 4) P(2 5)
P(3 12) P(3 6)
P(4 10)
P(5 8)
P(6 2)
P(7 6)
) )
) )
X(INVCHAIN X(INVCHAIN
N(1 I('9')) N(1 I('1'))
N(2 I('7')) N(2 I('2'))
N(3 I('8')) N(3 I('3'))
N(4 I('6')) N(4 I('4'))
N(5 I('5')) N(5 I('5'))
N(6 I('1')) N(6 I('6'))
N(7 I('3')) N(7 I('7'))
N(8 I('2')) N(8 I('8'))
N(9 I('13')) N(9 I('9'))
N(10 I('14'))
N(11 I('11'))
N(12 I('10'))
N(13 I('12'))
N(14 I('4'))
X(1 INV3 I($1) X(1 INV3 I($1)
P(0 1) P(0 1)
P(1 2) P(1 2)
P(2 3) P(2 3)
P(3 4) P(3 4)
P(4 1) P(4 4)
P(5 5) P(5 5)
P(6 6) P(6 5)
P(7 5) P(7 6)
P(8 7)
P(9 8)
P(10 9)
P(11 10)
) )
X(2 INV2 I($2) X(2 INV2 I($2)
P(0 3) P(0 1)
P(1 11) P(1 2)
P(2 1) P(2 6)
P(3 12) P(3 7)
P(4 3) P(4 7)
P(5 11) P(5 8)
P(6 8)
P(7 13)
P(8 8)
P(9 13)
P(10 5)
P(11 14)
P(12 9)
P(13 10)
) )
X(3 INV I($3) X(3 INV I($3)
P(0 10) P(0 1)
P(1 9) P(1 2)
P(2 11) P(2 8)
P(3 13) P(3 9)
P(4 14)
P(5 14)
P(6 12)
P(7 12)
) )
) )
) )
Z( Z(
X(() TRANS 0 X(INV INV 1
Z( Z(
N(2 1 1)
N(1 2 1)
N(3 3 1)
N(4 4 1)
P(1 0 1)
P(0 1 1)
P(2 2 1)
P(3 3 1)
D(2 2 1)
D(1 1 1)
) )
) )
X(INV INV S X(INV2 INV2 1
Z( Z(
N(5 1 1)
N(6 2 1)
N(3 3 1)
N(1 4 W)
N(4 5 1)
N(2 6 W)
P(4 0 1)
P(5 1 1)
P(2 2 1)
P(0 3 1)
P(3 4 1)
P(1 5 1)
X(1 1 1)
X(2 2 1)
) )
) )
X(INV2 INV2 S X(INV3 INV3 1
Z( Z(
N(7 1 1)
N(8 2 1)
N(1 3 1)
N(4 4 W)
N(2 5 1)
N(5 6 W)
N(3 7 1)
N(6 8 W)
P(6 0 1)
P(7 1 1)
P(0 2 1)
P(3 3 1)
P(1 4 1)
P(4 5 1)
P(2 6 1)
P(5 7 1)
X(1 1 1)
X(2 2 1)
X(3 3 1)
) )
) )
X(INV3 INV3 S X(INVCHAIN INVCHAIN 1
Z(
)
)
X(INVCHAIN INVCHAIN S
Z( Z(
N(2 4 1)
N(3 5 1)
N(4 6 1)
N(5 7 1)
N(6 8 1)
N(1 3 1)
N(7 9 1)
N(9 1 1)
N(8 2 1)
P(0 () 1)
P(1 () 1)
P(3 () 1)
P(2 () 1)
X(3 3 1)
X(2 2 1)
X(1 1 1)
) )
) )
) )

View File

@ -1,29 +1,27 @@
* cell INVCHAIN * cell INVCHAIN
.SUBCKT INVCHAIN .SUBCKT INVCHAIN
X$1 9 7 8 6 9 5 1 5 3 2 13 14 INV3 X$1 1 2 3 4 4 5 5 6 INV3
X$2 8 11 9 10 8 11 2 12 2 12 5 4 13 14 INV2 X$2 1 2 6 7 7 8 INV2
X$3 14 13 11 12 4 4 10 10 INV X$3 1 2 8 9 INV
.ENDS INVCHAIN .ENDS INVCHAIN
* cell INV3 * cell INV3
.SUBCKT INV3 1 2 3 4 5 6 7 8 9 10 11 12 .SUBCKT INV3 1 2 3 4 5 6 7 8
X$1 12 11 3 10 8 6 1 5 INV X$1 1 2 3 4 INV
X$2 12 11 4 7 9 9 2 2 INV X$2 1 2 5 6 INV
X$3 12 11 2 9 7 7 4 4 INV X$3 1 2 7 8 INV
.ENDS INV3 .ENDS INV3
* cell INV2 * cell INV2
.SUBCKT INV2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 .SUBCKT INV2 1 2 3 4 5 6
X$1 14 13 3 11 9 7 1 5 INV X$1 1 2 3 4 INV
X$2 14 13 4 12 10 8 2 6 INV X$2 1 2 5 6 INV
.ENDS INV2 .ENDS INV2
* cell INV * cell INV
.SUBCKT INV 1 2 3 4 5 6 7 8 .SUBCKT INV 1 2 3 4
M$1 4 3 2 4 PMOS L=0.25U W=0.95U AS=0.79325P AD=0.26125P PS=3.57U PD=1.5U M$1 1 3 4 1 PMOS L=0.25U W=0.95U
M$2 2 7 5 2 PMOS L=0.25U W=0.95U AS=0.26125P AD=0.03325P PS=1.5U PD=1.97U M$3 2 3 4 2 NMOS L=0.25U W=0.95U
M$3 4 3 1 4 NMOS L=0.25U W=0.95U AS=0.79325P AD=0.26125P PS=3.57U PD=1.5U
M$4 1 8 6 1 NMOS L=0.25U W=0.95U AS=0.26125P AD=0.03325P PS=1.5U PD=1.97U
.ENDS INV .ENDS INV

Binary file not shown.