Add series resistor to data input

* Some basic esd protection
* Fix drc issue from previous commit
diff --git a/mag/proj_sstl_test.mag b/mag/proj_sstl_test.mag
index 6a27cc2..f0f0723 100644
--- a/mag/proj_sstl_test.mag
+++ b/mag/proj_sstl_test.mag
@@ -1,7 +1,7 @@
 magic
 tech sky130A
 magscale 1 2
-timestamp 1646210680
+timestamp 1646594466
 << locali >>
 rect 22027 32313 23103 32425
 rect 22027 29049 23103 29161
@@ -632,8 +632,9 @@
 rect 10700 11805 10706 11811
 rect 9981 11746 10067 11752
 rect 6024 11617 6030 11724
-rect 6137 11703 9894 11724
-rect 6137 11637 9807 11703
+rect 6137 11617 8304 11724
+rect 9609 11703 9894 11724
+rect 9609 11637 9807 11703
 rect 9873 11637 9894 11703
 rect 9981 11678 9993 11746
 rect 10061 11740 10246 11746
@@ -662,7 +663,7 @@
 rect 10061 11678 10246 11684
 rect 9981 11677 10067 11678
 rect 9987 11672 10067 11677
-rect 6137 11617 9894 11637
+rect 9609 11617 9894 11637
 rect 12459 11667 12504 11695
 rect 23528 11670 23534 11674
 rect 12544 11667 23534 11670
@@ -756,6 +757,8 @@
 rect 11463 230 11469 282
 rect -424 16 78 112
 rect 8949 108 8980 112
+<< rmetal1 >>
+rect 8304 11617 9609 11724
 << via1 >>
 rect 23177 35376 23303 35472
 rect 23637 35376 23763 35472
@@ -1828,7 +1831,7 @@
 timestamp 1646210680
 transform -1 0 20118 0 -1 16276
 box -2332 -19196 6668 4292
-use sky130_fd_sc_hd__clkbuf_2  sky130_fd_sc_hd__clkbuf_2_0 $PDKPATH/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__clkbuf_2  sky130_fd_sc_hd__clkbuf_2_0 ~/proj/caravan-project/pdk/sky130A/libs.ref/sky130_fd_sc_hd/mag
 timestamp 1644111581
 transform 1 0 9716 0 1 11488
 box -38 -48 406 592
@@ -1836,42 +1839,42 @@
 timestamp 1644111581
 transform 1 0 10084 0 1 11488
 box -38 -48 406 592
-use sky130_fd_sc_hd__clkinv_2  sky130_fd_sc_hd__clkinv_2_0 $PDKPATH/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__clkinv_2  sky130_fd_sc_hd__clkinv_2_0 ~/proj/caravan-project/pdk/sky130A/libs.ref/sky130_fd_sc_hd/mag
 timestamp 1644111581
 transform 1 0 12384 0 1 11488
 box -38 -48 406 592
-use sky130_fd_sc_hd__mux4_1  sky130_fd_sc_hd__mux4_1_0 $PDKPATH/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__mux4_1  sky130_fd_sc_hd__mux4_1_0 ~/proj/caravan-project/pdk/sky130A/libs.ref/sky130_fd_sc_hd/mag
 timestamp 1644111581
 transform 1 0 10452 0 1 11488
 box -38 -48 1970 592
-use sky130_fd_sc_hd__tapvpwrvgnd_1  sky130_fd_sc_hd__tapvpwrvgnd_1_0 $PDKPATH/libs.ref/sky130_fd_sc_hd/mag
+use sky130_fd_sc_hd__tapvpwrvgnd_1  sky130_fd_sc_hd__tapvpwrvgnd_1_0 ~/proj/caravan-project/pdk/sky130A/libs.ref/sky130_fd_sc_hd/mag
 timestamp 1644111581
 transform 1 0 12752 0 1 11488
 box -38 -48 130 592
-use sky130_fd_sc_hd__tapvpwrvgnd_1  sky130_fd_sc_hd__tapvpwrvgnd_1_4
+use sky130_fd_sc_hd__and2_1  sky130_fd_sc_hd__and2_1_0 ~/proj/caravan-project/pdk/sky130A/libs.ref/sky130_fd_sc_hd/mag
 timestamp 1644111581
