*
* spice test file template for generating .prm files.
*
* Make appropriate variable name substitutions:
*
* Process corner = CORNER
* Power supply voltage = FULL_VOLTAGE
* Half power supply voltage = HALF_VOLTAGE
* N-type FET device name = DEVICENAME_N
* P-type FET device name = DEVICENAME_P
* Width of N-type FET = WIDTH_N
* Width of P-type FET = WIDTH_P
* Length of N-type FET = LENGTH_N
* Length of P-type FET = LENGTH_P
* Load capacitance (in fF) = LOADCAP
*
.lib /usr/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice CORNER
*
.option TEMP=TEMPERATURE
*
* out1 - Output of Inverter to measure step response.
*
X0 out1 in1 GND GND DEVICENAME_N L=LENGTH_N W=WIDTH_N
X1 out1 in1 VDD VDD DEVICENAME_P L=LENGTH_P W=WIDTH_P
*
* out2 - Output of Inverter driven by out1 to determine slow-input effect.
*
X6 out2 out1 GND GND DEVICENAME_N L=LENGTH_N W=WIDTH_N
X7 out2 out1 VDD VDD DEVICENAME_P L=LENGTH_P W=WIDTH_P
*
* out3 - Output of a DEVICENAME_N pulling up to determine dynamic-high resistance.
*
X2 out3 in2 VDD GND DEVICENAME_N L=LENGTH_N W=WIDTH_N
*
* out4 - Output of a DEVICENAME_P pulling down to determine dynamic-low resistance.
*
X3 out4 in3 GND VDD DEVICENAME_P L=LENGTH_P W=WIDTH_P
*
* loading capacitors
*
C0 out1 GND LOADCAPf
C1 out2 GND LOADCAPf
C2 out3 GND LOADCAPf
C3 out4 GND LOADCAPf

VDD VDD 0 DC FULL_VOLTAGE
* VGnd GND 0 DC 0
RGnd GND 0 0.01
Vmid mid 0 DC HALF_VOLTAGE

Vin1 in1 0 0 pwl (0ns 0 0.1ns FULL_VOLTAGE 40ns FULL_VOLTAGE 40.1ns 0)
Vin2 in2 0 0 pwl (0ns 0 0.1ns FULL_VOLTAGE)
Vin3 in3 0 5 pwl (0ns FULL_VOLTAGE 0.1ns 0)

.ic V(out4)=FULL_VOLTAGE

.control
tran 0.01ns 80ns
* Measure when input signal crosses half Vdd (rising)
meas tran tr when V(in1)=HALF_VOLTAGE rise=1
* Measure when input signal crosses half Vdd (falling)
meas tran tf when V(in1)=HALF_VOLTAGE fall=1
* Measure when first output falls to half Vdd
meas tran t1hl when V(out1)=HALF_VOLTAGE fall=1
* Measure when first output rises to half Vdd
meas tran t1lh when V(out1)=HALF_VOLTAGE rise=1
* Measure when second output rises to half Vdd
meas tran t2lh when V(out2)=HALF_VOLTAGE rise=1
* Measure when second output falls to half Vdd
meas tran t2hl when V(out2)=HALF_VOLTAGE fall=1

* NOTE:  An nFET driving a node high and a pFET driving a node
* low are not in saturation and there is no value of R that is
* appropriate.  However, this configuration is rarely used in
* CMOS circuits.  Find the value at the end of the simulation,
* compute 80% that value, and extrapolate the rise time.
meas tran tr2 when V(in2)=HALF_VOLTAGE rise=1
meas tran tor2 max V(out3)
let tr2h=tor2*0.8
meas tran tnr1 when V(out3)=tr2h rise=1
let tnr=tnr1*(HALF_VOLTAGE/tr2h)

meas tran tf2 when V(in3)=HALF_VOLTAGE fall=1
meas tran tof2 min V(out4)
let tf2h=FULL_VOLTAGE-(FULL_VOLTAGE-tof2)*0.8
meas tran tpf1 when V(out4)=tf2h fall=1
let tpf=tpf1*(tf2h/HALF_VOLTAGE)

* Compute rise and fall times
let out1_tphl=t1hl-tr
let out1_tplh=t1lh-tf
let out2_tphl=t2hl-t1lh
let out2_tplh=t2lh-t1hl
let out3_tplh=tnr-tr2
let out4_tphl=tpf-tf2

* Compute dynamic and static resistances
let ndynl=out1_tphl/LOADCAPf
let pdynh=out1_tplh/LOADCAPf
let nstat=(out2_tphl*out2_tphl-out1_tphl*out1_tphl)/(out1_tplh*LOADCAPf)
let pstat=(out2_tplh*out2_tplh-out1_tplh*out1_tplh)/(out1_tphl*LOADCAPf)
let ndynh=out3_tplh/LOADCAPf
let pdynl=out4_tphl/LOADCAPf

* Output values
print ndynl
print ndynh
print nstat
print pdynl
print pdynh
print pstat

quit

.endc
.end
