blob: 2d9d8f48503b863e44957ee81614a377f65a61e1 [file] [log] [blame]
v {xschem version=3.0.0 file_version=1.2 }
G {}
K {}
V {}
S {}
E {}
N -230 -200 30 -200 { lab=Vtia_outP_2}
N -1720 -150 -1720 -130 { lab=GND}
N -1720 -400 -1720 -210 { lab=#net1}
N -1030 -250 -1030 -240 { lab=VDD}
N -1030 -240 -1030 -220 { lab=VDD}
N -1600 -400 -1600 -340 { lab=#net1}
N -1720 -400 -1600 -400 { lab=#net1}
N -1600 -400 -1570 -400 { lab=#net1}
N -1480 -280 -1480 -260 { lab=GND}
N -1600 -280 -1600 -260 { lab=GND}
N -1510 -400 -1450 -400 { lab=Vinb}
N -1480 -400 -1480 -340 { lab=Vinb}
N -1410 -310 -1410 -280 { lab=GND}
N -1410 -280 -1370 -280 { lab=GND}
N -1370 -280 -1370 -260 { lab=GND}
N -1370 -310 -1370 -280 { lab=GND}
N -1450 -400 -1370 -400 { lab=Vinb}
N -1370 -400 -1370 -340 { lab=Vinb}
N -1260 -400 -910 -400 { lab=Vinb}
N -1370 -400 -1260 -400 { lab=Vinb}
N -230 -180 30 -180 { lab=Vtia_outP_1}
N 30 -120 30 -30 { lab=GND}
N 30 -30 90 -30 { lab=GND}
N 90 -120 90 -30 { lab=GND}
N 60 -120 60 -30 { lab=GND}
N 30 -180 60 -180 { lab=Vtia_outP_1}
N 60 -180 60 -160 { lab=Vtia_outP_1}
N -1370 -450 -1370 -400 { lab=Vinb}
N -1240 -400 -1240 -350 { lab=Vinb}
N -1240 -290 -1240 -270 { lab=GND}
N 30 -200 110 -200 { lab=Vtia_outP_2}
N -910 -400 -740 -400 { lab=Vinb}
N -740 -400 -740 -200 { lab=Vinb}
N -740 -200 -650 -200 { lab=Vinb}
N -800 -220 -650 -220 { lab=GND}
N -810 -560 -640 -560 { lab=Vbias2}
N -630 -540 -580 -540 { lab=GND}
N -640 -560 -580 -560 { lab=Vbias2}
N -350 -180 -320 -180 { lab=#net2}
N -320 -420 -320 -180 { lab=#net2}
N -630 -420 -320 -420 { lab=#net2}
N -630 -520 -630 -420 { lab=#net2}
N -630 -520 -580 -520 { lab=#net2}
N -610 -500 -580 -500 { lab=Vtia_outP_1}
N -610 -500 -610 -370 { lab=Vtia_outP_1}
N -610 -370 -300 -370 { lab=Vtia_outP_1}
N -300 -370 -300 -160 { lab=Vtia_outP_1}
N -350 -160 -300 -160 { lab=Vtia_outP_1}
N -350 -140 -350 -90 { lab=GND}
N -350 -270 -350 -220 { lab=VDD}
N -910 -180 -650 -180 { lab=Vbias1}
N -910 -180 -910 -160 { lab=Vbias1}
N -1030 -160 -910 -160 { lab=Vbias1}
N -350 -200 -230 -200 { lab=Vtia_outP_2}
N -300 -180 -230 -180 { lab=Vtia_outP_1}
N -280 -540 -250 -540 { lab=Vinb}
N -250 -540 -250 -340 { lab=Vinb}
N -280 -560 -230 -560 { lab=VDD}
N -230 -590 -230 -560 { lab=VDD}
N -280 -520 -230 -520 { lab=GND}
N -230 -520 -230 -510 { lab=GND}
N -700 -480 -580 -480 { lab=GND}
N -700 -480 -700 -470 { lab=GND}
N -810 -560 -810 -550 { lab=Vbias2}
N -810 -490 -810 -470 { lab=GND}
N -740 -340 -250 -340 { lab=Vinb}
N -720 -540 -630 -540 { lab=GND}
N -720 -540 -720 -520 { lab=GND}
N -650 -600 -650 -540 { lab=GND}
C {devices/code.sym} 570 -440 0 0 {name=SPICE
only_toplevel=true
value="
*.options savecurrents
.option warn=1
* .option temp=100
.control
set wr_vecnames
set wr_singlescale
set hcopydevtype=svg
** TIA
op
write test_tia_rgc_full.raw
run
reset
* option temp=20
* noise v(Vtia_outP-Vtia_outN) iin dec 100 1 100G
* print all
* setplot noise2
* write noise_tia2.raw
* wrdata result_noise_tia2.csv
* run
* reset
ac dec 1000 10 1T
plot vdb(Vtia_outP_1) vdb(Vtia_outP_2)
plot v(Vinb)
plot phase(Vinb)/pi*180 phase(Vtia_outP_1)/pi*180
hardcopy bandwidth.svg vdb(Vtia_outP_1)
hardcopy impedance.svg v(Vinb)
* tran 1p 100n
* plot v(Vtia_outP_1) v(Vtia_outP_2)
* plot v(Vinb)
meas ac gain FIND vdb(vtia_outp_1) AT=10MEG
meas ac max_gain max vdb(vtia_outp_1) from=1MEG to=100G
meas ac min_gain min vdb(vtia_outp_1) from=1MEG to=100MEG
let bw_gain=gain-3
meas ac bandwidth when vdb(vtia_outp_1)=bw_gain fall = LAST
wrdata result_freq.csv gain max_gain min_gain bandwidth
run
reset
noise v(vtia_outp_1) i1 dec 1000 10 2G
print all
* wrdata result_noise.csv inoise_total onoise_total
setplot noise1
plot inoise_spectrum
plot onoise_spectrum
hardcopy tia_rgc_inoise_spectrum.svg inoise_spectrum
hardcopy tia_rgc_onoise_spectrum.svg onoise_spectrum
* plot log(inoise_spectrum)
* write noise_tia2.raw
run
*
reset
noise v(vtia_outp_1) i1 dec 1000 2MEG 2G
print all
* wrdata result_noise.csv inoise_total onoise_total
setplot noise3
plot inoise_spectrum
plot onoise_spectrum
hardcopy tia_rgc_inoise_spectrum_zoom.svg inoise_spectrum
hardcopy tia_rgc_onoise_spectrum_zoom.svg onoise_spectrum
* plot log(inoise_spectrum)
* write noise_tia2.raw
run
*
.endc
"}
C {devices/lab_wire.sym} -1240 -400 0 1 {name=l5 sig_type=std_logic lab=Vinb}
C {devices/code.sym} 570 -270 0 0 {name=INCLUDE
only_toplevel=true
format="tcleval( @value )"
value="
* .include ../../tia.spice
* .include ../../filter_diff.spice
* .include ../../cmm_sense3.spice
.include tia_rgc_core.spice
.include tia_rgc_feedback.spice
"}
C {devices/code.sym} 570 -100 0 0 {name=MODELS
only_toplevel=true
format="tcleval( @value )"
value="
* .lib \\\\$::SKYWATER_MODELS\\\\/sky130.lib.spice #model#
* .lib \\\\$::SKYWATER_MODELS\\\\/sky130.lib.spice sf
.lib \\\\$::SKYWATER_MODELS\\\\/sky130.lib.spice.tt.red tt
* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
"}
C {devices/vdd.sym} -890 -630 0 0 {name=l7 lab=VDD}
C {devices/vsource.sym} -890 -600 0 0 {name=V2 value=1.8
*#UB#}
C {devices/gnd.sym} -890 -570 0 0 {name=l8 lab=GND}
C {devices/lab_wire.sym} -200 -180 0 1 {name=l10 sig_type=std_logic lab=Vtia_outP_1}
C {devices/ngspice_get_value.sym} -90 -150 0 0 {name=r4 node="v(Vtia_outP_1)"
descr="v(Vtia_outP_1)"}
C {devices/isource.sym} -1720 -180 0 0 {name=I1 value="DC 0 AC 1"
* "pulse 0 50E-9 10n 0.1n 0.1n 5n 10n"
*
*
*}
C {devices/gnd.sym} -1720 -130 0 0 {name=l16 lab=GND}
C {devices/isource.sym} -1030 -190 0 0 {name=I2 value=80u}
C {devices/ngspice_get_value.sym} -1310 -400 0 0 {name=r2 node="v(Vinb)"
descr="v(Vinb)"}
C {devices/vdd.sym} -1030 -250 0 0 {name=l4 lab=VDD}
C {devices/capa.sym} -1480 -310 0 0 {name=C1
m=1
value=200f
footprint=1206
device="ceramic capacitor"}
C {devices/ind.sym} -1540 -400 1 0 {name=L1
m=1
value=1n
footprint=1206
device=inductor}
C {devices/capa.sym} -1600 -310 0 0 {name=C2
m=1
value=3p
footprint=1206
device="ceramic capacitor"}
C {devices/gnd.sym} -1480 -260 0 0 {name=l9 lab=GND}
C {devices/gnd.sym} -1600 -260 0 0 {name=l13 lab=GND}
C {devices/ngspice_get_value.sym} -880 -260 0 0 {name=r3 node="v(Vbias1)"
descr="v(Vbias1)"}
C {sky130_fd_pr/nfet_01v8_esd.sym} -1390 -310 0 0 {name=M1
L=0.165
W=20.35
nf=1
mult=5
ad="'int((nf+1)/2) * W/nf * 0.29'"
pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
as="'int((nf+2)/2) * W/nf * 0.29'"
ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
nrd="'0.29 / W'" nrs="'0.29 / W'"
sa=0 sb=0 sd=0
model=esd_nfet_01v8
spiceprefix=X
}
C {devices/gnd.sym} -1370 -260 0 0 {name=l15 lab=GND}
C {devices/lab_wire.sym} -910 -180 0 1 {name=l3 sig_type=std_logic lab=Vbias1}
C {devices/ngspice_get_value.sym} -730 -570 0 0 {name=r5 node="v(Vbias2)"
descr="v(Vbias2)"}
C {devices/lab_wire.sym} -200 -200 0 1 {name=l14 sig_type=std_logic lab=Vtia_outP_2}
C {devices/ngspice_get_value.sym} -100 -200 0 0 {name=r6 node="v(Vtia_outP_2)"
descr="v(Vtia_outP_2)"}
C {devices/isource.sym} -810 -520 0 0 {name=I3 value=8u}
C {devices/lab_wire.sym} -810 -560 0 1 {name=l18 sig_type=std_logic lab=Vbias2}
C {devices/gnd.sym} -810 -470 0 0 {name=l2 lab=GND}
C {sky130_fd_pr/nfet_01v8.sym} 60 -140 1 0 {name=M2
L=0.2
W=1.5
nf=1
mult=30
ad="'int((nf+1)/2) * W/nf * 0.29'"
pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
as="'int((nf+2)/2) * W/nf * 0.29'"
ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
nrd="'0.29 / W'" nrs="'0.29 / W'"
sa=0 sb=0 sd=0
model=nfet_01v8
spiceprefix=X
}
C {devices/gnd.sym} 60 -30 0 0 {name=l12 lab=GND}
C {devices/gnd.sym} -1240 -270 0 0 {name=l22 lab=GND}
C {devices/vdd.sym} -1370 -510 0 0 {name=l21 lab=VDD}
C {/home/simon/code/asic/analog/tia/tia_rgc_core.sym} -500 -180 0 0 {name=x1}
C {/home/simon/code/asic/analog/tia/tia_rgc_feedback.sym} -430 -520 0 0 {name=x2}
C {devices/gnd.sym} -800 -220 0 0 {name=l19 lab=GND}
C {devices/gnd.sym} -350 -90 0 0 {name=l6 lab=GND}
C {devices/vdd.sym} -350 -270 0 0 {name=l17 lab=VDD}
C {devices/vdd.sym} -230 -590 0 0 {name=l1 lab=VDD}
C {devices/gnd.sym} -230 -510 0 0 {name=l11 lab=GND}
C {devices/noconn.sym} 110 -200 2 0 {name=l24}
C {devices/isource.sym} -1240 -320 0 0 {name=I4 value=20u}
C {devices/gnd.sym} -720 -520 0 0 {name=l25 lab=GND}
C {devices/gnd.sym} -700 -470 0 0 {name=l20 lab=GND}