95 lines
2.9 KiB
Plaintext
95 lines
2.9 KiB
Plaintext
carry_chain_1bit_65nm
|
|
|
|
.include ./models/65nm_bulk.pm
|
|
.include ./subckt/sottocircuiti
|
|
|
|
.subckt FA_SUB 0 node1 nodeSo nodeCo nodeC nodeB nodeA XX=1
|
|
|
|
Mn1 nodecon nodeb node4 0 nmos W={2*XX*Wmin} L={Lmin}
|
|
Mp1 1 nodea node1 node1 pmos W={4*XX*Wmin} L={Lmin}
|
|
|
|
Mn2 node4 nodea 0 0 nmos W={2*XX*Wmin} L={Lmin}
|
|
Mp2 1 nodeb node1 node1 pmos W={4*XX*Wmin} L={Lmin}
|
|
|
|
Mn3 5 nodea 0 0 nmos W={2*XX*Wmin} L={Lmin}
|
|
|
|
Mp3 4 nodea node1 node1 pmos W={4*XX*Wmin} L={Lmin}
|
|
Mp4 nodecon nodeb 4 node1 pmos W={4*XX*Wmin} L={Lmin}
|
|
|
|
Mn4 5 nodeb 0 0 nmos W={2*XX*Wmin} L={Lmin}
|
|
|
|
Mp5 nodecon nodec 1 node1 pmos W={4*XX*Wmin} L={Lmin}
|
|
Mn5 nodecon nodec 5 0 nmos W={2*XX*Wmin} L={Lmin}
|
|
|
|
Mp6 2 nodea node1 node1 pmos W={4*XX*Wmin} L={Lmin}
|
|
|
|
Mn6 3 nodea 0 0 nmos W={2*XX*Wmin} L={Lmin}
|
|
Mp7 2 nodeb node1 node1 pmos W={4*XX*Wmin} L={Lmin}
|
|
|
|
Mn7 3 nodeb 0 0 nmos W={2*XX*Wmin} L={Lmin}
|
|
|
|
Mp8 2 nodec node1 node1 pmos W={4*XX*Wmin} L={Lmin}
|
|
|
|
Mn8 3 nodec 0 0 nmos W={2*XX*Wmin} L={Lmin}
|
|
|
|
Mp9 nodeson nodecon 2 node1 pmos W={4*XX*Wmin} L={Lmin}
|
|
|
|
Mn9 nodeson nodecon 3 0 nmos W={2*XX*Wmin} L={Lmin}
|
|
|
|
Mp10 9 nodea node1 node1 pmos W={6*XX*Wmin} L={Lmin}
|
|
Mn10 7 nodea 0 0 nmos W={3*XX*Wmin} L={Lmin}
|
|
Mp11 8 nodeb 9 node1 pmos W={6*XX*Wmin} L={Lmin}
|
|
|
|
Mn11 6 nodeb 7 0 nmos W={3*XX*Wmin} L={Lmin}
|
|
Mp12 nodeSon nodec 8 node1 pmos W={6*XX*Wmin} L={Lmin}
|
|
|
|
Mn12 nodeSon nodec 6 0 nmos W={3*XX*Wmin} L={Lmin}
|
|
|
|
Mp13 nodeCo nodecon node1 node1 pmos W={4*XX*Wmin} L={Lmin}
|
|
Mn13 nodeCo nodecon 0 0 nmos W={2*XX*Wmin} L={Lmin}
|
|
|
|
Mp14 nodeSo nodeSon node1 node1 pmos W={4*XX*Wmin} L={Lmin}
|
|
Mn14 nodeSo nodeSon 0 0 nmos W={2*XX*Wmin} L={Lmin}
|
|
.ends
|
|
|
|
*.options temp=125 tnom=125
|
|
|
|
.model p1_ra relmodel level=1 type=2
|
|
.appendmodel p1_ra pmos
|
|
.relan 315360000 0.002ns 1.4ns
|
|
|
|
.TRAN 0.002ns 1.4ns
|
|
|
|
.PARAM Y=1.33
|
|
.PARAM XX=1
|
|
.PARAM Lmin=65n
|
|
.PARAM Wmin=65n
|
|
|
|
*.meas tran delay_LH trig v(cin) val='0.9*Y*0.5' rise=1 targ v(cout) val='0.9*Y*0.5' fall=1
|
|
.meas tran delay_HL trig v(cin) val='0.9*Y*0.5' fall=1 targ v(cout) val='0.9*Y*0.5' fall=1
|
|
.meas tran delay_HL_1 trig v(cin) val='0.9*Y*0.5' fall=1 targ v(xfa_1.nodecon) val='0.9*Y*0.5' rise=1
|
|
.meas tran delay_HL_2 trig v(xfa_1.nodecon) val='0.9*Y*0.5' rise=1 targ v(cout) val='0.9*Y*0.5' fall=1
|
|
|
|
Vdd VDD 0 {0.9*Y}
|
|
|
|
Vina1 ina1 0 0
|
|
|
|
Vinb1 inb1 0 {0.9*Y}
|
|
|
|
|
|
* Francesco
|
|
*vcin cin 0 PWL(0 0 0.100ns 0 0.120ns {0.9*Y})
|
|
vcin cin 0 PWL(0 {0.9*Y} 0.100ns {0.9*Y} 0.120ns 0)
|
|
|
|
|
|
XFA_1 0 VDD out cout cin inb1 ina1 FA_SUB
|
|
|
|
xNOT4_1 0 VDD out1 out NOT4_SUB
|
|
xNOT4_2 0 VDD cout1 cout NOT4_SUB
|
|
|
|
.CONTROL
|
|
run
|
|
.ENDC
|
|
|
|
.END
|