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}