Dimitri Galayko
12/28/2022, 4:04 PMLuis Henrique Rodovalho
12/29/2022, 8:27 AMDimitri Galayko
12/29/2022, 2:01 PMLuis Henrique Rodovalho
12/30/2022, 9:46 AM* Current Mirror A testbench
* Include SkyWater sky130 device models
.lib "/usr/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice" tt
.param mc_mm_switch=0
* current mirrors subcircuits
.subckt cma0 ii io vss
xi ii ii vss vss sky130_fd_pr__nfet_01v8 ad=4e+11p pd=2.8e+06u as=4e+11p ps=2.8e+06u w=1.0 l=0.15 m=1
xo io ii vss vss sky130_fd_pr__nfet_01v8 ad=4e+11p pd=2.8e+06u as=4e+11p ps=2.8e+06u w=1.0 l=0.15 m=1
.ends
.subckt cma1 ii io vss
xi ii ii vss vss sky130_fd_pr__nfet_01v8 ad=4e+11p pd=2.8e+06u as=4e+11p ps=2.8e+06u w=2.0 l=0.30 m=1
xo io ii vss vss sky130_fd_pr__nfet_01v8 ad=4e+11p pd=2.8e+06u as=4e+11p ps=2.8e+06u w=2.0 l=0.30 m=1
.ends
.subckt cma2 ii io vss
xi ii ii vss vss sky130_fd_pr__nfet_01v8 ad=4e+11p pd=2.8e+06u as=4e+11p ps=2.8e+06u w=4.0 l=0.60 m=1
xo io ii vss vss sky130_fd_pr__nfet_01v8 ad=4e+11p pd=2.8e+06u as=4e+11p ps=2.8e+06u w=4.0 l=0.60 m=1
.ends
* testbench
.param xi = -10u
vss vss 0 0
vo vo vss 0
* DUT
x0 ii0 io0 vss cma0
ii0 ii0 vss {xi}
eo0 io0 vss vo vss 1
x1 ii1 io1 vss cma1
ii1 ii1 vss {xi}
eo1 io1 vss vo vss 1
x2 ii2 io2 vss cma2
ii2 ii2 vss {xi}
eo2 io2 vss vo vss 1
.option gmin=1e-15
.control
dc vo 0 1.8 10m
let io0 = -i(eo0)
let io1 = -i(eo1)
let io2 = -i(eo2)
let ro0 = deriv(vo)/deriv(io0)
let ro1 = deriv(vo)/deriv(io1)
let ro2 = deriv(vo)/deriv(io2)
let ro0N = ro0/ro0
let ro1N = ro1/ro0
let ro2N = ro2/ro0
plot io0 io1 io2
plot ro0 ro1 ro2
plot ro0N ro1N ro2N
.endc
.end
Luis Henrique Rodovalho
12/30/2022, 9:54 AM