added FG_gate and passes precheck
added polyc to some missing places
diff --git a/gds/user_analog_project_wrapper.gds.gz b/gds/user_analog_project_wrapper.gds.gz
index 7ac5610..7d4426a 100644
--- a/gds/user_analog_project_wrapper.gds.gz
+++ b/gds/user_analog_project_wrapper.gds.gz
Binary files differ
diff --git a/mag/FG_pfet.mag b/mag/FG_pfet.mag
new file mode 100644
index 0000000..8547267
--- /dev/null
+++ b/mag/FG_pfet.mag
@@ -0,0 +1,112 @@
+magic
+tech sky130B
+magscale 1 2
+timestamp 1647612247
+<< nwell >>
+rect -2563 3 -1710 540
+rect -1036 0 -310 534
+rect -1036 -2 -632 0
+rect 364 -2 1390 534
+rect -1036 -4 -696 -2
+<< pwell >>
+rect -1710 -4 -1036 534
+rect -310 0 364 534
+rect 90 -2 364 0
+<< mvnsubdiff >>
+rect -894 450 -780 452
+rect -894 426 -754 450
+rect -2230 340 -2126 364
+rect -2230 184 -2190 340
+rect -2150 184 -2126 340
+rect -2230 160 -2126 184
+rect -894 114 -858 426
+rect -808 114 -754 426
+rect 1214 412 1296 438
+rect 1214 138 1232 412
+rect 1274 138 1296 412
+rect 1214 114 1296 138
+rect -894 92 -754 114
+rect -868 90 -754 92
+<< mvnsubdiffcont >>
+rect -2190 184 -2150 340
+rect -858 114 -808 426
+rect 1232 138 1274 412
+<< poly >>
+rect -1974 0 -1874 142
+rect -594 0 -494 42
+rect 491 0 1090 42
+rect -1974 -40 1090 0
+<< locali >>
+rect -2218 524 -2036 588
+rect -2218 490 -2192 524
+rect -2076 490 -2036 524
+rect -2218 372 -2036 490
+rect -874 562 -606 586
+rect -874 520 -806 562
+rect -694 520 -606 562
+rect -874 426 -606 520
+rect -482 576 -310 600
+rect -482 542 -456 576
+rect -336 542 -310 576
+rect -482 534 -310 542
+rect 1140 580 1314 598
+rect 1140 542 1174 580
+rect 1266 542 1314 580
+rect -482 472 -448 534
+rect 1140 474 1314 542
+rect -2218 340 -1830 372
+rect -2218 184 -2190 340
+rect -2150 184 -1830 340
+rect -2218 164 -1830 184
+rect -874 114 -858 426
+rect -808 114 -606 426
+rect -874 64 -606 114
+rect 470 412 1314 474
+rect 470 138 1232 412
+rect 1274 138 1314 412
+rect -482 -38 -448 78
+rect 470 64 1314 138
+<< viali >>
+rect -2192 490 -2076 524
+rect -806 520 -694 562
+rect -456 542 -336 576
+rect 1174 542 1266 580
+<< metal1 >>
+rect -2218 524 -2036 588
+rect -2218 490 -2192 524
+rect -2076 490 -2036 524
+rect -874 562 -606 586
+rect -874 520 -806 562
+rect -694 520 -606 562
+rect -482 576 -310 600
+rect -482 542 -456 576
+rect -336 542 -310 576
+rect -482 534 -310 542
+rect 1140 580 1314 598
+rect 1140 542 1174 580
+rect 1266 542 1314 580
+rect 1140 534 1314 542
+rect -874 496 -606 520
+rect -2218 460 -2036 490
+use sky130_fd_pr__pfet_g5v0d10v5_XFUK3A  sky130_fd_pr__pfet_g5v0d10v5_XFUK3A_0
+timestamp 1647612247
+transform 1 0 790 0 1 268
+box -424 -266 424 266
+use sky130_fd_pr__pfet_g5v0d10v5_TCBS39  sky130_fd_pr__pfet_g5v0d10v5_TCBS39_0
+timestamp 1647612247
+transform 1 0 -1924 0 1 268
+box -174 -166 174 166
+use sky130_fd_pr__pfet_g5v0d10v5_2PVZVF  sky130_fd_pr__pfet_g5v0d10v5_2PVZVF_0
+timestamp 1647612247
+transform 1 0 -544 0 1 268
+box -174 -266 174 266
+<< labels >>
+rlabel metal1 -806 520 -694 562 1 vd
+port 2 n analog bidirectional
+rlabel viali -456 542 -336 576 1 vsource
+port 3 n analog bidirectional
+rlabel metal1 -2192 546 -2070 570 1 vtun
+port 1 n analog bidirectional
+rlabel viali 1174 542 1266 580 1 vin
+port 4 n analog bidirectional
+<< end >>
diff --git a/mag/sky130_fd_pr__pfet_01v8_2PVZVF.mag b/mag/sky130_fd_pr__pfet_01v8_2PVZVF.mag
new file mode 100644
index 0000000..0a50536
--- /dev/null
+++ b/mag/sky130_fd_pr__pfet_01v8_2PVZVF.mag
@@ -0,0 +1,44 @@
+magic
+tech sky130B
+timestamp 1647287303
+<< nwell >>
+rect -72 -131 72 131
+<< pmos >>
+rect -25 -100 25 100
+<< pdiff >>
+rect -54 94 -25 100
+rect -54 -94 -48 94
+rect -31 -94 -25 94
+rect -54 -100 -25 -94
+rect 25 94 54 100
+rect 25 -94 31 94
+rect 48 -94 54 94
+rect 25 -100 54 -94
+<< pdiffc >>
+rect -48 -94 -31 94
+rect 31 -94 48 94
+<< poly >>
+rect -25 100 25 113
+rect -25 -113 25 -100
+<< locali >>
+rect -48 94 -31 102
+rect -48 -102 -31 -94
+rect 31 94 48 102
+rect 31 -102 48 -94
+<< viali >>
+rect -48 -94 -31 94
+rect 31 -94 48 94
+<< metal1 >>
+rect -51 94 -28 100
+rect -51 -94 -48 94
+rect -31 -94 -28 94
+rect -51 -100 -28 -94
+rect 28 94 51 100
+rect 28 -94 31 94
+rect 48 -94 51 94
+rect 28 -100 51 -94
+<< properties >>
+string gencell sky130_fd_pr__pfet_01v8
+string parameters w 2 l 0.5 m 1 nf 1 diffcov 100 polycov 100 guard 0 glc 0 grc 0 gtc 0 gbc 0 tbcov 100 rlcov 100 topc 0 botc 0 poverlap 0 doverlap 1 lmin 0.15 wmin 0.42 compatible {sky130_fd_pr__pfet_01v8  sky130_fd_pr__pfet_01v8_lvt sky130_fd_pr__pfet_01v8_hvt  sky130_fd_pr__pfet_g5v0d10v5} full_metal 0 viasrc 100 viadrn 100 viagate 100 viagb 0 viagr 0 viagl 0 viagt 0
+string library sky130
+<< end >>
diff --git a/mag/sky130_fd_pr__pfet_g5v0d10v5_2PVZVF.mag b/mag/sky130_fd_pr__pfet_g5v0d10v5_2PVZVF.mag
new file mode 100644
index 0000000..4679e8d
--- /dev/null
+++ b/mag/sky130_fd_pr__pfet_g5v0d10v5_2PVZVF.mag
@@ -0,0 +1,53 @@
+magic
+tech sky130B
+timestamp 1647292059
+<< error_p >>
+rect -87 131 87 133
+rect -87 -131 -72 131
+rect -54 98 54 100
+rect -54 -98 -39 98
+rect 39 -98 54 98
+rect -54 -100 54 -98
+rect 72 -131 87 131
+rect -87 -133 87 -131
+<< nwell >>
+rect -72 -131 72 131
+<< mvpmos >>
+rect -25 -100 25 100
+<< mvpdiff >>
+rect -54 94 -25 100
+rect -54 -94 -48 94
+rect -31 -94 -25 94
+rect -54 -100 -25 -94
+rect 25 94 54 100
+rect 25 -94 31 94
+rect 48 -94 54 94
+rect 25 -100 54 -94
+<< mvpdiffc >>
+rect -48 -94 -31 94
+rect 31 -94 48 94
+<< poly >>
+rect -25 100 25 113
+rect -25 -113 25 -100
+<< locali >>
+rect -48 94 -31 102
+rect -48 -102 -31 -94
+rect 31 94 48 102
+rect 31 -102 48 -94
+<< viali >>
+rect -48 -94 -31 94
+rect 31 -94 48 94
+<< metal1 >>
+rect -51 94 -28 100
+rect -51 -94 -48 94
+rect -31 -94 -28 94
+rect -51 -100 -28 -94
+rect 28 94 51 100
+rect 28 -94 31 94
+rect 48 -94 51 94
+rect 28 -100 51 -94
+<< properties >>
+string gencell sky130_fd_pr__pfet_g5v0d10v5
+string parameters w 2 l 0.5 m 1 nf 1 diffcov 100 polycov 100 guard 0 glc 0 grc 0 gtc 0 gbc 0 tbcov 100 rlcov 100 topc 0 botc 0 poverlap 0 doverlap 1 lmin 0.15 wmin 0.42 compatible {sky130_fd_pr__pfet_01v8  sky130_fd_pr__pfet_01v8_lvt sky130_fd_pr__pfet_01v8_hvt  sky130_fd_pr__pfet_g5v0d10v5} full_metal 0 viasrc 100 viadrn 100 viagate 100 viagb 0 viagr 0 viagl 0 viagt 0
+string library sky130
+<< end >>
diff --git a/mag/sky130_fd_pr__pfet_g5v0d10v5_AJQB7U.mag b/mag/sky130_fd_pr__pfet_g5v0d10v5_AJQB7U.mag
new file mode 100644
index 0000000..0124360
--- /dev/null
+++ b/mag/sky130_fd_pr__pfet_g5v0d10v5_AJQB7U.mag
@@ -0,0 +1,99 @@
+magic
+tech sky130B
+magscale 1 2
+timestamp 1647221299
+<< nwell >>
+rect -308 -397 308 397
+<< mvpmos >>
+rect -50 -100 50 100
+<< mvpdiff >>
+rect -108 88 -50 100
+rect -108 -88 -96 88
+rect -62 -88 -50 88
+rect -108 -100 -50 -88
+rect 50 88 108 100
+rect 50 -88 62 88
+rect 96 -88 108 88
+rect 50 -100 108 -88
+<< mvpdiffc >>
+rect -96 -88 -62 88
+rect 62 -88 96 88
+<< mvnsubdiff >>
+rect -242 319 242 331
+rect -242 285 -134 319
+rect 134 285 242 319
+rect -242 273 242 285
+rect -242 223 -184 273
+rect -242 -223 -230 223
+rect -196 -223 -184 223
+rect 184 223 242 273
+rect -242 -273 -184 -223
+rect 184 -223 196 223
+rect 230 -223 242 223
+rect 184 -273 242 -223
+rect -242 -285 242 -273
+rect -242 -319 -134 -285
+rect 134 -319 242 -285
+rect -242 -331 242 -319
+<< mvnsubdiffcont >>
+rect -134 285 134 319
+rect -230 -223 -196 223
+rect 196 -223 230 223
+rect -134 -319 134 -285
+<< poly >>
+rect -50 181 50 197
+rect -50 147 -34 181
+rect 34 147 50 181
+rect -50 100 50 147
+rect -50 -147 50 -100
+rect -50 -181 -34 -147
+rect 34 -181 50 -147
+rect -50 -197 50 -181
+<< polycont >>
+rect -34 147 34 181
+rect -34 -181 34 -147
+<< locali >>
+rect -230 285 -134 319
+rect 134 285 230 319
+rect -230 223 -196 285
+rect 196 223 230 285
+rect -50 147 -34 181
+rect 34 147 50 181
+rect -96 88 -62 104
+rect -96 -104 -62 -88
+rect 62 88 96 104
+rect 62 -104 96 -88
+rect -50 -181 -34 -147
+rect 34 -181 50 -147
+rect -230 -285 -196 -223
+rect 196 -285 230 -223
+rect -230 -319 -134 -285
+rect 134 -319 230 -285
+<< viali >>
+rect -34 147 34 181
+rect -96 -88 -62 88
+rect 62 -88 96 88
+rect -34 -181 34 -147
+<< metal1 >>
+rect -46 181 46 187
+rect -46 147 -34 181
+rect 34 147 46 181
+rect -46 141 46 147
+rect -102 88 -56 100
+rect -102 -88 -96 88
+rect -62 -88 -56 88
+rect -102 -100 -56 -88
+rect 56 88 102 100
+rect 56 -88 62 88
+rect 96 -88 102 88
+rect 56 -100 102 -88
+rect -46 -147 46 -141
+rect -46 -181 -34 -147
+rect 34 -181 46 -147
+rect -46 -187 46 -181
+<< properties >>
+string gencell sky130_fd_pr__pfet_g5v0d10v5
+string FIXED_BBOX -213 -302 213 302
+string parameters w 1 l 0.50 m 1 nf 1 diffcov 100 polycov 100 guard 1 glc 1 grc 1 gtc 1 gbc 1 tbcov 100 rlcov 100 topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.50 wmin 0.42 compatible {sky130_fd_pr__pfet_01v8  sky130_fd_pr__pfet_01v8_lvt sky130_fd_pr__pfet_01v8_hvt  sky130_fd_pr__pfet_g5v0d10v5} full_metal 1 viasrc 100 viadrn 100 viagate 100 viagb 0 viagr 0 viagl 0 viagt 0
+string library sky130
+<< end >>
diff --git a/mag/sky130_fd_pr__pfet_g5v0d10v5_AU6ZHA.mag b/mag/sky130_fd_pr__pfet_g5v0d10v5_AU6ZHA.mag
new file mode 100644
index 0000000..5ce0908
--- /dev/null
+++ b/mag/sky130_fd_pr__pfet_g5v0d10v5_AU6ZHA.mag
@@ -0,0 +1,53 @@
+magic
+tech sky130B
+timestamp 1647224113
+<< error_p >>
+rect -87 281 87 283
+rect -87 -281 -72 281
+rect -54 248 54 250
+rect -54 -248 -39 248
+rect 39 -248 54 248
+rect -54 -250 54 -248
+rect 72 -281 87 281
+rect -87 -283 87 -281
+<< nwell >>
+rect -72 -281 72 281
+<< mvpmos >>
+rect -25 -250 25 250
+<< mvpdiff >>
+rect -54 244 -25 250
+rect -54 -244 -48 244
+rect -31 -244 -25 244
+rect -54 -250 -25 -244
+rect 25 244 54 250
+rect 25 -244 31 244
+rect 48 -244 54 244
+rect 25 -250 54 -244
+<< mvpdiffc >>
+rect -48 -244 -31 244
+rect 31 -244 48 244
+<< poly >>
+rect -25 250 25 263
+rect -25 -263 25 -250
+<< locali >>
+rect -48 244 -31 252
+rect -48 -252 -31 -244
+rect 31 244 48 252
+rect 31 -252 48 -244
+<< viali >>
+rect -48 -244 -31 244
+rect 31 -244 48 244
+<< metal1 >>
+rect -51 244 -28 250
+rect -51 -244 -48 244
+rect -31 -244 -28 244
+rect -51 -250 -28 -244
+rect 28 244 51 250
+rect 28 -244 31 244
+rect 48 -244 51 244
+rect 28 -250 51 -244
+<< properties >>
+string gencell sky130_fd_pr__pfet_g5v0d10v5
+string parameters w 5 l 0.50 m 1 nf 1 diffcov 100 polycov 100 guard 0 glc 0 grc 0 gtc 0 gbc 0 tbcov 100 rlcov 100 topc 0 botc 0 poverlap 0 doverlap 1 lmin 0.50 wmin 0.42 compatible {sky130_fd_pr__pfet_01v8  sky130_fd_pr__pfet_01v8_lvt sky130_fd_pr__pfet_01v8_hvt  sky130_fd_pr__pfet_g5v0d10v5} full_metal 0 viasrc 100 viadrn 100 viagate 100 viagb 0 viagr 0 viagl 0 viagt 0
+string library sky130
+<< end >>
diff --git a/mag/sky130_fd_pr__pfet_g5v0d10v5_CN3LVD.mag b/mag/sky130_fd_pr__pfet_g5v0d10v5_CN3LVD.mag
new file mode 100644
index 0000000..baeb327
--- /dev/null
+++ b/mag/sky130_fd_pr__pfet_g5v0d10v5_CN3LVD.mag
@@ -0,0 +1,73 @@
+magic
+tech sky130B
+magscale 1 2
+timestamp 1647221299
+<< error_p >>
+rect -174 -166 -144 166
+rect -108 -100 -78 100
+rect 78 -100 108 100
+rect 144 -166 174 166
+<< nwell >>
+rect -144 -200 144 200
+<< mvpmos >>
+rect -50 -100 50 100
+<< mvpdiff >>
+rect -108 88 -50 100
+rect -108 -88 -96 88
+rect -62 -88 -50 88
+rect -108 -100 -50 -88
+rect 50 88 108 100
+rect 50 -88 62 88
+rect 96 -88 108 88
+rect 50 -100 108 -88
+<< mvpdiffc >>
+rect -96 -88 -62 88
+rect 62 -88 96 88
+<< poly >>
+rect -50 181 50 197
+rect -50 147 -34 181
+rect 34 147 50 181
+rect -50 100 50 147
+rect -50 -147 50 -100
+rect -50 -181 -34 -147
+rect 34 -181 50 -147
+rect -50 -197 50 -181
+<< polycont >>
+rect -34 147 34 181
+rect -34 -181 34 -147
+<< locali >>
+rect -50 147 -34 181
+rect 34 147 50 181
+rect -96 88 -62 104
+rect -96 -104 -62 -88
+rect 62 88 96 104
+rect 62 -104 96 -88
+rect -50 -181 -34 -147
+rect 34 -181 50 -147
+<< viali >>
+rect -34 147 34 181
+rect -96 -88 -62 88
+rect 62 -88 96 88
+rect -34 -181 34 -147
+<< metal1 >>
+rect -46 181 46 187
+rect -46 147 -34 181
+rect 34 147 46 181
+rect -46 141 46 147
+rect -102 88 -56 100
+rect -102 -88 -96 88
+rect -62 -88 -56 88
+rect -102 -100 -56 -88
+rect 56 88 102 100
+rect 56 -88 62 88
+rect 96 -88 102 88
+rect 56 -100 102 -88
+rect -46 -147 46 -141
+rect -46 -181 -34 -147
+rect 34 -181 46 -147
+rect -46 -187 46 -181
+<< properties >>
+string gencell sky130_fd_pr__pfet_g5v0d10v5
+string parameters w 1 l 0.5 m 1 nf 1 diffcov 100 polycov 100 guard 0 glc 0 grc 0 gtc 0 gbc 0 tbcov 100 rlcov 100 topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.50 wmin 0.42 compatible {sky130_fd_pr__pfet_01v8  sky130_fd_pr__pfet_01v8_lvt sky130_fd_pr__pfet_01v8_hvt  sky130_fd_pr__pfet_g5v0d10v5} full_metal 0 viasrc 100 viadrn 100 viagate 100 viagb 0 viagr 0 viagl 0 viagt 0
+string library sky130
+<< end >>
diff --git a/mag/sky130_fd_pr__pfet_g5v0d10v5_NCVKVF.mag b/mag/sky130_fd_pr__pfet_g5v0d10v5_NCVKVF.mag
new file mode 100644
index 0000000..1bd389b
--- /dev/null
+++ b/mag/sky130_fd_pr__pfet_g5v0d10v5_NCVKVF.mag
@@ -0,0 +1,53 @@
+magic
+tech sky130B
+timestamp 1647224113
+<< error_p >>
+rect -87 131 87 133
+rect -87 -131 -72 131
+rect -54 98 54 100
+rect -54 -98 -39 98
+rect 39 -98 54 98
+rect -54 -100 54 -98
+rect 72 -131 87 131
+rect -87 -133 87 -131
+<< nwell >>
+rect -72 -131 72 131
+<< mvpmos >>
+rect -25 -100 25 100
+<< mvpdiff >>
+rect -54 94 -25 100
+rect -54 -94 -48 94
+rect -31 -94 -25 94
+rect -54 -100 -25 -94
+rect 25 94 54 100
+rect 25 -94 31 94
+rect 48 -94 54 94
+rect 25 -100 54 -94
+<< mvpdiffc >>
+rect -48 -94 -31 94
+rect 31 -94 48 94
+<< poly >>
+rect -25 100 25 113
+rect -25 -113 25 -100
+<< locali >>
+rect -48 94 -31 102
+rect -48 -102 -31 -94
+rect 31 94 48 102
+rect 31 -102 48 -94
+<< viali >>
+rect -48 -94 -31 94
+rect 31 -94 48 94
+<< metal1 >>
+rect -51 94 -28 100
+rect -51 -94 -48 94
+rect -31 -94 -28 94
+rect -51 -100 -28 -94
+rect 28 94 51 100
+rect 28 -94 31 94
+rect 48 -94 51 94
+rect 28 -100 51 -94
+<< properties >>
+string gencell sky130_fd_pr__pfet_g5v0d10v5
+string parameters w 2 l 0.5 m 1 nf 1 diffcov 100 polycov 100 guard 0 glc 0 grc 0 gtc 0 gbc 0 tbcov 100 rlcov 100 topc 0 botc 0 poverlap 0 doverlap 1 lmin 0.50 wmin 0.42 compatible {sky130_fd_pr__pfet_01v8  sky130_fd_pr__pfet_01v8_lvt sky130_fd_pr__pfet_01v8_hvt  sky130_fd_pr__pfet_g5v0d10v5} full_metal 0 viasrc 100 viadrn 100 viagate 100 viagb 0 viagr 0 viagl 0 viagt 0
+string library sky130
+<< end >>
diff --git a/mag/sky130_fd_pr__pfet_g5v0d10v5_SCVKVF.mag b/mag/sky130_fd_pr__pfet_g5v0d10v5_SCVKVF.mag
new file mode 100644
index 0000000..2faef4a
--- /dev/null
+++ b/mag/sky130_fd_pr__pfet_g5v0d10v5_SCVKVF.mag
@@ -0,0 +1,53 @@
+magic
+tech sky130B
+timestamp 1647221806
+<< error_p >>
+rect -87 81 87 83
+rect -87 -81 -72 81
+rect -54 48 54 50
+rect -54 -48 -39 48
+rect 39 -48 54 48
+rect -54 -50 54 -48
+rect 72 -81 87 81
+rect -87 -83 87 -81
+<< nwell >>
+rect -72 -81 72 81
+<< mvpmos >>
+rect -25 -50 25 50
+<< mvpdiff >>
+rect -54 44 -25 50
+rect -54 -44 -48 44
+rect -31 -44 -25 44
+rect -54 -50 -25 -44
+rect 25 44 54 50
+rect 25 -44 31 44
+rect 48 -44 54 44
+rect 25 -50 54 -44
+<< mvpdiffc >>
+rect -48 -44 -31 44
+rect 31 -44 48 44
+<< poly >>
+rect -25 50 25 63
+rect -25 -63 25 -50
+<< locali >>
+rect -48 44 -31 52
+rect -48 -52 -31 -44
+rect 31 44 48 52
+rect 31 -52 48 -44
+<< viali >>
+rect -48 -44 -31 44
+rect 31 -44 48 44
+<< metal1 >>
+rect -51 44 -28 50
+rect -51 -44 -48 44
+rect -31 -44 -28 44
+rect -51 -50 -28 -44
+rect 28 44 51 50
+rect 28 -44 31 44
+rect 48 -44 51 44
+rect 28 -50 51 -44
+<< properties >>
+string gencell sky130_fd_pr__pfet_g5v0d10v5
+string parameters w 1 l 0.5 m 1 nf 1 diffcov 100 polycov 100 guard 0 glc 0 grc 0 gtc 0 gbc 0 tbcov 100 rlcov 100 topc 0 botc 0 poverlap 0 doverlap 1 lmin 0.50 wmin 0.42 compatible {sky130_fd_pr__pfet_01v8  sky130_fd_pr__pfet_01v8_lvt sky130_fd_pr__pfet_01v8_hvt  sky130_fd_pr__pfet_g5v0d10v5} full_metal 0 viasrc 100 viadrn 100 viagate 100 viagb 0 viagr 0 viagl 0 viagt 0
+string library sky130
+<< end >>
diff --git a/mag/sky130_fd_pr__pfet_g5v0d10v5_TCBS39.mag b/mag/sky130_fd_pr__pfet_g5v0d10v5_TCBS39.mag
new file mode 100644
index 0000000..b89c0f9
--- /dev/null
+++ b/mag/sky130_fd_pr__pfet_g5v0d10v5_TCBS39.mag
@@ -0,0 +1,53 @@
+magic
+tech sky130B
+timestamp 1647289276
+<< error_p >>
+rect -87 81 87 83
+rect -87 -81 -72 81
+rect -54 48 54 50
+rect -54 -48 -39 48
+rect 39 -48 54 48
+rect -54 -50 54 -48
+rect 72 -81 87 81
+rect -87 -83 87 -81
+<< nwell >>
+rect -72 -81 72 81
+<< mvpmos >>
+rect -25 -50 25 50
+<< mvpdiff >>
+rect -54 44 -25 50
+rect -54 -44 -48 44
+rect -31 -44 -25 44
+rect -54 -50 -25 -44
+rect 25 44 54 50
+rect 25 -44 31 44
+rect 48 -44 54 44
+rect 25 -50 54 -44
+<< mvpdiffc >>
+rect -48 -44 -31 44
+rect 31 -44 48 44
+<< poly >>
+rect -25 50 25 63
+rect -25 -63 25 -50
+<< locali >>
+rect -48 44 -31 52
+rect -48 -52 -31 -44
+rect 31 44 48 52
+rect 31 -52 48 -44
+<< viali >>
+rect -48 -44 -31 44
+rect 31 -44 48 44
+<< metal1 >>
+rect -51 44 -28 50
+rect -51 -44 -48 44
+rect -31 -44 -28 44
+rect -51 -50 -28 -44
+rect 28 44 51 50
+rect 28 -44 31 44
+rect 48 -44 51 44
+rect 28 -50 51 -44
+<< properties >>
+string gencell sky130_fd_pr__pfet_g5v0d10v5
+string parameters w 1 l 0.50 m 1 nf 1 diffcov 100 polycov 100 guard 0 glc 0 grc 0 gtc 0 gbc 0 tbcov 100 rlcov 100 topc 0 botc 0 poverlap 0 doverlap 0 lmin 0.50 wmin 0.42 compatible {sky130_fd_pr__pfet_01v8  sky130_fd_pr__pfet_01v8_lvt sky130_fd_pr__pfet_01v8_hvt  sky130_fd_pr__pfet_g5v0d10v5} full_metal 0 viasrc 100 viadrn 100 viagate 100 viagb 0 viagr 0 viagl 0 viagt 0
+string library sky130
+<< end >>
diff --git a/mag/sky130_fd_pr__pfet_g5v0d10v5_XFUK3A.mag b/mag/sky130_fd_pr__pfet_g5v0d10v5_XFUK3A.mag
new file mode 100644
index 0000000..e367641
--- /dev/null
+++ b/mag/sky130_fd_pr__pfet_g5v0d10v5_XFUK3A.mag
@@ -0,0 +1,53 @@
+magic
+tech sky130B
+timestamp 1647286562
+<< error_p >>
+rect -212 131 212 133
+rect -212 -131 -197 131
+rect -179 98 179 100
+rect -179 -98 -164 98
+rect 164 -98 179 98
+rect -179 -100 179 -98
+rect 197 -131 212 131
+rect -212 -133 212 -131
+<< nwell >>
+rect -197 -131 197 131
+<< mvpmos >>
+rect -150 -100 150 100
+<< mvpdiff >>
+rect -179 94 -150 100
+rect -179 -94 -173 94
+rect -156 -94 -150 94
+rect -179 -100 -150 -94
+rect 150 94 179 100
+rect 150 -94 156 94
+rect 173 -94 179 94
+rect 150 -100 179 -94
+<< mvpdiffc >>
+rect -173 -94 -156 94
+rect 156 -94 173 94
+<< poly >>
+rect -150 100 150 113
+rect -150 -113 150 -100
+<< locali >>
+rect -173 94 -156 102
+rect -173 -102 -156 -94
+rect 156 94 173 102
+rect 156 -102 173 -94
+<< viali >>
+rect -173 -94 -156 94
+rect 156 -94 173 94
+<< metal1 >>
+rect -176 94 -153 100
+rect -176 -94 -173 94
+rect -156 -94 -153 94
+rect -176 -100 -153 -94
+rect 153 94 176 100
+rect 153 -94 156 94
+rect 173 -94 176 94
+rect 153 -100 176 -94
+<< properties >>
+string gencell sky130_fd_pr__pfet_g5v0d10v5
+string parameters w 2 l 3 m 1 nf 1 diffcov 100 polycov 100 guard 0 glc 0 grc 1 gtc 0 gbc 0 tbcov 100 rlcov 100 topc 0 botc 0 poverlap 0 doverlap 1 lmin 0.50 wmin 0.42 compatible {sky130_fd_pr__pfet_01v8  sky130_fd_pr__pfet_01v8_lvt sky130_fd_pr__pfet_01v8_hvt  sky130_fd_pr__pfet_g5v0d10v5} full_metal 0 viasrc 100 viadrn 100 viagate 100 viagb 0 viagr 0 viagl 0 viagt 0
+string library sky130
+<< end >>
diff --git a/mag/sky130_fd_pr__pfet_g5v0d10v5_XH3L3A.mag b/mag/sky130_fd_pr__pfet_g5v0d10v5_XH3L3A.mag
new file mode 100644
index 0000000..7f484a1
--- /dev/null
+++ b/mag/sky130_fd_pr__pfet_g5v0d10v5_XH3L3A.mag
@@ -0,0 +1,53 @@
+magic
+tech sky130B
+timestamp 1647286248
+<< error_p >>
+rect -212 131 212 133
+rect -212 -131 -197 131
+rect -179 98 179 100
+rect -179 -98 -164 98
+rect 164 -98 179 98
+rect -179 -100 179 -98
+rect 197 -131 212 131
+rect -212 -133 212 -131
+<< nwell >>
+rect -197 -131 197 131
+<< mvpmos >>
+rect -150 -100 150 100
+<< mvpdiff >>
+rect -179 94 -150 100
+rect -179 -94 -173 94
+rect -156 -94 -150 94
+rect -179 -100 -150 -94
+rect 150 94 179 100
+rect 150 -94 156 94
+rect 173 -94 179 94
+rect 150 -100 179 -94
+<< mvpdiffc >>
+rect -173 -94 -156 94
+rect 156 -94 173 94
+<< poly >>
+rect -150 100 150 113
+rect -150 -113 150 -100
+<< locali >>
+rect -173 94 -156 102
+rect -173 -102 -156 -94
+rect 156 94 173 102
+rect 156 -102 173 -94
+<< viali >>
+rect -173 -94 -156 94
+rect 156 -94 173 94
+<< metal1 >>
+rect -176 94 -153 100
+rect -176 -94 -173 94
+rect -156 -94 -153 94
+rect -176 -100 -153 -94
+rect 153 94 176 100
+rect 153 -94 156 94
+rect 173 -94 176 94
+rect 153 -100 176 -94
+<< properties >>
+string gencell sky130_fd_pr__pfet_g5v0d10v5
+string parameters w 2 l 3 m 1 nf 1 diffcov 100 polycov 100 guard 0 glc 0 grc 0 gtc 0 gbc 0 tbcov 100 rlcov 100 topc 0 botc 0 poverlap 0 doverlap 1 lmin 0.50 wmin 0.42 compatible {sky130_fd_pr__pfet_01v8  sky130_fd_pr__pfet_01v8_lvt sky130_fd_pr__pfet_01v8_hvt  sky130_fd_pr__pfet_g5v0d10v5} full_metal 0 viasrc 100 viadrn 100 viagate 100 viagb 0 viagr 0 viagl 0 viagt 0
+string library sky130
+<< end >>
diff --git a/mag/user_analog_project_wrapper.mag b/mag/user_analog_project_wrapper.mag
index 25451f5..ec9a22e 100644
--- a/mag/user_analog_project_wrapper.mag
+++ b/mag/user_analog_project_wrapper.mag
@@ -1,14 +1,13 @@
 magic
 tech sky130B
 magscale 1 2