-transform 1 0 23608 0 1 15840
-box -38 -48 130 592
-use sky130_fd_sc_hd__tapvpwrvgnd_1  sky130_fd_sc_hd__tapvpwrvgnd_1_2
-timestamp 1644111581
-transform 1 0 23608 0 -1 15840
-box -38 -48 130 592
-use sky130_fd_sc_hd__tapvpwrvgnd_1  sky130_fd_sc_hd__tapvpwrvgnd_1_1
-timestamp 1644111581
-transform 1 0 23608 0 1 12576
-box -38 -48 130 592
-use sky130_fd_sc_hd__and2_1  sky130_fd_sc_hd__and2_1_3 $PDKPATH/libs.ref/sky130_fd_sc_hd/mag
-timestamp 1644111581
-transform -1 0 23608 0 1 15840
+transform -1 0 23608 0 1 12576
 box -38 -48 498 592
 use sky130_fd_sc_hd__and2_1  sky130_fd_sc_hd__and2_1_1
 timestamp 1644111581
 transform -1 0 23608 0 -1 15840
 box -38 -48 498 592
-use sky130_fd_sc_hd__and2_1  sky130_fd_sc_hd__and2_1_0
+use sky130_fd_sc_hd__and2_1  sky130_fd_sc_hd__and2_1_3
 timestamp 1644111581
-transform -1 0 23608 0 1 12576
+transform -1 0 23608 0 1 15840
 box -38 -48 498 592
+use sky130_fd_sc_hd__tapvpwrvgnd_1  sky130_fd_sc_hd__tapvpwrvgnd_1_1
+timestamp 1644111581
+transform 1 0 23608 0 1 12576
+box -38 -48 130 592
+use sky130_fd_sc_hd__tapvpwrvgnd_1  sky130_fd_sc_hd__tapvpwrvgnd_1_2
+timestamp 1644111581
+transform 1 0 23608 0 -1 15840
+box -38 -48 130 592
+use sky130_fd_sc_hd__tapvpwrvgnd_1  sky130_fd_sc_hd__tapvpwrvgnd_1_4
+timestamp 1644111581
+transform 1 0 23608 0 1 15840
+box -38 -48 130 592
 use sky130_fd_sc_hd__and2_1  sky130_fd_sc_hd__and2_1_2
 timestamp 1644111581
 transform -1 0 23608 0 -1 19104
diff --git a/mag/user_analog_project_wrapper.mag b/mag/user_analog_project_wrapper.mag
index 0427176..9d09091 100644
--- a/mag/user_analog_project_wrapper.mag
+++ b/mag/user_analog_project_wrapper.mag
@@ -1,12 +1,7 @@
 magic
 tech sky130A
 magscale 1 2
-timestamp 1646437406
-<< error_p >>
-rect 127417 3530 127426 3539
-rect 127426 3521 127435 3530
-rect 127426 2835 127435 2844
-rect 127417 2826 127426 2835
+timestamp 1646600577
 << metal1 >>
 rect 7241 643202 7251 643298
 rect 7469 643202 7479 643298
@@ -467,8 +462,11 @@
 rect 57514 641802 57739 642827
 rect 57514 641568 57739 641577
 rect 6999 641231 7206 641240
-rect 126679 3530 127384 4191
+rect 126679 3554 127384 4191
+rect 126679 3530 127435 3554
 rect 126679 2835 126731 3530
+rect 127426 2835 127435 3530
+rect 126679 2820 127435 2835
 rect 524 -800 636 480
 rect 1706 -800 1818 480
 rect 2888 -800 3000 480
@@ -576,7 +574,7 @@
 rect 123452 -800 123564 480
 rect 124634 -800 124746 480
 rect 125816 -800 125928 213
-rect 126679 6 127384 2835
+rect 126679 6 127384 2820
 rect 126998 -800 127110 6
 rect 128180 -800 128292 480
 rect 129362 -800 129474 480
@@ -1519,34 +1517,34 @@
 rect -100 0 0 704000
 rect 584000 0 584100 704000
 rect -100 -100 584100 0
