Merge branch 'main' of https://github.com/NohealthyBBQ/sloci_caravel into main
diff --git a/xschem/.gitignore b/xschem/.gitignore new file mode 100644 index 0000000..e9a03a2 --- /dev/null +++ b/xschem/.gitignore
@@ -0,0 +1,3 @@ +*.ext +sourceme +xschemrc
diff --git a/xschem/BGR_lvs.sch b/xschem/BGR_lvs.sch new file mode 100644 index 0000000..525fd48 --- /dev/null +++ b/xschem/BGR_lvs.sch
@@ -0,0 +1,1146 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {} +V {} +S {} +E {} +T {Itail = 100uA +Iout = 460uA} -810 -310 0 0 0.4 0.4 {} +T {Itail = 150uA +Iout = 460uA} 460 -340 0 0 0.4 0.4 {} +N -970 -40 -970 -10 { lab=VSS} +N -1030 -70 -970 -70 { lab=VSS} +N -1030 -70 -1030 -10 { lab=VSS} +N -970 -670 -750 -670 { lab=VDD} +N -510 -670 -310 -670 { lab=VDD} +N -510 -330 -510 -310 { lab=Vb} +N -510 -410 -510 -330 { lab=Vb} +N 0 -460 0 -330 { lab=Vbg} +N -510 -250 -510 -230 { lab=Vb} +N -510 -540 -510 -470 { lab=Vb} +N -510 -170 -510 -100 { lab=vbneg} +N -470 -70 -470 -10 { lab=VSS} +N -510 -40 -510 -10 { lab=VSS} +N -550 -70 -510 -70 { lab=VSS} +N -550 -70 -550 -10 { lab=VSS} +N -930 -70 -910 -70 { lab=VSS} +N -910 -70 -910 -10 { lab=VSS} +N -610 -200 -530 -200 { lab=VSS} +N -610 -200 -610 -10 { lab=VSS} +N -970 -250 -970 -100 { lab=Va} +N -620 -330 -510 -330 { lab=Vb} +N -1270 -40 -1260 -40 { lab=VSS} +N -1310 -70 -1310 -40 { lab=Vota_bias1} +N -1310 -70 -1270 -70 { lab=Vota_bias1} +N -1260 -40 -1260 -10 { lab=VSS} +N -120 -670 0 -670 { lab=VDD} +N -510 -670 -510 -600 { lab=VDD} +N -120 -10 0 -10 { lab=VSS} +N -970 -330 -970 -310 { lab=Va} +N -550 -580 -550 -570 { lab=vgate} +N -1010 -580 -1010 -570 { lab=vgate} +N -970 -540 -970 -480 { lab=Va} +N -1270 -570 -1260 -570 { lab=VDD} +N -1260 -600 -1260 -570 { lab=VDD} +N -1270 -600 -1260 -600 { lab=VDD} +N -970 -570 -960 -570 { lab=VDD} +N -960 -600 -960 -570 { lab=VDD} +N -970 -600 -960 -600 { lab=VDD} +N -970 -670 -970 -600 { lab=VDD} +N -510 -570 -500 -570 { lab=VDD} +N -500 -600 -500 -570 { lab=VDD} +N -510 -600 -500 -600 { lab=VDD} +N -1230 -670 -970 -670 { lab=VDD} +N -70 -580 -40 -580 { lab=vgate} +N -1310 -580 -1310 -570 { lab=vgate} +N -1270 -670 -1270 -600 { lab=VDD} +N -1270 -350 -1270 -70 { lab=Vota_bias1} +N -970 -330 -900 -330 { lab=Va} +N -1030 -10 -970 -10 { lab=VSS} +N -1100 -10 -1030 -10 { lab=VSS} +N -1220 -10 -1100 -10 { lab=VSS} +N -470 -10 -380 -10 { lab=VSS} +N -510 -10 -470 -10 { lab=VSS} +N -550 -10 -510 -10 { lab=VSS} +N -610 -10 -550 -10 { lab=VSS} +N -970 -10 -910 -10 { lab=VSS} +N -910 -10 -850 -10 { lab=VSS} +N 0 -270 0 -250 { lab=vbe3} +N -310 -670 -120 -670 { lab=VDD} +N -1010 -580 -790 -580 { lab=vgate} +N -790 -580 -310 -580 { lab=vgate} +N -970 -420 -970 -330 { lab=Va} +N -1270 -670 -1230 -670 { lab=VDD} +N -1260 -10 -1220 -10 { lab=VSS} +N -1170 -580 -1010 -580 { lab=vgate} +N -1310 -580 -1170 -580 { lab=vgate} +N 0 -670 300 -670 { +lab=VDD} +N -720 -330 -620 -330 { +lab=Vb} +N -720 -360 -720 -330 { +lab=Vb} +N -900 -330 -760 -330 { +lab=Va} +N -760 -360 -760 -330 { +lab=Va} +N -740 -580 -740 -530 { +lab=vgate} +N -750 -670 -510 -670 { +lab=VDD} +N -310 -580 -70 -580 { +lab=vgate} +N -850 -10 -610 -10 { +lab=VSS} +N -380 -10 -120 -10 { +lab=VSS} +N -860 -460 -800 -460 { +lab=VSS} +N -660 -460 -620 -460 { +lab=VDD} +N -660 -430 -640 -430 { +lab=Vota_bias1} +N 0 -250 0 -140 { +lab=vbe3} +N 0 -80 0 -10 { +lab=VSS} +N 40 -110 40 -10 { +lab=VSS} +N 0 -400 140 -400 { +lab=Vbg} +N -1270 -540 -1270 -470 { +lab=Vota_bias1} +N -1270 -410 -1270 -350 { +lab=Vota_bias1} +N -90 -300 -20 -300 { +lab=VSS} +N -90 -300 -90 -10 { +lab=VSS} +N -40 -580 -40 -570 { +lab=vgate} +N 0 -670 0 -600 { +lab=VDD} +N 0 -540 0 -520 { +lab=Vbg} +N -1270 -10 -1260 -10 { +lab=VSS} +N -0 -570 20 -570 { +lab=VDD} +N 20 -600 20 -570 { +lab=VDD} +N 0 -600 20 -600 { +lab=VDD} +N -220 -390 -220 -10 { +lab=VSS} +N -220 -420 -210 -420 { lab=VSS} +N 410 -670 440 -670 { +lab=VDD} +N 440 -670 440 -500 { +lab=VDD} +N 280 -440 340 -440 { +lab=vd4} +N 560 -420 620 -420 { +lab=vcurrent_gate} +N 440 -670 660 -670 { +lab=VDD} +N 440 -360 440 -320 { +lab=VSS} +N 660 -390 660 -370 { +lab=vd4} +N 660 -310 660 -280 { +lab=vd4} +N 660 -440 660 -390 { +lab=vd4} +N 600 -470 600 -420 { +lab=vcurrent_gate} +N 600 -470 620 -470 { +lab=vcurrent_gate} +N 660 -670 660 -500 { +lab=VDD} +N 840 -390 840 -370 { +lab=voutb2} +N 840 -440 840 -390 { +lab=voutb2} +N 620 -420 780 -420 { +lab=vcurrent_gate} +N 840 -670 840 -500 { +lab=VDD} +N 660 -670 840 -670 { +lab=VDD} +N 790 -150 790 -10 { +lab=VSS} +N 660 -470 710 -470 { +lab=VDD} +N 710 -520 710 -470 { +lab=VDD} +N 660 -520 710 -520 { +lab=VDD} +N 840 -470 900 -470 { +lab=VDD} +N 900 -520 900 -470 { +lab=VDD} +N 840 -520 900 -520 { +lab=VDD} +N 300 -400 340 -400 { +lab=Vbg} +N 300 -670 410 -670 { +lab=VDD} +N 370 -10 660 -10 { +lab=VSS} +N 840 -10 910 -10 { +lab=VSS} +N 410 -520 410 -500 { +lab=Vota_bias1} +N 660 -280 660 -250 { +lab=vd4} +N 660 -250 660 -220 { +lab=vd4} +N 840 -100 840 -70 { +lab=voutb1} +N 840 -200 840 -160 { +lab=voutb2} +N 840 -310 840 -260 { +lab=voutb2} +N 880 -40 910 -40 { +lab=voutb1} +N 910 -80 910 -40 { +lab=voutb1} +N 910 -180 910 -130 { +lab=voutb2} +N 840 -180 910 -180 { +lab=voutb2} +N 790 -130 840 -130 { +lab=VSS} +N 790 -40 840 -40 { +lab=VSS} +N 880 -130 910 -130 { +lab=voutb2} +N 840 -80 910 -80 { +lab=voutb1} +N 660 -10 790 -10 { +lab=VSS} +N 790 -10 840 -10 { +lab=VSS} +N 660 -220 660 -160 { +lab=vd4} +N 660 -160 660 -130 { +lab=vd4} +N 0 -10 370 -10 { +lab=VSS} +N -220 -500 -220 -450 { +lab=vgate} +N -220 -580 -220 -500 { +lab=vgate} +N 280 -310 280 -280 { +lab=vd4} +N 280 -400 280 -310 { +lab=vd4} +N 280 -440 280 -400 { +lab=vd4} +N 510 -420 560 -420 { +lab=vcurrent_gate} +N 780 -420 800 -420 { +lab=vcurrent_gate} +N 800 -470 800 -420 { +lab=vcurrent_gate} +N -170 -900 -170 -860 { +lab=#net1} +N -250 -830 -210 -830 { +lab=porst} +N -250 -930 -250 -830 { +lab=porst} +N -250 -930 -210 -930 { +lab=porst} +N -170 -990 -170 -960 { +lab=VDD} +N -30 -900 -30 -860 { +lab=#net2} +N -30 -990 -30 -960 { +lab=VDD} +N -80 -830 -70 -830 { +lab=#net1} +N -80 -930 -80 -830 { +lab=#net1} +N -80 -930 -70 -930 { +lab=#net1} +N -170 -880 -80 -880 { +lab=#net1} +N -170 -990 -30 -990 { +lab=VDD} +N -170 -800 -170 -780 { +lab=VSS} +N -170 -780 -30 -780 { +lab=VSS} +N -30 -800 -30 -780 { +lab=VSS} +N -170 -930 -150 -930 { +lab=VDD} +N -150 -960 -150 -930 { +lab=VDD} +N -170 -960 -150 -960 { +lab=VDD} +N -30 -930 -10 -930 { +lab=VDD} +N -10 -960 -10 -930 { +lab=VDD} +N -30 -960 -10 -960 { +lab=VDD} +N -170 -830 -150 -830 { +lab=VSS} +N -150 -830 -150 -800 { +lab=VSS} +N -170 -800 -150 -800 { +lab=VSS} +N -30 -830 -10 -830 { +lab=VSS} +N -10 -830 -10 -800 { +lab=VSS} +N -30 -800 -10 -800 { +lab=VSS} +N -210 -420 -200 -420 { +lab=VSS} +N -200 -420 -200 -390 { +lab=VSS} +N -220 -390 -200 -390 { +lab=VSS} +N 160 -880 160 -840 { +lab=porst_buff} +N 140 -880 160 -880 { +lab=porst_buff} +N -30 -880 80 -880 { +lab=#net2} +N 160 -780 160 -750 { +lab=VSS} +N 840 -260 840 -200 { +lab=voutb2} +N 1060 -100 1060 -70 { +lab=#net3} +N 910 -10 1060 -10 { +lab=VSS} +N 1060 -10 1230 -10 { +lab=VSS} +N 1230 -100 1230 -70 { +lab=#net4} +N 1060 -200 1060 -160 { +lab=Iout0} +N 1230 -200 1230 -160 { +lab=Iout1} +N 910 -40 1020 -40 { +lab=voutb1} +N 910 -130 1020 -130 { +lab=voutb2} +N 1160 -40 1190 -40 { +lab=voutb1} +N 1160 -130 1190 -130 { +lab=voutb2} +N 1060 -130 1090 -130 { +lab=VSS} +N 1090 -130 1090 -100 { +lab=VSS} +N 1060 -40 1090 -40 { +lab=VSS} +N 1090 -40 1090 -10 { +lab=VSS} +N 1230 -130 1260 -130 { +lab=VSS} +N 1260 -130 1260 -100 { +lab=VSS} +N 1230 -40 1260 -40 { +lab=VSS} +N 1260 -40 1260 -10 { +lab=VSS} +N 1230 -10 1260 -10 { +lab=VSS} +N 280 -280 660 -280 { +lab=vd4} +N -1310 -10 -1270 -10 { +lab=VSS} +N 1400 -100 1400 -70 { +lab=#net5} +N 1400 -200 1400 -160 { +lab=Iout2} +N 1330 -40 1360 -40 { +lab=voutb1} +N 1330 -130 1360 -130 { +lab=voutb2} +N 1400 -130 1430 -130 { +lab=VSS} +N 1430 -130 1430 -100 { +lab=VSS} +N 1400 -40 1430 -40 { +lab=VSS} +N 1430 -40 1430 -10 { +lab=VSS} +N 1400 -10 1430 -10 { +lab=VSS} +N 1260 -10 1400 -10 { +lab=VSS} +N 1610 -100 1610 -70 { +lab=#net6} +N 1610 -200 1610 -160 { +lab=Iout3} +N 1540 -40 1570 -40 { +lab=voutb1} +N 1540 -130 1570 -130 { +lab=voutb2} +N 1610 -130 1640 -130 { +lab=VSS} +N 1640 -130 1640 -100 { +lab=VSS} +N 1610 -40 1640 -40 { +lab=VSS} +N 1640 -40 1640 -10 { +lab=VSS} +N 1610 -10 1640 -10 { +lab=VSS} +N 1780 -100 1780 -70 { +lab=#net7} +N 1780 -200 1780 -160 { +lab=Iout4} +N 1710 -40 1740 -40 { +lab=voutb1} +N 1710 -130 1740 -130 { +lab=voutb2} +N 1780 -130 1810 -130 { +lab=VSS} +N 1810 -130 1810 -100 { +lab=VSS} +N 1780 -40 1810 -40 { +lab=VSS} +N 1810 -40 1810 -10 { +lab=VSS} +N 1780 -10 1810 -10 { +lab=VSS} +N 1640 -10 1780 -10 { +lab=VSS} +N 1430 -10 1610 -10 { +lab=VSS} +N 1970 -100 1970 -70 { +lab=#net8} +N 1970 -200 1970 -160 { +lab=Iout5} +N 1900 -40 1930 -40 { +lab=voutb1} +N 1900 -130 1930 -130 { +lab=voutb2} +N 1970 -130 2000 -130 { +lab=VSS} +N 2000 -130 2000 -100 { +lab=VSS} +N 1970 -40 2000 -40 { +lab=VSS} +N 2000 -40 2000 -10 { +lab=VSS} +N 1970 -10 2000 -10 { +lab=VSS} +N 2140 -100 2140 -70 { +lab=#net9} +N 2140 -200 2140 -160 { +lab=Iout6} +N 2070 -40 2100 -40 { +lab=voutb1} +N 2070 -130 2100 -130 { +lab=voutb2} +N 2140 -130 2170 -130 { +lab=VSS} +N 2170 -130 2170 -100 { +lab=VSS} +N 2140 -40 2170 -40 { +lab=VSS} +N 2170 -40 2170 -10 { +lab=VSS} +N 2140 -10 2170 -10 { +lab=VSS} +N 2000 -10 2140 -10 { +lab=VSS} +N 1810 -10 1970 -10 { +lab=VSS} +N 470 -160 660 -160 { +lab=vd4} +N 170 -160 170 -10 { +lab=VSS} +N 200 -140 260 -140 { +lab=VSS} +N 260 -140 320 -140 { +lab=VSS} +N 320 -140 380 -140 { +lab=VSS} +N 380 -140 440 -140 { +lab=VSS} +N 280 -140 280 -10 { +lab=VSS} +N 1050 -460 1090 -460 { +lab=VSS} +N 1050 -460 1050 -400 { +lab=VSS} +N 1050 -400 1090 -400 { +lab=VSS} +N 1130 -430 1180 -430 { +lab=VSS} +N 1180 -430 1180 -370 { +lab=VSS} +N 1050 -370 1180 -370 { +lab=VSS} +N 1050 -400 1050 -370 { +lab=VSS} +N 1090 -100 1090 -40 { +lab=VSS} +N 1260 -100 1260 -40 { +lab=VSS} +N 1430 -100 1430 -40 { +lab=VSS} +N 1640 -100 1640 -40 { +lab=VSS} +N 1810 -100 1810 -40 { +lab=VSS} +N 2000 -100 2000 -40 { +lab=VSS} +N 2170 -100 2170 -40 { +lab=VSS} +N 660 -130 660 -80 { +lab=vd4} +N 610 -80 660 -80 { +lab=vd4} +N 530 -80 550 -80 { +lab=#net10} +N 440 -80 470 -80 { +lab=VSS} +N 440 -80 440 -10 { +lab=VSS} +N 500 -60 500 -10 { +lab=VSS} +N 580 -60 580 -10 { +lab=VSS} +N 1360 -400 1360 -370 { +lab=VSS} +N 1290 -340 1320 -340 { +lab=VSS} +N 1290 -430 1320 -430 { +lab=VSS} +N 1360 -430 1390 -430 { +lab=VSS} +N 1390 -430 1390 -400 { +lab=VSS} +N 1360 -340 1390 -340 { +lab=VSS} +N 1390 -340 1390 -310 { +lab=VSS} +N 1360 -310 1390 -310 { +lab=VSS} +N 1390 -400 1390 -340 { +lab=VSS} +N 1290 -430 1290 -340 { +lab=VSS} +N 1290 -310 1360 -310 { +lab=VSS} +N 1290 -340 1290 -310 { +lab=VSS} +N 1290 -460 1290 -430 { +lab=VSS} +N 1290 -460 1360 -460 { +lab=VSS} +N 1360 -460 1390 -460 { +lab=VSS} +N 1390 -460 1390 -430 { +lab=VSS} +N 1550 -520 1550 -480 { +lab=VDD} +N 1480 -480 1550 -480 { +lab=VDD} +N 1480 -550 1480 -480 { +lab=VDD} +N 1480 -550 1510 -550 { +lab=VDD} +N 1510 -610 1510 -550 { +lab=VDD} +N 1510 -610 1550 -610 { +lab=VDD} +N 1550 -610 1550 -580 { +lab=VDD} +N 1550 -550 1580 -550 { +lab=VDD} +N 1580 -610 1580 -550 { +lab=VDD} +N 1550 -610 1580 -610 { +lab=VDD} +N -1270 -470 -1270 -410 { +lab=Vota_bias1} +N -970 -310 -970 -250 { +lab=Va} +N -970 -480 -970 -420 { +lab=Va} +N -510 -310 -510 -250 { +lab=Vb} +N -510 -470 -510 -410 { +lab=Vb} +N 0 -520 0 -460 { +lab=Vbg} +N 660 -370 660 -310 { +lab=vd4} +N 840 -370 840 -310 { +lab=voutb2} +N 1360 -380 1390 -380 { +lab=VSS} +C {sky130_fd_pr/pnp_05v5.sym} -950 -70 0 1 {name=Q2 +model=pnp_05v5_W3p40L3p40 +spiceprefix=X +} +C {devices/lab_pin.sym} -900 -330 3 0 {name=l5 lab=Va} +C {devices/lab_pin.sym} -620 -330 3 0 {name=l6 lab=Vb} +C {sky130_fd_pr/pnp_05v5.sym} -490 -70 0 1 {name=Q1 +model="pnp_05v5_W3p40L3p40 m=34" +spiceprefix=X +} +C {devices/lab_pin.sym} -510 -140 0 0 {name=l4 lab=vbneg} +C {devices/lab_wire.sym} -820 -580 0 0 {name=l11 lab=vgate} +C {sky130_fd_pr/nfet_01v8_lvt.sym} -1290 -40 0 0 {name=Mota_bias_n +L=4 +W=5 +nf=1 +mult=1 +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_lvt +spiceprefix=X +} +C {sky130_fd_pr/pfet_01v8_lvt.sym} -1290 -570 0 0 {name=Mota_bias_p +L=1 +W=1 +nf=1 +mult=10 +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=pfet_01v8_lvt +spiceprefix=X +} +C {sky130_fd_pr/pfet_01v8_lvt.sym} -990 -570 0 0 {name=Mfeedback_mir +L=1 +W=1 +nf=1 +mult=28 +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=pfet_01v8_lvt +spiceprefix=X +} +C {sky130_fd_pr/pfet_01v8_lvt.sym} -530 -570 0 0 {name=Mfeedback_mir1 +L=1 +W=1 +nf=1 +mult=28 +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=pfet_01v8_lvt +spiceprefix=X +} +C {sky130_fd_pr/pfet_01v8_lvt.sym} -20 -570 0 0 {name=Mfeedback_mir2 +L=1 +W=1 +nf=1 +mult=28 +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=pfet_01v8_lvt +spiceprefix=X +} +C {devices/ngspice_probe.sym} -510 -140 0 0 {name=r9} +C {devices/lab_wire.sym} -620 -460 0 1 {name=l14 lab=VDD} +C {devices/lab_pin.sym} 0 -190 0 0 {name=l15 lab=vbe3} +C {sky130_fd_pr/pnp_05v5.sym} 20 -110 0 1 {name=Q3 +model=pnp_05v5_W3p40L3p40 +*model="pnp_05v5_W3p40L3p40 m=1" +spiceprefix=X +} +C {devices/lab_pin.sym} -1310 -70 2 1 {name=l2 lab=Vota_bias1} +C {devices/lab_pin.sym} -640 -430 2 0 {name=l18 lab=Vota_bias1} +C {devices/lab_pin.sym} -260 -420 0 0 {name=l26 lab=porst_buff} +C {sky130_fd_pr/pfet_01v8_lvt.sym} 640 -470 0 0 {name=M11 +L=1 +W=1 +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=pfet_01v8_lvt +spiceprefix=X +} +C {sky130_fd_pr/pfet_01v8_lvt.sym} 820 -470 0 0 {name=M8 +L=1 +W=1 +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=pfet_01v8_lvt +spiceprefix=X +} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 860 -40 0 1 {name=M4 +L=2 +W=8 +nf=1 +mult=8 +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_lvt +spiceprefix=X +} +C {devices/lab_pin.sym} 840 -410 0 1 {name=l24 lab=voutb2} +C {devices/lab_pin.sym} 660 -400 0 1 {name=l25 lab=vd4} +C {devices/lab_pin.sym} 410 -520 2 1 {name=l19 lab=Vota_bias1} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 860 -130 0 1 {name=M5 +L=2 +W=8 +nf=1 +mult=8 +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_lvt +spiceprefix=X +} +C {lab_wire.sym} 330 -400 0 0 {name=l7 sig_type=std_logic lab=Vbg} +C {devices/lab_pin.sym} 600 -470 0 0 {name=l21 lab=vcurrent_gate} +C {sky130_fd_pr/nfet_01v8.sym} -190 -830 0 0 {name=Minv_n +L=0.5 +W=1.5 +nf=1 +mult=1 +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 {sky130_fd_pr/pfet_01v8.sym} -190 -930 0 0 {name=Minv_p +L=0.5 +W=4 +nf=1 +mult=1 +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=pfet_01v8 +spiceprefix=X +} +C {sky130_fd_pr/nfet_01v8.sym} -50 -830 0 0 {name=Minv_n1 +L=0.5 +W=1.5 +nf=1 +mult=1 +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 {sky130_fd_pr/pfet_01v8.sym} -50 -930 0 0 {name=Minv_p1 +L=0.5 +W=4 +nf=1 +mult=1 +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=pfet_01v8 +spiceprefix=X +} +C {lab_wire.sym} -170 -990 0 0 {name=l28 sig_type=std_logic lab=VDD} +C {devices/lab_pin.sym} 160 -880 0 1 {name=l31 lab=porst_buff} +C {devices/lab_pin.sym} 910 -70 0 1 {name=l34 lab=voutb1} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 1040 -40 0 0 {name=M15 +L=2 +W=8 +nf=1 +mult=8 +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_lvt +spiceprefix=X +} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 1040 -130 0 0 {name=M16 +L=2 +W=8 +nf=1 +mult=8 +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_lvt +spiceprefix=X +} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 1210 -40 0 0 {name=M17 +L=2 +W=8 +nf=1 +mult=8 +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_lvt +spiceprefix=X +} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 1210 -130 0 0 {name=M18 +L=2 +W=8 +nf=1 +mult=8 +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_lvt +spiceprefix=X +} +C {opin.sym} 1060 -200 0 0 {name=p1 lab=Iout0} +C {devices/lab_pin.sym} 1170 -40 0 0 {name=l36 lab=voutb1} +C {devices/lab_pin.sym} 1170 -130 0 0 {name=l37 lab=voutb2} +C {sky130_fd_pr/cap_mim_m3_1.sym} 160 -810 2 0 {name=C_porst model=cap_mim_m3_1 W=23 L=5.8 MF=1 spiceprefix=X} +C {iopin.sym} -1270 -670 0 1 {name=p2 lab=VDD} +C {iopin.sym} -1310 -10 0 1 {name=p3 lab=VSS} +C {devices/lab_pin.sym} -80 -780 3 0 {name=l1 lab=VSS} +C {devices/lab_pin.sym} 160 -750 3 0 {name=l16 lab=VSS} +C {devices/lab_pin.sym} 110 -860 3 0 {name=l17 lab=VSS} +C {devices/lab_pin.sym} -860 -460 0 0 {name=l3 lab=VSS} +C {devices/lab_pin.sym} 440 -320 0 0 {name=l9 lab=VSS} +C {opin.sym} 1230 -200 0 0 {name=p4 lab=Iout1} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 1380 -40 0 0 {name=M19 +L=2 +W=8 +nf=1 +mult=8 +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_lvt +spiceprefix=X +} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 1380 -130 0 0 {name=M20 +L=2 +W=8 +nf=1 +mult=8 +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_lvt +spiceprefix=X +} +C {devices/lab_pin.sym} 1340 -40 0 0 {name=l13 lab=voutb1} +C {devices/lab_pin.sym} 1340 -130 0 0 {name=l20 lab=voutb2} +C {opin.sym} 1400 -200 0 0 {name=p5 lab=Iout2} +C {ipin.sym} -250 -880 0 0 {name=p6 lab=porst} +C {opin.sym} 140 -400 0 0 {name=p7 lab=Vbg} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 1590 -40 0 0 {name=M21 +L=2 +W=8 +nf=1 +mult=8 +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_lvt +spiceprefix=X +} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 1590 -130 0 0 {name=M22 +L=2 +W=8 +nf=1 +mult=8 +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_lvt +spiceprefix=X +} +C {devices/lab_pin.sym} 1550 -40 0 0 {name=l8 lab=voutb1} +C {devices/lab_pin.sym} 1550 -130 0 0 {name=l12 lab=voutb2} +C {opin.sym} 1610 -200 0 0 {name=p8 lab=Iout3} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 1760 -40 0 0 {name=M23 +L=2 +W=8 +nf=1 +mult=8 +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_lvt +spiceprefix=X +} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 1760 -130 0 0 {name=M24 +L=2 +W=8 +nf=1 +mult=8 +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_lvt +spiceprefix=X +} +C {devices/lab_pin.sym} 1720 -40 0 0 {name=l22 lab=voutb1} +C {devices/lab_pin.sym} 1720 -130 0 0 {name=l23 lab=voutb2} +C {opin.sym} 1780 -200 0 0 {name=p9 lab=Iout4} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 1950 -40 0 0 {name=M25 +L=2 +W=8 +nf=1 +mult=8 +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_lvt +spiceprefix=X +} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 1950 -130 0 0 {name=M26 +L=2 +W=8 +nf=1 +mult=8 +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_lvt +spiceprefix=X +} +C {devices/lab_pin.sym} 1910 -40 0 0 {name=l27 lab=voutb1} +C {devices/lab_pin.sym} 1910 -130 0 0 {name=l30 lab=voutb2} +C {opin.sym} 1970 -200 0 0 {name=p10 lab=Iout5} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 2120 -40 0 0 {name=M27 +L=2 +W=8 +nf=1 +mult=8 +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_lvt +spiceprefix=X +} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 2120 -130 0 0 {name=M28 +L=2 +W=8 +nf=1 +mult=8 +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_lvt +spiceprefix=X +} +C {devices/lab_pin.sym} 2080 -40 0 0 {name=l32 lab=voutb1} +C {devices/lab_pin.sym} 2080 -130 0 0 {name=l33 lab=voutb2} +C {opin.sym} 2140 -200 0 0 {name=p11 lab=Iout6} +C {sky130_fd_pr/res_xhigh_po_5p73.sym} 200 -160 3 0 {name=Rref_xhigh +W=5.73 +L=106 +model=res_xhigh_po_5p73 +spiceprefix=X +mult=1} +C {sky130_fd_pr/res_xhigh_po_5p73.sym} 260 -160 3 0 {name=Rref_xhigh1 +W=5.73 +L=106 +model=res_xhigh_po_5p73 +spiceprefix=X +mult=1} +C {sky130_fd_pr/res_xhigh_po_5p73.sym} 320 -160 3 0 {name=Rref_xhigh2 +W=5.73 +L=106 +model=res_xhigh_po_5p73 +spiceprefix=X +mult=1} +C {sky130_fd_pr/res_xhigh_po_5p73.sym} 380 -160 3 0 {name=Rref_xhigh3 +W=5.73 +L=106 +model=res_xhigh_po_5p73 +spiceprefix=X +mult=1} +C {sky130_fd_pr/res_xhigh_po_5p73.sym} 440 -160 3 0 {name=Rref_xhigh4 +W=5.73 +L=106 +model=res_xhigh_po_5p73 +spiceprefix=X +mult=1} +C {sky130_fd_pr/res_high_po_1p41.sym} 0 -300 0 0 {name=R4 +W=1.41 +L=42.39 +model=res_high_po_1p41 +spiceprefix=X +mult=1} +C {sky130_fd_pr/res_high_po_1p41.sym} -510 -200 0 0 {name=R3 +W=1.41 +L=8.1 +model=res_high_po_1p41 +spiceprefix=X +mult=1} +C {sky130_fd_pr/res_high_po_1p41.sym} 110 -880 3 0 {name=R_porst +W=1.41 +L=16 +model=res_high_po_1p41 +spiceprefix=X +mult=1} +C {devices/lab_pin.sym} 1050 -380 0 0 {name=l38 lab=VSS} +C {sky130_fd_pr/res_high_po_1p41.sym} 580 -80 3 0 {name=Rref_high1 +W=1.41 +L=47.5 +model=res_high_po_1p41 +spiceprefix=X +mult=1} +C {sky130_fd_pr/res_high_po_1p41.sym} 500 -80 3 0 {name=Rref_high2 +W=1.41 +L=104 +model=res_high_po_1p41 +spiceprefix=X +mult=1} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 1340 -340 0 0 {name=M1 +L=2 +W=8 +nf=1 +mult=512 +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_lvt +spiceprefix=X +} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 1340 -430 0 0 {name=M2 +L=2 +W=8 +nf=1 +mult=512 +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_lvt +spiceprefix=X +} +C {devices/lab_pin.sym} 1290 -310 0 0 {name=l39 lab=VSS} +C {sky130_fd_pr/pfet_01v8_lvt.sym} 1530 -550 0 0 {name=M3 +L=1 +W=1 +nf=1 +mult=80 +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=pfet_01v8_lvt +spiceprefix=X +} +C {devices/lab_wire.sym} 1550 -610 0 1 {name=l40 lab=VDD} +C {sky130_fd_pr/nfet_01v8.sym} -240 -420 0 0 {name=Mpdn +L=0.5 +W=1.5 +nf=1 +mult=1 +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 {sky130_fd_pr/pnp_05v5.sym} 1110 -430 0 1 {name=Q4 +model="pnp_05v5_W3p40L3p40 m=14" +spiceprefix=X +} +C {opamp_realcomp3_usefinger.sym} -740 -460 1 1 {name=x1} +C {opamp_realcomp3_usefinger.sym} 440 -420 0 0 {name=x2}
diff --git a/xschem/BGR_lvs.sym b/xschem/BGR_lvs.sym new file mode 100644 index 0000000..3fd8ecc --- /dev/null +++ b/xschem/BGR_lvs.sym
@@ -0,0 +1,61 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {type=subcircuit +format="@name @pinlist @symname" +template="name=X1"} +V {} +S {} +E {} +L 4 170 -120 190 -120 {} +L 4 290 -270 310 -270 {} +L 4 290 -250 310 -250 {} +L 4 290 -240 310 -240 {} +L 4 290 -230 310 -230 {} +L 4 220 -300 220 -280 {} +L 4 220 -40 220 -20 {} +L 4 190 -210 190 -120 {} +L 4 190 -280 290 -280 {} +L 4 290 -210 290 -40 {} +L 4 190 -40 290 -40 {} +L 4 190 -120 190 -40 {} +L 4 190 -280 190 -210 {} +L 4 290 -280 290 -210 {} +L 4 290 -220 310 -220 {} +L 4 290 -210 310 -210 {} +L 4 290 -200 310 -200 {} +L 4 290 -190 310 -190 {} +B 5 167.5 -122.5 172.5 -117.5 {name=porst +dir=in} +B 5 217.5 -302.5 222.5 -297.5 {name=VDD +dir=inout} +B 5 217.5 -22.5 222.5 -17.5 {name=VSS +dir=inout} +B 5 307.5 -272.5 312.5 -267.5 {name=Vbg +dir=out} +B 5 307.5 -252.5 312.5 -247.5 {name=Iout0 +dir=out} +B 5 307.5 -242.5 312.5 -237.5 {name=Iout1 +dir=out} +B 5 307.5 -232.5 312.5 -227.5 {name=Iout2 +dir=out} +B 5 307.5 -222.5 312.5 -217.5 {name=Iout3 +dir=out} +B 5 307.5 -212.5 312.5 -207.5 {name=Iout4 +dir=out} +B 5 307.5 -202.5 312.5 -197.5 {name=Iout5 +dir=out} +B 5 307.5 -192.5 312.5 -187.5 {name=Iout6 +dir=out} +T {porst} 195 -124 0 0 0.2 0.2 {} +T {Vbg} 265 -274 0 0 0.2 0.2 {} +T {Iout0} 265 -254 0 0 0.1 0.1 {} +T {Iout1} 265 -244 0 0 0.1 0.1 {} +T {Iout2} 265 -234 0 0 0.1 0.1 {} +T {VSS} 205 -64 0 0 0.2 0.2 {} +T {VDD} 205 -204 0 0 0.2 0.2 {} +T {@name} 295 -72 0 0 0.2 0.2 {} +T {@symname} 295 -52 0 0 0.2 0.2 {} +T {Iout3} 265 -224 0 0 0.1 0.1 {} +T {Iout4} 265 -214 0 0 0.1 0.1 {} +T {Iout5} 265 -204 0 0 0.1 0.1 {} +T {Iout6} 265 -194 0 0 0.1 0.1 {}
diff --git a/xschem/opamp_realcomp3_usefinger.sch b/xschem/opamp_realcomp3_usefinger.sch new file mode 100644 index 0000000..33f345d --- /dev/null +++ b/xschem/opamp_realcomp3_usefinger.sch
@@ -0,0 +1,188 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {} +V {} +S {} +E {} +T {10u} 540 -440 0 0 0.4 0.4 {} +T {10u} 330 -440 0 0 0.4 0.4 {} +T {100u} 740 -440 0 0 0.4 0.4 {} +N 360 -170 360 -140 { lab=ppair_gate} +N 450 -140 540 -140 { lab=ppair_gate} +N 540 -170 540 -140 { lab=ppair_gate} +N 450 -60 470 -60 { lab=vss} +N 470 -60 470 0 { lab=vss} +N 450 -140 450 -90 { lab=ppair_gate} +N 470 -200 540 -200 { lab=vss} +N 470 -200 470 -60 { lab=vss} +N 680 -60 720 -60 { lab=bias_0p7} +N 680 -110 680 -60 { lab=bias_0p7} +N 380 -110 680 -110 { lab=bias_0p7} +N 380 -60 410 -60 { lab=bias_0p7} +N 380 -110 380 -60 { lab=bias_0p7} +N 450 -30 450 -0 { lab=vss} +N 360 -310 360 -230 { lab=ppair_gate} +N 400 -340 500 -340 { lab=ppair_gate} +N 540 -280 540 -230 { lab=first_stage_out} +N 540 -340 560 -340 { lab=vdd} +N 560 -400 560 -340 { lab=vdd} +N 540 -400 560 -400 { lab=vdd} +N 340 -400 340 -340 { lab=vdd} +N 340 -340 360 -340 { lab=vdd} +N 360 -400 360 -370 { lab=vdd} +N 540 -400 540 -370 { lab=vdd} +N 760 -400 760 -310 { lab=vdd} +N 560 -400 760 -400 { lab=vdd} +N 760 -250 760 -90 { lab=out} +N 760 -280 780 -280 { lab=vdd} +N 780 -400 780 -280 { lab=vdd} +N 760 -400 780 -400 { lab=vdd} +N 760 -60 780 -60 { lab=vss} +N 780 -60 780 0 { lab=vss} +N 760 -30 760 0 { lab=vss} +N 450 -0 470 0 { lab=vss} +N 360 -140 450 -140 { lab=ppair_gate} +N 360 -200 470 -200 { lab=vss} +N 340 -400 360 -400 { lab=vdd} +N 360 -400 540 -400 { lab=vdd} +N 760 0 780 0 { lab=vss} +N 470 0 760 0 { lab=vss} +N 540 -310 540 -280 { lab=first_stage_out} +N 300 -200 320 -200 { lab=in_n} +N 450 -340 450 -280 { lab=ppair_gate} +N 360 -280 450 -280 { lab=ppair_gate} +N 580 -200 600 -200 { lab=in_p} +N 300 -110 380 -110 { +lab=bias_0p7} +N 670 -280 720 -280 { +lab=first_stage_out} +N 540 -280 670 -280 { +lab=first_stage_out} +N 760 -200 810 -200 { +lab=out} +N 690 -280 690 -250 { +lab=first_stage_out} +N 690 -190 690 -170 { +lab=#net1} +N 690 -170 690 -150 { +lab=#net1} +N 750 -150 760 -150 { +lab=out} +N 720 -170 780 -170 { +lab=vss} +N 780 -170 780 -60 { +lab=vss} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 340 -200 0 0 {name=M_diff_n +L=1 +W=4.5 +nf=1 +mult=4 +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_lvt +spiceprefix=X +} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 560 -200 0 1 {name=M_diff_n1 +L=1 +W=4.5 +nf=1 +mult=4 +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_lvt +spiceprefix=X +} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 430 -60 0 0 {name=M_tail +L=2 +W=10 +nf=5 +mult=2 +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_lvt +spiceprefix=X +} +C {sky130_fd_pr/nfet_01v8_lvt.sym} 740 -60 0 0 {name=M_actload +L=2 +W=15 +nf=5 +mult=4 +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_lvt +spiceprefix=X +} +C {sky130_fd_pr/pfet_01v8_lvt.sym} 520 -340 0 0 {name=M_ppair_p +L=1 +W=8 +nf=4 +mult=4 +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=pfet_01v8_lvt +spiceprefix=X +} +C {sky130_fd_pr/pfet_01v8_lvt.sym} 380 -340 0 1 {name=M_ppair_p1 +L=1 +W=8 +nf=4 +mult=4 +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=pfet_01v8_lvt +spiceprefix=X +} +C {sky130_fd_pr/pfet_01v8_lvt.sym} 740 -280 0 0 {name=M_cs +L=0.5 +W=84 +nf=14 +mult=4 +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=pfet_01v8_lvt +spiceprefix=X +} +C {devices/iopin.sym} 340 -400 0 1 {name=p1 lab=vdd} +C {devices/iopin.sym} 450 0 0 1 {name=p2 lab=vss} +C {devices/ipin.sym} 300 -200 0 0 {name=p3 lab=in_n} +C {devices/ipin.sym} 600 -200 0 1 {name=p4 lab=in_p} +C {devices/opin.sym} 810 -200 0 0 {name=p5 lab=out} +C {devices/ipin.sym} 300 -110 0 0 {name=p6 lab=bias_0p7} +C {sky130_fd_pr/cap_mim_m3_1.sym} 690 -220 0 0 {name=C1 model=cap_mim_m3_1 W=16 L=21.4 MF=1 spiceprefix=X} +C {sky130_fd_pr/res_high_po_2p85.sym} 720 -150 1 0 {name=R1 +W=2.85 +L=12.1 +model=res_high_po_2p85 +spiceprefix=X +mult=1} +C {lab_wire.sym} 630 -280 1 0 {name=l1 sig_type=std_logic lab=first_stage_out} +C {lab_wire.sym} 410 -280 2 0 {name=l2 sig_type=std_logic lab=ppair_gate} +C {lab_wire.sym} 540 -140 2 0 {name=l3 sig_type=std_logic lab=diffpair_source}
diff --git a/xschem/opamp_realcomp3_usefinger.sym b/xschem/opamp_realcomp3_usefinger.sym new file mode 100644 index 0000000..9bc07ed --- /dev/null +++ b/xschem/opamp_realcomp3_usefinger.sym
@@ -0,0 +1,32 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {type=subcircuit +format="@name @pinlist @symname" +template="name=x1" +} +V {} +S {} +E {} +L 4 -100 20 -80 20 {} +L 4 -100 -20 -80 -20 {} +L 4 50 0 70 0 {} +L 4 -30 -80 -30 -37 {} +L 4 -80 -60 -80 60 {} +L 4 -80 60 50 -0 {} +L 4 -80 -60 50 -0 {} +L 7 0 -80 0 -23 {} +L 7 0 23 0 60 {} +B 5 -2.5 -82.5 2.5 -77.5 {name=vdd dir=inout } +B 5 -102.5 17.5 -97.5 22.5 {name=in_n dir=in } +B 5 -102.5 -22.5 -97.5 -17.5 {name=in_p dir=in } +B 5 67.5 -2.5 72.5 2.5 {name=out dir=out } +B 5 -32.5 -82.5 -27.5 -77.5 {name=bias_0p7 dir=in } +B 5 -2.5 57.5 2.5 62.5 {name=vss dir=inout } +T {@symname} 29.5 34 0 0 0.3 0.3 {} +T {@name} 35 18 0 0 0.2 0.2 {} +T {vdd} 26 -75 0 1 0.2 0.2 {} +T {in_n} -75 16 0 0 0.2 0.2 {} +T {in_p} -75 -24 0 0 0.2 0.2 {} +T {out} 34 -7 0 1 0.2 0.2 {} +T {bias_0p7} -36 -65 2 0 0.2 0.2 {} +T {vss} 4 55 2 1 0.2 0.2 {}
diff --git a/xschem/xschemrc b/xschem/xschemrc deleted file mode 100644 index ca6e33e..0000000 --- a/xschem/xschemrc +++ /dev/null
@@ -1,296 +0,0 @@ -#### xschemrc system configuration file - -#### values may be overridden by user's ~/.xschem/xschemrc configuration file -#### or by project-local ./xschemrc - -########################################################################### -#### XSCHEM INSTALLATION DIRECTORY: XSCHEM_SHAREDIR -########################################################################### -#### Normally there is no reason to set this variable if using standard -#### installation. Location of files is set at compile time but may be overridden -#### with following line: -# set XSCHEM_SHAREDIR $env(HOME)/share/xschem - -########################################################################### -#### XSCHEM SYSTEM-WIDE DESIGN LIBRARY PATHS: XSCHEM_LIBRARY_PATH -########################################################################### -#### If unset xschem starts with XSCHEM_LIBRARY_PATH set to the default, typically: -# /home/schippes/.xschem/xschem_library -# /home/schippes/share/xschem/xschem_library/devices -# /home/schippes/share/doc/xschem/examples -# /home/schippes/share/doc/xschem/ngspice -# /home/schippes/share/doc/xschem/logic -# /home/schippes/share/doc/xschem/xschem_simulator -# /home/schippes/share/doc/xschem/binto7seg -# /home/schippes/share/doc/xschem/pcb -# /home/schippes/share/doc/xschem/rom8k - -#### Allow user environment to override the path to the PDK -if {[catch {set PDKPATH $env(PDKPATH)}]} { - set PDKPATH "/usr/share/pdk/sky130A" -} -#### Flush any previous definition -set XSCHEM_LIBRARY_PATH {} -#### include devices/*.sym -append XSCHEM_LIBRARY_PATH ${XSCHEM_SHAREDIR}/xschem_library -#### include skywater libraries. Here i use [pwd]. This works if i start xschem from here. -append XSCHEM_LIBRARY_PATH :$env(PWD) -append XSCHEM_LIBRARY_PATH :$PDKPATH/libs.tech/xschem -# append XSCHEM_LIBRARY_PATH :/mnt/sda7/home/schippes/pdks/sky130A/libs.tech/xschem -#### add ~/.xschem/xschem_library (USER_CONF_DIR is normally ~/.xschem) -append XSCHEM_LIBRARY_PATH :$USER_CONF_DIR/xschem_library - -########################################################################### -#### SET CUSTOM COLORS FOR XSCHEM LIBRARIES MATCHING CERTAIN PATTERNS -########################################################################### -#### each line contains a dircolor(pattern) followed by a color -#### color can be an ordinary name (grey, brown, blue) or a hex code {#77aaff} -#### hex code must be enclosed in braces -array unset dircolor -set dircolor(sky130_fd_pr$) blue -set dircolor(sky130_tests$) blue -set dircolor(xschem_sky130$) blue -set dircolor(xschem_library$) red -set dircolor(devices$) red - -########################################################################### -#### WINDOW TO OPEN ON STARTUP: XSCHEM_START_WINDOW -########################################################################### -#### Start without a design if no filename given on command line: -#### To avoid absolute paths, use a path that is relative to one of the -#### XSCHEM_LIBRARY_PATH directories. Default: empty -set XSCHEM_START_WINDOW {sky130_tests/top.sch} - -########################################################################### -#### DIRECTORY WHERE SIMULATIONS, NETLIST AND SIMULATOR OUTPUTS ARE PLACED -########################################################################### -#### If unset $USER_CONF_DIR/simulations is assumed (normally ~/.xschem/simulations) -# set netlist_dir $env(HOME)/.xschem/simulations -set netlist_dir . - -########################################################################### -#### CHANGE DEFAULT [] WITH SOME OTHER CHARACTERS FOR BUSSED SIGNALS -#### IN SPICE NETLISTS (EXAMPLE: DATA[7] --> DATA<7>) -########################################################################### -#### default: empty (use xschem default, [ ]) -# set bus_replacement_char {<>} -#### for XSPICE: replace square brackets as the are used for XSPICE vector nodes. -# set bus_replacement_char {__} - -########################################################################### -#### SOME DEFAULT BEHAVIOR -########################################################################### -#### Allowed values: spice, verilog, vhdl, tedax, default: spice -# set netlist_type spice - -#### Some netlisting options (these are the defaults) -# set hspice_netlist 1 -# set verilog_2001 1 - -#### to use a fixed line with set change_lw to 0 and set some value to line_width -#### these are the defaults -# set line_width 0 -# set change_lw 1 - -#### allow color postscript and svg exports. Default: 1, enable color -# set color_ps 1 - -#### initial size of xschem window you can specify also position with (wxh+x+y) -#### this is the default: -# set initial_geometry {900x600} - -#### if set to 0, when zooming out allow the viewport do drift toward the mouse position, -#### allowing to move away by zooming / unzooming with mouse wheel -#### default setting: 0 -# set unzoom_nodrift 0 - -#### if set to 1 allow to place multiple components with same name. -#### Warning: this is normally not allowed in any simulation netlist. -#### default: 0, do not allow place multiple elements with same name (refdes) -# set disable_unique_names 0 - -#### if set to 1 continue drawing lines / wires after click -#### default: 0 -# set persistent_command 1 - -#### if set to 1 automatically join/trim wires while editing -#### this may slow down on rally big designs. Can be disabled via menu -#### default: 0 -# set autotrim_wires 0 - -#### set widget scaling (mainly for font display), this is useful on 4K displays -#### default: unset (tk uses its default) > 1.0 ==> bigger -# set tk_scaling 1.7 - -#### disable some symbol layers. Default: none, all layers are visible. -# set enable_layer(5) 0 ;# example to disable pin red boxes - -#### enable to scale grid point size as done with lines at close zoom, default: 0 -# set big_grid_points 0 - -########################################################################### -#### EXPORT FORMAT TRANSLATORS, PNG AND PDF -########################################################################### -#### command to translate xpm to png; (assumes command takes source -#### and dest file as arguments, example: gm convert plot.xpm plot.png) -#### default: {gm convert} -# set to_png {gm convert} - -#### command to translate ps to pdf; (assumes command takes source -#### and dest file as arguments, example: ps2pdf plot.ps plot.pdf) -#### default: ps2pdf -# set to_pdf ps2pdf -set to_pdf {ps2pdf -dAutoRotatePages=/None} - - -########################################################################### -#### CUSTOM GRID / SNAP VALUE SETTINGS -########################################################################### -#### Warning: changing these values will likely break compatibility -#### with existing symbol libraries. Defaults: grid 20, snap 10. -# set grid 20 -# set snap 10 - -########################################################################### -#### CUSTOM COLORS MAY BE DEFINED HERE -########################################################################### -# set cadlayers 22 -# set light_colors { -# "#ffffff" "#0044ee" "#aaaaaa" "#222222" "#229900" -# "#bb2200" "#00ccee" "#ff0000" "#888800" "#00aaaa" -# "#880088" "#00ff00" "#0000cc" "#666600" "#557755" -# "#aa2222" "#7ccc40" "#00ffcc" "#ce0097" "#d2d46b" -# "#ef6158" "#fdb200" } - -# set dark_colors { -# "#000000" "#00ccee" "#3f3f3f" "#cccccc" "#88dd00" -# "#bb2200" "#00ccee" "#ff0000" "#ffff00" "#ffffff" -# "#ff00ff" "#00ff00" "#0000cc" "#aaaa00" "#aaccaa" -# "#ff7777" "#bfff81" "#00ffcc" "#ce0097" "#d2d46b" -# "#ef6158" "#fdb200" } - -########################################################################### -#### CAIRO STUFF -########################################################################### -#### Scale all fonts by this number -# set cairo_font_scale 1.0 - -#### default for following two is 0.85 (xscale) and 0.88 (yscale) to -#### match cairo font spacing -# set nocairo_font_xscale 1.0 -#### set nocairo_font_yscale 1.0 - -#### Scale line spacing by this number -# set cairo_font_line_spacing 1.0 - -#### Specify a font -# set cairo_font_name {Sans-Serif} -# set svg_font_name {Sans-Serif} - -#### Lift up text by some zoom-corrected pixels for -#### better compatibility wrt no cairo version. -#### Useful values in the range [-1, 3] -# set cairo_vert_correct 0 -# set nocairo_vert_correct 0 - -########################################################################### -#### KEYBINDINGS -########################################################################### -#### General format for specifying a replacement for a keybind -#### Replace Ctrl-d with Escape (so you wont kill the program) -# set replace_key(Control-d) Escape - -#### swap w and W keybinds; Always specify Shift for capital letters -# set replace_key(Shift-W) w -# set replace_key(w) Shift-W - -########################################################################### -#### TERMINAL -########################################################################### -#### default for linux: xterm -# set terminal {xterm -geometry 100x35 -fn 9x15 -bg black -fg white -cr white -ms white } -#### lxterminal is not OK since it will not inherit env vars: -#### In order to reduce memory usage and increase the performance, all instances -#### of the lxterminal are sharing a single process. LXTerminal is part of LXDE - -########################################################################### -#### EDITOR -########################################################################### -#### editor must not detach from launching shell (-f mandatory for gvim) -#### default for linux: gvim -f -# set editor {gvim -f -geometry 90x28} -# set editor { xterm -geometry 100x40 -e nano } -# set editor { xterm -geometry 100x40 -e pico } - -#### For Windows -# set editor {notepad.exe} - -########################################################################### -#### SHOW ERC INFO WINDOW (erc errors, warnings etc) -########################################################################### -#### default: 0 (can be enabled by menu) -# set show_infowindow 0 - -########################################################################### -#### CONFIGURE COMPUTER FARM JOB REDIRECTORS FOR SIMULATIONS -########################################################################### -#### RTDA NC -# set computerfarm {nc run -Il} -#### LSF BSUB -# set computerfarm {bsub -Is} - -########################################################################### -#### TCP CONNECTION WITH GAW -########################################################################### -#### set gaw address for socket connection: {host port} -#### default: set to localhost, port 2020 -# set gaw_tcp_address {localhost 2020} - -########################################################################### -#### XSCHEM LISTEN TO TCP PORT -########################################################################### -#### set xschem listening port; default: not enabled -# set xschem_listen_port 2021 - -########################################################################### -#### BESPICE WAVE SOCKET CONNECTION -########################################################################### -#### set bespice wave listening port; default: not enabled -set bespice_listen_port 2022 - - - -########################################################################### -#### UTILE SPICE STIMULI DESCRIPTION LANGUAGE AND TRANSLATOR -########################################################################### -#### default paths are set as shown here: -# set utile_gui_path ${XSCHEM_SHAREDIR}/utile/utile3 -# set utile_cmd_path ${XSCHEM_SHAREDIR}/utile/utile - -########################################################################### -#### TCL FILES TO LOAD AT STARTUP -########################################################################### -#### list of tcl files to preload. -# lappend tcl_files ${XSCHEM_SHAREDIR}/change_index.tcl -lappend tcl_files ${XSCHEM_SHAREDIR}/ngspice_backannotate.tcl -lappend tcl_files $PDKPATH/libs.tech/xschem/scripts/sky130_models.tcl -########################################################################### -#### XSCHEM TOOLBAR -########################################################################### -#### default: not enabled. -# set toolbar_visible 1 -# set toolbar_horiz 1 - -########################################################################### -#### SKYWATER PDK SPECIFIC VARIABLES -########################################################################### - -## (spice patched) skywater-pdk install -# set SKYWATER_MODELS ~/skywater-pdk/libraries/sky130_fd_pr_ngspice/latest -# set SKYWATER_STDCELLS ~/skywater-pdk/libraries/sky130_fd_sc_hd/latest - -## opencircuitdesign pdks install. You need to change these to point to your open_pdks installation -# set SKYWATER_MODELS /usr/local/share/pdk/sky130A/libs.tech/ngspice -# set SKYWATER_STDCELLS /usr/local/share/pdk/sky130A/libs.ref/sky130_fd_sc_hd/spice -set SKYWATER_MODELS $PDKPATH/libs.tech/ngspice -set SKYWATER_STDCELLS $PDKPATH/libs.ref/sky130_fd_sc_hd/spice