-timestamp 1647621433
+timestamp 1647626244
 << nwell >>
 rect 208506 659508 209222 659758
 rect 212242 659754 212610 659980
 rect 215856 659510 216566 659754
 rect 218716 659690 219084 659992
 << pwell >>
-rect 562058 685450 562858 686250
 rect 208500 659122 209492 659384
 rect 212290 658864 212696 659268
 rect 215704 659220 216660 659394
@@ -58,14 +57,27 @@
 rect 218818 659840 218994 659930
 rect 216094 659610 216342 659650
 << poly >>
-rect 213898 659600 213984 659910
-rect 213882 658944 213998 659266
+rect 213898 659878 213984 659910
+rect 213898 659826 213908 659878
+rect 213974 659826 213984 659878
+rect 213898 659600 213984 659826
+rect 213882 659056 213998 659266
+rect 213882 658982 213902 659056
+rect 213982 658982 213998 659056
+rect 213882 658944 213998 658982
+<< polycont >>
+rect 213908 659826 213974 659878
+rect 213902 658982 213982 659056
 << locali >>
 rect 212296 659920 212574 659944
 rect 212296 659828 212344 659920
 rect 212522 659828 212574 659920
 rect 218770 659932 219048 659956
 rect 212296 659794 212574 659828
+rect 213898 659878 213990 659894
+rect 213898 659826 213906 659878
+rect 213974 659826 213990 659878
+rect 213898 659810 213990 659826
 rect 218770 659840 218818 659932
 rect 218996 659840 219048 659932
 rect 218770 659806 219048 659840