-use cfg_shift_register  cfg_shift_register_0
+use proj_sstl_test  proj_sstl_test_0
+timestamp 1646594466
+transform 1 0 15929 0 1 645492
+box -424 16 33306 40167
+use sky130_fd_sc_hd__tapvpwrvgnd_1  sky130_fd_sc_hd__tapvpwrvgnd_1_0 ~/proj/caravan-project/pdk/sky130A/libs.ref/sky130_fd_sc_hd/mag
+timestamp 1644111581
+transform 1 0 54234 0 1 642706
+box -38 -48 130 592
+use sky130_fd_sc_hd__tapvpwrvgnd_1  sky130_fd_sc_hd__tapvpwrvgnd_1_1
+timestamp 1644111581
+transform 1 0 7038 0 1 642706
+box -38 -48 130 592
+use cfg_shift_register  cfg_shift_register_3
 timestamp 1646187848
-transform 1 0 42470 0 1 642694
-box -72 -183 11802 839
-use cfg_shift_register  cfg_shift_register_1
-timestamp 1646187848
-transform 1 0 30694 0 1 642694
+transform 1 0 7142 0 1 642694
 box -72 -183 11802 839
 use cfg_shift_register  cfg_shift_register_2
 timestamp 1646187848
 transform 1 0 18918 0 1 642694
 box -72 -183 11802 839
-use cfg_shift_register  cfg_shift_register_3
+use cfg_shift_register  cfg_shift_register_1
 timestamp 1646187848
-transform 1 0 7142 0 1 642694
+transform 1 0 30694 0 1 642694
 box -72 -183 11802 839
-use sky130_fd_sc_hd__tapvpwrvgnd_1  sky130_fd_sc_hd__tapvpwrvgnd_1_1 ~/proj/caravan-project/pdk/sky130A/libs.ref/sky130_fd_sc_hd/mag
-timestamp 1644111581
-transform 1 0 7038 0 1 642706
-box -38 -48 130 592
-use sky130_fd_sc_hd__tapvpwrvgnd_1  sky130_fd_sc_hd__tapvpwrvgnd_1_0
-timestamp 1644111581
-transform 1 0 54234 0 1 642706
-box -38 -48 130 592
-use proj_sstl_test  proj_sstl_test_0
-timestamp 1646210680
-transform 1 0 15929 0 1 645492
-box -424 16 33306 40167
+use cfg_shift_register  cfg_shift_register_0
+timestamp 1646187848
+transform 1 0 42470 0 1 642694
+box -72 -183 11802 839
 << labels >>
 flabel metal3 s 583520 269230 584800 269342 0 FreeSans 1120 0 0 0 gpio_analog[0]
 port 0 nsew signal bidirectional
diff --git a/xschem/proj_sstl_test.sch b/xschem/proj_sstl_test.sch
index d752cb3..84a3ce4 100644
--- a/xschem/proj_sstl_test.sch
+++ b/xschem/proj_sstl_test.sch
@@ -20,88 +20,89 @@
 V {}
 S {}
 E {}
-N 1950 -590 1950 -430 { lab=n_tx_DQ}
-N 1950 -240 1990 -240 { lab=tx_DQ}
-N 1990 -590 1990 -240 { lab=tx_DQ}
+N 2040 -590 2040 -430 { lab=n_tx_DQ}
+N 2040 -240 2080 -240 { lab=tx_DQ}
+N 2080 -590 2080 -240 { lab=tx_DQ}
 N 170 -340 280 -340 { lab=rx_pu_cal[3:0]}
 N 170 -280 280 -280 { lab=rx_pd_cal[3:0]}
 N 170 -370 280 -370 { lab=rx_leg_ctrl[6:0]}
 N 260 -370 260 -250 { lab=rx_leg_ctrl[6:0]}
 N 260 -250 280 -250 { lab=rx_leg_ctrl[6:0]}
 N 760 -330 790 -330 { lab=rx_DQ}
