Merge branch 'master' of https://github.com/yrrapt/caravel_amsat_txrx_ic
diff --git a/gds/caravel.gds.gz b/gds/caravel.gds.gz
index 318009f..423d712 100644
--- a/gds/caravel.gds.gz
+++ b/gds/caravel.gds.gz
Binary files differ
diff --git a/gds/caravel.mag b/gds/caravel.mag
index f20c8ab..9de1b65 100644
--- a/gds/caravel.mag
+++ b/gds/caravel.mag
@@ -1,7 +1,7 @@
 magic
 tech sky130A
 magscale 1 2
-timestamp 1608157530
+timestamp 1608328028
 << checkpaint >>
 rect -1260 -1260 718860 1038860
 << metal1 >>
@@ -80750,187 +80750,187 @@
 rect 459478 40175 459520 40411
 rect 454976 40133 459520 40175
 use user_id_programming  user_id_value ../mag
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 656624 0 1 80926
 box 0 0 7109 7077
 use storage  storage ../mag
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 52032 0 1 53156
 box 0 0 88934 189234
 use mgmt_core  soc ../mag
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 210422 0 1 53602
 box 0 0 430000 180000
 use sky130_fd_sc_hvl__lsbufhv2lv_1_wrapped  rstb_level ../mag
-timestamp 1608157530
+timestamp 1608328028
 transform -1 0 137896 0 -1 51956
 box -66 -83 5058 5000
 use simple_por  por ../mag
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 654176 0 -1 112880
 box 25 11 11344 8338
 use mgmt_protect  mgmt_buffers ../mag
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 212180 0 1 246848
 box -1586 -1605 201502 19557
 use gpio_control_block  gpio_control_bidir\[1\] ../mag
-timestamp 1608157530
+timestamp 1608328028
 transform -1 0 708537 0 1 166200
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_bidir\[0\]
-timestamp 1608157530
+timestamp 1608328028
 transform -1 0 708537 0 1 121000
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[36\]
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 8567 0 1 245800
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[37\]
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 8567 0 1 202600
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[2\]
-timestamp 1608157530
+timestamp 1608328028
 transform -1 0 708537 0 1 211200
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[3\]
-timestamp 1608157530
+timestamp 1608328028
 transform -1 0 708537 0 1 256400
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[33\]
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 8567 0 1 375400
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[34\]
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 8567 0 1 332200
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[35\]
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 8567 0 1 289000
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[4\]
-timestamp 1608157530
+timestamp 1608328028
 transform -1 0 708537 0 1 301400
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[5\]
-timestamp 1608157530
+timestamp 1608328028
 transform -1 0 708537 0 1 346400
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[7\]
-timestamp 1608157530
+timestamp 1608328028
 transform -1 0 708537 0 1 479800
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[6\]
-timestamp 1608157530
+timestamp 1608328028
 transform -1 0 708537 0 1 391600
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[32\]
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 8567 0 1 418600
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[31\]
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 8567 0 1 546200
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[30\]
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 8567 0 1 589400
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[29\]
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 8567 0 1 632600
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[9\]
-timestamp 1608157530
+timestamp 1608328028
 transform -1 0 708537 0 1 568800
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[8\]
-timestamp 1608157530
+timestamp 1608328028
 transform -1 0 708537 0 1 523800
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[10\]
-timestamp 1608157530
+timestamp 1608328028
 transform -1 0 708537 0 1 614000
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[28\]
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 8567 0 1 675800
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[27\]
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 8567 0 1 719000
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[26\]
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 8567 0 1 762200
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[13\]
-timestamp 1608157530
+timestamp 1608328028
 transform -1 0 708537 0 1 749200
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[12\]
-timestamp 1608157530
+timestamp 1608328028
 transform -1 0 708537 0 1 704200
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[11\]
-timestamp 1608157530
+timestamp 1608328028
 transform -1 0 708537 0 1 659000
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[25\]
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 8567 0 1 805400
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[24\]
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 8567 0 1 931224
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[23\]
-timestamp 1608157530
+timestamp 1608328028
 transform 0 1 97200 -1 0 1029747
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[22\]
-timestamp 1608157530
+timestamp 1608328028
 transform 0 1 148600 -1 0 1029747
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[21\]
-timestamp 1608157530
+timestamp 1608328028
 transform 0 1 200000 -1 0 1029747
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[20\]
-timestamp 1608157530
+timestamp 1608328028
 transform 0 1 251400 -1 0 1029747
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[19\]
-timestamp 1608157530
+timestamp 1608328028
 transform 0 1 303000 -1 0 1029747
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[18\]
-timestamp 1608157530
+timestamp 1608328028
 transform 0 1 353400 -1 0 1029747
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[17\]
-timestamp 1608157530
+timestamp 1608328028
 transform 0 1 420800 -1 0 1029747
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[16\]
-timestamp 1608157530
+timestamp 1608328028
 transform 0 1 497800 -1 0 1029747
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[15\]
-timestamp 1608157530
+timestamp 1608328028
 transform 0 1 549200 -1 0 1029747
 box 0 0 33934 18344
 use gpio_control_block  gpio_control_in\[14\]