@@ -103,6 +115,10 @@
 rect 212316 658986 212384 659040
 rect 212592 658986 212682 659040
 rect 212316 658930 212682 658986
+rect 213886 659056 213998 659072
+rect 213886 658982 213902 659056
+rect 213982 658982 213998 659056
+rect 213886 658966 213998 658982
 rect 218946 659012 219312 659186
 rect 218946 658958 219014 659012
 rect 219222 658958 219312 659012
@@ -113,7 +129,8 @@
 rect 212344 659918 212522 659920
 rect 212344 659828 212520 659918
 rect 212520 659828 212522 659918
-rect 213906 659826 213974 659878
+rect 213906 659826 213908 659878
+rect 213908 659826 213974 659878
 rect 218818 659930 218996 659932
 rect 218818 659840 218994 659930
 rect 218994 659840 218996 659930
@@ -253,6 +270,7 @@
 rect 51446 666332 51700 666500
 rect 43042 663434 43190 663602
 rect 56256 663434 56376 663594
+rect 213908 659826 213974 659878
 rect 213902 658982 213982 659056
 rect 51858 657502 51982 657600
 rect 216126 641864 216292 642588
@@ -369,7 +387,10 @@
 rect 56246 663434 56256 663594
 rect 56376 663434 56386 663594
 rect 56246 663424 56386 663434
-rect 213548 659820 213986 659884
+rect 213548 659878 213986 659884
+rect 213548 659826 213908 659878
+rect 213974 659826 213986 659878
+rect 213548 659820 213986 659826
 rect 51838 657602 52004 657616
 rect 51838 657502 51856 657602
 rect 51982 657502 52004 657602
@@ -947,10 +968,8 @@
 rect 583534 583576 583636 583660
 rect 360 468320 462 468404
 << metal3 >>
-rect 16194 704789 21194 704800
-rect 16193 702300 21194 704789
-rect 68194 704458 73194 704800
-rect 68194 702300 73195 704458
+rect 16194 702300 21194 704800
+rect 68194 702300 73194 704800
 rect 120194 703270 125194 704800
 rect 120194 702570 122338 703270
 rect 123038 702570 125194 703270