-N 870 -330 880 -330 { lab=#net1}
-N 960 -350 960 -330 { lab=#net2}
-N 960 -350 1000 -350 { lab=#net2}
-N 1000 -200 1000 -190 { lab=d_sel_1}
-N 970 -230 970 -190 { lab=d_sel_0}
-N 970 -230 1000 -230 { lab=d_sel_0}
-N 860 -300 860 -190 { lab=data_0}
-N 860 -300 970 -300 { lab=data_0}
-N 970 -390 970 -300 { lab=data_0}
-N 970 -390 1000 -390 { lab=data_0}
-N 890 -290 890 -190 { lab=data_2}
-N 890 -290 980 -290 { lab=data_2}
-N 980 -310 980 -290 { lab=data_2}
-N 980 -310 1000 -310 { lab=data_2}
-N 920 -270 920 -190 { lab=data_3}
-N 920 -270 1000 -270 { lab=data_3}
-N 1080 -330 1100 -330 { lab=d_out}
-N 1090 -330 1090 -280 { lab=d_out}
-N 1330 -180 1470 -180 { lab=#net3}
-N 1330 -300 1470 -300 { lab=#net4}
-N 1330 -370 1330 -300 { lab=#net4}
-N 1330 -370 1470 -370 { lab=#net4}
-N 1340 -490 1340 -180 { lab=#net3}
-N 1340 -490 1470 -490 { lab=#net3}
-N 1460 -460 1470 -460 { lab=tx_pu_cal[3:0]}
-N 1460 -460 1460 -270 { lab=tx_pu_cal[3:0]}
-N 1460 -270 1470 -270 { lab=tx_pu_cal[3:0]}
-N 1460 -270 1460 -150 { lab=tx_pu_cal[3:0]}
-N 1440 -400 1470 -400 { lab=tx_pd_cal[3:0]}
-N 1440 -400 1440 -150 { lab=tx_pd_cal[3:0]}
-N 1440 -210 1470 -210 { lab=tx_pd_cal[3:0]}
-N 1200 -320 1210 -320 { lab=#net5}
+N 960 -330 970 -330 { lab=#net1}
+N 1050 -350 1050 -330 { lab=#net2}
+N 1050 -350 1090 -350 { lab=#net2}
+N 1090 -200 1090 -190 { lab=d_sel_1}
+N 1060 -230 1060 -190 { lab=d_sel_0}
+N 1060 -230 1090 -230 { lab=d_sel_0}
+N 950 -300 950 -190 { lab=data_0}
+N 950 -300 1060 -300 { lab=data_0}
+N 1060 -390 1060 -300 { lab=data_0}
+N 1060 -390 1090 -390 { lab=data_0}
+N 980 -290 980 -190 { lab=data_2}
+N 980 -290 1070 -290 { lab=data_2}
+N 1070 -310 1070 -290 { lab=data_2}
+N 1070 -310 1090 -310 { lab=data_2}
+N 1010 -270 1010 -190 { lab=data_3}
+N 1010 -270 1090 -270 { lab=data_3}
+N 1170 -330 1190 -330 { lab=d_out}
+N 1180 -330 1180 -280 { lab=d_out}
+N 1420 -180 1560 -180 { lab=#net3}
+N 1420 -300 1560 -300 { lab=#net4}
+N 1420 -370 1420 -300 { lab=#net4}
+N 1420 -370 1560 -370 { lab=#net4}
+N 1430 -490 1430 -180 { lab=#net3}
+N 1430 -490 1560 -490 { lab=#net3}
+N 1550 -460 1560 -460 { lab=tx_pu_cal[3:0]}
+N 1550 -460 1550 -270 { lab=tx_pu_cal[3:0]}
+N 1550 -270 1560 -270 { lab=tx_pu_cal[3:0]}
+N 1550 -270 1550 -150 { lab=tx_pu_cal[3:0]}
+N 1530 -400 1560 -400 { lab=tx_pd_cal[3:0]}
+N 1530 -400 1530 -150 { lab=tx_pd_cal[3:0]}
+N 1530 -210 1560 -210 { lab=tx_pd_cal[3:0]}
+N 1290 -320 1300 -320 { lab=#net5}
 N 760 -590 760 -310 { lab=rx_DQ}
-N 1200 -160 1200 -150 { lab=tx_leg_ctrl[6:0]}
-N 1200 -160 1210 -160 { lab=tx_leg_ctrl[6:0]}
-N 1200 -280 1200 -160 { lab=tx_leg_ctrl[6:0]}
-N 1200 -280 1210 -280 { lab=tx_leg_ctrl[6:0]}
-N 1180 -330 1180 -320 { lab=#net5}
-N 1180 -320 1200 -320 { lab=#net5}
-N 1090 -280 1090 -200 { lab=d_out}
-N 1090 -200 1210 -200 { lab=d_out}
-C {/home/derekhm/proj/caravan-project/xschem/SSTL/SSTL.sym} 260 -190 0 0 {name=X1 VDD=IOVDD GND=GND}
-C {/home/derekhm/proj/caravan-project/xschem/SSTL/SSTL.sym} 1450 -120 0 0 {name=X2 VDD=IOVDD GND=GND}
-C {/home/derekhm/proj/caravan-project/xschem/SSTL/SSTL.sym} 1450 -310 0 0 {name=X3 VDD=IOVDD GND=GND}
+N 1290 -160 1290 -150 { lab=tx_leg_ctrl[6:0]}
+N 1290 -160 1300 -160 { lab=tx_leg_ctrl[6:0]}
+N 1290 -280 1290 -160 { lab=tx_leg_ctrl[6:0]}
+N 1290 -280 1300 -280 { lab=tx_leg_ctrl[6:0]}
+N 1270 -330 1270 -320 { lab=#net5}
+N 1270 -320 1290 -320 { lab=#net5}
+N 1180 -280 1180 -200 { lab=d_out}
+N 1180 -200 1300 -200 { lab=d_out}
+N 850 -330 880 -330 { lab=#net6}
+C {xschem/SSTL/SSTL.sym} 260 -190 0 0 {name=X1 VDD=IOVDD GND=GND}
+C {xschem/SSTL/SSTL.sym} 1540 -120 0 0 {name=X2 VDD=IOVDD GND=GND}
+C {xschem/SSTL/SSTL.sym} 1540 -310 0 0 {name=X3 VDD=IOVDD GND=GND}
 C {devices/iopin.sym} 760 -590 3 0 {name=p1 lab=rx_DQ
 }
 C {devices/ipin.sym} 170 -340 0 0 {name=p2 lab=rx_pu_cal[3:0]}
 C {devices/ipin.sym} 170 -280 0 0 {name=p3 lab=rx_pd_cal[3:0]}
 C {devices/ipin.sym} 170 -370 0 0 {name=p4 lab=rx_leg_ctrl[6:0]}
-C {devices/ipin.sym} 860 -190 3 0 {name=p5 lab=data_0}
-C {devices/ipin.sym} 890 -190 3 0 {name=p6 lab=data_2
+C {devices/ipin.sym} 950 -190 3 0 {name=p5 lab=data_0}
+C {devices/ipin.sym} 980 -190 3 0 {name=p6 lab=data_2
 }
-C {devices/ipin.sym} 920 -190 3 0 {name=p7 lab=data_3
+C {devices/ipin.sym} 1010 -190 3 0 {name=p7 lab=data_3
 }
-C {devices/ipin.sym} 970 -190 3 0 {name=p8 lab=d_sel_0
+C {devices/ipin.sym} 1060 -190 3 0 {name=p8 lab=d_sel_0
 
 }
-C {devices/ipin.sym} 1000 -190 3 0 {name=p9 lab=d_sel_1
+C {devices/ipin.sym} 1090 -190 3 0 {name=p9 lab=d_sel_1
 
 }
-C {devices/iopin.sym} 1990 -590 3 0 {name=p10 lab=tx_DQ
+C {devices/iopin.sym} 2080 -590 3 0 {name=p10 lab=tx_DQ
 }
-C {devices/iopin.sym} 1950 -590 3 0 {name=p11 lab=n_tx_DQ
+C {devices/iopin.sym} 2040 -590 3 0 {name=p11 lab=n_tx_DQ
 }
-C {sky130/sky130_stdcells/clkbuf_2.sym} 830 -330 0 0 {name=x1 VGND=GND VNB=GND VPB=VDD VPWR=VDD prefix=sky130_fd_sc_hd__ }
-C {sky130/sky130_stdcells/clkbuf_2.sym} 920 -330 0 0 {name=x2 VGND=GND VNB=GND VPB=VDD VPWR=VDD prefix=sky130_fd_sc_hd__ }
-C {sky130/sky130_stdcells/mux4_1.sym} 1040 -330 0 0 {name=x3  VGND=GND VNB=GND VPB=VDD VPWR=VDD  prefix=sky130_fd_sc_hd__ }
-C {sky130/sky130_stdcells/clkinv_2.sym} 1140 -330 0 0 {name=x4  VGND=GND VNB=GND VPB=VDD VPWR=VDD prefix=sky130_fd_sc_hd__ }
-C {sky130/sky130_stdcells/and2_1.sym} 1270 -180 0 0 {name=xn_and[6:0]  VGND=GND VNB=GND VPB=VDD VPWR=VDD  prefix=sky130_fd_sc_hd__ }
-C {sky130/sky130_stdcells/and2_1.sym} 1270 -300 0 0 {name=xand[6:0]  VGND=GND VNB=GND VPB=VDD VPWR=VDD prefix=sky130_fd_sc_hd__ }
-C {devices/ipin.sym} 1460 -150 3 0 {name=p12 lab=tx_pu_cal[3:0]}
-C {devices/ipin.sym} 1440 -150 3 0 {name=p13 lab=tx_pd_cal[3:0]}
-C {devices/ipin.sym} 1200 -150 3 0 {name=p14 lab=tx_leg_ctrl[6:0]}
+C {sky130/sky130_stdcells/clkbuf_2.sym} 920 -330 0 0 {name=x1 VGND=GND VNB=GND VPB=VDD VPWR=VDD prefix=sky130_fd_sc_hd__ }
+C {sky130/sky130_stdcells/clkbuf_2.sym} 1010 -330 0 0 {name=x2 VGND=GND VNB=GND VPB=VDD VPWR=VDD prefix=sky130_fd_sc_hd__ }
+C {sky130/sky130_stdcells/mux4_1.sym} 1130 -330 0 0 {name=x3  VGND=GND VNB=GND VPB=VDD VPWR=VDD  prefix=sky130_fd_sc_hd__ }
+C {sky130/sky130_stdcells/clkinv_2.sym} 1230 -330 0 0 {name=x4  VGND=GND VNB=GND VPB=VDD VPWR=VDD prefix=sky130_fd_sc_hd__ }
+C {sky130/sky130_stdcells/and2_1.sym} 1360 -180 0 0 {name=xn_and[6:0]  VGND=GND VNB=GND VPB=VDD VPWR=VDD  prefix=sky130_fd_sc_hd__ }
+C {sky130/sky130_stdcells/and2_1.sym} 1360 -300 0 0 {name=xand[6:0]  VGND=GND VNB=GND VPB=VDD VPWR=VDD prefix=sky130_fd_sc_hd__ }
+C {devices/ipin.sym} 1550 -150 3 0 {name=p12 lab=tx_pu_cal[3:0]}
+C {devices/ipin.sym} 1530 -150 3 0 {name=p13 lab=tx_pd_cal[3:0]}
+C {devices/ipin.sym} 1290 -150 3 0 {name=p14 lab=tx_leg_ctrl[6:0]}
 C {devices/code_shown.sym} 250 -520 0 0 {name=MODELS
 only_toplevel=true
 place=header
@@ -110,4 +111,9 @@
 .include \\\\$::SKYWATER_STDCELLS\\\\/sky130_fd_sc_hd.spice
 "
 spice_ignore=false}
-C {devices/lab_wire.sym} 1090 -300 3 0 {name=l1 sig_type=std_logic lab=d_out}
+C {devices/lab_wire.sym} 1180 -300 3 0 {name=l1 sig_type=std_logic lab=d_out}
+C {sky130/sky130_fd_pr/res_generic_m1.sym} 820 -330 3 0 {name=R1
+W=6.525
+L=0.535
+model=res_generic_m1
+mult=1}