-timestamp 1608157530
+timestamp 1608328028
 transform -1 0 708537 0 1 927600
 box 0 0 33934 18344
 use user_project_wrapper  mprj ../mag
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 65308 0 1 278716
-box -8436 -7366 592360 711302
+box -8576 -7506 592500 711442
 use chip_io  padframe ../mag
-timestamp 1608157530
+timestamp 1608328028
 transform 1 0 0 0 1 0
 box 0 0 717600 1037600
 << properties >>
diff --git a/gds/caravel.old.gds.gz b/gds/caravel.old.gds.gz
index 56113e9..318009f 100644
--- a/gds/caravel.old.gds.gz
+++ b/gds/caravel.old.gds.gz
Binary files differ
diff --git a/gds/user_project_wrapper.gds.gz b/gds/user_project_wrapper.gds.gz
index f9dcb6c..db2a668 100644
--- a/gds/user_project_wrapper.gds.gz
+++ b/gds/user_project_wrapper.gds.gz
Binary files differ
diff --git a/xschem/pll_collection/pll_collection.sch b/xschem/pll_collection/pll_collection.sch
index 51f8b16..1548dc8 100644
--- a/xschem/pll_collection/pll_collection.sch
+++ b/xschem/pll_collection/pll_collection.sch
@@ -167,7 +167,6 @@
 C {lab_pin.sym} 340 -160 0 1 {name=l6 sig_type=std_logic lab=ph4_p}
 C {lab_pin.sym} 340 -140 0 1 {name=l7 sig_type=std_logic lab=ph4_n}
 C {lab_pin.sym} 1940 -190 0 1 {name=l8 sig_type=std_logic lab=ff_nc}
-C {sky130_stdcells/tapvpwrvgnd_1.sym} 1640 -900 0 0 {name=x10[2:1] VGND=vss VPWR=vdd prefix=sky130_fd_sc_hd__ }
 C {lab_pin.sym} 340 -260 0 1 {name=l1 sig_type=std_logic lab=ph2_p}
 C {lab_pin.sym} 340 -240 0 1 {name=l4 sig_type=std_logic lab=ph2_n}
 C {lab_wire.sym} 3150 -210 0 1 {name=l5 sig_type=std_logic lab=DOWN}
diff --git a/xschem/pll_collection/pll_collection.sym b/xschem/pll_collection/pll_collection.sym
index 85b3d95..542f49a 100644
--- a/xschem/pll_collection/pll_collection.sym
+++ b/xschem/pll_collection/pll_collection.sym
@@ -7,24 +7,51 @@
 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 -110 130 -110 {}
+L 4 -130 100 130 100 {}
+L 4 -130 -110 -130 100 {}
+L 4 130 -110 130 100 {}
+L 4 -150 -80 -130 -80 {}
+L 4 -150 -60 -130 -60 {}
+L 4 130 -80 150 -80 {}
+L 4 130 -60 150 -60 {}
+L 4 130 -40 150 -40 {}
+L 4 130 -20 150 -20 {}
+L 4 130 10 150 10 {}
+L 4 130 30 150 30 {}
+L 4 -150 -30 -130 -30 {}
+L 4 -150 50 -130 50 {}
+L 4 -150 70 -130 70 {}
 L 4 -150 -10 -130 -10 {}
