Merge branch 'main' of https://github.com/ryanrocket/caravel_ft8_receiver into main
diff --git a/gds/lna/foldedcascode.GDS b/gds/lna/foldedcascode.GDS new file mode 100644 index 0000000..e5ecf48 --- /dev/null +++ b/gds/lna/foldedcascode.GDS Binary files differ
diff --git a/xschem/lna/foldedcascode.sch b/xschem/lna/foldedcascode.sch new file mode 100644 index 0000000..8c940d0 --- /dev/null +++ b/xschem/lna/foldedcascode.sch
@@ -0,0 +1,223 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {} +V {} +S {} +E {} +T {1} 2250 -90 0 0 0.4 0.4 {} +T {1} 2330 -90 0 0 0.4 0.4 {} +T {Folded Cascode LNA} 2770 -190 0 0 1 1 {} +N 460 -540 460 -490 { +lab=#net1} +N 460 -540 600 -540 { +lab=#net1} +N 600 -540 740 -540 { +lab=#net1} +N 600 -580 600 -540 { +lab=#net1} +N 740 -540 740 -490 { +lab=#net1} +N 600 -680 600 -640 { +lab=#net2} +N 600 -780 600 -740 { +lab=vdd} +N 600 -610 700 -610 { +lab=vdd} +N 600 -710 700 -710 { +lab=vdd} +N 700 -780 700 -610 { +lab=vdd} +N 520 -710 560 -710 { +lab=#net3} +N 520 -710 520 -610 { +lab=#net3} +N 520 -610 560 -610 { +lab=#net3} +N 460 -660 520 -660 { +lab=#net3} +N 460 -680 460 -640 { +lab=#net3} +N 460 -780 460 -740 { +lab=vdd} +N 360 -460 420 -460 { +lab=in} +N 460 -430 460 -280 { +lab=gnd} +N 460 -460 560 -460 { +lab=gnd} +N 560 -460 560 -280 { +lab=gnd} +N 700 -610 700 -460 { +lab=vdd} +N 700 -460 740 -460 { +lab=vdd} +N 740 -430 740 -360 { +lab=out} +N 740 -400 980 -400 { +lab=out} +N 740 -360 740 -340 { +lab=out} +N 740 -340 760 -340 { +lab=out} +N 790 -360 850 -360 { +lab=gnd} +N 850 -360 960 -360 { +lab=gnd} +N 960 -360 960 -280 { +lab=gnd} +N 940 -440 940 -400 { +lab=out} +N 940 -540 940 -500 { +lab=gnd} +N 940 -540 1060 -540 { +lab=gnd} +N 1060 -540 1060 -280 { +lab=gnd} +N 480 -710 480 -610 { +lab=gnd} +N 460 -580 520 -580 { +lab=gnd} +N 520 -580 520 -280 { +lab=gnd} +N 480 -610 480 -580 { +lab=gnd} +N 780 -460 820 -460 { +lab=#net4} +N 820 -580 820 -460 { +lab=#net4} +N 820 -780 820 -700 { +lab=vdd} +N 820 -640 820 -580 { +lab=#net4} +N 820 -580 880 -580 { +lab=#net4} +N 940 -580 1100 -580 { +lab=gnd} +N 1100 -570 1100 -280 { +lab=gnd} +N 840 -670 910 -670 { +lab=gnd} +N 910 -670 910 -600 { +lab=gnd} +N 360 -280 1160 -280 { +lab=gnd} +N 360 -780 1160 -780 { +lab=vdd} +N 1100 -580 1100 -570 { +lab=gnd} +N 960 -600 960 -580 { +lab=gnd} +N 910 -600 960 -600 { +lab=gnd} +N 820 -340 860 -340 { +lab=in} +N 860 -340 860 -320 { +lab=in} +N 860 -320 880 -320 { +lab=in} +C {code.sym} 80 -260 0 0 {name=sT_MODELS +only_toplevel=true +format="tcleval( @value )" +value="** manual skywater pdks install (with patches applied) +* .lib \\\\$::SKYWATER_MODELS\\\\/models/sky130.lib.spice tt + +** opencircuitdesign pdks install +.lib /foss/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice tt + +.param mc_mm_switch=0 +.param mc_pr_switch=0 +" +spice_ignore=false} +C {title-2.sym} 20 -40 0 0 {name=l1 author="Ryan Wans" rev=1.0} +C {/foss/pdk/sky130A/libs.tech/xschem/sky130_fd_pr/nfet_01v8.sym} 440 -460 0 0 {name=M2 +L=0.15 +W=22 +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 {/foss/pdk/sky130A/libs.tech/xschem/sky130_fd_pr/pfet_01v8.sym} 760 -460 0 1 {name=M4 +L=0.15 +W=22 +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 {/foss/pdk/sky130A/libs.tech/xschem/sky130_fd_pr/pfet_01v8.sym} 580 -610 0 0 {name=M7 +L=0.15 +W=22 +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 {/foss/pdk/sky130A/libs.tech/xschem/sky130_fd_pr/pfet_01v8.sym} 580 -710 0 0 {name=M8 +L=0.15 +W=22 +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 {/foss/pdk/sky130A/libs.tech/xschem/sky130_fd_pr/res_xhigh_po.sym} 460 -610 0 1 {name=R7 +W=0.69 +L=0.35 +model=res_xhigh_po +spiceprefix=X +mult=1} +C {/foss/pdk/sky130A/libs.tech/xschem/sky130_fd_pr/res_xhigh_po.sym} 460 -710 0 1 {name=R8 +W=0.69 +L=1.42 +model=res_xhigh_po +spiceprefix=X +mult=1} +C {/foss/pdk/sky130A/libs.tech/xschem/sky130_fd_pr/res_xhigh_po.sym} 790 -340 1 0 {name=R9 +W=0.35 +L=1.0 +model=res_xhigh_po +spiceprefix=X +mult=1} +C {/foss/pdk/sky130A/libs.tech/xschem/sky130_fd_pr/cap_mim_m3_1.sym} 940 -470 2 0 {name=C2 model=cap_mim_m3_1 W=12.2 L=12.2 MF=1 spiceprefix=X} +C {/foss/pdk/sky130A/libs.tech/xschem/sky130_fd_pr/res_xhigh_po.sym} 820 -670 0 1 {name=R11 +W=0.69 +L=0.8 +model=res_xhigh_po +spiceprefix=X +mult=1} +C {/foss/pdk/sky130A/libs.tech/xschem/sky130_fd_pr/res_xhigh_po.sym} 910 -580 1 0 {name=R12 +W=0.69 +L=0.4 +model=res_xhigh_po +spiceprefix=X +mult=1} +C {opin.sym} 980 -400 0 0 {name=out lab=out} +C {ipin.sym} 360 -780 0 0 {name=vdd lab=vdd} +C {ipin.sym} 360 -280 0 0 {name=gnd lab=gnd} +C {ipin.sym} 360 -460 0 0 {name=in lab=in} +C {ipin.sym} 880 -320 2 0 {name=bias lab=bias}
diff --git a/xschem/lna/foldedcascode.sym b/xschem/lna/foldedcascode.sym new file mode 100644 index 0000000..bfcba89 --- /dev/null +++ b/xschem/lna/foldedcascode.sym
@@ -0,0 +1,27 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {type=subcircuit +format="@name @pinlist @symname" +template="name=XAMP1"} +V {} +S {} +E {} +L 4 180 -180 180 -80 {} +L 4 180 -80 280 -130 {} +L 4 180 -180 280 -130 {} +L 4 280 -130 300 -130 {} +L 4 160 -130 180 -130 {} +L 4 240 -180 240 -150 {} +L 4 240 -110 240 -80 {} +L 4 220 -100 220 -80 {} +B 5 157.5 -132.5 162.5 -127.5 {name=in +dir=in} +B 5 237.5 -82.5 242.5 -77.5 {name=gnd +dir=in} +B 5 297.5 -132.5 302.5 -127.5 {name=out +dir=out} +B 5 237.5 -182.5 242.5 -177.5 {name=vdd +dir=in} +B 5 217.5 -82.5 222.5 -77.5 {name=bias +dir=in} +T {@name} 260 -180 0 0 0.2 0.2 {}
diff --git a/xschem/lna/lna4stage.sch b/xschem/lna/lna4stage.sch new file mode 100644 index 0000000..5a19c2b --- /dev/null +++ b/xschem/lna/lna4stage.sch
@@ -0,0 +1,115 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {} +V {} +S {} +E {} +N 280 -160 320 -160 { +lab=#net1} +N 460 -160 500 -160 { +lab=#net2} +N 220 -110 220 -80 { +lab=GND} +N 140 -20 820 -20 { +lab=GND} +N 220 -240 220 -210 { +lab=#net3} +N 400 -240 400 -210 { +lab=#net3} +N 580 -240 580 -210 { +lab=#net3} +N 760 -240 760 -210 { +lab=#net3} +N 160 -240 840 -240 { +lab=#net3} +N 820 -20 840 -20 { +lab=GND} +N 140 -240 160 -240 { +lab=#net3} +N 100 -160 140 -160 { +lab=#net4} +N 820 -160 860 -160 { +lab=out} +N 80 -140 100 -160 { +lab=#net4} +N 640 -160 680 -160 { +lab=#net5} +N 200 -50 200 -20 { +lab=GND} +N 220 -80 220 -20 { +lab=GND} +N 400 -110 400 -80 { +lab=GND} +N 380 -50 380 -20 { +lab=GND} +N 400 -80 400 -20 { +lab=GND} +N 580 -110 580 -80 { +lab=GND} +N 560 -50 560 -20 { +lab=GND} +N 580 -80 580 -20 { +lab=GND} +N 760 -110 760 -80 { +lab=GND} +N 740 -50 740 -20 { +lab=GND} +N 760 -80 760 -20 { +lab=GND} +C {/foss/designs/caravel_ft8_receiver/xschem/lna/foldedcascode.sym} -20 -30 0 0 {name=XAMP1} +C {/foss/designs/caravel_ft8_receiver/xschem/lna/foldedcascode.sym} 160 -30 0 0 {name=XAMP2} +C {/foss/designs/caravel_ft8_receiver/xschem/lna/foldedcascode.sym} 340 -30 0 0 {name=XAMP3} +C {code.sym} -140 -250 0 0 {name=s1 only_toplevel=false value=" +.lib /foss/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice tt +.control + ** dc V1 0.769 3.769 0.01 + ** dc V2 0 3 0.01 + ** SIN(0.9 0.00001 70000000) + tran 0.0000000001 0.0000001 +.endc +.save all +"} +C {code.sym} -280 -130 0 0 {name=sT_MODELS +only_toplevel=true +format="tcleval( @value )" +value="** manual skywater pdks install (with patches applied) +* .lib \\\\$::SKYWATER_MODELS\\\\/models/sky130.lib.spice tt + +** opencircuitdesign pdks install +.lib /foss/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice tt + +.param mc_mm_switch=0 +.param mc_pr_switch=0 +" +spice_ignore=false} +C {opin.sym} 860 -160 0 0 {name=out lab=out} +C {vsource.sym} 80 -110 0 1 {name=V1 value="SIN(0.8 0.00005 70000000)"} +C {vsource.sym} 110 -240 1 0 {name=V2 value=1.8} +C {gnd.sym} 80 -240 1 0 {name=l1 lab=GND} +C {gnd.sym} 80 -80 0 0 {name=l2 lab=GND} +C {gnd.sym} 140 -20 0 0 {name=l3 lab=GND} +C {/foss/designs/caravel_ft8_receiver/xschem/lna/foldedcascode.sym} 520 -30 0 0 {name=XAMP4} +C {/foss/pdk/sky130A/libs.tech/xschem/sky130_fd_pr/res_xhigh_po.sym} 200 -80 2 0 {name=R1 +W=0.69 +L=0.1 +model=res_xhigh_po +spiceprefix=X +mult=1} +C {/foss/pdk/sky130A/libs.tech/xschem/sky130_fd_pr/res_xhigh_po.sym} 380 -80 2 0 {name=R2 +W=0.69 +L=0.1 +model=res_xhigh_po +spiceprefix=X +mult=1} +C {/foss/pdk/sky130A/libs.tech/xschem/sky130_fd_pr/res_xhigh_po.sym} 560 -80 2 0 {name=R3 +W=0.69 +L=0.18 +model=res_xhigh_po +spiceprefix=X +mult=1} +C {/foss/pdk/sky130A/libs.tech/xschem/sky130_fd_pr/res_xhigh_po.sym} 740 -80 2 0 {name=R4 +W=0.69 +L=0.18 +model=res_xhigh_po +spiceprefix=X +mult=1}