@@ -987,7 +1006,8 @@
 rect 566594 702550 568942 702900
 rect 569254 702550 571594 702900
 rect 566594 702300 571594 702550
-rect 16193 695290 21193 702300
+rect 16194 702298 21193 702300
+rect 16193 695290 21193 702298
 rect 16193 690290 54418 695290
 rect 68196 695160 73195 702300
 rect 165596 701002 170590 702300
@@ -1248,7 +1268,7 @@
 rect 584000 0 584100 704000
 rect -100 -100 584100 0
 use FG_pfet  FG_pfet_0
-timestamp 1647621433
+timestamp 1647625697
 transform 1 0 52313 0 1 660624
 box -2563 -40 1390 600
 use sky130_sc_ams__ota_1  sky130_sc_ams__ota_1_1
diff --git a/netgen/user_analog_project_wrapper.spice b/netgen/user_analog_project_wrapper.spice
index 3490336..90aae55 100644
--- a/netgen/user_analog_project_wrapper.spice
+++ b/netgen/user_analog_project_wrapper.spice
@@ -1,70 +1,100 @@
+** sch_path: /home/carl/IC/caravel_user_project_analog/xschem/sky130_tests/top.sch
+**.subckt top
+* expanding   symbol:  user_analog_project_wrapper.sym # of pins=32
+** sym_path: /home/carl/IC/caravel_user_project_analog/xschem/user_analog_project_wrapper.sym
 ** sch_path: /home/carl/IC/caravel_user_project_analog/xschem/user_analog_project_wrapper.sch