-L 4 -150 10 -130 10 {}
-L 4 130 -10 150 -10 {}
-L 7 0 -60 0 -40 {}
-L 7 0 40 0 60 {}
-B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout name=p1 }
-B 5 -152.5 -12.5 -147.5 -7.5 {name=en_n dir=in name=p6 }
-B 5 -152.5 7.5 -147.5 12.5 {name=ctl dir=in name=p3 }
-B 5 147.5 -12.5 152.5 -7.5 {name=out dir=out name=p4 }
-B 5 -2.5 57.5 2.5 62.5 {name=vss dir=inout name=p2 }
-T {@symname} 29 54 0 0 0.3 0.3 {}
-T {@name} 45 78 0 0 0.2 0.2 {}
-T {vdd} 16 -35 0 1 0.2 0.2 {}
-T {en_n} -125 -14 0 0 0.2 0.2 {}
-T {ctl} -125 6 0 0 0.2 0.2 {}
-T {out} 125 -14 0 1 0.2 0.2 {}
-T {vss} -6 35 2 1 0.2 0.2 {}
+L 7 0 -130 0 -110 {}
+L 7 0 100 0 120 {}
+B 5 -2.5 -132.5 2.5 -127.5 {name=vdd dir=inout name=p1 }
+B 5 -152.5 -82.5 -147.5 -77.5 {name=en_n dir=in name=p6 }
+B 5 -152.5 -62.5 -147.5 -57.5 {name=ctl dir=in name=p3 }
+B 5 147.5 -82.5 152.5 -77.5 {name=div_out dir=out name=p4 }
+B 5 -2.5 117.5 2.5 122.5 {name=vss dir=inout name=p2 }
+B 5 147.5 -62.5 152.5 -57.5 {name=dither_output dir=out name=p4 }
+B 5 147.5 -42.5 152.5 -37.5 {name=output_frequency dir=out name=p4 }
+B 5 147.5 -22.5 152.5 -17.5 {name=cp_out dir=out name=p4 }
+B 5 147.5 7.5 152.5 12.5 {name=rf_p dir=out name=p4 }
+B 5 147.5 27.5 152.5 32.5 {name=rf_n dir=out name=p4 }
+B 5 -152.5 -32.5 -147.5 -27.5 {name=input_frequency dir=in name=p3 }
+B 5 -152.5 47.5 -147.5 52.5 {name=bias_rf dir=in name=p3 }
+B 5 -152.5 67.5 -147.5 72.5 {name=bias_cp dir=in name=p3 }
+B 5 -152.5 -12.5 -147.5 -7.5 {name=ref_frequency dir=in name=p3 }
+T {@symname} 19 104 0 0 0.3 0.3 {}
+T {@name} 35 128 0 0 0.2 0.2 {}
+T {vdd} 16 -105 0 1 0.2 0.2 {}
+T {en_n} -125 -84 0 0 0.2 0.2 {}
+T {ctl} -125 -64 0 0 0.2 0.2 {}
+T {div_out} 125 -84 0 1 0.2 0.2 {}
+T {vss} -6 95 2 1 0.2 0.2 {}
+T {dither_output} 125 -64 0 1 0.2 0.2 {}
+T {output_frequency} 125 -44 0 1 0.2 0.2 {}
+T {cp_out} 125 -24 0 1 0.2 0.2 {}
+T {rf_p} 125 6 0 1 0.2 0.2 {}
+T {rf_n} 125 26 0 1 0.2 0.2 {}
+T {input_frequency} -125 -34 0 0 0.2 0.2 {}
+T {bias_rf} -125 46 0 0 0.2 0.2 {}
+T {bias_cp} -125 66 0 0 0.2 0.2 {}
+T {ref_frequency} -125 -14 0 0 0.2 0.2 {}
diff --git a/xschem/pll_collection/test/pll_collection_tb.sch b/xschem/pll_collection/test/pll_collection_tb.sch
index f33bef0..6d47cc2 100644
--- a/xschem/pll_collection/test/pll_collection_tb.sch
+++ b/xschem/pll_collection/test/pll_collection_tb.sch
@@ -4,36 +4,65 @@
 V {}
 S {}
 E {}
