Add WIP collapsing ring osc
diff --git a/ip/randsack/sch/collapsering.sch b/ip/randsack/sch/collapsering.sch new file mode 100644 index 0000000..989a1d8 --- /dev/null +++ b/ip/randsack/sch/collapsering.sch
@@ -0,0 +1,303 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {} +V {} +S {} +E {} +N 500 -1400 530 -1400 { lab=#net1} +N 340 -1420 380 -1420 { lab=outb} +N 340 -1530 340 -1420 { lab=outb} +N 340 -1530 2620 -1530 { lab=outb} +N 830 -1400 860 -1400 { lab=#net2} +N 1160 -1400 1190 -1400 { lab=#net3} +N 1490 -1400 1520 -1400 { lab=#net4} +N 1820 -1400 1850 -1400 { lab=#net5} +N 2150 -1400 2180 -1400 { lab=#net6} +N 2480 -1400 2510 -1400 { lab=#net7} +N 2810 -1400 2840 -1400 { lab=#net8} +N 830 -1000 860 -1000 { lab=#net9} +N 1160 -1000 1190 -1000 { lab=#net10} +N 1490 -1000 1520 -1000 { lab=#net11} +N 1820 -1000 1850 -1000 { lab=#net12} +N 2150 -1000 2180 -1000 { lab=#net13} +N 2480 -1000 2510 -1000 { lab=#net14} +N 2810 -1000 2840 -1000 { lab=#net15} +N 2620 -1530 3220 -1530 { lab=outb} +N 3220 -1530 3220 -1260 { lab=outb} +N 500 -1000 530 -1000 { lab=#net16} +N 830 -1220 860 -1220 { lab=#net17} +N 1160 -1220 1190 -1220 { lab=#net18} +N 1490 -1220 1520 -1220 { lab=#net19} +N 830 -830 860 -830 { lab=#net20} +N 1160 -830 1190 -830 { lab=#net21} +N 1490 -830 1520 -830 { lab=#net22} +N 500 -830 530 -830 { lab=#net23} +N 3160 -1400 3160 -1290 { lab=#net24} +N 3140 -1400 3160 -1400 { lab=#net24} +N 520 -1220 530 -1220 { lab=#net24} +N 500 -1290 3160 -1290 { lab=#net24} +N 500 -1290 500 -1220 { lab=#net24} +N 500 -1220 520 -1220 { lab=#net24} +N 500 -890 500 -830 { lab=#net23} +N 500 -900 500 -890 { lab=#net23} +N 500 -900 3160 -900 { lab=#net23} +N 3160 -1000 3160 -910 { lab=#net23} +N 3160 -910 3160 -900 { lab=#net23} +N 3140 -1000 3160 -1000 { lab=#net23} +N 3140 -830 3220 -830 { lab=outb} +N 3220 -1260 3220 -830 { lab=outb} +N 340 -980 380 -980 { lab=outa} +N 340 -980 340 -730 { lab=outa} +N 340 -730 3270 -730 { lab=outa} +N 3270 -1220 3270 -730 { lab=outa} +N 3140 -1220 3270 -1220 { lab=outa} +N 420 -560 450 -560 { lab=outa} +N 420 -730 420 -560 { lab=outa} +N 630 -560 700 -560 { lab=div2} +N 420 -600 700 -600 { lab=outa} +N 420 -510 650 -510 { lab=#net25} +N 420 -540 420 -510 { lab=#net25} +N 420 -540 450 -540 { lab=#net25} +N 630 -540 650 -540 { lab=#net25} +N 650 -540 650 -510 { lab=#net25} +N 780 -580 880 -580 { lab=clkmux} +N 960 -580 1010 -580 { lab=CLKBUFOUT} +N 1820 -1220 3140 -1220 { lab=outa} +N 1820 -830 3140 -830 { lab=outb} +N 300 -1380 380 -1380 { lab=START} +N 340 -1020 380 -1020 { lab=START} +N 340 -1380 340 -1020 { lab=START} +N 650 -470 670 -470 { lab=DIV2EN} +N 670 -520 670 -470 { lab=DIV2EN} +N 670 -520 700 -520 { lab=DIV2EN} +N 500 -1350 510 -1350 { lab=TRIMA[0]} +N 510 -1380 510 -1350 { lab=TRIMA[0]} +N 510 -1380 530 -1380 { lab=TRIMA[0]} +N 500 -1330 520 -1330 { lab=TRIMA[1]} +N 520 -1370 520 -1330 { lab=TRIMA[1]} +N 520 -1370 530 -1370 { lab=TRIMA[1]} +N 830 -1350 840 -1350 { lab=TRIMA[2]} +N 840 -1380 840 -1350 { lab=TRIMA[2]} +N 840 -1380 860 -1380 { lab=TRIMA[2]} +N 830 -1330 850 -1330 { lab=TRIMA[3]} +N 850 -1370 850 -1330 { lab=TRIMA[3]} +N 850 -1370 860 -1370 { lab=TRIMA[3]} +N 1160 -1350 1170 -1350 { lab=TRIMA[4]} +N 1170 -1380 1170 -1350 { lab=TRIMA[4]} +N 1170 -1380 1190 -1380 { lab=TRIMA[4]} +N 1160 -1330 1180 -1330 { lab=TRIMA[5]} +N 1180 -1370 1180 -1330 { lab=TRIMA[5]} +N 1180 -1370 1190 -1370 { lab=TRIMA[5]} +N 1490 -1350 1500 -1350 { lab=TRIMA[6]} +N 1500 -1380 1500 -1350 { lab=TRIMA[6]} +N 1500 -1380 1520 -1380 { lab=TRIMA[6]} +N 1490 -1330 1510 -1330 { lab=TRIMA[7]} +N 1510 -1370 1510 -1330 { lab=TRIMA[7]} +N 1510 -1370 1520 -1370 { lab=TRIMA[7]} +N 1820 -1350 1830 -1350 { lab=TRIMA[8]} +N 1830 -1380 1830 -1350 { lab=TRIMA[8]} +N 1830 -1380 1850 -1380 { lab=TRIMA[8]} +N 1820 -1330 1840 -1330 { lab=TRIMA[9]} +N 1840 -1370 1840 -1330 { lab=TRIMA[9]} +N 1840 -1370 1850 -1370 { lab=TRIMA[9]} +N 2150 -1350 2160 -1350 { lab=TRIMA[10]} +N 2160 -1380 2160 -1350 { lab=TRIMA[10]} +N 2160 -1380 2180 -1380 { lab=TRIMA[10]} +N 2150 -1330 2170 -1330 { lab=TRIMA[11]} +N 2170 -1370 2170 -1330 { lab=TRIMA[11]} +N 2170 -1370 2180 -1370 { lab=TRIMA[11]} +N 2480 -1350 2490 -1350 { lab=TRIMA[12]} +N 2490 -1380 2490 -1350 { lab=TRIMA[12]} +N 2490 -1380 2510 -1380 { lab=TRIMA[12]} +N 2480 -1330 2500 -1330 { lab=TRIMA[13]} +N 2500 -1370 2500 -1330 { lab=TRIMA[13]} +N 2500 -1370 2510 -1370 { lab=TRIMA[13]} +N 2810 -1350 2820 -1350 { lab=TRIMA[14]} +N 2820 -1380 2820 -1350 { lab=TRIMA[14]} +N 2820 -1380 2840 -1380 { lab=TRIMA[14]} +N 2810 -1330 2830 -1330 { lab=TRIMA[15]} +N 2830 -1370 2830 -1330 { lab=TRIMA[15]} +N 2830 -1370 2840 -1370 { lab=TRIMA[15]} +N 500 -1170 510 -1170 { lab=TRIMA[16]} +N 510 -1200 510 -1170 { lab=TRIMA[16]} +N 510 -1200 530 -1200 { lab=TRIMA[16]} +N 500 -1150 520 -1150 { lab=TRIMA[17]} +N 520 -1190 520 -1150 { lab=TRIMA[17]} +N 520 -1190 530 -1190 { lab=TRIMA[17]} +N 830 -1170 840 -1170 { lab=TRIMA[18]} +N 840 -1200 840 -1170 { lab=TRIMA[18]} +N 840 -1200 860 -1200 { lab=TRIMA[18]} +N 830 -1150 850 -1150 { lab=TRIMA[19]} +N 850 -1190 850 -1150 { lab=TRIMA[19]} +N 850 -1190 860 -1190 { lab=TRIMA[19]} +N 1160 -1170 1170 -1170 { lab=TRIMA[20]} +N 1170 -1200 1170 -1170 { lab=TRIMA[20]} +N 1170 -1200 1190 -1200 { lab=TRIMA[20]} +N 1160 -1150 1180 -1150 { lab=TRIMA[21]} +N 1180 -1190 1180 -1150 { lab=TRIMA[21]} +N 1180 -1190 1190 -1190 { lab=TRIMA[21]} +N 1490 -1170 1500 -1170 { lab=TRIMA[22]} +N 1500 -1200 1500 -1170 { lab=TRIMA[22]} +N 1500 -1200 1520 -1200 { lab=TRIMA[22]} +N 1490 -1150 1510 -1150 { lab=TRIMA[23]} +N 1510 -1190 1510 -1150 { lab=TRIMA[23]} +N 1510 -1190 1520 -1190 { lab=TRIMA[23]} +N 500 -950 510 -950 { lab=TRIMB[0]} +N 510 -980 510 -950 { lab=TRIMB[0]} +N 510 -980 530 -980 { lab=TRIMB[0]} +N 500 -930 520 -930 { lab=TRIMB[1]} +N 520 -970 520 -930 { lab=TRIMB[1]} +N 520 -970 530 -970 { lab=TRIMB[1]} +N 830 -950 840 -950 { lab=TRIMB[2]} +N 840 -980 840 -950 { lab=TRIMB[2]} +N 840 -980 860 -980 { lab=TRIMB[2]} +N 830 -930 850 -930 { lab=TRIMB[3]} +N 850 -970 850 -930 { lab=TRIMB[3]} +N 850 -970 860 -970 { lab=TRIMB[3]} +N 1160 -950 1170 -950 { lab=TRIMB[4]} +N 1170 -980 1170 -950 { lab=TRIMB[4]} +N 1170 -980 1190 -980 { lab=TRIMB[4]} +N 1160 -930 1180 -930 { lab=TRIMB[5]} +N 1180 -970 1180 -930 { lab=TRIMB[5]} +N 1180 -970 1190 -970 { lab=TRIMB[5]} +N 1490 -950 1500 -950 { lab=TRIMB[6]} +N 1500 -980 1500 -950 { lab=TRIMB[6]} +N 1500 -980 1520 -980 { lab=TRIMB[6]} +N 1490 -930 1510 -930 { lab=TRIMB[7]} +N 1510 -970 1510 -930 { lab=TRIMB[7]} +N 1510 -970 1520 -970 { lab=TRIMB[7]} +N 1820 -950 1830 -950 { lab=TRIMB[8]} +N 1830 -980 1830 -950 { lab=TRIMB[8]} +N 1830 -980 1850 -980 { lab=TRIMB[8]} +N 1820 -930 1840 -930 { lab=TRIMB[9]} +N 1840 -970 1840 -930 { lab=TRIMB[9]} +N 1840 -970 1850 -970 { lab=TRIMB[9]} +N 2150 -950 2160 -950 { lab=TRIMB[10]} +N 2160 -980 2160 -950 { lab=TRIMB[10]} +N 2160 -980 2180 -980 { lab=TRIMB[10]} +N 2150 -930 2170 -930 { lab=TRIMB[11]} +N 2170 -970 2170 -930 { lab=TRIMB[11]} +N 2170 -970 2180 -970 { lab=TRIMB[11]} +N 2480 -950 2490 -950 { lab=TRIMB[12]} +N 2490 -980 2490 -950 { lab=TRIMB[12]} +N 2490 -980 2510 -980 { lab=TRIMB[12]} +N 2480 -930 2500 -930 { lab=TRIMB[13]} +N 2500 -970 2500 -930 { lab=TRIMB[13]} +N 2500 -970 2510 -970 { lab=TRIMB[13]} +N 2810 -950 2820 -950 { lab=TRIMB[14]} +N 2820 -980 2820 -950 { lab=TRIMB[14]} +N 2820 -980 2840 -980 { lab=TRIMB[14]} +N 2810 -930 2830 -930 { lab=TRIMB[15]} +N 2830 -970 2830 -930 { lab=TRIMB[15]} +N 2830 -970 2840 -970 { lab=TRIMB[15]} +N 500 -780 510 -780 { lab=TRIMB[16]} +N 510 -810 510 -780 { lab=TRIMB[16]} +N 510 -810 530 -810 { lab=TRIMB[16]} +N 500 -760 520 -760 { lab=TRIMB[17]} +N 520 -800 520 -760 { lab=TRIMB[17]} +N 520 -800 530 -800 { lab=TRIMB[17]} +N 830 -780 840 -780 { lab=TRIMB[18]} +N 840 -810 840 -780 { lab=TRIMB[18]} +N 840 -810 860 -810 { lab=TRIMB[18]} +N 830 -760 850 -760 { lab=TRIMB[19]} +N 850 -800 850 -760 { lab=TRIMB[19]} +N 850 -800 860 -800 { lab=TRIMB[19]} +N 1160 -780 1170 -780 { lab=TRIMB[20]} +N 1170 -810 1170 -780 { lab=TRIMB[20]} +N 1170 -810 1190 -810 { lab=TRIMB[20]} +N 1160 -760 1180 -760 { lab=TRIMB[21]} +N 1180 -800 1180 -760 { lab=TRIMB[21]} +N 1180 -800 1190 -800 { lab=TRIMB[21]} +N 1490 -780 1500 -780 { lab=TRIMB[22]} +N 1500 -810 1500 -780 { lab=TRIMB[22]} +N 1500 -810 1520 -810 { lab=TRIMB[22]} +N 1490 -760 1510 -760 { lab=TRIMB[23]} +N 1510 -800 1510 -760 { lab=TRIMB[23]} +N 1510 -800 1520 -800 { lab=TRIMB[23]} +C {sky130_stdcells/nand2_4.sym} 440 -1400 0 0 {name=x21 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ } +C {sky130_stdcells/nand2_4.sym} 440 -1000 0 0 {name=x47 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ } +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 680 -1400 0 0 {name=x1} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 1010 -1400 0 0 {name=x2} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 1340 -1400 0 0 {name=x3} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 1670 -1400 0 0 {name=x4} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 2000 -1400 0 0 {name=x5} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 2330 -1400 0 0 {name=x6} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 2660 -1400 0 0 {name=x7} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 2990 -1400 0 0 {name=x8} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 680 -1000 0 0 {name=x9} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 1010 -1000 0 0 {name=x10} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 1340 -1000 0 0 {name=x11} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 1670 -1000 0 0 {name=x12} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 2000 -1000 0 0 {name=x13} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 2330 -1000 0 0 {name=x14} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 2660 -1000 0 0 {name=x15} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 2990 -1000 0 0 {name=x16} +C {devices/title-2.sym} 0 -40 0 0 {name=l26 author="Harrison Pham" rev=1.0} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 680 -1220 0 0 {name=x17} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 1010 -1220 0 0 {name=x18} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 1340 -1220 0 0 {name=x19} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 1670 -1220 0 0 {name=x20} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 680 -830 0 0 {name=x26} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 1010 -830 0 0 {name=x27} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 1340 -830 0 0 {name=x28} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/triminv.sym} 1670 -830 0 0 {name=x29} +C {devices/lab_wire.sym} 3200 -830 0 0 {name=l18 sig_type=std_logic lab=outb} +C {devices/lab_wire.sym} 3200 -1220 0 0 {name=l9 sig_type=std_logic lab=outa} +C {sky130_stdcells/mux2_4.sym} 740 -580 0 0 {name=x34 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ } +C {sky130_stdcells/dfxbp_2.sym} 540 -550 0 0 {name=x36 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ } +C {devices/lab_wire.sym} 850 -580 0 0 {name=l43 sig_type=std_logic lab=clkmux} +C {devices/lab_wire.sym} 680 -560 0 0 {name=l45 sig_type=std_logic lab=div2} +C {sky130_stdcells/clkbuf_4.sym} 920 -580 0 0 {name=x35 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ } +C {devices/opin.sym} 1010 -580 0 0 {name=p1 lab=CLKBUFOUT} +C {devices/ipin.sym} 300 -1380 0 0 {name=p2 lab=START} +C {devices/ipin.sym} 650 -470 0 0 {name=p3 lab=DIV2EN} +C {devices/lab_pin.sym} 500 -1350 0 0 {name=l1 sig_type=std_logic lab=TRIMA[0]} +C {devices/lab_pin.sym} 500 -1330 0 0 {name=l2 sig_type=std_logic lab=TRIMA[1]} +C {devices/lab_pin.sym} 830 -1350 0 0 {name=l3 sig_type=std_logic lab=TRIMA[2]} +C {devices/lab_pin.sym} 830 -1330 0 0 {name=l4 sig_type=std_logic lab=TRIMA[3]} +C {devices/lab_pin.sym} 1160 -1350 0 0 {name=l5 sig_type=std_logic lab=TRIMA[4]} +C {devices/lab_pin.sym} 1160 -1330 0 0 {name=l6 sig_type=std_logic lab=TRIMA[5]} +C {devices/lab_pin.sym} 1490 -1350 0 0 {name=l7 sig_type=std_logic lab=TRIMA[6]} +C {devices/lab_pin.sym} 1490 -1330 0 0 {name=l8 sig_type=std_logic lab=TRIMA[7]} +C {devices/lab_pin.sym} 1820 -1350 0 0 {name=l10 sig_type=std_logic lab=TRIMA[8]} +C {devices/lab_pin.sym} 1820 -1330 0 0 {name=l11 sig_type=std_logic lab=TRIMA[9]} +C {devices/lab_pin.sym} 2150 -1350 0 0 {name=l12 sig_type=std_logic lab=TRIMA[10]} +C {devices/lab_pin.sym} 2150 -1330 0 0 {name=l13 sig_type=std_logic lab=TRIMA[11]} +C {devices/lab_pin.sym} 2480 -1350 0 0 {name=l14 sig_type=std_logic lab=TRIMA[12]} +C {devices/lab_pin.sym} 2480 -1330 0 0 {name=l15 sig_type=std_logic lab=TRIMA[13]} +C {devices/lab_pin.sym} 2810 -1350 0 0 {name=l16 sig_type=std_logic lab=TRIMA[14]} +C {devices/lab_pin.sym} 2810 -1330 0 0 {name=l17 sig_type=std_logic lab=TRIMA[15]} +C {devices/lab_pin.sym} 500 -1170 0 0 {name=l19 sig_type=std_logic lab=TRIMA[16]} +C {devices/lab_pin.sym} 500 -1150 0 0 {name=l20 sig_type=std_logic lab=TRIMA[17]} +C {devices/lab_pin.sym} 830 -1170 0 0 {name=l21 sig_type=std_logic lab=TRIMA[18]} +C {devices/lab_pin.sym} 830 -1150 0 0 {name=l22 sig_type=std_logic lab=TRIMA[19]} +C {devices/lab_pin.sym} 1160 -1170 0 0 {name=l23 sig_type=std_logic lab=TRIMA[20]} +C {devices/lab_pin.sym} 1160 -1150 0 0 {name=l24 sig_type=std_logic lab=TRIMA[21]} +C {devices/lab_pin.sym} 1490 -1170 0 0 {name=l25 sig_type=std_logic lab=TRIMA[22]} +C {devices/lab_pin.sym} 1490 -1150 0 0 {name=l27 sig_type=std_logic lab=TRIMA[23]} +C {devices/lab_pin.sym} 500 -950 0 0 {name=l28 sig_type=std_logic lab=TRIMB[0]} +C {devices/lab_pin.sym} 500 -930 0 0 {name=l29 sig_type=std_logic lab=TRIMB[1]} +C {devices/lab_pin.sym} 830 -950 0 0 {name=l30 sig_type=std_logic lab=TRIMB[2]} +C {devices/lab_pin.sym} 830 -930 0 0 {name=l31 sig_type=std_logic lab=TRIMB[3]} +C {devices/lab_pin.sym} 1160 -950 0 0 {name=l32 sig_type=std_logic lab=TRIMB[4]} +C {devices/lab_pin.sym} 1160 -930 0 0 {name=l33 sig_type=std_logic lab=TRIMB[5]} +C {devices/lab_pin.sym} 1490 -950 0 0 {name=l34 sig_type=std_logic lab=TRIMB[6]} +C {devices/lab_pin.sym} 1490 -930 0 0 {name=l35 sig_type=std_logic lab=TRIMB[7]} +C {devices/lab_pin.sym} 1820 -950 0 0 {name=l36 sig_type=std_logic lab=TRIMB[8]} +C {devices/lab_pin.sym} 1820 -930 0 0 {name=l37 sig_type=std_logic lab=TRIMB[9]} +C {devices/lab_pin.sym} 2150 -950 0 0 {name=l38 sig_type=std_logic lab=TRIMB[10]} +C {devices/lab_pin.sym} 2150 -930 0 0 {name=l39 sig_type=std_logic lab=TRIMB[11]} +C {devices/lab_pin.sym} 2480 -950 0 0 {name=l40 sig_type=std_logic lab=TRIMB[12]} +C {devices/lab_pin.sym} 2480 -930 0 0 {name=l41 sig_type=std_logic lab=TRIMB[13]} +C {devices/lab_pin.sym} 2810 -950 0 0 {name=l42 sig_type=std_logic lab=TRIMB[14]} +C {devices/lab_pin.sym} 2810 -930 0 0 {name=l44 sig_type=std_logic lab=TRIMB[15]} +C {devices/lab_pin.sym} 500 -780 0 0 {name=l46 sig_type=std_logic lab=TRIMB[16]} +C {devices/lab_pin.sym} 500 -760 0 0 {name=l47 sig_type=std_logic lab=TRIMB[17]} +C {devices/lab_pin.sym} 830 -780 0 0 {name=l48 sig_type=std_logic lab=TRIMB[18]} +C {devices/lab_pin.sym} 830 -760 0 0 {name=l49 sig_type=std_logic lab=TRIMB[19]} +C {devices/lab_pin.sym} 1160 -780 0 0 {name=l50 sig_type=std_logic lab=TRIMB[20]} +C {devices/lab_pin.sym} 1160 -760 0 0 {name=l51 sig_type=std_logic lab=TRIMB[21]} +C {devices/lab_pin.sym} 1490 -780 0 0 {name=l52 sig_type=std_logic lab=TRIMB[22]} +C {devices/lab_pin.sym} 1490 -760 0 0 {name=l53 sig_type=std_logic lab=TRIMB[23]} +C {devices/ipin.sym} 300 -1630 0 0 {name=p4 lab=TRIMA[23:0]} +C {devices/ipin.sym} 300 -1610 0 0 {name=p5 lab=TRIMB[23:0]}
diff --git a/ip/randsack/sch/collapsering.sym b/ip/randsack/sch/collapsering.sym new file mode 100644 index 0000000..7b04abe --- /dev/null +++ b/ip/randsack/sch/collapsering.sym
@@ -0,0 +1,26 @@ +v {xschem version=3.0.0 file_version=1.2} +K {type=subcircuit +format="@name @pinlist @symname" +template="name=x1" +} +T {@symname} -72 -6 0 0 0.3 0.3 {} +T {@name} 135 -52 0 0 0.2 0.2 {} +L 4 -130 -40 130 -40 {} +L 4 -130 40 130 40 {} +L 4 -130 -40 -130 40 {} +L 4 130 -40 130 40 {} +B 5 -152.5 -32.5 -147.5 -27.5 {name=TRIMA[23:0] dir=in } +L 4 -150 -30 -130 -30 {} +T {TRIMA[23:0]} -125 -34 0 0 0.2 0.2 {} +B 5 -152.5 -12.5 -147.5 -7.5 {name=TRIMB[23:0] dir=in } +L 4 -150 -10 -130 -10 {} +T {TRIMB[23:0]} -125 -14 0 0 0.2 0.2 {} +B 5 -152.5 7.5 -147.5 12.5 {name=START dir=in } +L 4 -150 10 -130 10 {} +T {START} -125 6 0 0 0.2 0.2 {} +B 5 147.5 -32.5 152.5 -27.5 {name=CLKBUFOUT dir=out } +L 4 130 -30 150 -30 {} +T {CLKBUFOUT} 125 -34 0 1 0.2 0.2 {} +B 5 -152.5 27.5 -147.5 32.5 {name=DIV2EN dir=in } +L 4 -150 30 -130 30 {} +T {DIV2EN} -125 26 0 0 0.2 0.2 {}
diff --git a/ip/randsack/sch/collapsering_tb.sch b/ip/randsack/sch/collapsering_tb.sch new file mode 100644 index 0000000..25cc645 --- /dev/null +++ b/ip/randsack/sch/collapsering_tb.sch
@@ -0,0 +1,67 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {} +V {} +S {} +E {} +N 1130 -1000 1130 -970 { lab=GND} +N 1130 -1410 1130 -1390 { lab=VPWR} +N 1130 -1110 1130 -1060 { lab=start} +N 1130 -1330 1130 -1310 { lab=VGND} +N 1130 -1250 1130 -1230 { lab=GND} +N 1130 -1250 1140 -1250 { lab=GND} +N 1200 -1250 1210 -1250 { lab=VGND} +N 1210 -1250 1210 -1230 { lab=VGND} +N 1130 -1110 1540 -1110 { lab=start} +N 1480 -1050 1480 -1030 { lab=VPWR} +N 1480 -1030 1510 -1030 { lab=VPWR} +N 1510 -1090 1510 -1030 { lab=VPWR} +N 1510 -1090 1540 -1090 { lab=VPWR} +N 1840 -1150 1910 -1150 { lab=clkout} +N 1400 -1150 1540 -1150 { lab=trima[23:0]} +N 1400 -1130 1540 -1130 { lab=trimb[23:0]} +N 1350 -1250 1370 -1250 { lab=VGND} +N 1350 -1250 1350 -1230 { lab=VGND} +N 1430 -1250 1540 -1250 { lab=trimb[23:0]} +N 1350 -1320 1370 -1320 { lab=VGND} +N 1350 -1320 1350 -1300 { lab=VGND} +N 1430 -1320 1540 -1320 { lab=trima[23:2]} +N 1430 -1390 1540 -1390 { lab=trima[1:0]} +N 1350 -1390 1370 -1390 { lab=VPWR} +N 1350 -1410 1350 -1390 { lab=VPWR} +C {devices/vsource.sym} 1130 -1030 0 0 {name=V1 value="PULSE(0 1.8 100ns 1ns 1ns 9000ns 9000ns)"} +C {devices/gnd.sym} 1130 -970 0 0 {name=l2 lab=GND} +C {devices/code_shown.sym} 120 -360 0 0 {name=SPICE only_toplevel=false value=" +.lib /home/harrison/workspace/sky130/sky130A/libs.tech/ngspice/sky130.lib.spice tt +.include /home/harrison/workspace/sky130/sky130A/libs.ref/sky130_fd_sc_hd/spice/sky130_fd_sc_hd.spice + +.control +save all +tran 0.1n 10u +set appendwrite +write collapsering_tb.out +.endc +" +} +C {devices/vdd.sym} 1130 -1410 0 0 {name=l10 lab=VPWR} +C {devices/gnd.sym} 1210 -1230 0 0 {name=l11 lab=VGND} +C {devices/vsource.sym} 1130 -1360 0 0 {name=V2 value="PWL(0n 0.0 30n 1.8)"} +C {devices/gnd.sym} 1130 -1230 0 0 {name=l21 lab=GND} +C {devices/gnd.sym} 1130 -1310 0 0 {name=l20 lab=VGND} +C {devices/title-2.sym} 0 -40 0 0 {name=l26 author="Harrison Pham" rev=1.0} +C {/home/harrison/workspace/randsack/verilog/rtl/randsack/sch/collapsering.sym} 1690 -1120 0 0 {name=x1} +C {devices/vdd.sym} 1480 -1050 0 0 {name=l1 lab=VPWR} +C {devices/lab_wire.sym} 1910 -1150 0 0 {name=l3 sig_type=std_logic lab=clkout} +C {devices/lab_wire.sym} 1500 -1110 0 0 {name=l4 sig_type=std_logic lab=start} +C {devices/lab_wire.sym} 1500 -1150 0 0 {name=l5 sig_type=std_logic lab=trima[23:0]} +C {devices/lab_wire.sym} 1500 -1130 0 0 {name=l6 sig_type=std_logic lab=trimb[23:0]} +C {devices/gnd.sym} 1350 -1230 0 0 {name=l7 lab=VGND} +C {devices/lab_wire.sym} 1530 -1250 0 0 {name=l8 sig_type=std_logic lab=trimb[23:0]} +C {devices/gnd.sym} 1350 -1300 0 0 {name=l9 lab=VGND} +C {devices/lab_wire.sym} 1530 -1320 0 0 {name=l12 sig_type=std_logic lab=trima[23:2]} +C {devices/lab_wire.sym} 1530 -1390 0 0 {name=l14 sig_type=std_logic lab=trima[1:0]} +C {devices/vdd.sym} 1350 -1410 0 0 {name=l13 lab=VPWR} +C {devices/vsource.sym} 1400 -1390 3 0 {name=V3 value=0} +C {devices/vsource.sym} 1400 -1320 3 0 {name=V4 value=0} +C {devices/vsource.sym} 1400 -1250 3 0 {name=V5 value=0} +C {devices/vsource.sym} 1170 -1250 3 0 {name=V6 value=0}
diff --git a/ip/randsack/sch/triminv.sch b/ip/randsack/sch/triminv.sch new file mode 100644 index 0000000..5867d3a --- /dev/null +++ b/ip/randsack/sch/triminv.sch
@@ -0,0 +1,48 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {} +V {} +S {} +E {} +N 1320 -1390 1430 -1390 { lab=ts} +N 1840 -1390 1950 -1390 { lab=d2} +N 1380 -1230 1430 -1230 { lab=ts} +N 1380 -1390 1380 -1230 { lab=ts} +N 1380 -1230 1380 -1060 { lab=ts} +N 1380 -1060 1610 -1060 { lab=ts} +N 1510 -1230 1570 -1230 { lab=d0} +N 1650 -1230 1690 -1230 { lab=d1} +N 1690 -1390 1690 -1230 { lab=d1} +N 1430 -1390 1500 -1390 { lab=ts} +N 1580 -1390 1690 -1390 { lab=d1} +N 1690 -1390 1760 -1390 { lab=d1} +N 1610 -1060 1650 -1060 { lab=ts} +N 1730 -1060 2060 -1060 { lab=OUT} +N 2060 -1390 2060 -1060 { lab=OUT} +N 2030 -1390 2060 -1390 { lab=OUT} +N 2060 -1390 2090 -1390 { lab=OUT} +N 1210 -1390 1240 -1390 { lab=IN} +N 1470 -1350 1500 -1350 { lab=TRIM1} +N 1920 -1350 1950 -1350 { lab=TRIM0} +N 1540 -1190 1570 -1190 { lab=TRIM1} +N 1620 -1020 1650 -1020 { lab=TRIM0} +C {sky130_stdcells/clkbuf_2.sym} 1280 -1390 0 0 {name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ } +C {devices/title-2.sym} 0 -30 0 0 {name=l1 author="Harrison Pham" rev=1.0} +C {sky130_stdcells/einvn_4.sym} 1540 -1390 0 0 {name=x2 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ } +C {sky130_stdcells/clkinv_1.sym} 1800 -1390 0 0 {name=x3 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ } +C {sky130_stdcells/einvp_2.sym} 1990 -1390 0 0 {name=x4 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ } +C {sky130_stdcells/clkbuf_1.sym} 1470 -1230 0 0 {name=x5 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ } +C {sky130_stdcells/einvp_2.sym} 1610 -1230 0 0 {name=x6 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ } +C {sky130_stdcells/einvn_8.sym} 1690 -1060 0 0 {name=x7 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ } +C {devices/lab_pin.sym} 1470 -1350 0 0 {name=l4 sig_type=std_logic lab=TRIM1} +C {devices/lab_pin.sym} 1540 -1190 0 0 {name=l5 sig_type=std_logic lab=TRIM1} +C {devices/lab_pin.sym} 1920 -1350 0 0 {name=l7 sig_type=std_logic lab=TRIM0} +C {devices/lab_pin.sym} 1620 -1020 0 0 {name=l8 sig_type=std_logic lab=TRIM0} +C {devices/ipin.sym} 1210 -1390 0 0 {name=p1 lab=IN} +C {devices/ipin.sym} 2090 -1390 2 0 {name=p2 lab=OUT} +C {devices/ipin.sym} 1210 -1200 0 0 {name=p3 lab=TRIM0} +C {devices/ipin.sym} 1210 -1160 0 0 {name=p4 lab=TRIM1} +C {devices/lab_wire.sym} 1380 -1390 0 0 {name=l2 sig_type=std_logic lab=ts} +C {devices/lab_wire.sym} 1650 -1390 0 0 {name=l3 sig_type=std_logic lab=d1} +C {devices/lab_wire.sym} 1560 -1230 0 0 {name=l6 sig_type=std_logic lab=d0} +C {devices/lab_wire.sym} 1910 -1390 0 0 {name=l9 sig_type=std_logic lab=d2}
diff --git a/ip/randsack/sch/triminv.sym b/ip/randsack/sch/triminv.sym new file mode 100644 index 0000000..dc5500f --- /dev/null +++ b/ip/randsack/sch/triminv.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=x1" +} +V {} +S {} +E {} +L 4 -130 -40 130 -40 {} +L 4 -130 40 130 40 {} +L 4 -130 -40 -130 40 {} +L 4 130 -40 130 40 {} +L 4 130 0 150 0 {} +L 4 -150 0 -130 0 {} +L 4 -150 20 -130 20 {} +L 4 -150 30 -130 30 {} +B 5 147.5 -2.5 152.5 2.5 {name=OUT dir=in } +B 5 -152.5 -2.5 -147.5 2.5 {name=IN dir=in } +B 5 -152.5 17.5 -147.5 22.5 {name=TRIM0 dir=in } +B 5 -152.5 27.5 -147.5 32.5 {name=TRIM1 dir=in } +T {@symname} -49.5 -6 0 0 0.3 0.3 {} +T {@name} 95 -52 0 0 0.2 0.2 {} +T {OUT} 105 -4 0 0 0.2 0.2 {} +T {IN} -125 -4 0 0 0.2 0.2 {} +T {TRIM0} -125 16 0 0 0.2 0.2 {} +T {TRIM1} -125 26 0 0 0.2 0.2 {}
diff --git a/ip/randsack/sch/xschemrc b/ip/randsack/sch/xschemrc new file mode 100644 index 0000000..f4d29f1 --- /dev/null +++ b/ip/randsack/sch/xschemrc
@@ -0,0 +1,5 @@ +set XSCHEM_LIBRARY_PATH {} +append XSCHEM_LIBRARY_PATH :${XSCHEM_SHAREDIR}/xschem_library +append XSCHEM_LIBRARY_PATH :/home/harrison/workspace/xschem_sky130 + +set editor {code}