-**.subckt user_analog_project_wrapper vdda1 vdda2 vssa1 vssa2 vccd1 vccd2 vssd1 vssd2 wb_clk_i
-*+ wb_rst_i wbs_stb_i wbs_cyc_i wbs_we_i wbs_sel_i[3],wbs_sel_i[2],wbs_sel_i[1],wbs_sel_i[0]
-*+ wbs_dat_i[31],wbs_dat_i[30],wbs_dat_i[29],wbs_dat_i[28],wbs_dat_i[27],wbs_dat_i[26],wbs_dat_i[25],wbs_dat_i[24],wbs_dat_i[23],wbs_dat_i[22],wbs_dat_i[21],wbs_dat_i[20],wbs_dat_i[19],wbs_dat_i[18],wbs_dat_i[17],wbs_dat_i[16],wbs_dat_i[15],wbs_dat_i[14],wbs_dat_i[13],wbs_dat_i[12],wbs_dat_i[11],wbs_dat_i[10],wbs_dat_i[9],wbs_dat_i[8],wbs_dat_i[7],wbs_dat_i[6],wbs_dat_i[5],wbs_dat_i[4],wbs_dat_i[3],wbs_dat_i[2],wbs_dat_i[1],wbs_dat_i[0]
-*+ wbs_adr_i[31],wbs_adr_i[30],wbs_adr_i[29],wbs_adr_i[28],wbs_adr_i[27],wbs_adr_i[26],wbs_adr_i[25],wbs_adr_i[24],wbs_adr_i[23],wbs_adr_i[22],wbs_adr_i[21],wbs_adr_i[20],wbs_adr_i[19],wbs_adr_i[18],wbs_adr_i[17],wbs_adr_i[16],wbs_adr_i[15],wbs_adr_i[14],wbs_adr_i[13],wbs_adr_i[12],wbs_adr_i[11],wbs_adr_i[10],wbs_adr_i[9],wbs_adr_i[8],wbs_adr_i[7],wbs_adr_i[6],wbs_adr_i[5],wbs_adr_i[4],wbs_adr_i[3],wbs_adr_i[2],wbs_adr_i[1],wbs_adr_i[0] wbs_ack_o
-*+ wbs_dat_o[31],wbs_dat_o[30],wbs_dat_o[29],wbs_dat_o[28],wbs_dat_o[27],wbs_dat_o[26],wbs_dat_o[25],wbs_dat_o[24],wbs_dat_o[23],wbs_dat_o[22],wbs_dat_o[21],wbs_dat_o[20],wbs_dat_o[19],wbs_dat_o[18],wbs_dat_o[17],wbs_dat_o[16],wbs_dat_o[15],wbs_dat_o[14],wbs_dat_o[13],wbs_dat_o[12],wbs_dat_o[11],wbs_dat_o[10],wbs_dat_o[9],wbs_dat_o[8],wbs_dat_o[7],wbs_dat_o[6],wbs_dat_o[5],wbs_dat_o[4],wbs_dat_o[3],wbs_dat_o[2],wbs_dat_o[1],wbs_dat_o[0]
-*+ la_data_in[127],la_data_in[126],la_data_in[125],la_data_in[124],la_data_in[123],la_data_in[122],la_data_in[121],la_data_in[120],la_data_in[119],la_data_in[118],la_data_in[117],la_data_in[116],la_data_in[115],la_data_in[114],la_data_in[113],la_data_in[112],la_data_in[111],la_data_in[110],la_data_in[109],la_data_in[108],la_data_in[107],la_data_in[106],la_data_in[105],la_data_in[104],la_data_in[103],la_data_in[102],la_data_in[101],la_data_in[100],la_data_in[99],la_data_in[98],la_data_in[97],la_data_in[96],la_data_in[95],la_data_in[94],la_data_in[93],la_data_in[92],la_data_in[91],la_data_in[90],la_data_in[89],la_data_in[88],la_data_in[87],la_data_in[86],la_data_in[85],la_data_in[84],la_data_in[83],la_data_in[82],la_data_in[81],la_data_in[80],la_data_in[79],la_data_in[78],la_data_in[77],la_data_in[76],la_data_in[75],la_data_in[74],la_data_in[73],la_data_in[72],la_data_in[71],la_data_in[70],la_data_in[69],la_data_in[68],la_data_in[67],la_data_in[66],la_data_in[65],la_data_in[64],la_data_in[63],la_data_in[62],la_data_in[61],la_data_in[60],la_data_in[59],la_data_in[58],la_data_in[57],la_data_in[56],la_data_in[55],la_data_in[54],la_data_in[53],la_data_in[52],la_data_in[51],la_data_in[50],la_data_in[49],la_data_in[48],la_data_in[47],la_data_in[46],la_data_in[45],la_data_in[44],la_data_in[43],la_data_in[42],la_data_in[41],la_data_in[40],la_data_in[39],la_data_in[38],la_data_in[37],la_data_in[36],la_data_in[35],la_data_in[34],la_data_in[33],la_data_in[32],la_data_in[31],la_data_in[30],la_data_in[29],la_data_in[28],la_data_in[27],la_data_in[26],la_data_in[25],la_data_in[24],la_data_in[23],la_data_in[22],la_data_in[21],la_data_in[20],la_data_in[19],la_data_in[18],la_data_in[17],la_data_in[16],la_data_in[15],la_data_in[14],la_data_in[13],la_data_in[12],la_data_in[11],la_data_in[10],la_data_in[9],la_data_in[8],la_data_in[7],la_data_in[6],la_data_in[5],la_data_in[4],la_data_in[3],la_data_in[2],la_data_in[1],la_data_in[0]
-*+ la_data_out[127],la_data_out[126],la_data_out[125],la_data_out[124],la_data_out[123],la_data_out[122],la_data_out[121],la_data_out[120],la_data_out[119],la_data_out[118],la_data_out[117],la_data_out[116],la_data_out[115],la_data_out[114],la_data_out[113],la_data_out[112],la_data_out[111],la_data_out[110],la_data_out[109],la_data_out[108],la_data_out[107],la_data_out[106],la_data_out[105],la_data_out[104],la_data_out[103],la_data_out[102],la_data_out[101],la_data_out[100],la_data_out[99],la_data_out[98],la_data_out[97],la_data_out[96],la_data_out[95],la_data_out[94],la_data_out[93],la_data_out[92],la_data_out[91],la_data_out[90],la_data_out[89],la_data_out[88],la_data_out[87],la_data_out[86],la_data_out[85],la_data_out[84],la_data_out[83],la_data_out[82],la_data_out[81],la_data_out[80],la_data_out[79],la_data_out[78],la_data_out[77],la_data_out[76],la_data_out[75],la_data_out[74],la_data_out[73],la_data_out[72],la_data_out[71],la_data_out[70],la_data_out[69],la_data_out[68],la_data_out[67],la_data_out[66],la_data_out[65],la_data_out[64],la_data_out[63],la_data_out[62],la_data_out[61],la_data_out[60],la_data_out[59],la_data_out[58],la_data_out[57],la_data_out[56],la_data_out[55],la_data_out[54],la_data_out[53],la_data_out[52],la_data_out[51],la_data_out[50],la_data_out[49],la_data_out[48],la_data_out[47],la_data_out[46],la_data_out[45],la_data_out[44],la_data_out[43],la_data_out[42],la_data_out[41],la_data_out[40],la_data_out[39],la_data_out[38],la_data_out[37],la_data_out[36],la_data_out[35],la_data_out[34],la_data_out[33],la_data_out[32],la_data_out[31],la_data_out[30],la_data_out[29],la_data_out[28],la_data_out[27],la_data_out[26],la_data_out[25],la_data_out[24],la_data_out[23],la_data_out[22],la_data_out[21],la_data_out[20],la_data_out[19],la_data_out[18],la_data_out[17],la_data_out[16],la_data_out[15],la_data_out[14],la_data_out[13],la_data_out[12],la_data_out[11],la_data_out[10],la_data_out[9],la_data_out[8],la_data_out[7],la_data_out[6],la_data_out[5],la_data_out[4],la_data_out[3],la_data_out[2],la_data_out[1],la_data_out[0]
-*+ io_in[26],io_in[25],io_in[24],io_in[23],io_in[22],io_in[21],io_in[20],io_in[19],io_in[18],io_in[17],io_in[16],io_in[15],io_in[14],io_in[13],io_in[12],io_in[11],io_in[10],io_in[9],io_in[8],io_in[7],io_in[6],io_in[5],io_in[4],io_in[3],io_in[2],io_in[1],io_in[0]
-*+ io_in_3v3[26],io_in_3v3[25],io_in_3v3[24],io_in_3v3[23],io_in_3v3[22],io_in_3v3[21],io_in_3v3[20],io_in_3v3[19],io_in_3v3[18],io_in_3v3[17],io_in_3v3[16],io_in_3v3[15],io_in_3v3[14],io_in_3v3[13],io_in_3v3[12],io_in_3v3[11],io_in_3v3[10],io_in_3v3[9],io_in_3v3[8],io_in_3v3[7],io_in_3v3[6],io_in_3v3[5],io_in_3v3[4],io_in_3v3[3],io_in_3v3[2],io_in_3v3[1],io_in_3v3[0] user_clock2
-*+ io_out[26],io_out[25],io_out[24],io_out[23],io_out[22],io_out[21],io_out[20],io_out[19],io_out[18],io_out[17],io_out[16],io_out[15],io_out[14],io_out[13],io_out[12],io_out[11],io_out[10],io_out[9],io_out[8],io_out[7],io_out[6],io_out[5],io_out[4],io_out[3],io_out[2],io_out[1],io_out[0]
-*+ io_oeb[26],io_oeb[25],io_oeb[24],io_oeb[23],io_oeb[22],io_oeb[21],io_oeb[20],io_oeb[19],io_oeb[18],io_oeb[17],io_oeb[16],io_oeb[15],io_oeb[14],io_oeb[13],io_oeb[12],io_oeb[11],io_oeb[10],io_oeb[9],io_oeb[8],io_oeb[7],io_oeb[6],io_oeb[5],io_oeb[4],io_oeb[3],io_oeb[2],io_oeb[1],io_oeb[0]
-*+ gpio_analog[17],gpio_analog[16],gpio_analog[15],gpio_analog[14],gpio_analog[13],gpio_analog[12],gpio_analog[11],gpio_analog[10],gpio_analog[9],gpio_analog[8],gpio_analog[7],gpio_analog[6],gpio_analog[5],gpio_analog[4],gpio_analog[3],gpio_analog[2],gpio_analog[1],gpio_analog[0]
-*+ gpio_noesd[17],gpio_noesd[16],gpio_noesd[15],gpio_noesd[14],gpio_noesd[13],gpio_noesd[12],gpio_noesd[11],gpio_noesd[10],gpio_noesd[9],gpio_noesd[8],gpio_noesd[7],gpio_noesd[6],gpio_noesd[5],gpio_noesd[4],gpio_noesd[3],gpio_noesd[2],gpio_noesd[1],gpio_noesd[0]
-*+ io_analog[10],io_analog[9],io_analog[8],io_analog[7],io_analog[6],io_analog[5],io_analog[4],io_analog[3],io_analog[2],io_analog[1],io_analog[0] io_clamp_high[2],io_clamp_high[1],io_clamp_high[0] io_clamp_low[2],io_clamp_low[1],io_clamp_low[0]
-*+ user_irq[2],user_irq[1],user_irq[0]
-*+ la_oenb[127],la_oenb[126],la_oenb[125],la_oenb[124],la_oenb[123],la_oenb[122],la_oenb[121],la_oenb[120],la_oenb[119],la_oenb[118],la_oenb[117],la_oenb[116],la_oenb[115],la_oenb[114],la_oenb[113],la_oenb[112],la_oenb[111],la_oenb[110],la_oenb[109],la_oenb[108],la_oenb[107],la_oenb[106],la_oenb[105],la_oenb[104],la_oenb[103],la_oenb[102],la_oenb[101],la_oenb[100],la_oenb[99],la_oenb[98],la_oenb[97],la_oenb[96],la_oenb[95],la_oenb[94],la_oenb[93],la_oenb[92],la_oenb[91],la_oenb[90],la_oenb[89],la_oenb[88],la_oenb[87],la_oenb[86],la_oenb[85],la_oenb[84],la_oenb[83],la_oenb[82],la_oenb[81],la_oenb[80],la_oenb[79],la_oenb[78],la_oenb[77],la_oenb[76],la_oenb[75],la_oenb[74],la_oenb[73],la_oenb[72],la_oenb[71],la_oenb[70],la_oenb[69],la_oenb[68],la_oenb[67],la_oenb[66],la_oenb[65],la_oenb[64],la_oenb[63],la_oenb[62],la_oenb[61],la_oenb[60],la_oenb[59],la_oenb[58],la_oenb[57],la_oenb[56],la_oenb[55],la_oenb[54],la_oenb[53],la_oenb[52],la_oenb[51],la_oenb[50],la_oenb[49],la_oenb[48],la_oenb[47],la_oenb[46],la_oenb[45],la_oenb[44],la_oenb[43],la_oenb[42],la_oenb[41],la_oenb[40],la_oenb[39],la_oenb[38],la_oenb[37],la_oenb[36],la_oenb[35],la_oenb[34],la_oenb[33],la_oenb[32],la_oenb[31],la_oenb[30],la_oenb[29],la_oenb[28],la_oenb[27],la_oenb[26],la_oenb[25],la_oenb[24],la_oenb[23],la_oenb[22],la_oenb[21],la_oenb[20],la_oenb[19],la_oenb[18],la_oenb[17],la_oenb[16],la_oenb[15],la_oenb[14],la_oenb[13],la_oenb[12],la_oenb[11],la_oenb[10],la_oenb[9],la_oenb[8],la_oenb[7],la_oenb[6],la_oenb[5],la_oenb[4],la_oenb[3],la_oenb[2],la_oenb[1],la_oenb[0]
-*.iopin vdda1
-*.iopin vdda2
-*.iopin vssa1
-*.iopin vssa2
-*.iopin vccd1
-*.iopin vccd2
-*.iopin vssd1
-*.iopin vssd2
-*.ipin wb_clk_i
-*.ipin wb_rst_i
-*.ipin wbs_stb_i
-*.ipin wbs_cyc_i
-*.ipin wbs_we_i
-*.ipin wbs_sel_i[3],wbs_sel_i[2],wbs_sel_i[1],wbs_sel_i[0]
-*.ipin
-*+ wbs_dat_i[31],wbs_dat_i[30],wbs_dat_i[29],wbs_dat_i[28],wbs_dat_i[27],wbs_dat_i[26],wbs_dat_i[25],wbs_dat_i[24],wbs_dat_i[23],wbs_dat_i[22],wbs_dat_i[21],wbs_dat_i[20],wbs_dat_i[19],wbs_dat_i[18],wbs_dat_i[17],wbs_dat_i[16],wbs_dat_i[15],wbs_dat_i[14],wbs_dat_i[13],wbs_dat_i[12],wbs_dat_i[11],wbs_dat_i[10],wbs_dat_i[9],wbs_dat_i[8],wbs_dat_i[7],wbs_dat_i[6],wbs_dat_i[5],wbs_dat_i[4],wbs_dat_i[3],wbs_dat_i[2],wbs_dat_i[1],wbs_dat_i[0]
-*.ipin
-*+ wbs_adr_i[31],wbs_adr_i[30],wbs_adr_i[29],wbs_adr_i[28],wbs_adr_i[27],wbs_adr_i[26],wbs_adr_i[25],wbs_adr_i[24],wbs_adr_i[23],wbs_adr_i[22],wbs_adr_i[21],wbs_adr_i[20],wbs_adr_i[19],wbs_adr_i[18],wbs_adr_i[17],wbs_adr_i[16],wbs_adr_i[15],wbs_adr_i[14],wbs_adr_i[13],wbs_adr_i[12],wbs_adr_i[11],wbs_adr_i[10],wbs_adr_i[9],wbs_adr_i[8],wbs_adr_i[7],wbs_adr_i[6],wbs_adr_i[5],wbs_adr_i[4],wbs_adr_i[3],wbs_adr_i[2],wbs_adr_i[1],wbs_adr_i[0]
-*.opin wbs_ack_o
-*.opin
-*+ wbs_dat_o[31],wbs_dat_o[30],wbs_dat_o[29],wbs_dat_o[28],wbs_dat_o[27],wbs_dat_o[26],wbs_dat_o[25],wbs_dat_o[24],wbs_dat_o[23],wbs_dat_o[22],wbs_dat_o[21],wbs_dat_o[20],wbs_dat_o[19],wbs_dat_o[18],wbs_dat_o[17],wbs_dat_o[16],wbs_dat_o[15],wbs_dat_o[14],wbs_dat_o[13],wbs_dat_o[12],wbs_dat_o[11],wbs_dat_o[10],wbs_dat_o[9],wbs_dat_o[8],wbs_dat_o[7],wbs_dat_o[6],wbs_dat_o[5],wbs_dat_o[4],wbs_dat_o[3],wbs_dat_o[2],wbs_dat_o[1],wbs_dat_o[0]
-*.ipin
-*+ la_data_in[127],la_data_in[126],la_data_in[125],la_data_in[124],la_data_in[123],la_data_in[122],la_data_in[121],la_data_in[120],la_data_in[119],la_data_in[118],la_data_in[117],la_data_in[116],la_data_in[115],la_data_in[114],la_data_in[113],la_data_in[112],la_data_in[111],la_data_in[110],la_data_in[109],la_data_in[108],la_data_in[107],la_data_in[106],la_data_in[105],la_data_in[104],la_data_in[103],la_data_in[102],la_data_in[101],la_data_in[100],la_data_in[99],la_data_in[98],la_data_in[97],la_data_in[96],la_data_in[95],la_data_in[94],la_data_in[93],la_data_in[92],la_data_in[91],la_data_in[90],la_data_in[89],la_data_in[88],la_data_in[87],la_data_in[86],la_data_in[85],la_data_in[84],la_data_in[83],la_data_in[82],la_data_in[81],la_data_in[80],la_data_in[79],la_data_in[78],la_data_in[77],la_data_in[76],la_data_in[75],la_data_in[74],la_data_in[73],la_data_in[72],la_data_in[71],la_data_in[70],la_data_in[69],la_data_in[68],la_data_in[67],la_data_in[66],la_data_in[65],la_data_in[64],la_data_in[63],la_data_in[62],la_data_in[61],la_data_in[60],la_data_in[59],la_data_in[58],la_data_in[57],la_data_in[56],la_data_in[55],la_data_in[54],la_data_in[53],la_data_in[52],la_data_in[51],la_data_in[50],la_data_in[49],la_data_in[48],la_data_in[47],la_data_in[46],la_data_in[45],la_data_in[44],la_data_in[43],la_data_in[42],la_data_in[41],la_data_in[40],la_data_in[39],la_data_in[38],la_data_in[37],la_data_in[36],la_data_in[35],la_data_in[34],la_data_in[33],la_data_in[32],la_data_in[31],la_data_in[30],la_data_in[29],la_data_in[28],la_data_in[27],la_data_in[26],la_data_in[25],la_data_in[24],la_data_in[23],la_data_in[22],la_data_in[21],la_data_in[20],la_data_in[19],la_data_in[18],la_data_in[17],la_data_in[16],la_data_in[15],la_data_in[14],la_data_in[13],la_data_in[12],la_data_in[11],la_data_in[10],la_data_in[9],la_data_in[8],la_data_in[7],la_data_in[6],la_data_in[5],la_data_in[4],la_data_in[3],la_data_in[2],la_data_in[1],la_data_in[0]
-*.opin
-*+ la_data_out[127],la_data_out[126],la_data_out[125],la_data_out[124],la_data_out[123],la_data_out[122],la_data_out[121],la_data_out[120],la_data_out[119],la_data_out[118],la_data_out[117],la_data_out[116],la_data_out[115],la_data_out[114],la_data_out[113],la_data_out[112],la_data_out[111],la_data_out[110],la_data_out[109],la_data_out[108],la_data_out[107],la_data_out[106],la_data_out[105],la_data_out[104],la_data_out[103],la_data_out[102],la_data_out[101],la_data_out[100],la_data_out[99],la_data_out[98],la_data_out[97],la_data_out[96],la_data_out[95],la_data_out[94],la_data_out[93],la_data_out[92],la_data_out[91],la_data_out[90],la_data_out[89],la_data_out[88],la_data_out[87],la_data_out[86],la_data_out[85],la_data_out[84],la_data_out[83],la_data_out[82],la_data_out[81],la_data_out[80],la_data_out[79],la_data_out[78],la_data_out[77],la_data_out[76],la_data_out[75],la_data_out[74],la_data_out[73],la_data_out[72],la_data_out[71],la_data_out[70],la_data_out[69],la_data_out[68],la_data_out[67],la_data_out[66],la_data_out[65],la_data_out[64],la_data_out[63],la_data_out[62],la_data_out[61],la_data_out[60],la_data_out[59],la_data_out[58],la_data_out[57],la_data_out[56],la_data_out[55],la_data_out[54],la_data_out[53],la_data_out[52],la_data_out[51],la_data_out[50],la_data_out[49],la_data_out[48],la_data_out[47],la_data_out[46],la_data_out[45],la_data_out[44],la_data_out[43],la_data_out[42],la_data_out[41],la_data_out[40],la_data_out[39],la_data_out[38],la_data_out[37],la_data_out[36],la_data_out[35],la_data_out[34],la_data_out[33],la_data_out[32],la_data_out[31],la_data_out[30],la_data_out[29],la_data_out[28],la_data_out[27],la_data_out[26],la_data_out[25],la_data_out[24],la_data_out[23],la_data_out[22],la_data_out[21],la_data_out[20],la_data_out[19],la_data_out[18],la_data_out[17],la_data_out[16],la_data_out[15],la_data_out[14],la_data_out[13],la_data_out[12],la_data_out[11],la_data_out[10],la_data_out[9],la_data_out[8],la_data_out[7],la_data_out[6],la_data_out[5],la_data_out[4],la_data_out[3],la_data_out[2],la_data_out[1],la_data_out[0]
-*.ipin
-*+ io_in[26],io_in[25],io_in[24],io_in[23],io_in[22],io_in[21],io_in[20],io_in[19],io_in[18],io_in[17],io_in[16],io_in[15],io_in[14],io_in[13],io_in[12],io_in[11],io_in[10],io_in[9],io_in[8],io_in[7],io_in[6],io_in[5],io_in[4],io_in[3],io_in[2],io_in[1],io_in[0]
-*.ipin
-*+ io_in_3v3[26],io_in_3v3[25],io_in_3v3[24],io_in_3v3[23],io_in_3v3[22],io_in_3v3[21],io_in_3v3[20],io_in_3v3[19],io_in_3v3[18],io_in_3v3[17],io_in_3v3[16],io_in_3v3[15],io_in_3v3[14],io_in_3v3[13],io_in_3v3[12],io_in_3v3[11],io_in_3v3[10],io_in_3v3[9],io_in_3v3[8],io_in_3v3[7],io_in_3v3[6],io_in_3v3[5],io_in_3v3[4],io_in_3v3[3],io_in_3v3[2],io_in_3v3[1],io_in_3v3[0]
-*.ipin user_clock2
-*.opin
-*+ io_out[26],io_out[25],io_out[24],io_out[23],io_out[22],io_out[21],io_out[20],io_out[19],io_out[18],io_out[17],io_out[16],io_out[15],io_out[14],io_out[13],io_out[12],io_out[11],io_out[10],io_out[9],io_out[8],io_out[7],io_out[6],io_out[5],io_out[4],io_out[3],io_out[2],io_out[1],io_out[0]
-*.opin
-*+ io_oeb[26],io_oeb[25],io_oeb[24],io_oeb[23],io_oeb[22],io_oeb[21],io_oeb[20],io_oeb[19],io_oeb[18],io_oeb[17],io_oeb[16],io_oeb[15],io_oeb[14],io_oeb[13],io_oeb[12],io_oeb[11],io_oeb[10],io_oeb[9],io_oeb[8],io_oeb[7],io_oeb[6],io_oeb[5],io_oeb[4],io_oeb[3],io_oeb[2],io_oeb[1],io_oeb[0]
-*.iopin
-*+ gpio_analog[17],gpio_analog[16],gpio_analog[15],gpio_analog[14],gpio_analog[13],gpio_analog[12],gpio_analog[11],gpio_analog[10],gpio_analog[9],gpio_analog[8],gpio_analog[7],gpio_analog[6],gpio_analog[5],gpio_analog[4],gpio_analog[3],gpio_analog[2],gpio_analog[1],gpio_analog[0]
-*.iopin
-*+ gpio_noesd[17],gpio_noesd[16],gpio_noesd[15],gpio_noesd[14],gpio_noesd[13],gpio_noesd[12],gpio_noesd[11],gpio_noesd[10],gpio_noesd[9],gpio_noesd[8],gpio_noesd[7],gpio_noesd[6],gpio_noesd[5],gpio_noesd[4],gpio_noesd[3],gpio_noesd[2],gpio_noesd[1],gpio_noesd[0]
-*.iopin
-*+ io_analog[10],io_analog[9],io_analog[8],io_analog[7],io_analog[6],io_analog[5],io_analog[4],io_analog[3],io_analog[2],io_analog[1],io_analog[0]
-*.iopin io_clamp_high[2],io_clamp_high[1],io_clamp_high[0]
-*.iopin io_clamp_low[2],io_clamp_low[1],io_clamp_low[0]
-*.opin user_irq[2],user_irq[1],user_irq[0]
-*.ipin
-*+ la_oenb[127],la_oenb[126],la_oenb[125],la_oenb[124],la_oenb[123],la_oenb[122],la_oenb[121],la_oenb[120],la_oenb[119],la_oenb[118],la_oenb[117],la_oenb[116],la_oenb[115],la_oenb[114],la_oenb[113],la_oenb[112],la_oenb[111],la_oenb[110],la_oenb[109],la_oenb[108],la_oenb[107],la_oenb[106],la_oenb[105],la_oenb[104],la_oenb[103],la_oenb[102],la_oenb[101],la_oenb[100],la_oenb[99],la_oenb[98],la_oenb[97],la_oenb[96],la_oenb[95],la_oenb[94],la_oenb[93],la_oenb[92],la_oenb[91],la_oenb[90],la_oenb[89],la_oenb[88],la_oenb[87],la_oenb[86],la_oenb[85],la_oenb[84],la_oenb[83],la_oenb[82],la_oenb[81],la_oenb[80],la_oenb[79],la_oenb[78],la_oenb[77],la_oenb[76],la_oenb[75],la_oenb[74],la_oenb[73],la_oenb[72],la_oenb[71],la_oenb[70],la_oenb[69],la_oenb[68],la_oenb[67],la_oenb[66],la_oenb[65],la_oenb[64],la_oenb[63],la_oenb[62],la_oenb[61],la_oenb[60],la_oenb[59],la_oenb[58],la_oenb[57],la_oenb[56],la_oenb[55],la_oenb[54],la_oenb[53],la_oenb[52],la_oenb[51],la_oenb[50],la_oenb[49],la_oenb[48],la_oenb[47],la_oenb[46],la_oenb[45],la_oenb[44],la_oenb[43],la_oenb[42],la_oenb[41],la_oenb[40],la_oenb[39],la_oenb[38],la_oenb[37],la_oenb[36],la_oenb[35],la_oenb[34],la_oenb[33],la_oenb[32],la_oenb[31],la_oenb[30],la_oenb[29],la_oenb[28],la_oenb[27],la_oenb[26],la_oenb[25],la_oenb[24],la_oenb[23],la_oenb[22],la_oenb[21],la_oenb[20],la_oenb[19],la_oenb[18],la_oenb[17],la_oenb[16],la_oenb[15],la_oenb[14],la_oenb[13],la_oenb[12],la_oenb[11],la_oenb[10],la_oenb[9],la_oenb[8],la_oenb[7],la_oenb[6],la_oenb[5],la_oenb[4],la_oenb[3],la_oenb[2],la_oenb[1],la_oenb[0]
+.subckt user_analog_project_wrapper  vdda1 vdda2 vssa1 vssa2 vccd1 vccd2 vssd1 vssd2 wb_clk_i
++ wb_rst_i wbs_stb_i wbs_cyc_i wbs_we_i wbs_sel_i[3] wbs_sel_i[2] wbs_sel_i[1] wbs_sel_i[0] wbs_dat_i[31]
++ wbs_dat_i[30] wbs_dat_i[29] wbs_dat_i[28] wbs_dat_i[27] wbs_dat_i[26] wbs_dat_i[25] wbs_dat_i[24] wbs_dat_i[23]
++ wbs_dat_i[22] wbs_dat_i[21] wbs_dat_i[20] wbs_dat_i[19] wbs_dat_i[18] wbs_dat_i[17] wbs_dat_i[16] wbs_dat_i[15]
++ wbs_dat_i[14] wbs_dat_i[13] wbs_dat_i[12] wbs_dat_i[11] wbs_dat_i[10] wbs_dat_i[9] wbs_dat_i[8] wbs_dat_i[7]
++ wbs_dat_i[6] wbs_dat_i[5] wbs_dat_i[4] wbs_dat_i[3] wbs_dat_i[2] wbs_dat_i[1] wbs_dat_i[0] wbs_adr_i[31]
++ wbs_adr_i[30] wbs_adr_i[29] wbs_adr_i[28] wbs_adr_i[27] wbs_adr_i[26] wbs_adr_i[25] wbs_adr_i[24] wbs_adr_i[23]
++ wbs_adr_i[22] wbs_adr_i[21] wbs_adr_i[20] wbs_adr_i[19] wbs_adr_i[18] wbs_adr_i[17] wbs_adr_i[16] wbs_adr_i[15]
++ wbs_adr_i[14] wbs_adr_i[13] wbs_adr_i[12] wbs_adr_i[11] wbs_adr_i[10] wbs_adr_i[9] wbs_adr_i[8] wbs_adr_i[7]
++ wbs_adr_i[6] wbs_adr_i[5] wbs_adr_i[4] wbs_adr_i[3] wbs_adr_i[2] wbs_adr_i[1] wbs_adr_i[0] wbs_ack_o
++ wbs_dat_o[31] wbs_dat_o[30] wbs_dat_o[29] wbs_dat_o[28] wbs_dat_o[27] wbs_dat_o[26] wbs_dat_o[25] wbs_dat_o[24]
++ wbs_dat_o[23] wbs_dat_o[22] wbs_dat_o[21] wbs_dat_o[20] wbs_dat_o[19] wbs_dat_o[18] wbs_dat_o[17] wbs_dat_o[16]
++ wbs_dat_o[15] wbs_dat_o[14] wbs_dat_o[13] wbs_dat_o[12] wbs_dat_o[11] wbs_dat_o[10] wbs_dat_o[9] wbs_dat_o[8]
++ wbs_dat_o[7] wbs_dat_o[6] wbs_dat_o[5] wbs_dat_o[4] wbs_dat_o[3] wbs_dat_o[2] wbs_dat_o[1] wbs_dat_o[0]
++ la_data_in[127] la_data_in[126] la_data_in[125] la_data_in[124] la_data_in[123] la_data_in[122] la_data_in[121]
++ la_data_in[120] la_data_in[119] la_data_in[118] la_data_in[117] la_data_in[116] la_data_in[115] la_data_in[114]
++ la_data_in[113] la_data_in[112] la_data_in[111] la_data_in[110] la_data_in[109] la_data_in[108] la_data_in[107]
++ la_data_in[106] la_data_in[105] la_data_in[104] la_data_in[103] la_data_in[102] la_data_in[101] la_data_in[100]
++ la_data_in[99] la_data_in[98] la_data_in[97] la_data_in[96] la_data_in[95] la_data_in[94] la_data_in[93]
++ la_data_in[92] la_data_in[91] la_data_in[90] la_data_in[89] la_data_in[88] la_data_in[87] la_data_in[86]
++ la_data_in[85] la_data_in[84] la_data_in[83] la_data_in[82] la_data_in[81] la_data_in[80] la_data_in[79]
++ la_data_in[78] la_data_in[77] la_data_in[76] la_data_in[75] la_data_in[74] la_data_in[73] la_data_in[72]
++ la_data_in[71] la_data_in[70] la_data_in[69] la_data_in[68] la_data_in[67] la_data_in[66] la_data_in[65]
++ la_data_in[64] la_data_in[63] la_data_in[62] la_data_in[61] la_data_in[60] la_data_in[59] la_data_in[58]
++ la_data_in[57] la_data_in[56] la_data_in[55] la_data_in[54] la_data_in[53] la_data_in[52] la_data_in[51]
++ la_data_in[50] la_data_in[49] la_data_in[48] la_data_in[47] la_data_in[46] la_data_in[45] la_data_in[44]
++ la_data_in[43] la_data_in[42] la_data_in[41] la_data_in[40] la_data_in[39] la_data_in[38] la_data_in[37]
++ la_data_in[36] la_data_in[35] la_data_in[34] la_data_in[33] la_data_in[32] la_data_in[31] la_data_in[30]
++ la_data_in[29] la_data_in[28] la_data_in[27] la_data_in[26] la_data_in[25] la_data_in[24] la_data_in[23]
++ la_data_in[22] la_data_in[21] la_data_in[20] la_data_in[19] la_data_in[18] la_data_in[17] la_data_in[16]
++ la_data_in[15] la_data_in[14] la_data_in[13] la_data_in[12] la_data_in[11] la_data_in[10] la_data_in[9]
++ la_data_in[8] la_data_in[7] la_data_in[6] la_data_in[5] la_data_in[4] la_data_in[3] la_data_in[2] la_data_in[1]
++ la_data_in[0] la_data_out[127] la_data_out[126] la_data_out[125] la_data_out[124] la_data_out[123]
++ la_data_out[122] la_data_out[121] la_data_out[120] la_data_out[119] la_data_out[118] la_data_out[117]
++ la_data_out[116] la_data_out[115] la_data_out[114] la_data_out[113] la_data_out[112] la_data_out[111]
++ la_data_out[110] la_data_out[109] la_data_out[108] la_data_out[107] la_data_out[106] la_data_out[105]
++ la_data_out[104] la_data_out[103] la_data_out[102] la_data_out[101] la_data_out[100] la_data_out[99] la_data_out[98]
++ la_data_out[97] la_data_out[96] la_data_out[95] la_data_out[94] la_data_out[93] la_data_out[92] la_data_out[91]
++ la_data_out[90] la_data_out[89] la_data_out[88] la_data_out[87] la_data_out[86] la_data_out[85] la_data_out[84]
++ la_data_out[83] la_data_out[82] la_data_out[81] la_data_out[80] la_data_out[79] la_data_out[78] la_data_out[77]
++ la_data_out[76] la_data_out[75] la_data_out[74] la_data_out[73] la_data_out[72] la_data_out[71] la_data_out[70]
++ la_data_out[69] la_data_out[68] la_data_out[67] la_data_out[66] la_data_out[65] la_data_out[64] la_data_out[63]
++ la_data_out[62] la_data_out[61] la_data_out[60] la_data_out[59] la_data_out[58] la_data_out[57] la_data_out[56]
++ la_data_out[55] la_data_out[54] la_data_out[53] la_data_out[52] la_data_out[51] la_data_out[50] la_data_out[49]
++ la_data_out[48] la_data_out[47] la_data_out[46] la_data_out[45] la_data_out[44] la_data_out[43] la_data_out[42]
++ la_data_out[41] la_data_out[40] la_data_out[39] la_data_out[38] la_data_out[37] la_data_out[36] la_data_out[35]
++ la_data_out[34] la_data_out[33] la_data_out[32] la_data_out[31] la_data_out[30] la_data_out[29] la_data_out[28]
++ la_data_out[27] la_data_out[26] la_data_out[25] la_data_out[24] la_data_out[23] la_data_out[22] la_data_out[21]
++ la_data_out[20] la_data_out[19] la_data_out[18] la_data_out[17] la_data_out[16] la_data_out[15] la_data_out[14]
++ la_data_out[13] la_data_out[12] la_data_out[11] la_data_out[10] la_data_out[9] la_data_out[8] la_data_out[7]
++ la_data_out[6] la_data_out[5] la_data_out[4] la_data_out[3] la_data_out[2] la_data_out[1] la_data_out[0]
++ la_oenb[127] la_oenb[126] la_oenb[125] la_oenb[124] la_oenb[123] la_oenb[122] la_oenb[121] la_oenb[120]
++ la_oenb[119] la_oenb[118] la_oenb[117] la_oenb[116] la_oenb[115] la_oenb[114] la_oenb[113] la_oenb[112]
++ la_oenb[111] la_oenb[110] la_oenb[109] la_oenb[108] la_oenb[107] la_oenb[106] la_oenb[105] la_oenb[104]
++ la_oenb[103] la_oenb[102] la_oenb[101] la_oenb[100] la_oenb[99] la_oenb[98] la_oenb[97] la_oenb[96] la_oenb[95]
++ la_oenb[94] la_oenb[93] la_oenb[92] la_oenb[91] la_oenb[90] la_oenb[89] la_oenb[88] la_oenb[87] la_oenb[86]
++ la_oenb[85] la_oenb[84] la_oenb[83] la_oenb[82] la_oenb[81] la_oenb[80] la_oenb[79] la_oenb[78] la_oenb[77]
++ la_oenb[76] la_oenb[75] la_oenb[74] la_oenb[73] la_oenb[72] la_oenb[71] la_oenb[70] la_oenb[69] la_oenb[68]
++ la_oenb[67] la_oenb[66] la_oenb[65] la_oenb[64] la_oenb[63] la_oenb[62] la_oenb[61] la_oenb[60] la_oenb[59]
++ la_oenb[58] la_oenb[57] la_oenb[56] la_oenb[55] la_oenb[54] la_oenb[53] la_oenb[52] la_oenb[51] la_oenb[50]
++ la_oenb[49] la_oenb[48] la_oenb[47] la_oenb[46] la_oenb[45] la_oenb[44] la_oenb[43] la_oenb[42] la_oenb[41]
++ la_oenb[40] la_oenb[39] la_oenb[38] la_oenb[37] la_oenb[36] la_oenb[35] la_oenb[34] la_oenb[33] la_oenb[32]
++ la_oenb[31] la_oenb[30] la_oenb[29] la_oenb[28] la_oenb[27] la_oenb[26] la_oenb[25] la_oenb[24] la_oenb[23]
++ la_oenb[22] la_oenb[21] la_oenb[20] la_oenb[19] la_oenb[18] la_oenb[17] la_oenb[16] la_oenb[15] la_oenb[14]
++ la_oenb[13] la_oenb[12] la_oenb[11] la_oenb[10] la_oenb[9] la_oenb[8] la_oenb[7] la_oenb[6] la_oenb[5]
++ la_oenb[4] la_oenb[3] la_oenb[2] la_oenb[1] la_oenb[0] io_in[26] io_in[25] io_in[24] io_in[23] io_in[22]
++ io_in[21] io_in[20] io_in[19] io_in[18] io_in[17] io_in[16] io_in[15] io_in[14] io_in[13] io_in[12] io_in[11]
++ io_in[10] io_in[9] io_in[8] io_in[7] io_in[6] io_in[5] io_in[4] io_in[3] io_in[2] io_in[1] io_in[0]
++ io_in_3v3[26] io_in_3v3[25] io_in_3v3[24] io_in_3v3[23] io_in_3v3[22] io_in_3v3[21] io_in_3v3[20] io_in_3v3[19]
++ io_in_3v3[18] io_in_3v3[17] io_in_3v3[16] io_in_3v3[15] io_in_3v3[14] io_in_3v3[13] io_in_3v3[12] io_in_3v3[11]
++ io_in_3v3[10] io_in_3v3[9] io_in_3v3[8] io_in_3v3[7] io_in_3v3[6] io_in_3v3[5] io_in_3v3[4] io_in_3v3[3]
++ io_in_3v3[2] io_in_3v3[1] io_in_3v3[0] io_out[26] io_out[25] io_out[24] io_out[23] io_out[22] io_out[21]
++ io_out[20] io_out[19] io_out[18] io_out[17] io_out[16] io_out[15] io_out[14] io_out[13] io_out[12] io_out[11]
++ io_out[10] io_out[9] io_out[8] io_out[7] io_out[6] io_out[5] io_out[4] io_out[3] io_out[2] io_out[1] io_out[0]
++ io_oeb[26] io_oeb[25] io_oeb[24] io_oeb[23] io_oeb[22] io_oeb[21] io_oeb[20] io_oeb[19] io_oeb[18] io_oeb[17]
++ io_oeb[16] io_oeb[15] io_oeb[14] io_oeb[13] io_oeb[12] io_oeb[11] io_oeb[10] io_oeb[9] io_oeb[8] io_oeb[7]
++ io_oeb[6] io_oeb[5] io_oeb[4] io_oeb[3] io_oeb[2] io_oeb[1] io_oeb[0] gpio_analog[17] gpio_analog[16]
++ gpio_analog[15] gpio_analog[14] gpio_analog[13] gpio_analog[12] gpio_analog[11] gpio_analog[10] gpio_analog[9]
++ gpio_analog[8] gpio_analog[7] gpio_analog[6] gpio_analog[5] gpio_analog[4] gpio_analog[3] gpio_analog[2]
++ gpio_analog[1] gpio_analog[0] gpio_noesd[17] gpio_noesd[16] gpio_noesd[15] gpio_noesd[14] gpio_noesd[13]
++ gpio_noesd[12] gpio_noesd[11] gpio_noesd[10] gpio_noesd[9] gpio_noesd[8] gpio_noesd[7] gpio_noesd[6] gpio_noesd[5]
++ gpio_noesd[4] gpio_noesd[3] gpio_noesd[2] gpio_noesd[1] gpio_noesd[0] io_analog[10] io_analog[9] io_analog[8]
++ io_analog[7] io_analog[6] io_analog[5] io_analog[4] io_analog[3] io_analog[2] io_analog[1] io_analog[0]
++ io_clamp_high[2] io_clamp_high[1] io_clamp_high[0] io_clamp_low[2] io_clamp_low[1] io_clamp_low[0] user_clock2
++ user_irq[2] user_irq[1] user_irq[0]
 x1 io_analog[4] io_analog[5] io_analog[1] io_analog[2] io_analog[3] io_analog[0] vssa1 1T1R_2x2
 x2 vssa1 vssa1 vccd1 vccd1 gpio_analog[7] gpio_analog[8] gpio_analog[6] sky130_sc_ams__ota_1
 x3 io_in[13] io_analog[7] io_analog[6] vccd1 vccd1 vssa1 vssa1 io_out[13]
 + sky130_sc_ams__comparator_1