-N 0 -90 -0 -0 { lab=GND}
-N -0 -0 380 0 { lab=GND}
-N 400 -110 400 -0 { lab=GND}
-N 380 -0 400 -0 { lab=GND}
-N 400 -280 400 -230 { lab=#net1}
-N -0 -280 400 -280 { lab=#net1}
-N -0 -280 -0 -150 { lab=#net1}
-N 100 -60 100 -0 { lab=GND}
-N 180 -60 180 -0 { lab=GND}
-N 180 -160 180 -120 { lab=ctl}
-N 180 -160 250 -160 { lab=ctl}
-N 100 -180 250 -180 { lab=en_n}
-N 100 -180 100 -120 { lab=en_n}
-N 400 0 740 0 { lab=GND}
-N 740 -30 740 0 { lab=GND}
-N 740 -40 740 -30 { lab=GND}
-N 550 -180 740 -180 { lab=outp}
-N 740 -180 740 -100 { lab=outp}
-C {pll_collection/pll_collection.sym} 400 -170 0 0 {name=x1}
+N 0 -90 0 0 { lab=GND}
+N 180 0 670 0 { lab=GND}
+N 670 -380 670 -300 { lab=#net1}
+N 0 -380 670 -380 { lab=#net1}
+N 0 -380 0 -150 { lab=#net1}
+N 100 -60 100 0 { lab=GND}
+N 180 -60 180 0 { lab=GND}
+N 180 -230 180 -120 { lab=ctl}
+N 180 -230 520 -230 { lab=ctl}
+N 100 -250 520 -250 { lab=en_n}
+N 100 -250 100 -120 { lab=en_n}
+N 670 0 1010 0 { lab=GND}
+N 1010 -40 1010 0 { lab=GND}
+N 820 -190 1010 -190 { lab=cp_out}
+N 1010 -190 1010 -100 { lab=cp_out}
+N 0 0 100 0 { lab=GND}
+N 100 0 180 0 { lab=GND}
+N 250 -30 250 0 { lab=GND}
+N 330 -30 330 0 { lab=GND}
+N 330 -180 330 -90 { lab=#net2}
+N 330 -180 520 -180 { lab=#net2}
+N 250 -200 250 -90 { lab=#net3}
+N 250 -200 520 -200 { lab=#net3}
+N 470 -270 470 -120 { lab=#net4}
+N 470 -120 520 -120 { lab=#net4}
+N 400 -270 400 -100 { lab=#net5}
+N 400 -100 520 -100 { lab=#net5}
+N 400 -380 400 -330 { lab=#net1}
+N 470 -380 470 -330 { lab=#net1}
+N 670 -50 670 0 { lab=GND}
+N 950 -160 950 -100 { lab=rf_p}
+N 820 -160 950 -160 { lab=rf_p}
+N 890 -140 890 -100 { lab=rf_n}
+N 820 -140 890 -140 { lab=rf_n}
+N 890 -40 890 0 { lab=GND}
+N 950 -40 950 -0 { lab=GND}
+N 1070 -210 1070 -100 { lab=output_frequency}
+N 820 -210 1070 -210 { lab=output_frequency}
+N 1130 -230 1130 -100 { lab=dither_output}
+N 820 -230 1130 -230 { lab=dither_output}
+N 820 -250 1190 -250 { lab=div_out}
+N 1190 -250 1190 -100 { lab=div_out}
+N 1070 -40 1070 0 { lab=GND}
+N 1010 0 1070 0 { lab=GND}
+N 1190 -40 1190 0 { lab=GND}
+N 1070 -0 1190 0 { lab=GND}
+N 1130 -40 1130 -0 { lab=GND}
+C {pll_collection/pll_collection.sym} 670 -170 0 0 {name=x1}
 C {vsource.sym} 0 -120 0 0 {name=Vvdd value=1.8}
 C {vsource.sym} 100 -90 0 0 {name=V2 value=0.0}
 C {vsource.sym} 180 -90 0 0 {name=V3 value=0.2}
-C {capa.sym} 740 -70 0 0 {name=C2
+C {capa.sym} 1010 -70 0 0 {name=C2
 m=1
-value=1p
+value=1n
 footprint=1206
 device="ceramic capacitor"}
-C {lab_wire.sym} 550 -180 0 1 {name=l1 sig_type=std_logic lab=outp}
+C {lab_wire.sym} 820 -190 0 1 {name=l1 sig_type=std_logic lab=cp_out}
 C {gnd.sym} 0 0 0 0 {name=l3 lab=GND}
-C {code.sym} 630 -390 0 0 {name=STIMULI
+C {code.sym} 1000 -480 0 0 {name=STIMULI
 tclcommand="xschem edit_vi_prop"
 value="
 .param temp=27
@@ -76,11 +105,45 @@
 .param vdd=1.8
 .param vctl=0.2
 "}
-C {lab_wire.sym} 100 -180 0 1 {name=l4 sig_type=std_logic lab=en_n}
-C {lab_wire.sym} 180 -160 0 1 {name=l5 sig_type=std_logic lab=ctl}
-C {code.sym} 460 -390 0 0 {name=STDCELL_MODELS 
+C {lab_wire.sym} 100 -250 0 1 {name=l4 sig_type=std_logic lab=en_n}
+C {lab_wire.sym} 180 -230 0 1 {name=l5 sig_type=std_logic lab=ctl}
+C {code.sym} 820 -480 0 0 {name=STDCELL_MODELS 
 only_toplevel=true
 place=end
 format=tcleval(@value\\)
 value="[sky130_models]"
 }
+C {vsource.sym} 250 -60 0 0 {name=V1 value=0.2}
+C {vsource.sym} 330 -60 0 0 {name=V4 value=0.2}
+C {isource.sym} 470 -300 0 0 {name=I0 value=1m}
+C {isource.sym} 400 -300 0 0 {name=I1 value=1m}
+C {capa.sym} 950 -70 0 0 {name=C1
+m=1
+value=1p
+footprint=1206
+device="ceramic capacitor"}
+C {capa.sym} 890 -70 0 0 {name=C3
+m=1
+value=1p
+footprint=1206
+device="ceramic capacitor"}
+C {lab_wire.sym} 820 -160 0 1 {name=l2 sig_type=std_logic lab=rf_p}
+C {lab_wire.sym} 820 -140 0 1 {name=l6 sig_type=std_logic lab=rf_n}
+C {capa.sym} 1070 -70 0 0 {name=C4
+m=1
+value=1p
+footprint=1206
+device="ceramic capacitor"}
+C {capa.sym} 1130 -70 0 0 {name=C5
+m=1
+value=1p
+footprint=1206
+device="ceramic capacitor"}
+C {capa.sym} 1190 -70 0 0 {name=C6
+m=1
+value=1p
+footprint=1206
+device="ceramic capacitor"}
+C {lab_wire.sym} 820 -210 0 1 {name=l7 sig_type=std_logic lab=output_frequency}
+C {lab_wire.sym} 820 -230 0 1 {name=l8 sig_type=std_logic lab=dither_output}
+C {lab_wire.sym} 820 -250 0 1 {name=l9 sig_type=std_logic lab=div_out}
diff --git a/xschem/vco_2-4GHz/tests/vco_2-4GHz_tb.sch b/xschem/vco_2-4GHz/tests/vco_2-4GHz_tb.sch
index 20eb662..c22344b 100644
--- a/xschem/vco_2-4GHz/tests/vco_2-4GHz_tb.sch
+++ b/xschem/vco_2-4GHz/tests/vco_2-4GHz_tb.sch
@@ -98,7 +98,7 @@
 
 .tran 0.01n 10n uic
 .param vdd=1.8
-.param vctl=0.2
+.param vctl=1.6
 "}
 C {vco_2-4GHz/vco_2-4GHz.sym} -130 -270 0 0 {name=xvco}
 C {lab_wire.sym} 40 -340 0 1 {name=l8 sig_type=std_logic lab=In}