-**.ends
+x4 io_analog[10] io_analog[8] vssa2 io_analog[9] FG_pfet
+.ends
+
 
 * expanding   symbol:  1T1R_2x2.sym # of pins=7
 ** sym_path: /home/carl/IC/caravel_user_project_analog/xschem/1T1R_2x2.sym
@@ -268,94 +298,24 @@
 + sa=0 sb=0 sd=0 mult=1 m=1
 .ends
 
-.subckt user_analog_project_wrapper  vdda1 vdda2 vssa1 vssa2 vccd1 vccd2 vssd1 vssd2 wb_clk_i
-+ wb_rst_i wbs_stb_i wbs_cyc_i wbs_we_i wbs_sel_i[3] wbs_sel_i[2] wbs_sel_i[1] wbs_sel_i[0] wbs_dat_i[31]
-+ wbs_dat_i[30] wbs_dat_i[29] wbs_dat_i[28] wbs_dat_i[27] wbs_dat_i[26] wbs_dat_i[25] wbs_dat_i[24] wbs_dat_i[23]
-+ wbs_dat_i[22] wbs_dat_i[21] wbs_dat_i[20] wbs_dat_i[19] wbs_dat_i[18] wbs_dat_i[17] wbs_dat_i[16] wbs_dat_i[15]
-+ wbs_dat_i[14] wbs_dat_i[13] wbs_dat_i[12] wbs_dat_i[11] wbs_dat_i[10] wbs_dat_i[9] wbs_dat_i[8] wbs_dat_i[7]
-+ wbs_dat_i[6] wbs_dat_i[5] wbs_dat_i[4] wbs_dat_i[3] wbs_dat_i[2] wbs_dat_i[1] wbs_dat_i[0] wbs_adr_i[31]
-+ wbs_adr_i[30] wbs_adr_i[29] wbs_adr_i[28] wbs_adr_i[27] wbs_adr_i[26] wbs_adr_i[25] wbs_adr_i[24] wbs_adr_i[23]
-+ wbs_adr_i[22] wbs_adr_i[21] wbs_adr_i[20] wbs_adr_i[19] wbs_adr_i[18] wbs_adr_i[17] wbs_adr_i[16] wbs_adr_i[15]
-+ wbs_adr_i[14] wbs_adr_i[13] wbs_adr_i[12] wbs_adr_i[11] wbs_adr_i[10] wbs_adr_i[9] wbs_adr_i[8] wbs_adr_i[7]
-+ wbs_adr_i[6] wbs_adr_i[5] wbs_adr_i[4] wbs_adr_i[3] wbs_adr_i[2] wbs_adr_i[1] wbs_adr_i[0] wbs_ack_o
-+ wbs_dat_o[31] wbs_dat_o[30] wbs_dat_o[29] wbs_dat_o[28] wbs_dat_o[27] wbs_dat_o[26] wbs_dat_o[25] wbs_dat_o[24]
-+ wbs_dat_o[23] wbs_dat_o[22] wbs_dat_o[21] wbs_dat_o[20] wbs_dat_o[19] wbs_dat_o[18] wbs_dat_o[17] wbs_dat_o[16]
-+ wbs_dat_o[15] wbs_dat_o[14] wbs_dat_o[13] wbs_dat_o[12] wbs_dat_o[11] wbs_dat_o[10] wbs_dat_o[9] wbs_dat_o[8]
-+ wbs_dat_o[7] wbs_dat_o[6] wbs_dat_o[5] wbs_dat_o[4] wbs_dat_o[3] wbs_dat_o[2] wbs_dat_o[1] wbs_dat_o[0]
-+ la_data_in[127] la_data_in[126] la_data_in[125] la_data_in[124] la_data_in[123] la_data_in[122] la_data_in[121]
-+ la_data_in[120] la_data_in[119] la_data_in[118] la_data_in[117] la_data_in[116] la_data_in[115] la_data_in[114]
-+ la_data_in[113] la_data_in[112] la_data_in[111] la_data_in[110] la_data_in[109] la_data_in[108] la_data_in[107]
-+ la_data_in[106] la_data_in[105] la_data_in[104] la_data_in[103] la_data_in[102] la_data_in[101] la_data_in[100]
-+ la_data_in[99] la_data_in[98] la_data_in[97] la_data_in[96] la_data_in[95] la_data_in[94] la_data_in[93]
-+ la_data_in[92] la_data_in[91] la_data_in[90] la_data_in[89] la_data_in[88] la_data_in[87] la_data_in[86]
-+ la_data_in[85] la_data_in[84] la_data_in[83] la_data_in[82] la_data_in[81] la_data_in[80] la_data_in[79]
-+ la_data_in[78] la_data_in[77] la_data_in[76] la_data_in[75] la_data_in[74] la_data_in[73] la_data_in[72]
-+ la_data_in[71] la_data_in[70] la_data_in[69] la_data_in[68] la_data_in[67] la_data_in[66] la_data_in[65]
-+ la_data_in[64] la_data_in[63] la_data_in[62] la_data_in[61] la_data_in[60] la_data_in[59] la_data_in[58]
-+ la_data_in[57] la_data_in[56] la_data_in[55] la_data_in[54] la_data_in[53] la_data_in[52] la_data_in[51]
-+ la_data_in[50] la_data_in[49] la_data_in[48] la_data_in[47] la_data_in[46] la_data_in[45] la_data_in[44]
-+ la_data_in[43] la_data_in[42] la_data_in[41] la_data_in[40] la_data_in[39] la_data_in[38] la_data_in[37]
-+ la_data_in[36] la_data_in[35] la_data_in[34] la_data_in[33] la_data_in[32] la_data_in[31] la_data_in[30]
-+ la_data_in[29] la_data_in[28] la_data_in[27] la_data_in[26] la_data_in[25] la_data_in[24] la_data_in[23]
-+ la_data_in[22] la_data_in[21] la_data_in[20] la_data_in[19] la_data_in[18] la_data_in[17] la_data_in[16]
-+ la_data_in[15] la_data_in[14] la_data_in[13] la_data_in[12] la_data_in[11] la_data_in[10] la_data_in[9]
-+ la_data_in[8] la_data_in[7] la_data_in[6] la_data_in[5] la_data_in[4] la_data_in[3] la_data_in[2] la_data_in[1]
-+ la_data_in[0] la_data_out[127] la_data_out[126] la_data_out[125] la_data_out[124] la_data_out[123]
-+ la_data_out[122] la_data_out[121] la_data_out[120] la_data_out[119] la_data_out[118] la_data_out[117]
-+ la_data_out[116] la_data_out[115] la_data_out[114] la_data_out[113] la_data_out[112] la_data_out[111]
-+ la_data_out[110] la_data_out[109] la_data_out[108] la_data_out[107] la_data_out[106] la_data_out[105]
-+ la_data_out[104] la_data_out[103] la_data_out[102] la_data_out[101] la_data_out[100] la_data_out[99] la_data_out[98]
-+ la_data_out[97] la_data_out[96] la_data_out[95] la_data_out[94] la_data_out[93] la_data_out[92] la_data_out[91]
-+ la_data_out[90] la_data_out[89] la_data_out[88] la_data_out[87] la_data_out[86] la_data_out[85] la_data_out[84]
-+ la_data_out[83] la_data_out[82] la_data_out[81] la_data_out[80] la_data_out[79] la_data_out[78] la_data_out[77]
-+ la_data_out[76] la_data_out[75] la_data_out[74] la_data_out[73] la_data_out[72] la_data_out[71] la_data_out[70]
-+ la_data_out[69] la_data_out[68] la_data_out[67] la_data_out[66] la_data_out[65] la_data_out[64] la_data_out[63]
-+ la_data_out[62] la_data_out[61] la_data_out[60] la_data_out[59] la_data_out[58] la_data_out[57] la_data_out[56]
-+ la_data_out[55] la_data_out[54] la_data_out[53] la_data_out[52] la_data_out[51] la_data_out[50] la_data_out[49]
-+ la_data_out[48] la_data_out[47] la_data_out[46] la_data_out[45] la_data_out[44] la_data_out[43] la_data_out[42]
-+ la_data_out[41] la_data_out[40] la_data_out[39] la_data_out[38] la_data_out[37] la_data_out[36] la_data_out[35]
-+ la_data_out[34] la_data_out[33] la_data_out[32] la_data_out[31] la_data_out[30] la_data_out[29] la_data_out[28]
-+ la_data_out[27] la_data_out[26] la_data_out[25] la_data_out[24] la_data_out[23] la_data_out[22] la_data_out[21]
-+ la_data_out[20] la_data_out[19] la_data_out[18] la_data_out[17] la_data_out[16] la_data_out[15] la_data_out[14]
-+ la_data_out[13] la_data_out[12] la_data_out[11] la_data_out[10] la_data_out[9] la_data_out[8] la_data_out[7]
-+ la_data_out[6] la_data_out[5] la_data_out[4] la_data_out[3] la_data_out[2] la_data_out[1] la_data_out[0]
-+ la_oenb[127] la_oenb[126] la_oenb[125] la_oenb[124] la_oenb[123] la_oenb[122] la_oenb[121] la_oenb[120]
-+ la_oenb[119] la_oenb[118] la_oenb[117] la_oenb[116] la_oenb[115] la_oenb[114] la_oenb[113] la_oenb[112]
-+ la_oenb[111] la_oenb[110] la_oenb[109] la_oenb[108] la_oenb[107] la_oenb[106] la_oenb[105] la_oenb[104]
-+ la_oenb[103] la_oenb[102] la_oenb[101] la_oenb[100] la_oenb[99] la_oenb[98] la_oenb[97] la_oenb[96] la_oenb[95]
-+ la_oenb[94] la_oenb[93] la_oenb[92] la_oenb[91] la_oenb[90] la_oenb[89] la_oenb[88] la_oenb[87] la_oenb[86]
-+ la_oenb[85] la_oenb[84] la_oenb[83] la_oenb[82] la_oenb[81] la_oenb[80] la_oenb[79] la_oenb[78] la_oenb[77]
-+ la_oenb[76] la_oenb[75] la_oenb[74] la_oenb[73] la_oenb[72] la_oenb[71] la_oenb[70] la_oenb[69] la_oenb[68]
-+ la_oenb[67] la_oenb[66] la_oenb[65] la_oenb[64] la_oenb[63] la_oenb[62] la_oenb[61] la_oenb[60] la_oenb[59]
-+ la_oenb[58] la_oenb[57] la_oenb[56] la_oenb[55] la_oenb[54] la_oenb[53] la_oenb[52] la_oenb[51] la_oenb[50]
-+ la_oenb[49] la_oenb[48] la_oenb[47] la_oenb[46] la_oenb[45] la_oenb[44] la_oenb[43] la_oenb[42] la_oenb[41]
-+ la_oenb[40] la_oenb[39] la_oenb[38] la_oenb[37] la_oenb[36] la_oenb[35] la_oenb[34] la_oenb[33] la_oenb[32]
-+ la_oenb[31] la_oenb[30] la_oenb[29] la_oenb[28] la_oenb[27] la_oenb[26] la_oenb[25] la_oenb[24] la_oenb[23]
-+ la_oenb[22] la_oenb[21] la_oenb[20] la_oenb[19] la_oenb[18] la_oenb[17] la_oenb[16] la_oenb[15] la_oenb[14]
-+ la_oenb[13] la_oenb[12] la_oenb[11] la_oenb[10] la_oenb[9] la_oenb[8] la_oenb[7] la_oenb[6] la_oenb[5]
-+ la_oenb[4] la_oenb[3] la_oenb[2] la_oenb[1] la_oenb[0] io_in[26] io_in[25] io_in[24] io_in[23] io_in[22]
-+ io_in[21] io_in[20] io_in[19] io_in[18] io_in[17] io_in[16] io_in[15] io_in[14] io_in[13] io_in[12] io_in[11]
-+ io_in[10] io_in[9] io_in[8] io_in[7] io_in[6] io_in[5] io_in[4] io_in[3] io_in[2] io_in[1] io_in[0]
-+ io_in_3v3[26] io_in_3v3[25] io_in_3v3[24] io_in_3v3[23] io_in_3v3[22] io_in_3v3[21] io_in_3v3[20] io_in_3v3[19]
-+ io_in_3v3[18] io_in_3v3[17] io_in_3v3[16] io_in_3v3[15] io_in_3v3[14] io_in_3v3[13] io_in_3v3[12] io_in_3v3[11]
-+ io_in_3v3[10] io_in_3v3[9] io_in_3v3[8] io_in_3v3[7] io_in_3v3[6] io_in_3v3[5] io_in_3v3[4] io_in_3v3[3]
-+ io_in_3v3[2] io_in_3v3[1] io_in_3v3[0] io_out[26] io_out[25] io_out[24] io_out[23] io_out[22] io_out[21]
-+ io_out[20] io_out[19] io_out[18] io_out[17] io_out[16] io_out[15] io_out[14] io_out[13] io_out[12] io_out[11]
-+ io_out[10] io_out[9] io_out[8] io_out[7] io_out[6] io_out[5] io_out[4] io_out[3] io_out[2] io_out[1] io_out[0]
-+ io_oeb[26] io_oeb[25] io_oeb[24] io_oeb[23] io_oeb[22] io_oeb[21] io_oeb[20] io_oeb[19] io_oeb[18] io_oeb[17]
-+ io_oeb[16] io_oeb[15] io_oeb[14] io_oeb[13] io_oeb[12] io_oeb[11] io_oeb[10] io_oeb[9] io_oeb[8] io_oeb[7]
-+ io_oeb[6] io_oeb[5] io_oeb[4] io_oeb[3] io_oeb[2] io_oeb[1] io_oeb[0] gpio_analog[17] gpio_analog[16]
-+ gpio_analog[15] gpio_analog[14] gpio_analog[13] gpio_analog[12] gpio_analog[11] gpio_analog[10] gpio_analog[9]
-+ gpio_analog[8] gpio_analog[7] gpio_analog[6] gpio_analog[5] gpio_analog[4] gpio_analog[3] gpio_analog[2]
-+ gpio_analog[1] gpio_analog[0] gpio_noesd[17] gpio_noesd[16] gpio_noesd[15] gpio_noesd[14] gpio_noesd[13]
-+ gpio_noesd[12] gpio_noesd[11] gpio_noesd[10] gpio_noesd[9] gpio_noesd[8] gpio_noesd[7] gpio_noesd[6] gpio_noesd[5]
-+ gpio_noesd[4] gpio_noesd[3] gpio_noesd[2] gpio_noesd[1] gpio_noesd[0] io_analog[10] io_analog[9] io_analog[8]
-+ io_analog[7] io_analog[6] io_analog[5] io_analog[4] io_analog[3] io_analog[2] io_analog[1] io_analog[0]
-+ io_clamp_high[2] io_clamp_high[1] io_clamp_high[0] io_clamp_low[2] io_clamp_low[1] io_clamp_low[0] user_clock2
-+ user_irq[2] user_irq[1] user_irq[0]
-x1 io_analog[4] io_analog[5] io_analog[1] io_analog[2] io_analog[3] io_analog[0] vssa1 1T1R_2x2
-x2 vssa1 vssa1 vccd1 vccd1 gpio_analog[7] gpio_analog[8] gpio_analog[6] sky130_sc_ams__ota_1
-x3 io_in[13] io_analog[7] io_analog[6] vccd1 vccd1 vssa1 vssa1 io_out[13]
-+ sky130_sc_ams__comparator_1
+
+* expanding   symbol:  FG_pfet.sym # of pins=4
+** sym_path: /home/carl/IC/caravel_user_project_analog/xschem/FG_pfet.sym
+** sch_path: /home/carl/IC/caravel_user_project_analog/xschem/FG_pfet.sch
+.subckt FG_pfet  vtun vin vsource vd
+*.iopin vtun
+*.iopin vin
+*.iopin vsource
+*.iopin vd
+XM1 vsource net1 vd vd sky130_fd_pr__pfet_g5v0d10v5 L=0.5 W=2 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/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 mult=1 m=1
+XM2 vtun net1 vtun vtun sky130_fd_pr__pfet_g5v0d10v5 L=0.5 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/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 mult=1 m=1
+XM3 vin net1 vin vin sky130_fd_pr__pfet_g5v0d10v5 L=3 W=2 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/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 mult=1 m=1
 .ends
+
 .end