Updated schematics and layout
diff --git a/gds/user_analog_project_wrapper.gds b/gds/user_analog_project_wrapper.gds
index 764b362..d3273ba 100644
--- a/gds/user_analog_project_wrapper.gds
+++ b/gds/user_analog_project_wrapper.gds
Binary files differ
diff --git a/mag/currm/cmirror_channel.mag b/mag/currm/cmirror_channel.mag
index 6040bde..640d258 100644
--- a/mag/currm/cmirror_channel.mag
+++ b/mag/currm/cmirror_channel.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1646406885
+timestamp 1646921651
<< locali >>
rect 2850 580 3170 3330
<< metal1 >>
@@ -12,32 +12,55 @@
rect 2160 -140 2740 -70
rect 4470 -400 4550 410
rect 890 -610 960 -460
+rect -60 -1280 -50 -860
+rect 340 -990 350 -860
rect 900 -990 950 -950
-rect -40 -1100 2840 -990
-rect -40 -1190 970 -1100
+rect 340 -1100 2840 -990
+rect 340 -1190 970 -1100
+rect 340 -1280 350 -1190
rect 4090 -3150 16770 -3000
rect 12900 -3900 13420 -3150
rect 12890 -4310 12900 -3900
rect 13420 -4310 13430 -3900
<< via1 >>
+rect -50 -1280 340 -860
rect 12900 -4310 13420 -3900
<< metal2 >>
+rect 4080 1040 18980 1210
rect 1730 -40 2740 150
rect 850 -720 990 -350
rect 1730 -720 1830 -40
rect 3930 -210 19240 150
rect 2530 -720 2670 -350
-rect -130 -870 270 -860
-rect -130 -1280 270 -1270
+rect -50 -860 340 -850
+rect -50 -1290 340 -1280
+rect 4390 -2520 16550 -2350
+rect 700 -3460 840 -3450
+rect 700 -3630 840 -3620
+rect 1320 -3460 1690 -3450
+rect 1320 -3630 1690 -3620
+rect 2160 -3460 2520 -3450
+rect 2160 -3630 2520 -3620
+rect 3000 -3460 3140 -3450
+rect 3000 -3630 3140 -3620
rect 4070 -3810 16950 -3410
rect 12590 -3820 14200 -3810
rect 12900 -3900 13420 -3890
rect 12900 -4320 13420 -4310
<< via2 >>
-rect -130 -1270 270 -870
+rect -50 -1280 340 -860
+rect 700 -3620 840 -3460
+rect 1320 -3620 1690 -3460
+rect 2160 -3620 2520 -3460
+rect 3000 -3620 3140 -3460
rect 12900 -4310 13420 -3900
<< metal3 >>
-rect 1580 2990 19370 3330
+rect 1500 4100 19370 4120
+rect 1500 3740 1520 4100
+rect 2770 3740 18030 4100
+rect 19350 3740 19370 4100
+rect 1500 3200 19370 3740
+rect 1580 2990 19370 3200
rect 3240 790 3490 1080
rect 3240 -230 3480 790
rect 4200 -230 4440 970
@@ -60,14 +83,24 @@
rect 16350 -230 16590 970
rect 16740 -230 16980 970
rect 3240 -570 16980 -230
-rect -140 -870 280 -865
-rect -140 -1270 -130 -870
-rect 270 -1270 280 -870
-rect -140 -1275 280 -1270
-rect 700 -3650 3150 -3460
-rect 700 -3830 2440 -3650
-rect 2430 -4150 2440 -3830
-rect 3540 -4150 3550 -3650
+rect -60 -860 350 -855
+rect -60 -1280 -50 -860
+rect 340 -1280 350 -860
+rect -60 -1285 350 -1280
+rect 690 -3460 850 -3455
+rect 1310 -3460 1700 -3455
+rect 2150 -3460 2530 -3455
+rect 2990 -3460 3150 -3455
+rect 690 -3620 700 -3460
+rect 840 -3620 1320 -3460
+rect 1690 -3620 2160 -3460
+rect 2520 -3620 3000 -3460
+rect 3140 -3620 3150 -3460
+rect 690 -3625 3150 -3620
+rect 700 -3680 3150 -3625
+rect 700 -3830 2330 -3680
+rect 2320 -4070 2330 -3830
+rect 3160 -4070 3170 -3680
rect 7180 -3970 7420 -2580
rect 7570 -3970 7810 -2580
rect 8530 -3970 8770 -2580
@@ -94,24 +127,36 @@
rect 14320 -4260 16870 -4110
rect 12890 -4315 13430 -4310
<< via3 >>
-rect -130 -1270 270 -870
-rect 2440 -4150 3540 -3650
+rect 1520 3740 2770 4100
+rect 18030 3740 19350 4100
+rect -50 -1280 340 -860
+rect 2330 -4070 3160 -3680
rect 9140 -4070 9790 -3630
rect 12900 -4310 13420 -3900
rect 15150 -4110 16010 -3510
<< metal4 >>
-rect -140 -870 670 -860
-rect -140 -1270 -130 -870
-rect 270 -1270 670 -870
-rect -140 -1280 670 -1270
+rect 1519 4100 2771 4101
+rect 1519 3740 1520 4100
+rect 2770 3740 2771 4100
+rect 1519 3739 2771 3740
+rect 18029 4100 19351 4101
+rect 18029 3740 18030 4100
+rect 19350 3740 19351 4100
+rect 18029 3739 19351 3740
+rect -50 -859 670 -850
+rect -51 -860 670 -859
+rect -51 -1280 -50 -860
+rect 340 -1280 670 -860
+rect -51 -1281 670 -1280
+rect -50 -1290 670 -1281
rect 540 -4400 1290 -3070
rect 15149 -3510 16011 -3509
rect 9139 -3630 9791 -3629
-rect 2439 -3650 3541 -3649
-rect 2439 -4150 2440 -3650
-rect 3540 -4150 3541 -3650
+rect 2329 -3680 3161 -3679
+rect 2329 -4070 2330 -3680
+rect 3160 -4070 3161 -3680
+rect 2329 -4071 3161 -4070
rect 9139 -4071 9140 -3630
-rect 2439 -4151 3541 -4150
rect 9790 -4071 9791 -3630
rect 12820 -3900 13920 -3890
rect 12820 -4310 12900 -3900
@@ -120,17 +165,32 @@
rect 16010 -4111 16011 -3510
rect 12820 -4480 13920 -4310
<< via4 >>
-rect 2440 -4150 3540 -3650
+rect 1520 3740 2770 4100
+rect 18030 3740 19350 4100
+rect 2330 -4070 3160 -3680
rect 9140 -4070 9790 -3810
rect 9140 -4250 9790 -4070
rect 15150 -4110 16010 -3780
rect 15150 -4220 16010 -4110
<< metal5 >>
-rect 6540 -2750 7900 -1580
-rect 2310 -3650 3660 -3100
-rect 2310 -4150 2440 -3650
-rect 3540 -4150 3660 -3650
-rect 2310 -4710 3660 -4150
+rect 1496 4120 2794 4124
+rect 18006 4120 19374 4124
+rect 1220 4100 19390 4120
+rect 1220 3740 1520 4100
+rect 2770 3740 18030 4100
+rect 19350 3740 19390 4100
+rect 1220 3720 19390 3740
+rect 1496 3716 2794 3720
+rect 18006 3716 19374 3720
+rect 6110 -2480 8020 -1550
+rect 12520 -2280 14430 -1350
+rect 7630 -2750 7900 -2480
+rect 2310 -3656 3660 -3100
+rect 2306 -3680 3660 -3656
+rect 2306 -4070 2330 -3680
+rect 3160 -4070 3660 -3680
+rect 2306 -4094 3660 -4070
+rect 2310 -4710 3660 -4094
rect 8800 -3810 10130 -3210
rect 8800 -4250 9140 -3810
rect 9790 -4250 10130 -3810
@@ -141,131 +201,131 @@
rect 16010 -4220 16350 -3780
rect 14790 -4570 16350 -4220
use mirror_n mirror_n_0
-timestamp 1646402185
+timestamp 1646921651
transform 1 0 1530 0 1 -3800
box -30 -30 820 3450
use mirror_n mirror_n_1
-timestamp 1646402185
+timestamp 1646921651
transform 1 0 2370 0 1 -3800
box -30 -30 820 3450
use mirror_n mirror_n_2
-timestamp 1646402185
+timestamp 1646921651
transform 1 0 690 0 1 -3800
box -30 -30 820 3450
use mirror_p mirror_p_0
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 2550 0 -1 1450
box -320 -1880 1050 1700
use mirror_p mirror_p_2
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 4200 0 -1 1450
box -320 -1880 1050 1700
use mirror_p mirror_p_3
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 8250 0 -1 1450
box -320 -1880 1050 1700
use mirror_p mirror_p_4
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 6900 0 -1 1450
box -320 -1880 1050 1700
use mirror_p mirror_p_5
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 5550 0 -1 1450
box -320 -1880 1050 1700
use mirror_p mirror_p_6
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 15000 0 -1 1450
box -320 -1880 1050 1700
use mirror_p mirror_p_7
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 13650 0 -1 1450
box -320 -1880 1050 1700
use mirror_p mirror_p_8
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 12300 0 -1 1450
box -320 -1880 1050 1700
use mirror_p mirror_p_9
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 10950 0 -1 1450
box -320 -1880 1050 1700
use mirror_p mirror_p_10
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 4480 0 -1 -2110
box -320 -1880 1050 1700
use mirror_p mirror_p_11
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 9600 0 -1 1450
box -320 -1880 1050 1700
use mirror_p mirror_p_12
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 5830 0 -1 -2110
box -320 -1880 1050 1700
use mirror_p mirror_p_13
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 7180 0 -1 -2110
box -320 -1880 1050 1700
use mirror_p mirror_p_14
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 8530 0 -1 -2110
box -320 -1880 1050 1700
use mirror_p mirror_p_15
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 9880 0 -1 -2110
box -320 -1880 1050 1700
use mirror_p mirror_p_16
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 11230 0 -1 -2110
box -320 -1880 1050 1700
use mirror_p mirror_p_17
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 12580 0 -1 -2110
box -320 -1880 1050 1700
use mirror_p mirror_p_18
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 13930 0 -1 -2110
box -320 -1880 1050 1700
use mirror_p mirror_p_19
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 15280 0 -1 -2110
box -320 -1880 1050 1700
use mirror_p mirror_p_20
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 16630 0 -1 -2110
box -320 -1880 1050 1700
use mirror_p mirror_p_21
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 19050 0 -1 1450
box -320 -1880 1050 1700
use mirror_p mirror_p_22
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 16350 0 -1 1450
box -320 -1880 1050 1700
use mirror_p mirror_p_23
-timestamp 1646401284
+timestamp 1646921651
transform -1 0 17700 0 -1 1450
box -320 -1880 1050 1700
-use sky130_fd_pr__cap_mim_m3_2_LJ5JLG#0 sky130_fd_pr__cap_mim_m3_2_LJ5JLG_0
-timestamp 1646406276
+use sky130_fd_pr__cap_mim_m3_2_LJ5JLG sky130_fd_pr__cap_mim_m3_2_LJ5JLG_0
+timestamp 1646921651
transform 0 1 10181 -1 0 -18
box -3351 -3101 3373 3101
-use sky130_fd_pr__cap_mim_m3_2_LJ5JLG#0 sky130_fd_pr__cap_mim_m3_2_LJ5JLG_1
-timestamp 1646406276
+use sky130_fd_pr__cap_mim_m3_2_LJ5JLG sky130_fd_pr__cap_mim_m3_2_LJ5JLG_1
+timestamp 1646921651
transform 0 1 16711 -1 0 -17
box -3351 -3101 3373 3101
-use sky130_fd_pr__cap_mim_m3_2_LJ5JLG#0 sky130_fd_pr__cap_mim_m3_2_LJ5JLG_2
-timestamp 1646406276
+use sky130_fd_pr__cap_mim_m3_2_LJ5JLG sky130_fd_pr__cap_mim_m3_2_LJ5JLG_2
+timestamp 1646921651
transform 0 -1 3651 1 0 -49
box -3351 -3101 3373 3101
-use sky130_fd_pr__cap_mim_m3_2_LJ5JLG#0 sky130_fd_pr__cap_mim_m3_2_LJ5JLG_3
-timestamp 1646406276
+use sky130_fd_pr__cap_mim_m3_2_LJ5JLG sky130_fd_pr__cap_mim_m3_2_LJ5JLG_3
+timestamp 1646921651
transform 0 1 3651 -1 0 -7727
box -3351 -3101 3373 3101
-use sky130_fd_pr__cap_mim_m3_2_LJ5JLG#0 sky130_fd_pr__cap_mim_m3_2_LJ5JLG_4
-timestamp 1646406276
+use sky130_fd_pr__cap_mim_m3_2_LJ5JLG sky130_fd_pr__cap_mim_m3_2_LJ5JLG_4
+timestamp 1646921651
transform 0 1 10181 -1 0 -7717
box -3351 -3101 3373 3101
-use sky130_fd_pr__cap_mim_m3_2_LJ5JLG#0 sky130_fd_pr__cap_mim_m3_2_LJ5JLG_5
-timestamp 1646406276
+use sky130_fd_pr__cap_mim_m3_2_LJ5JLG sky130_fd_pr__cap_mim_m3_2_LJ5JLG_5
+timestamp 1646921651
transform 0 1 16741 -1 0 -7697
box -3351 -3101 3373 3101
<< labels >>
@@ -273,4 +333,6 @@
rlabel metal2 18160 -190 18330 -30 1 A_Out_I_Bias
rlabel metal2 2540 -500 2660 -360 1 TIA_I_Bias2
rlabel metal2 860 -470 980 -360 1 I_in_channel
+rlabel metal5 2790 -4340 3020 -4200 1 VN
+rlabel metal5 1270 3880 1430 4010 1 VP
<< end >>
diff --git a/mag/currm/cmirror_channel.spice b/mag/currm/cmirror_channel.spice
new file mode 100644
index 0000000..6bdab0b
--- /dev/null
+++ b/mag/currm/cmirror_channel.spice
@@ -0,0 +1,498 @@
+* SPICE3 file created from cmirror_channel.ext - technology: sky130A
+
+X0 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X1 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X2 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X3 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X4 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X5 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X6 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X7 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X8 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X9 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X10 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X11 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X12 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X13 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X14 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X15 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X16 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X17 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X18 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X19 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X20 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X21 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X22 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X23 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X24 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X25 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X26 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X27 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X28 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X29 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X30 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X31 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X32 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X33 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X34 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X35 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X36 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X37 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X38 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X39 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X40 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X41 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X42 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X43 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X44 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X45 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X46 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X47 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X48 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X49 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X50 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X51 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X52 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X53 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X54 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X55 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X56 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X57 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X58 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X59 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X60 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X61 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X62 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X63 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X64 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X65 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X66 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X67 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X68 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X69 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X70 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X71 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X72 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X73 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X74 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X75 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X76 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X77 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X78 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X79 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X80 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X81 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X82 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X83 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X84 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X85 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X86 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X87 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X88 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X89 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X90 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X91 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X92 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X93 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X94 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X95 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X96 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X97 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X98 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X99 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X100 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X101 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X102 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X103 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X104 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X105 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X106 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X107 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X108 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X109 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X110 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X111 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X112 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X113 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X114 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X115 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X116 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X117 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X118 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X119 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X120 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X121 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X122 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X123 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X124 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X125 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X126 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X127 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X128 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X129 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X130 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X131 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X132 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X133 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X134 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X135 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X136 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X137 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X138 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X139 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X140 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X141 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X142 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X143 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X144 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X145 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X146 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X147 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X148 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X149 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X150 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X151 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X152 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X153 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X154 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X155 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X156 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X157 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X158 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X159 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X160 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X161 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X162 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X163 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X164 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X165 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X166 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X167 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X168 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X169 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X170 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X171 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X172 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X173 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X174 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X175 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X176 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X177 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X178 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X179 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X180 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X181 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X182 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X183 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X184 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X185 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X186 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X187 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X188 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X189 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X190 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X191 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X192 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X193 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X194 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X195 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X196 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X197 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X198 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X199 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X200 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X201 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X202 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X203 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X204 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X205 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X206 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X207 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X208 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X209 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X210 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X211 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X212 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X213 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X214 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X215 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X216 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X217 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X218 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X219 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X220 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X221 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X222 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X223 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X224 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X225 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X226 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X227 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X228 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X229 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X230 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X231 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X232 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X233 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X234 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X235 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X236 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X237 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X238 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X239 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X240 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X241 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X242 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X243 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X244 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X245 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X246 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X247 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X248 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X249 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X250 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X251 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X252 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X253 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X254 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X255 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X256 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X257 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X258 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X259 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X260 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X261 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X262 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X263 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X264 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X265 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X266 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X267 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X268 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X269 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X270 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X271 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X272 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X273 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X274 m2_4390_n2520# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X275 VP m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X276 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X277 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X278 m2_4390_n2520# m1_2160_410# TIA_I_Bias1 VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X279 TIA_I_Bias1 m1_2160_410# m2_4390_n2520# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X280 mirror_p_0/m1_n92_1078# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X281 VP m1_2160_410# mirror_p_0/m1_n92_1078# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X282 VP m1_2160_410# mirror_p_0/m1_n92_1078# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X283 mirror_p_0/m1_n92_1078# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X284 mirror_p_0/m1_n92_1078# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X285 mirror_p_0/m1_n92_1078# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X286 VP m1_2160_410# mirror_p_0/m1_n92_1078# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X287 VP m1_2160_410# mirror_p_0/m1_n92_1078# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X288 VP m1_2160_410# mirror_p_0/m1_n92_1078# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X289 mirror_p_0/m1_n92_1078# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X290 mirror_p_0/m1_n92_1078# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X291 VP m1_2160_410# mirror_p_0/m1_n92_1078# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X292 mirror_p_0/m1_n92_1078# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X293 VP m1_2160_410# mirror_p_0/m1_n92_1078# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X294 mirror_p_0/m1_n92_1078# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X295 VP m1_2160_410# mirror_p_0/m1_n92_1078# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X296 mirror_p_0/m1_n92_1078# m1_2160_410# m1_2160_410# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X297 m1_2160_410# m1_2160_410# mirror_p_0/m1_n92_1078# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X298 mirror_p_0/m1_n92_1078# m1_2160_410# m1_2160_410# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X299 m1_2160_410# m1_2160_410# mirror_p_0/m1_n92_1078# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X300 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X301 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X302 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X303 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X304 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X305 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X306 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X307 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X308 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X309 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X310 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X311 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X312 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X313 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X314 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X315 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X316 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X317 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X318 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X319 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X320 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X321 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X322 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X323 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X324 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X325 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X326 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X327 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X328 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X329 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X330 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X331 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X332 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X333 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X334 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X335 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X336 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X337 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X338 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X339 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X340 mirror_n_0/m1_100_2840# I_in_channel VN VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X341 VN I_in_channel mirror_n_0/m1_100_2840# VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X342 mirror_n_0/m1_100_2840# I_in_channel VN VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X343 mirror_n_0/m1_100_2840# I_in_channel VN VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X344 VN I_in_channel mirror_n_0/m1_100_2840# VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X345 VN I_in_channel mirror_n_0/m1_100_2840# VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X346 mirror_n_0/m1_100_2840# I_in_channel VN VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X347 VN I_in_channel mirror_n_0/m1_100_2840# VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X348 mirror_n_0/m1_100_2840# I_in_channel m1_2160_410# VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X349 m1_2160_410# I_in_channel mirror_n_0/m1_100_2840# VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X350 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X351 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X352 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X353 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X354 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X355 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X356 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X357 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X358 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X359 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X360 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X361 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X362 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X363 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X364 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X365 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X366 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X367 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X368 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X369 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X370 mirror_n_1/m1_100_2840# I_in_channel VN VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X371 VN I_in_channel mirror_n_1/m1_100_2840# VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X372 mirror_n_1/m1_100_2840# I_in_channel VN VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X373 mirror_n_1/m1_100_2840# I_in_channel VN VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X374 VN I_in_channel mirror_n_1/m1_100_2840# VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X375 VN I_in_channel mirror_n_1/m1_100_2840# VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X376 mirror_n_1/m1_100_2840# I_in_channel VN VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X377 VN I_in_channel mirror_n_1/m1_100_2840# VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X378 mirror_n_1/m1_100_2840# I_in_channel TIA_I_Bias2 VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X379 TIA_I_Bias2 I_in_channel mirror_n_1/m1_100_2840# VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X380 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X381 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X382 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X383 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X384 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X385 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X386 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X387 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X388 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X389 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X390 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X391 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X392 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X393 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X394 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X395 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X396 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X397 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X398 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X399 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X400 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X401 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X402 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X403 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X404 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X405 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X406 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X407 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X408 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X409 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X410 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X411 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X412 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X413 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X414 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X415 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X416 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X417 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X418 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X419 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X420 mirror_n_2/m1_100_2840# I_in_channel VN VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X421 VN I_in_channel mirror_n_2/m1_100_2840# VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X422 mirror_n_2/m1_100_2840# I_in_channel VN VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X423 mirror_n_2/m1_100_2840# I_in_channel VN VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X424 VN I_in_channel mirror_n_2/m1_100_2840# VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X425 VN I_in_channel mirror_n_2/m1_100_2840# VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X426 mirror_n_2/m1_100_2840# I_in_channel VN VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X427 VN I_in_channel mirror_n_2/m1_100_2840# VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X428 mirror_n_2/m1_100_2840# I_in_channel I_in_channel VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X429 I_in_channel I_in_channel mirror_n_2/m1_100_2840# VN sky130_fd_pr__nfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X430 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X431 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X432 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X433 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X434 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X435 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X436 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X437 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X438 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X439 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X440 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X441 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X442 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X443 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X444 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X445 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X446 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X447 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X448 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X449 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X450 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X451 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X452 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X453 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X454 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X455 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X456 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X457 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X458 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X459 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X460 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X461 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X462 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X463 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X464 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X465 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X466 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X467 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X468 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X469 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X470 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X471 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X472 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X473 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X474 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X475 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X476 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X477 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X478 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X479 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X480 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X481 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X482 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X483 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X484 m2_4080_1040# m1_2160_410# VP VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X485 VP m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X486 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X487 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X488 m2_4080_1040# m1_2160_410# A_Out_I_Bias VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X489 A_Out_I_Bias m1_2160_410# m2_4080_1040# VP sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X490 VN VP sky130_fd_pr__cap_mim_m3_2 l=3e+07u w=3e+07u
+X491 VN VP sky130_fd_pr__cap_mim_m3_2 l=3e+07u w=3e+07u
+X492 VN I_in_channel sky130_fd_pr__cap_mim_m3_2 l=3e+07u w=3e+07u
+X493 VP m1_2160_410# sky130_fd_pr__cap_mim_m3_2 l=3e+07u w=3e+07u
+X494 VN I_in_channel sky130_fd_pr__cap_mim_m3_2 l=3e+07u w=3e+07u
+X495 VP m1_2160_410# sky130_fd_pr__cap_mim_m3_2 l=3e+07u w=3e+07u
diff --git a/mag/currm/eigth_mirror.mag b/mag/currm/eigth_mirror.mag
index c124ddb..d1af6f0 100644
--- a/mag/currm/eigth_mirror.mag
+++ b/mag/currm/eigth_mirror.mag
@@ -1,6 +1,6 @@
magic
tech sky130A
-timestamp 1646401284
+timestamp 1646921651
<< metal1 >>
rect 70 1700 205 1735
rect 70 1600 110 1700
@@ -20,39 +20,39 @@
<< metal3 >>
rect 50 0 5675 170
use mirror_p mirror_p_0
-timestamp 1646401284
+timestamp 1646921651
transform 1 0 165 0 1 940
box -160 -940 525 850
use mirror_p mirror_p_1
-timestamp 1646401284
+timestamp 1646921651
transform 1 0 840 0 1 940
box -160 -940 525 850
use mirror_p mirror_p_2
-timestamp 1646401284
+timestamp 1646921651
transform 1 0 1515 0 1 940
box -160 -940 525 850
use mirror_p mirror_p_3
-timestamp 1646401284
+timestamp 1646921651
transform 1 0 2190 0 1 940
box -160 -940 525 850
use mirror_p mirror_p_4
-timestamp 1646401284
+timestamp 1646921651
transform 1 0 2865 0 1 940
box -160 -940 525 850
use mirror_p mirror_p_6
-timestamp 1646401284
+timestamp 1646921651
transform 1 0 5565 0 1 940
box -160 -940 525 850
use mirror_p mirror_p_7
-timestamp 1646401284
+timestamp 1646921651
transform 1 0 4890 0 1 940
box -160 -940 525 850
use mirror_p mirror_p_8
-timestamp 1646401284
+timestamp 1646921651
transform 1 0 4215 0 1 940
box -160 -940 525 850
use mirror_p mirror_p_9
-timestamp 1646401284
+timestamp 1646921651
transform 1 0 3540 0 1 940
box -160 -940 525 850
<< labels >>
diff --git a/mag/currm/eigth_mirror.spice b/mag/currm/eigth_mirror.spice
new file mode 100644
index 0000000..8673726
--- /dev/null
+++ b/mag/currm/eigth_mirror.spice
@@ -0,0 +1,182 @@
+* SPICE3 file created from eigth_mirror.ext - technology: sky130A
+
+X0 mirror_p_0/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X1 m3_100_0# I_In mirror_p_0/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X2 m3_100_0# I_In mirror_p_0/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X3 mirror_p_0/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X4 mirror_p_0/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X5 mirror_p_0/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X6 m3_100_0# I_In mirror_p_0/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X7 m3_100_0# I_In mirror_p_0/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X8 m3_100_0# I_In mirror_p_0/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X9 mirror_p_0/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X10 mirror_p_0/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X11 m3_100_0# I_In mirror_p_0/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X12 mirror_p_0/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X13 m3_100_0# I_In mirror_p_0/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X14 mirror_p_0/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X15 m3_100_0# I_In mirror_p_0/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X16 mirror_p_0/m1_n92_1078# I_In I_In m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X17 I_In I_In mirror_p_0/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X18 mirror_p_0/m1_n92_1078# I_In I_In m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X19 I_In I_In mirror_p_0/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X20 mirror_p_1/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X21 m3_100_0# I_In mirror_p_1/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X22 m3_100_0# I_In mirror_p_1/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X23 mirror_p_1/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X24 mirror_p_1/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X25 mirror_p_1/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X26 m3_100_0# I_In mirror_p_1/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X27 m3_100_0# I_In mirror_p_1/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X28 m3_100_0# I_In mirror_p_1/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X29 mirror_p_1/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X30 mirror_p_1/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X31 m3_100_0# I_In mirror_p_1/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X32 mirror_p_1/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X33 m3_100_0# I_In mirror_p_1/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X34 mirror_p_1/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X35 m3_100_0# I_In mirror_p_1/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X36 mirror_p_1/m1_n92_1078# I_In I_out_0 m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X37 I_out_0 I_In mirror_p_1/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X38 mirror_p_1/m1_n92_1078# I_In I_out_0 m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X39 I_out_0 I_In mirror_p_1/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X40 mirror_p_2/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X41 m3_100_0# I_In mirror_p_2/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X42 m3_100_0# I_In mirror_p_2/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X43 mirror_p_2/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X44 mirror_p_2/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X45 mirror_p_2/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X46 m3_100_0# I_In mirror_p_2/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X47 m3_100_0# I_In mirror_p_2/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X48 m3_100_0# I_In mirror_p_2/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X49 mirror_p_2/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X50 mirror_p_2/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X51 m3_100_0# I_In mirror_p_2/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X52 mirror_p_2/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X53 m3_100_0# I_In mirror_p_2/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X54 mirror_p_2/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X55 m3_100_0# I_In mirror_p_2/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X56 mirror_p_2/m1_n92_1078# I_In I_out_1 m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X57 I_out_1 I_In mirror_p_2/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X58 mirror_p_2/m1_n92_1078# I_In I_out_1 m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X59 I_out_1 I_In mirror_p_2/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X60 mirror_p_3/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X61 m3_100_0# I_In mirror_p_3/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X62 m3_100_0# I_In mirror_p_3/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X63 mirror_p_3/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X64 mirror_p_3/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X65 mirror_p_3/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X66 m3_100_0# I_In mirror_p_3/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X67 m3_100_0# I_In mirror_p_3/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X68 m3_100_0# I_In mirror_p_3/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X69 mirror_p_3/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X70 mirror_p_3/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X71 m3_100_0# I_In mirror_p_3/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X72 mirror_p_3/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X73 m3_100_0# I_In mirror_p_3/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X74 mirror_p_3/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X75 m3_100_0# I_In mirror_p_3/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X76 mirror_p_3/m1_n92_1078# I_In I_out_2 m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X77 I_out_2 I_In mirror_p_3/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X78 mirror_p_3/m1_n92_1078# I_In I_out_2 m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X79 I_out_2 I_In mirror_p_3/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X80 mirror_p_4/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X81 m3_100_0# I_In mirror_p_4/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X82 m3_100_0# I_In mirror_p_4/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X83 mirror_p_4/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X84 mirror_p_4/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X85 mirror_p_4/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X86 m3_100_0# I_In mirror_p_4/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X87 m3_100_0# I_In mirror_p_4/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X88 m3_100_0# I_In mirror_p_4/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X89 mirror_p_4/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X90 mirror_p_4/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X91 m3_100_0# I_In mirror_p_4/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X92 mirror_p_4/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X93 m3_100_0# I_In mirror_p_4/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X94 mirror_p_4/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X95 m3_100_0# I_In mirror_p_4/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X96 mirror_p_4/m1_n92_1078# I_In I_out_3 m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X97 I_out_3 I_In mirror_p_4/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X98 mirror_p_4/m1_n92_1078# I_In I_out_3 m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X99 I_out_3 I_In mirror_p_4/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X100 mirror_p_6/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X101 m3_100_0# I_In mirror_p_6/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X102 m3_100_0# I_In mirror_p_6/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X103 mirror_p_6/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X104 mirror_p_6/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X105 mirror_p_6/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X106 m3_100_0# I_In mirror_p_6/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X107 m3_100_0# I_In mirror_p_6/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X108 m3_100_0# I_In mirror_p_6/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X109 mirror_p_6/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X110 mirror_p_6/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X111 m3_100_0# I_In mirror_p_6/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X112 mirror_p_6/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X113 m3_100_0# I_In mirror_p_6/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X114 mirror_p_6/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X115 m3_100_0# I_In mirror_p_6/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X116 mirror_p_6/m1_n92_1078# I_In I_out_7 m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X117 I_out_7 I_In mirror_p_6/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X118 mirror_p_6/m1_n92_1078# I_In I_out_7 m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X119 I_out_7 I_In mirror_p_6/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X120 mirror_p_7/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X121 m3_100_0# I_In mirror_p_7/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X122 m3_100_0# I_In mirror_p_7/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X123 mirror_p_7/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X124 mirror_p_7/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X125 mirror_p_7/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X126 m3_100_0# I_In mirror_p_7/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X127 m3_100_0# I_In mirror_p_7/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X128 m3_100_0# I_In mirror_p_7/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X129 mirror_p_7/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X130 mirror_p_7/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X131 m3_100_0# I_In mirror_p_7/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X132 mirror_p_7/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X133 m3_100_0# I_In mirror_p_7/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X134 mirror_p_7/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X135 m3_100_0# I_In mirror_p_7/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X136 mirror_p_7/m1_n92_1078# I_In I_out_6 m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X137 I_out_6 I_In mirror_p_7/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X138 mirror_p_7/m1_n92_1078# I_In I_out_6 m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X139 I_out_6 I_In mirror_p_7/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X140 mirror_p_8/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X141 m3_100_0# I_In mirror_p_8/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X142 m3_100_0# I_In mirror_p_8/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X143 mirror_p_8/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X144 mirror_p_8/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X145 mirror_p_8/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X146 m3_100_0# I_In mirror_p_8/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X147 m3_100_0# I_In mirror_p_8/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X148 m3_100_0# I_In mirror_p_8/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X149 mirror_p_8/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X150 mirror_p_8/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X151 m3_100_0# I_In mirror_p_8/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X152 mirror_p_8/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X153 m3_100_0# I_In mirror_p_8/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X154 mirror_p_8/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X155 m3_100_0# I_In mirror_p_8/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X156 mirror_p_8/m1_n92_1078# I_In I_out_5 m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X157 I_out_5 I_In mirror_p_8/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X158 mirror_p_8/m1_n92_1078# I_In I_out_5 m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X159 I_out_5 I_In mirror_p_8/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X160 mirror_p_9/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X161 m3_100_0# I_In mirror_p_9/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X162 m3_100_0# I_In mirror_p_9/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X163 mirror_p_9/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X164 mirror_p_9/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X165 mirror_p_9/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X166 m3_100_0# I_In mirror_p_9/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X167 m3_100_0# I_In mirror_p_9/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X168 m3_100_0# I_In mirror_p_9/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X169 mirror_p_9/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X170 mirror_p_9/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X171 m3_100_0# I_In mirror_p_9/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X172 mirror_p_9/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X173 m3_100_0# I_In mirror_p_9/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X174 mirror_p_9/m1_n92_1078# I_In m3_100_0# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X175 m3_100_0# I_In mirror_p_9/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=1e+06u
+X176 mirror_p_9/m1_n92_1078# I_In I_out_4 m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X177 I_out_4 I_In mirror_p_9/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X178 mirror_p_9/m1_n92_1078# I_In I_out_4 m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
+X179 I_out_4 I_In mirror_p_9/m1_n92_1078# m3_100_0# sky130_fd_pr__pfet_01v8 ad=0p pd=0u as=0p ps=0u w=2e+06u l=200000u
diff --git a/mag/currm/mirror_n.mag b/mag/currm/mirror_n.mag
index a483dca..eaf6367 100644
--- a/mag/currm/mirror_n.mag
+++ b/mag/currm/mirror_n.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1646402185
+timestamp 1646921651
<< locali >>
rect -30 3380 500 3450
rect -30 2690 40 3380
@@ -117,11 +117,11 @@
rect 680 180 770 340
rect 10 -30 770 180
use sky130_fd_pr__nfet_01v8_M8466X sky130_fd_pr__nfet_01v8_M8466X_0
-timestamp 1646402185
+timestamp 1646921651
transform 1 0 395 0 1 1307
box -425 -1337 425 1337
use sky130_fd_pr__nfet_01v8_WS53KN sky130_fd_pr__nfet_01v8_WS53KN_0
-timestamp 1646402185
+timestamp 1646921651
transform 1 0 235 0 1 3040
box -265 -410 265 410
<< end >>
diff --git a/mag/currm/mirror_p.mag b/mag/currm/mirror_p.mag
index 7ca91da..8f4a3d0 100644
--- a/mag/currm/mirror_p.mag
+++ b/mag/currm/mirror_p.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1646401284
+timestamp 1646921651
<< nwell >>
rect 230 1520 310 1570
<< locali >>
@@ -293,11 +293,11 @@
rect -250 -1675 970 -1670
rect -230 -1880 960 -1675
use sky130_fd_pr__pfet_01v8_LXX5YL sky130_fd_pr__pfet_01v8_LXX5YL_0
-timestamp 1646400034
+timestamp 1646921651
transform 1 0 363 0 1 -507
box -683 -1373 683 1373
use sky130_fd_pr__pfet_01v8_X9CJL2 sky130_fd_pr__pfet_01v8_X9CJL2_0
-timestamp 1646401284
+timestamp 1646921651
transform 1 0 43 0 1 1279
box -363 -419 363 419
<< end >>
diff --git "a/mag/currm/sky130_fd_pr__cap_mim_m3_2_LJ5JLG\0430.mag" "b/mag/currm/sky130_fd_pr__cap_mim_m3_2_LJ5JLG\0430.mag"
new file mode 100644
index 0000000..8d0f695
--- /dev/null
+++ "b/mag/currm/sky130_fd_pr__cap_mim_m3_2_LJ5JLG\0430.mag"
@@ -0,0 +1,33 @@
+magic
+tech sky130A
+magscale 1 2
+timestamp 1646406276
+<< metal4 >>
+rect -3351 3059 3351 3100
+rect -3351 -3059 3095 3059
+rect 3331 -3059 3351 3059
+rect -3351 -3100 3351 -3059
+<< via4 >>
+rect 3095 -3059 3331 3059
+<< mimcap2 >>
+rect -3251 2960 2749 3000
+rect -3251 -2960 -3211 2960
+rect 2709 -2960 2749 2960
+rect -3251 -3000 2749 -2960
+<< mimcap2contact >>
+rect -3211 -2960 2709 2960
+<< metal5 >>
+rect 3053 3059 3373 3101
+rect -3235 2960 2733 2984
+rect -3235 -2960 -3211 2960
+rect 2709 -2960 2733 2960
+rect -3235 -2984 2733 -2960
+rect 3053 -3059 3095 3059
+rect 3331 -3059 3373 3059
+rect 3053 -3101 3373 -3059
+<< properties >>
+string FIXED_BBOX -3351 -3100 2849 3100
+string gencell sky130_fd_pr__cap_mim_m3_2
+string library sky130
+string parameters w 30 l 30 val 1.822k carea 2.00 cperi 0.19 nx 1 ny 1 dummy 0 square 0 lmin 2.00 wmin 2.00 lmax 30.0 wmax 30.0 dc 0 bconnect 1 tconnect 1 ccov 100
+<< end >>
diff --git a/mag/currm/sky130_fd_pr__cap_mim_m3_2_LJ5JLG.mag b/mag/currm/sky130_fd_pr__cap_mim_m3_2_LJ5JLG.mag
index 8d0f695..caa3dbd 100644
--- a/mag/currm/sky130_fd_pr__cap_mim_m3_2_LJ5JLG.mag
+++ b/mag/currm/sky130_fd_pr__cap_mim_m3_2_LJ5JLG.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1646406276
+timestamp 1646921651
<< metal4 >>
rect -3351 3059 3351 3100
rect -3351 -3059 3095 3059
diff --git a/mag/currm/sky130_fd_pr__nfet_01v8_M8466X.mag b/mag/currm/sky130_fd_pr__nfet_01v8_M8466X.mag
index 9ee15a2..73596d7 100644
--- a/mag/currm/sky130_fd_pr__nfet_01v8_M8466X.mag
+++ b/mag/currm/sky130_fd_pr__nfet_01v8_M8466X.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1646402185
+timestamp 1646921651
<< pwell >>
rect -425 -1337 425 1337
<< nmos >>
diff --git a/mag/currm/sky130_fd_pr__nfet_01v8_WS53KN.mag b/mag/currm/sky130_fd_pr__nfet_01v8_WS53KN.mag
index 745299f..3cbd911 100644
--- a/mag/currm/sky130_fd_pr__nfet_01v8_WS53KN.mag
+++ b/mag/currm/sky130_fd_pr__nfet_01v8_WS53KN.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1646402185
+timestamp 1646921651
<< error_p >>
rect 20 272 78 278
rect 20 238 32 272
diff --git a/mag/currm/sky130_fd_pr__pfet_01v8_LXX5YL.mag b/mag/currm/sky130_fd_pr__pfet_01v8_LXX5YL.mag
index a8fa80b..0dadc8f 100644
--- a/mag/currm/sky130_fd_pr__pfet_01v8_LXX5YL.mag
+++ b/mag/currm/sky130_fd_pr__pfet_01v8_LXX5YL.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1646400034
+timestamp 1646921651
<< nwell >>
rect -683 -1373 683 1373
<< pmos >>
diff --git a/mag/currm/sky130_fd_pr__pfet_01v8_X9CJL2.mag b/mag/currm/sky130_fd_pr__pfet_01v8_X9CJL2.mag
index 4705483..d6c6dc4 100644
--- a/mag/currm/sky130_fd_pr__pfet_01v8_X9CJL2.mag
+++ b/mag/currm/sky130_fd_pr__pfet_01v8_X9CJL2.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1646401284
+timestamp 1646921651
<< error_p >>
rect -78 281 -20 287
rect 118 281 176 287
diff --git a/mag/esd/esd-array.mag b/mag/esd/esd-array.mag
index 3ce05fe..023e82e 100644
--- a/mag/esd/esd-array.mag
+++ b/mag/esd/esd-array.mag
@@ -1,648 +1,341 @@
magic
tech sky130A
-timestamp 1646682533
+magscale 1 2
+timestamp 1646921651
<< nwell >>
-rect -2351 269 281 507
+rect -9230 1690 -1970 1730
+rect -8600 1110 -8450 1690
+rect -7870 1110 -7720 1690
+rect -7130 1110 -6980 1690
+rect -6400 1110 -6250 1690
+rect -5670 1110 -5520 1690
+rect -4940 1110 -4790 1690
+rect -4210 1110 -4060 1690
+rect -3470 1080 -3330 1690
+rect -2740 1060 -2600 1690
+rect -2010 1080 -1970 1690
<< pwell >>
-rect -2420 507 350 576
-rect -2420 269 -2351 507
-rect 281 269 350 507
-rect -2420 200 350 269
-rect -2350 -40 282 198
-<< psubdiff >>
-rect -2402 541 -2354 558
-rect 284 541 332 558
-rect -2402 510 -2385 541
-rect 315 510 332 541
-rect -2402 235 -2385 266
-rect 315 235 332 266
-rect -2402 218 -2354 235
-rect 284 218 332 235
-rect -2332 163 -2284 180
-rect -2178 163 -2130 180
-rect -2332 132 -2315 163
-rect -2147 132 -2130 163
-rect -2332 -5 -2315 26
-rect -2147 -5 -2130 26
-rect -2332 -22 -2284 -5
-rect -2178 -22 -2130 -5
-rect -2066 163 -2018 180
-rect -1912 163 -1864 180
-rect -2066 132 -2049 163
-rect -1881 132 -1864 163
-rect -2066 -5 -2049 26
-rect -1881 -5 -1864 26
-rect -2066 -22 -2018 -5
-rect -1912 -22 -1864 -5
-rect -1800 163 -1752 180
-rect -1646 163 -1598 180
-rect -1800 132 -1783 163
-rect -1615 132 -1598 163
-rect -1800 -5 -1783 26
-rect -1615 -5 -1598 26
-rect -1800 -22 -1752 -5
-rect -1646 -22 -1598 -5
-rect -1534 163 -1486 180
-rect -1380 163 -1332 180
-rect -1534 132 -1517 163
-rect -1349 132 -1332 163
-rect -1534 -5 -1517 26
-rect -1349 -5 -1332 26
-rect -1534 -22 -1486 -5
-rect -1380 -22 -1332 -5
-rect -1268 163 -1220 180
-rect -1114 163 -1066 180
-rect -1268 132 -1251 163
-rect -1083 132 -1066 163
-rect -1268 -5 -1251 26
-rect -1083 -5 -1066 26
-rect -1268 -22 -1220 -5
-rect -1114 -22 -1066 -5
-rect -1002 163 -954 180
-rect -848 163 -800 180
-rect -1002 132 -985 163
-rect -817 132 -800 163
-rect -1002 -5 -985 26
-rect -817 -5 -800 26
-rect -1002 -22 -954 -5
-rect -848 -22 -800 -5
-rect -736 163 -688 180
-rect -582 163 -534 180
-rect -736 132 -719 163
-rect -551 132 -534 163
-rect -736 -5 -719 26
-rect -551 -5 -534 26
-rect -736 -22 -688 -5
-rect -582 -22 -534 -5
-rect -470 163 -422 180
-rect -316 163 -268 180
-rect -470 132 -453 163
-rect -285 132 -268 163
-rect -470 -5 -453 26
-rect -285 -5 -268 26
-rect -470 -22 -422 -5
-rect -316 -22 -268 -5
-rect -204 163 -156 180
-rect -50 163 -2 180
-rect -204 132 -187 163
-rect -19 132 -2 163
-rect -204 -5 -187 26
-rect -19 -5 -2 26
-rect -204 -22 -156 -5
-rect -50 -22 -2 -5
-rect 62 163 110 180
-rect 216 163 264 180
-rect 62 132 79 163
-rect 247 132 264 163
-rect 62 -5 79 26
-rect 247 -5 264 26
-rect 62 -22 110 -5
-rect 216 -22 264 -5
-<< nsubdiff >>
-rect -2333 472 -2285 489
-rect -2179 472 -2131 489
-rect -2333 441 -2316 472
-rect -2148 441 -2131 472
-rect -2333 304 -2316 335
-rect -2148 304 -2131 335
-rect -2333 287 -2285 304
-rect -2179 287 -2131 304
-rect -2067 472 -2019 489
-rect -1913 472 -1865 489
-rect -2067 441 -2050 472
-rect -1882 441 -1865 472
-rect -2067 304 -2050 335
-rect -1882 304 -1865 335
-rect -2067 287 -2019 304
-rect -1913 287 -1865 304
-rect -1801 472 -1753 489
-rect -1647 472 -1599 489
-rect -1801 441 -1784 472
-rect -1616 441 -1599 472
-rect -1801 304 -1784 335
-rect -1616 304 -1599 335
-rect -1801 287 -1753 304
-rect -1647 287 -1599 304
-rect -1535 472 -1487 489
-rect -1381 472 -1333 489
-rect -1535 441 -1518 472
-rect -1350 441 -1333 472
-rect -1535 304 -1518 335
-rect -1350 304 -1333 335
-rect -1535 287 -1487 304
-rect -1381 287 -1333 304
-rect -1269 472 -1221 489
-rect -1115 472 -1067 489
-rect -1269 441 -1252 472
-rect -1084 441 -1067 472
-rect -1269 304 -1252 335
-rect -1084 304 -1067 335
-rect -1269 287 -1221 304
-rect -1115 287 -1067 304
-rect -1003 472 -955 489
-rect -849 472 -801 489
-rect -1003 441 -986 472
-rect -818 441 -801 472
-rect -1003 304 -986 335
-rect -818 304 -801 335
-rect -1003 287 -955 304
-rect -849 287 -801 304
-rect -737 472 -689 489
-rect -583 472 -535 489
-rect -737 441 -720 472
-rect -552 441 -535 472
-rect -737 304 -720 335
-rect -552 304 -535 335
-rect -737 287 -689 304
-rect -583 287 -535 304
-rect -471 472 -423 489
-rect -317 472 -269 489
-rect -471 441 -454 472
-rect -286 441 -269 472
-rect -471 304 -454 335
-rect -286 304 -269 335
-rect -471 287 -423 304
-rect -317 287 -269 304
-rect -205 472 -157 489
-rect -51 472 -3 489
-rect -205 441 -188 472
-rect -20 441 -3 472
-rect -205 304 -188 335
-rect -20 304 -3 335
-rect -205 287 -157 304
-rect -51 287 -3 304
-rect 61 472 109 489
-rect 215 472 263 489
-rect 61 441 78 472
-rect 246 441 263 472
-rect 61 304 78 335
-rect 246 304 263 335
-rect 61 287 109 304
-rect 215 287 263 304
-<< psubdiffcont >>
-rect -2354 541 284 558
-rect -2402 266 -2385 510
-rect 315 266 332 510
-rect -2354 218 284 235
-rect -2284 163 -2178 180
-rect -2332 26 -2315 132
-rect -2147 26 -2130 132
-rect -2284 -22 -2178 -5
-rect -2018 163 -1912 180
-rect -2066 26 -2049 132
-rect -1881 26 -1864 132
-rect -2018 -22 -1912 -5
-rect -1752 163 -1646 180
-rect -1800 26 -1783 132
-rect -1615 26 -1598 132
-rect -1752 -22 -1646 -5
-rect -1486 163 -1380 180
-rect -1534 26 -1517 132
-rect -1349 26 -1332 132
-rect -1486 -22 -1380 -5
-rect -1220 163 -1114 180
-rect -1268 26 -1251 132
-rect -1083 26 -1066 132
-rect -1220 -22 -1114 -5
-rect -954 163 -848 180
-rect -1002 26 -985 132
-rect -817 26 -800 132
-rect -954 -22 -848 -5
-rect -688 163 -582 180
-rect -736 26 -719 132
-rect -551 26 -534 132
-rect -688 -22 -582 -5
-rect -422 163 -316 180
-rect -470 26 -453 132
-rect -285 26 -268 132
-rect -422 -22 -316 -5
-rect -156 163 -50 180
-rect -204 26 -187 132
-rect -19 26 -2 132
-rect -156 -22 -50 -5
-rect 110 163 216 180
-rect 62 26 79 132
-rect 247 26 264 132
-rect 110 -22 216 -5
-<< nsubdiffcont >>
-rect -2285 472 -2179 489
-rect -2333 335 -2316 441
-rect -2148 335 -2131 441
-rect -2285 287 -2179 304
-rect -2019 472 -1913 489
-rect -2067 335 -2050 441
-rect -1882 335 -1865 441
-rect -2019 287 -1913 304
-rect -1753 472 -1647 489
-rect -1801 335 -1784 441
-rect -1616 335 -1599 441
-rect -1753 287 -1647 304
-rect -1487 472 -1381 489
-rect -1535 335 -1518 441
-rect -1350 335 -1333 441
-rect -1487 287 -1381 304
-rect -1221 472 -1115 489
-rect -1269 335 -1252 441
-rect -1084 335 -1067 441
-rect -1221 287 -1115 304
-rect -955 472 -849 489
-rect -1003 335 -986 441
-rect -818 335 -801 441
-rect -955 287 -849 304
-rect -689 472 -583 489
-rect -737 335 -720 441
-rect -552 335 -535 441
-rect -689 287 -583 304
-rect -423 472 -317 489
-rect -471 335 -454 441
-rect -286 335 -269 441
-rect -423 287 -317 304
-rect -157 472 -51 489
-rect -205 335 -188 441
-rect -20 335 -3 441
-rect -157 287 -51 304
-rect 109 472 215 489
-rect 61 335 78 441
-rect 246 335 263 441
-rect 109 287 215 304
-<< pdiode >>
-rect -2282 432 -2182 438
-rect -2282 344 -2276 432
-rect -2188 344 -2182 432
-rect -2282 338 -2182 344
-rect -2016 432 -1916 438
-rect -2016 344 -2010 432
-rect -1922 344 -1916 432
-rect -2016 338 -1916 344
-rect -1750 432 -1650 438
-rect -1750 344 -1744 432
-rect -1656 344 -1650 432
-rect -1750 338 -1650 344
-rect -1484 432 -1384 438
-rect -1484 344 -1478 432
-rect -1390 344 -1384 432
-rect -1484 338 -1384 344
-rect -1218 432 -1118 438
-rect -1218 344 -1212 432
-rect -1124 344 -1118 432
-rect -1218 338 -1118 344
-rect -952 432 -852 438
-rect -952 344 -946 432
-rect -858 344 -852 432
-rect -952 338 -852 344
-rect -686 432 -586 438
-rect -686 344 -680 432
-rect -592 344 -586 432
-rect -686 338 -586 344
-rect -420 432 -320 438
-rect -420 344 -414 432
-rect -326 344 -320 432
-rect -420 338 -320 344
-rect -154 432 -54 438
-rect -154 344 -148 432
-rect -60 344 -54 432
-rect -154 338 -54 344
-rect 112 432 212 438
-rect 112 344 118 432
-rect 206 344 212 432
-rect 112 338 212 344
-<< ndiode >>
-rect -2281 123 -2181 129
-rect -2281 35 -2275 123
-rect -2187 35 -2181 123
-rect -2281 29 -2181 35
-rect -2015 123 -1915 129
-rect -2015 35 -2009 123
-rect -1921 35 -1915 123
-rect -2015 29 -1915 35
-rect -1749 123 -1649 129
-rect -1749 35 -1743 123
-rect -1655 35 -1649 123
-rect -1749 29 -1649 35
-rect -1483 123 -1383 129
-rect -1483 35 -1477 123
-rect -1389 35 -1383 123
-rect -1483 29 -1383 35
-rect -1217 123 -1117 129
-rect -1217 35 -1211 123
-rect -1123 35 -1117 123
-rect -1217 29 -1117 35
-rect -951 123 -851 129
-rect -951 35 -945 123
-rect -857 35 -851 123
-rect -951 29 -851 35
-rect -685 123 -585 129
-rect -685 35 -679 123
-rect -591 35 -585 123
-rect -685 29 -585 35
-rect -419 123 -319 129
-rect -419 35 -413 123
-rect -325 35 -319 123
-rect -419 29 -319 35
-rect -153 123 -53 129
-rect -153 35 -147 123
-rect -59 35 -53 123
-rect -153 29 -53 35
-rect 113 123 213 129
-rect 113 35 119 123
-rect 207 35 213 123
-rect 113 29 213 35
-<< pdiodec >>
-rect -2276 344 -2188 432
-rect -2010 344 -1922 432
-rect -1744 344 -1656 432
-rect -1478 344 -1390 432
-rect -1212 344 -1124 432
-rect -946 344 -858 432
-rect -680 344 -592 432
-rect -414 344 -326 432
-rect -148 344 -60 432
-rect 118 344 206 432
-<< ndiodec >>
-rect -2275 35 -2187 123
-rect -2009 35 -1921 123
-rect -1743 35 -1655 123
-rect -1477 35 -1389 123
-rect -1211 35 -1123 123
-rect -945 35 -857 123
-rect -679 35 -591 123
-rect -413 35 -325 123
-rect -147 35 -59 123
-rect 119 35 207 123
+rect -9370 1830 -1830 1870
+rect -8600 300 -8440 930
+rect -7870 300 -7710 930
+rect -7140 300 -6980 930
+rect -6400 290 -6240 920
+rect -5670 300 -5510 930
+rect -4940 290 -4780 920
+rect -4210 290 -4050 920
+rect -3480 280 -3320 910
<< locali >>
-rect -2420 558 350 575
-rect -2420 541 -2354 558
-rect 284 541 350 558
-rect -2420 510 -2385 541
-rect -2420 266 -2402 510
-rect 315 510 350 541
-rect -2350 489 280 505
-rect -2350 472 -2285 489
-rect -2179 472 -2019 489
-rect -1913 472 -1753 489
-rect -1647 472 -1487 489
-rect -1381 472 -1221 489
-rect -1115 472 -955 489
-rect -849 472 -689 489
-rect -583 472 -423 489
-rect -317 472 -157 489
-rect -51 472 109 489
-rect 215 472 280 489
-rect -2350 441 -2316 472
-rect -2350 335 -2333 441
-rect -2148 441 -2050 472
-rect -2284 344 -2276 432
-rect -2188 344 -2180 432
-rect -2350 304 -2316 335
-rect -2131 335 -2067 441
-rect -1882 441 -1784 472
-rect -2018 344 -2010 432
-rect -1922 344 -1914 432
-rect -2148 304 -2050 335
-rect -1865 335 -1801 441
-rect -1616 441 -1518 472
-rect -1752 344 -1744 432
-rect -1656 344 -1648 432
-rect -1882 304 -1784 335
-rect -1599 335 -1535 441
-rect -1350 441 -1252 472
-rect -1486 344 -1478 432
-rect -1390 344 -1382 432
-rect -1616 304 -1518 335
-rect -1333 335 -1269 441
-rect -1084 441 -986 472
-rect -1220 344 -1212 432
-rect -1124 344 -1116 432
-rect -1350 304 -1252 335
-rect -1067 335 -1003 441
-rect -818 441 -720 472
-rect -954 344 -946 432
-rect -858 344 -850 432
-rect -1084 304 -986 335
-rect -801 335 -737 441
-rect -552 441 -454 472
-rect -688 344 -680 432
-rect -592 344 -584 432
-rect -818 304 -720 335
-rect -535 335 -471 441
-rect -286 441 -188 472
-rect -422 344 -414 432
-rect -326 344 -318 432
-rect -552 304 -454 335
-rect -269 335 -205 441
-rect -20 441 78 472
-rect -156 344 -148 432
-rect -60 344 -52 432
-rect -286 304 -188 335
-rect -3 335 61 441
-rect 246 441 280 472
-rect 110 344 118 432
-rect 206 344 214 432
-rect -20 304 78 335
-rect 263 335 280 441
-rect 246 304 280 335
-rect -2350 287 -2285 304
-rect -2179 287 -2019 304
-rect -1913 287 -1753 304
-rect -1647 287 -1487 304
-rect -1381 287 -1221 304
-rect -1115 287 -955 304
-rect -849 287 -689 304
-rect -583 287 -423 304
-rect -317 287 -157 304
-rect -51 287 109 304
-rect 215 287 280 304
-rect -2350 270 280 287
-rect -2420 235 -2385 266
-rect 332 266 350 510
-rect 315 235 350 266
-rect -2420 218 -2354 235
-rect 284 218 350 235
-rect -2420 180 350 218
-rect -2420 163 -2284 180
-rect -2178 163 -2018 180
-rect -1912 163 -1752 180
-rect -1646 163 -1486 180
-rect -1380 163 -1220 180
-rect -1114 163 -954 180
-rect -848 163 -688 180
-rect -582 163 -422 180
-rect -316 163 -156 180
-rect -50 163 110 180
-rect 216 163 350 180
-rect -2420 132 -2315 163
-rect -2420 26 -2332 132
-rect -2147 132 -2049 163
-rect -2283 35 -2275 123
-rect -2187 35 -2179 123
-rect -2420 -5 -2315 26
-rect -2130 26 -2066 132
-rect -1881 132 -1783 163
-rect -2017 35 -2009 123
-rect -1921 35 -1913 123
-rect -2147 -5 -2049 26
-rect -1864 26 -1800 132
-rect -1615 132 -1517 163
-rect -1751 35 -1743 123
-rect -1655 35 -1647 123
-rect -1881 -5 -1783 26
-rect -1598 26 -1534 132
-rect -1349 132 -1251 163
-rect -1485 35 -1477 123
-rect -1389 35 -1381 123
-rect -1615 -5 -1517 26
-rect -1332 26 -1268 132
-rect -1083 132 -985 163
-rect -1219 35 -1211 123
-rect -1123 35 -1115 123
-rect -1349 -5 -1251 26
-rect -1066 26 -1002 132
-rect -817 132 -719 163
-rect -953 35 -945 123
-rect -857 35 -849 123
-rect -1083 -5 -985 26
-rect -800 26 -736 132
-rect -551 132 -453 163
-rect -687 35 -679 123
-rect -591 35 -583 123
-rect -817 -5 -719 26
-rect -534 26 -470 132
-rect -285 132 -187 163
-rect -421 35 -413 123
-rect -325 35 -317 123
-rect -551 -5 -453 26
-rect -268 26 -204 132
-rect -19 132 79 163
-rect -155 35 -147 123
-rect -59 35 -51 123
-rect -285 -5 -187 26
-rect -2 26 62 132
-rect 247 132 350 163
-rect 111 35 119 123
-rect 207 35 215 123
-rect -19 -5 79 26
-rect 264 26 350 132
-rect 247 -5 350 26
-rect -2420 -22 -2284 -5
-rect -2178 -22 -2018 -5
-rect -1912 -22 -1752 -5
-rect -1646 -22 -1486 -5
-rect -1380 -22 -1220 -5
-rect -1114 -22 -954 -5
-rect -848 -22 -688 -5
-rect -582 -22 -422 -5
-rect -316 -22 -156 -5
-rect -50 -22 110 -5
-rect 216 -22 350 -5
-rect -2420 -45 350 -22
+rect -9370 1830 -1830 1870
+rect -9370 980 -9320 1830
+rect -9230 1720 -1970 1730
+rect -9230 1070 -9220 1720
+rect -1980 1070 -1970 1720
+rect -9230 1060 -1970 1070
+rect -9370 270 -9340 980
+rect -1880 970 -1830 1830
+rect -1870 270 -1830 970
+rect -9370 260 -1830 270
<< viali >>
-rect -2276 344 -2188 432
-rect -2010 344 -1922 432
-rect -1744 344 -1656 432
-rect -1478 344 -1390 432
-rect -1212 344 -1124 432
-rect -946 344 -858 432
-rect -680 344 -592 432
-rect -414 344 -326 432
-rect -148 344 -60 432
-rect 118 344 206 432
-rect -2275 35 -2187 123
-rect -2009 35 -1921 123
-rect -1743 35 -1655 123
-rect -1477 35 -1389 123
-rect -1211 35 -1123 123
-rect -945 35 -857 123
-rect -679 35 -591 123
-rect -413 35 -325 123
-rect -147 35 -59 123
-rect 119 35 207 123
+rect -9220 1660 -1980 1720
+rect -9220 1130 -9170 1660
+rect -8620 1130 -8440 1660
+rect -7890 1130 -7710 1660
+rect -7150 1130 -6970 1660
+rect -6420 1130 -6240 1660
+rect -5690 1130 -5510 1660
+rect -4960 1130 -4780 1660
+rect -4220 1130 -4040 1660
+rect -3490 1130 -3310 1660
+rect -2760 1130 -2580 1660
+rect -2030 1130 -1980 1660
+rect -9220 1070 -1980 1130
+rect -9340 970 -9170 980
+rect -8610 970 -8440 980
+rect -7880 970 -7710 980
+rect -7150 970 -6980 980
+rect -6410 970 -6240 980
+rect -5680 970 -5510 980
+rect -4950 970 -4780 980
+rect -4220 970 -4050 980
+rect -3490 970 -3320 980
+rect -2760 970 -2590 980
+rect -9340 870 -1870 970
+rect -9340 330 -9170 870
+rect -8610 330 -8440 870
+rect -7880 330 -7710 870
+rect -7150 330 -6980 870
+rect -6410 330 -6240 870
+rect -5680 330 -5510 870
+rect -4950 330 -4780 870
+rect -4220 330 -4050 870
+rect -3490 330 -3320 870
+rect -2760 330 -2590 870
+rect -2020 330 -1870 870
+rect -9340 270 -1870 330
<< metal1 >>
-rect -2282 432 -2182 435
-rect -2282 344 -2276 432
-rect -2188 344 -2182 432
-rect -2282 341 -2182 344
-rect -2016 432 -1916 435
-rect -2016 344 -2010 432
-rect -1922 344 -1916 432
-rect -2016 341 -1916 344
-rect -1750 432 -1650 435
-rect -1750 344 -1744 432
-rect -1656 344 -1650 432
-rect -1750 341 -1650 344
-rect -1484 432 -1384 435
-rect -1484 344 -1478 432
-rect -1390 344 -1384 432
-rect -1484 341 -1384 344
-rect -1218 432 -1118 435
-rect -1218 344 -1212 432
-rect -1124 344 -1118 432
-rect -1218 341 -1118 344
-rect -952 432 -852 435
-rect -952 344 -946 432
-rect -858 344 -852 432
-rect -952 341 -852 344
-rect -686 432 -586 435
-rect -686 344 -680 432
-rect -592 344 -586 432
-rect -686 341 -586 344
-rect -420 432 -320 435
-rect -420 344 -414 432
-rect -326 344 -320 432
-rect -420 341 -320 344
-rect -154 432 -54 435
-rect -154 344 -148 432
-rect -60 344 -54 432
-rect -154 341 -54 344
-rect 112 432 212 435
-rect 112 344 118 432
-rect 206 344 212 432
-rect 112 341 212 344
-rect -2281 123 -2181 126
-rect -2281 35 -2275 123
-rect -2187 35 -2181 123
-rect -2281 32 -2181 35
-rect -2015 123 -1915 126
-rect -2015 35 -2009 123
-rect -1921 35 -1915 123
-rect -2015 32 -1915 35
-rect -1749 123 -1649 126
-rect -1749 35 -1743 123
-rect -1655 35 -1649 123
-rect -1749 32 -1649 35
-rect -1483 123 -1383 126
-rect -1483 35 -1477 123
-rect -1389 35 -1383 123
-rect -1483 32 -1383 35
-rect -1217 123 -1117 126
-rect -1217 35 -1211 123
-rect -1123 35 -1117 123
-rect -1217 32 -1117 35
-rect -951 123 -851 126
-rect -951 35 -945 123
-rect -857 35 -851 123
-rect -951 32 -851 35
-rect -685 123 -585 126
-rect -685 35 -679 123
-rect -591 35 -585 123
-rect -685 32 -585 35
-rect -419 123 -319 126
-rect -419 35 -413 123
-rect -325 35 -319 123
-rect -419 32 -319 35
-rect -153 123 -53 126
-rect -153 35 -147 123
-rect -59 35 -53 123
-rect -153 32 -53 35
-rect 113 123 213 126
-rect 113 35 119 123
-rect 207 35 213 123
-rect 113 32 213 35
-use sky130_fd_pr__diode_pd2nw_05v5_AEDW7W sky130_fd_pr__diode_pd2nw_05v5_AEDW7W_0
-timestamp 1646653136
-transform 1 0 -1035 0 1 388
-box -1385 -188 1385 188
-use sky130_fd_pr__diode_pw2nd_05v5_Z3EYSA sky130_fd_pr__diode_pw2nd_05v5_Z3EYSA_0
-timestamp 1646653136
-transform 1 0 -1034 0 1 79
-box -1316 -119 1316 119
+rect -9290 1720 -1910 1990
+rect -9290 1070 -9220 1720
+rect -9170 1654 -8620 1660
+rect -9170 1136 -9160 1654
+rect -9090 1210 -9080 1590
+rect -8700 1210 -8690 1590
+rect -8630 1136 -8620 1654
+rect -9170 1130 -8620 1136
+rect -8440 1654 -7890 1660
+rect -8440 1136 -8430 1654
+rect -8360 1210 -8350 1586
+rect -7974 1210 -7964 1586
+rect -7900 1136 -7890 1654
+rect -8440 1130 -7890 1136
+rect -7710 1654 -7150 1660
+rect -7710 1136 -7700 1654
+rect -7630 1200 -7620 1576
+rect -7244 1200 -7234 1576
+rect -7160 1136 -7150 1654
+rect -7710 1130 -7150 1136
+rect -6970 1654 -6420 1660
+rect -6970 1136 -6960 1654
+rect -6900 1200 -6890 1576
+rect -6514 1200 -6504 1576
+rect -6430 1136 -6420 1654
+rect -6970 1130 -6420 1136
+rect -6240 1654 -5690 1660
+rect -6240 1136 -6230 1654
+rect -6170 1200 -6160 1576
+rect -5784 1200 -5774 1576
+rect -5700 1136 -5690 1654
+rect -6240 1130 -5690 1136
+rect -5510 1654 -4960 1660
+rect -5510 1136 -5500 1654
+rect -5440 1200 -5430 1576
+rect -5054 1200 -5044 1576
+rect -4970 1136 -4960 1654
+rect -5510 1130 -4960 1136
+rect -4780 1654 -4220 1660
+rect -4780 1136 -4770 1654
+rect -4700 1210 -4690 1586
+rect -4314 1210 -4304 1586
+rect -4230 1136 -4220 1654
+rect -4780 1130 -4220 1136
+rect -4040 1654 -3490 1660
+rect -4040 1136 -4030 1654
+rect -3970 1210 -3960 1586
+rect -3584 1210 -3574 1586
+rect -3500 1136 -3490 1654
+rect -4040 1130 -3490 1136
+rect -3310 1654 -2760 1660
+rect -3310 1136 -3300 1654
+rect -3230 1210 -3220 1586
+rect -2844 1210 -2834 1586
+rect -2770 1136 -2760 1654
+rect -3310 1130 -2760 1136
+rect -2580 1654 -2030 1660
+rect -2580 1136 -2570 1654
+rect -2500 1210 -2490 1586
+rect -2114 1210 -2104 1586
+rect -2040 1136 -2030 1654
+rect -2580 1130 -2030 1136
+rect -1980 1070 -1910 1720
+rect -9290 1064 -1910 1070
+rect -9290 1060 -9160 1064
+rect -8630 1060 -8430 1064
+rect -7900 1060 -7700 1064
+rect -7160 1060 -6960 1064
+rect -6430 1060 -6230 1064
+rect -5700 1060 -5500 1064
+rect -4970 1060 -4770 1064
+rect -4230 1060 -4030 1064
+rect -3500 1060 -3300 1064
+rect -2770 1060 -2570 1064
+rect -2040 1060 -1910 1064
+rect -9226 1058 -9164 1060
+rect -8626 1058 -8434 1060
+rect -7896 1058 -7704 1060
+rect -7156 1058 -6964 1060
+rect -6426 1058 -6234 1060
+rect -5696 1058 -5504 1060
+rect -4966 1058 -4774 1060
+rect -4226 1058 -4034 1060
+rect -3496 1058 -3304 1060
+rect -2766 1058 -2574 1060
+rect -2036 1058 -1974 1060
+rect -9346 990 -9164 992
+rect -8616 990 -8434 992
+rect -7886 990 -7704 992
+rect -7156 990 -6974 992
+rect -6416 990 -6234 992
+rect -5686 990 -5504 992
+rect -4956 990 -4774 992
+rect -4226 990 -4044 992
+rect -3496 990 -3314 992
+rect -2766 990 -2584 992
+rect -9350 980 -9160 990
+rect -9350 976 -9340 980
+rect -9352 864 -9340 976
+rect -9170 976 -9160 980
+rect -8620 980 -8430 990
+rect -8620 976 -8610 980
+rect -9170 970 -8610 976
+rect -8440 976 -8430 980
+rect -7890 980 -7700 990
+rect -7890 976 -7880 980
+rect -8440 970 -7880 976
+rect -7710 976 -7700 980
+rect -7160 980 -6970 990
+rect -7160 976 -7150 980
+rect -7710 970 -7150 976
+rect -6980 976 -6970 980
+rect -6420 980 -6230 990
+rect -6420 976 -6410 980
+rect -6980 970 -6410 976
+rect -6240 976 -6230 980
+rect -5690 980 -5500 990
+rect -5690 976 -5680 980
+rect -6240 970 -5680 976
+rect -5510 976 -5500 980
+rect -4960 980 -4770 990
+rect -4960 976 -4950 980
+rect -5510 970 -4950 976
+rect -4780 976 -4770 980
+rect -4230 980 -4030 990
+rect -4230 976 -4220 980
+rect -4780 970 -4220 976
+rect -4050 976 -4030 980
+rect -3500 980 -3300 990
+rect -3500 976 -3490 980
+rect -4050 970 -3490 976
+rect -3320 976 -3300 980
+rect -2770 980 -2570 990
+rect -2026 980 -1864 982
+rect -2770 976 -2760 980
+rect -3320 970 -2760 976
+rect -2590 976 -2570 980
+rect -2030 976 -1860 980
+rect -2590 970 -1858 976
+rect -9350 336 -9340 864
+rect -9352 270 -9340 336
+rect -9170 864 -8610 870
+rect -9170 336 -9160 864
+rect -9090 410 -9080 790
+rect -8700 410 -8690 790
+rect -8620 336 -8610 864
+rect -9170 330 -8610 336
+rect -8440 864 -7880 870
+rect -8440 336 -8430 864
+rect -8360 410 -8350 790
+rect -7970 410 -7960 790
+rect -7890 336 -7880 864
+rect -8440 330 -7880 336
+rect -7710 864 -7150 870
+rect -7710 336 -7700 864
+rect -7630 410 -7620 790
+rect -7240 410 -7230 790
+rect -7160 336 -7150 864
+rect -7710 330 -7150 336
+rect -6980 864 -6410 870
+rect -6980 336 -6970 864
+rect -6900 410 -6890 790
+rect -6510 410 -6500 790
+rect -6420 336 -6410 864
+rect -6980 330 -6410 336
+rect -6240 864 -5680 870
+rect -6240 336 -6230 864
+rect -6170 410 -6160 790
+rect -5780 410 -5770 790
+rect -5690 336 -5680 864
+rect -6240 330 -5680 336
+rect -5510 864 -4950 870
+rect -5510 336 -5500 864
+rect -5430 410 -5420 790
+rect -5040 410 -5030 790
+rect -4960 336 -4950 864
+rect -5510 330 -4950 336
+rect -4780 864 -4220 870
+rect -4780 336 -4770 864
+rect -4700 410 -4690 790
+rect -4310 410 -4300 790
+rect -4230 336 -4220 864
+rect -4780 330 -4220 336
+rect -4050 864 -3490 870
+rect -4050 336 -4030 864
+rect -3970 410 -3960 790
+rect -3580 410 -3570 790
+rect -3500 336 -3490 864
+rect -4050 330 -3490 336
+rect -3320 864 -2760 870
+rect -3320 336 -3300 864
+rect -3240 410 -3230 790
+rect -2850 410 -2840 790
+rect -2770 336 -2760 864
+rect -3320 330 -2760 336
+rect -2590 864 -2020 870
+rect -2590 336 -2570 864
+rect -2500 410 -2490 790
+rect -2110 410 -2100 790
+rect -2030 336 -2020 864
+rect -2590 330 -2020 336
+rect -1870 864 -1858 970
+rect -1870 336 -1860 864
+rect -1870 270 -1858 336
+rect -9352 264 -1858 270
+rect -9350 60 -1860 264
+<< via1 >>
+rect -9080 1210 -8700 1590
+rect -8350 1210 -7974 1586
+rect -7620 1200 -7244 1576
+rect -6890 1200 -6514 1576
+rect -6160 1200 -5784 1576
+rect -5430 1200 -5054 1576
+rect -4690 1210 -4314 1586
+rect -3960 1210 -3584 1586
+rect -3220 1210 -2844 1586
+rect -2490 1210 -2114 1586
+rect -9080 410 -8700 790
+rect -8350 410 -7970 790
+rect -7620 410 -7240 790
+rect -6890 410 -6510 790
+rect -6160 410 -5780 790
+rect -5420 410 -5040 790
+rect -4690 410 -4310 790
+rect -3960 410 -3580 790
+rect -3230 410 -2850 790
+rect -2490 410 -2110 790
+<< metal2 >>
+rect -9090 1590 -2100 1600
+rect -9090 1210 -9080 1590
+rect -8700 1586 -2100 1590
+rect -8700 1210 -8350 1586
+rect -7974 1576 -4690 1586
+rect -7974 1210 -7620 1576
+rect -9090 1200 -7620 1210
+rect -7244 1200 -6890 1576
+rect -6514 1200 -6160 1576
+rect -5784 1200 -5430 1576
+rect -5054 1210 -4690 1576
+rect -4314 1210 -3960 1586
+rect -3584 1210 -3220 1586
+rect -2844 1210 -2490 1586
+rect -2114 1210 -2100 1586
+rect -5054 1200 -2100 1210
+rect -9090 790 -2100 1200
+rect -9090 410 -9080 790
+rect -8700 410 -8350 790
+rect -7970 410 -7620 790
+rect -7240 410 -6890 790
+rect -6510 410 -6160 790
+rect -5780 410 -5420 790
+rect -5040 410 -4690 790
+rect -4310 410 -3960 790
+rect -3580 410 -3230 790
+rect -2850 410 -2490 790
+rect -2110 410 -2100 790
+rect -9090 400 -2100 410
+use sky130_fd_pr__diode_pd2nw_05v5_33C8ED sky130_fd_pr__diode_pd2nw_05v5_33C8ED_0
+timestamp 1646921651
+transform 1 0 -5599 0 1 1395
+box -3770 -476 3770 476
+use sky130_fd_pr__diode_pw2nd_05v5_T9UBGD sky130_fd_pr__diode_pw2nd_05v5_T9UBGD_0
+timestamp 1646921651
+transform 1 0 -5598 0 1 598
+box -3632 -338 3632 338
<< end >>
diff --git a/mag/esd/sky130_fd_pr__diode_pd2nw_05v5_33C8ED.mag b/mag/esd/sky130_fd_pr__diode_pd2nw_05v5_33C8ED.mag
new file mode 100644
index 0000000..e561989
--- /dev/null
+++ b/mag/esd/sky130_fd_pr__diode_pd2nw_05v5_33C8ED.mag
@@ -0,0 +1,365 @@
+magic
+tech sky130A
+timestamp 1646921651
+<< nwell >>
+rect -1816 -169 1816 169
+<< pwell >>
+rect -1885 169 1885 238
+rect -1885 -169 -1816 169
+rect 1816 -169 1885 169
+rect -1885 -238 1885 -169
+<< psubdiff >>
+rect -1867 203 -1819 220
+rect 1819 203 1867 220
+rect -1867 172 -1850 203
+rect 1850 172 1867 203
+rect -1867 -203 -1850 -172
+rect 1850 -203 1867 -172
+rect -1867 -220 -1819 -203
+rect 1819 -220 1867 -203
+<< nsubdiff >>
+rect -1798 134 -1750 151
+rect -1544 134 -1496 151
+rect -1798 103 -1781 134
+rect -1513 103 -1496 134
+rect -1798 -134 -1781 -103
+rect -1513 -134 -1496 -103
+rect -1798 -151 -1750 -134
+rect -1544 -151 -1496 -134
+rect -1432 134 -1384 151
+rect -1178 134 -1130 151
+rect -1432 103 -1415 134
+rect -1147 103 -1130 134
+rect -1432 -134 -1415 -103
+rect -1147 -134 -1130 -103
+rect -1432 -151 -1384 -134
+rect -1178 -151 -1130 -134
+rect -1066 134 -1018 151
+rect -812 134 -764 151
+rect -1066 103 -1049 134
+rect -781 103 -764 134
+rect -1066 -134 -1049 -103
+rect -781 -134 -764 -103
+rect -1066 -151 -1018 -134
+rect -812 -151 -764 -134
+rect -700 134 -652 151
+rect -446 134 -398 151
+rect -700 103 -683 134
+rect -415 103 -398 134
+rect -700 -134 -683 -103
+rect -415 -134 -398 -103
+rect -700 -151 -652 -134
+rect -446 -151 -398 -134
+rect -334 134 -286 151
+rect -80 134 -32 151
+rect -334 103 -317 134
+rect -49 103 -32 134
+rect -334 -134 -317 -103
+rect -49 -134 -32 -103
+rect -334 -151 -286 -134
+rect -80 -151 -32 -134
+rect 32 134 80 151
+rect 286 134 334 151
+rect 32 103 49 134
+rect 317 103 334 134
+rect 32 -134 49 -103
+rect 317 -134 334 -103
+rect 32 -151 80 -134
+rect 286 -151 334 -134
+rect 398 134 446 151
+rect 652 134 700 151
+rect 398 103 415 134
+rect 683 103 700 134
+rect 398 -134 415 -103
+rect 683 -134 700 -103
+rect 398 -151 446 -134
+rect 652 -151 700 -134
+rect 764 134 812 151
+rect 1018 134 1066 151
+rect 764 103 781 134
+rect 1049 103 1066 134
+rect 764 -134 781 -103
+rect 1049 -134 1066 -103
+rect 764 -151 812 -134
+rect 1018 -151 1066 -134
+rect 1130 134 1178 151
+rect 1384 134 1432 151
+rect 1130 103 1147 134
+rect 1415 103 1432 134
+rect 1130 -134 1147 -103
+rect 1415 -134 1432 -103
+rect 1130 -151 1178 -134
+rect 1384 -151 1432 -134
+rect 1496 134 1544 151
+rect 1750 134 1798 151
+rect 1496 103 1513 134
+rect 1781 103 1798 134
+rect 1496 -134 1513 -103
+rect 1781 -134 1798 -103
+rect 1496 -151 1544 -134
+rect 1750 -151 1798 -134
+<< psubdiffcont >>
+rect -1819 203 1819 220
+rect -1867 -172 -1850 172
+rect 1850 -172 1867 172
+rect -1819 -220 1819 -203
+<< nsubdiffcont >>
+rect -1750 134 -1544 151
+rect -1798 -103 -1781 103
+rect -1513 -103 -1496 103
+rect -1750 -151 -1544 -134
+rect -1384 134 -1178 151
+rect -1432 -103 -1415 103
+rect -1147 -103 -1130 103
+rect -1384 -151 -1178 -134
+rect -1018 134 -812 151
+rect -1066 -103 -1049 103
+rect -781 -103 -764 103
+rect -1018 -151 -812 -134
+rect -652 134 -446 151
+rect -700 -103 -683 103
+rect -415 -103 -398 103
+rect -652 -151 -446 -134
+rect -286 134 -80 151
+rect -334 -103 -317 103
+rect -49 -103 -32 103
+rect -286 -151 -80 -134
+rect 80 134 286 151
+rect 32 -103 49 103
+rect 317 -103 334 103
+rect 80 -151 286 -134
+rect 446 134 652 151
+rect 398 -103 415 103
+rect 683 -103 700 103
+rect 446 -151 652 -134
+rect 812 134 1018 151
+rect 764 -103 781 103
+rect 1049 -103 1066 103
+rect 812 -151 1018 -134
+rect 1178 134 1384 151
+rect 1130 -103 1147 103
+rect 1415 -103 1432 103
+rect 1178 -151 1384 -134
+rect 1544 134 1750 151
+rect 1496 -103 1513 103
+rect 1781 -103 1798 103
+rect 1544 -151 1750 -134
+<< pdiode >>
+rect -1747 94 -1547 100
+rect -1747 -94 -1741 94
+rect -1553 -94 -1547 94
+rect -1747 -100 -1547 -94
+rect -1381 94 -1181 100
+rect -1381 -94 -1375 94
+rect -1187 -94 -1181 94
+rect -1381 -100 -1181 -94
+rect -1015 94 -815 100
+rect -1015 -94 -1009 94
+rect -821 -94 -815 94
+rect -1015 -100 -815 -94
+rect -649 94 -449 100
+rect -649 -94 -643 94
+rect -455 -94 -449 94
+rect -649 -100 -449 -94
+rect -283 94 -83 100
+rect -283 -94 -277 94
+rect -89 -94 -83 94
+rect -283 -100 -83 -94
+rect 83 94 283 100
+rect 83 -94 89 94
+rect 277 -94 283 94
+rect 83 -100 283 -94
+rect 449 94 649 100
+rect 449 -94 455 94
+rect 643 -94 649 94
+rect 449 -100 649 -94
+rect 815 94 1015 100
+rect 815 -94 821 94
+rect 1009 -94 1015 94
+rect 815 -100 1015 -94
+rect 1181 94 1381 100
+rect 1181 -94 1187 94
+rect 1375 -94 1381 94
+rect 1181 -100 1381 -94
+rect 1547 94 1747 100
+rect 1547 -94 1553 94
+rect 1741 -94 1747 94
+rect 1547 -100 1747 -94
+<< pdiodec >>
+rect -1741 -94 -1553 94
+rect -1375 -94 -1187 94
+rect -1009 -94 -821 94
+rect -643 -94 -455 94
+rect -277 -94 -89 94
+rect 89 -94 277 94
+rect 455 -94 643 94
+rect 821 -94 1009 94
+rect 1187 -94 1375 94
+rect 1553 -94 1741 94
+<< locali >>
+rect -1867 203 -1819 220
+rect 1819 203 1867 220
+rect -1867 172 -1850 203
+rect 1850 172 1867 203
+rect -1798 134 -1750 151
+rect -1544 134 -1496 151
+rect -1798 103 -1781 134
+rect -1513 103 -1496 134
+rect -1749 -94 -1741 94
+rect -1553 -94 -1545 94
+rect -1798 -134 -1781 -103
+rect -1513 -134 -1496 -103
+rect -1798 -151 -1750 -134
+rect -1544 -151 -1496 -134
+rect -1432 134 -1384 151
+rect -1178 134 -1130 151
+rect -1432 103 -1415 134
+rect -1147 103 -1130 134
+rect -1383 -94 -1375 94
+rect -1187 -94 -1179 94
+rect -1432 -134 -1415 -103
+rect -1147 -134 -1130 -103
+rect -1432 -151 -1384 -134
+rect -1178 -151 -1130 -134
+rect -1066 134 -1018 151
+rect -812 134 -764 151
+rect -1066 103 -1049 134
+rect -781 103 -764 134
+rect -1017 -94 -1009 94
+rect -821 -94 -813 94
+rect -1066 -134 -1049 -103
+rect -781 -134 -764 -103
+rect -1066 -151 -1018 -134
+rect -812 -151 -764 -134
+rect -700 134 -652 151
+rect -446 134 -398 151
+rect -700 103 -683 134
+rect -415 103 -398 134
+rect -651 -94 -643 94
+rect -455 -94 -447 94
+rect -700 -134 -683 -103
+rect -415 -134 -398 -103
+rect -700 -151 -652 -134
+rect -446 -151 -398 -134
+rect -334 134 -286 151
+rect -80 134 -32 151
+rect -334 103 -317 134
+rect -49 103 -32 134
+rect -285 -94 -277 94
+rect -89 -94 -81 94
+rect -334 -134 -317 -103
+rect -49 -134 -32 -103
+rect -334 -151 -286 -134
+rect -80 -151 -32 -134
+rect 32 134 80 151
+rect 286 134 334 151
+rect 32 103 49 134
+rect 317 103 334 134
+rect 81 -94 89 94
+rect 277 -94 285 94
+rect 32 -134 49 -103
+rect 317 -134 334 -103
+rect 32 -151 80 -134
+rect 286 -151 334 -134
+rect 398 134 446 151
+rect 652 134 700 151
+rect 398 103 415 134
+rect 683 103 700 134
+rect 447 -94 455 94
+rect 643 -94 651 94
+rect 398 -134 415 -103
+rect 683 -134 700 -103
+rect 398 -151 446 -134
+rect 652 -151 700 -134
+rect 764 134 812 151
+rect 1018 134 1066 151
+rect 764 103 781 134
+rect 1049 103 1066 134
+rect 813 -94 821 94
+rect 1009 -94 1017 94
+rect 764 -134 781 -103
+rect 1049 -134 1066 -103
+rect 764 -151 812 -134
+rect 1018 -151 1066 -134
+rect 1130 134 1178 151
+rect 1384 134 1432 151
+rect 1130 103 1147 134
+rect 1415 103 1432 134
+rect 1179 -94 1187 94
+rect 1375 -94 1383 94
+rect 1130 -134 1147 -103
+rect 1415 -134 1432 -103
+rect 1130 -151 1178 -134
+rect 1384 -151 1432 -134
+rect 1496 134 1544 151
+rect 1750 134 1798 151
+rect 1496 103 1513 134
+rect 1781 103 1798 134
+rect 1545 -94 1553 94
+rect 1741 -94 1749 94
+rect 1496 -134 1513 -103
+rect 1781 -134 1798 -103
+rect 1496 -151 1544 -134
+rect 1750 -151 1798 -134
+rect -1867 -203 -1850 -172
+rect 1850 -203 1867 -172
+rect -1867 -220 -1819 -203
+rect 1819 -220 1867 -203
+<< viali >>
+rect -1741 -94 -1553 94
+rect -1375 -94 -1187 94
+rect -1009 -94 -821 94
+rect -643 -94 -455 94
+rect -277 -94 -89 94
+rect 89 -94 277 94
+rect 455 -94 643 94
+rect 821 -94 1009 94
+rect 1187 -94 1375 94
+rect 1553 -94 1741 94
+<< metal1 >>
+rect -1747 94 -1547 97
+rect -1747 -94 -1741 94
+rect -1553 -94 -1547 94
+rect -1747 -97 -1547 -94
+rect -1381 94 -1181 97
+rect -1381 -94 -1375 94
+rect -1187 -94 -1181 94
+rect -1381 -97 -1181 -94
+rect -1015 94 -815 97
+rect -1015 -94 -1009 94
+rect -821 -94 -815 94
+rect -1015 -97 -815 -94
+rect -649 94 -449 97
+rect -649 -94 -643 94
+rect -455 -94 -449 94
+rect -649 -97 -449 -94
+rect -283 94 -83 97
+rect -283 -94 -277 94
+rect -89 -94 -83 94
+rect -283 -97 -83 -94
+rect 83 94 283 97
+rect 83 -94 89 94
+rect 277 -94 283 94
+rect 83 -97 283 -94
+rect 449 94 649 97
+rect 449 -94 455 94
+rect 643 -94 649 94
+rect 449 -97 649 -94
+rect 815 94 1015 97
+rect 815 -94 821 94
+rect 1009 -94 1015 94
+rect 815 -97 1015 -94
+rect 1181 94 1381 97
+rect 1181 -94 1187 94
+rect 1375 -94 1381 94
+rect 1181 -97 1381 -94
+rect 1547 94 1747 97
+rect 1547 -94 1553 94
+rect 1741 -94 1747 94
+rect 1547 -97 1747 -94
+<< properties >>
+string FIXED_BBOX 1504 -142 1789 142
+string gencell sky130_fd_pr__diode_pd2nw_05v5
+string library sky130
+string parameters w 2 l 2 area 4.0 peri 8.0 nx 10 ny 1 dummy 0 lmin 0.45 wmin 0.45 elc 1 erc 1 etc 1 ebc 1 glc 1 grc 1 gtc 1 gbc 1 doverlap 0 compatible {sky130_fd_pr__diode_pd2nw_05v5 sky130_fd_pr__diode_pd2nw_05v5_lvt sky130_fd_pr__diode_pd2nw_05v5_hvt sky130_fd_pr__diode_pd2nw_11v0} full_metal 1 vias 1 viagb 0 viagt 0 viagl 0 viagr 0
+<< end >>
diff --git a/mag/esd/sky130_fd_pr__diode_pd2nw_05v5_WW7YB9.mag b/mag/esd/sky130_fd_pr__diode_pd2nw_05v5_WW7YB9.mag
new file mode 100644
index 0000000..e445ed7
--- /dev/null
+++ b/mag/esd/sky130_fd_pr__diode_pd2nw_05v5_WW7YB9.mag
@@ -0,0 +1,77 @@
+magic
+tech sky130A
+timestamp 1646911677
+<< nwell >>
+rect -169 -169 169 169
+<< pwell >>
+rect -238 169 238 238
+rect -238 -169 -169 169
+rect 169 -169 238 169
+rect -238 -238 238 -169
+<< psubdiff >>
+rect -220 203 -172 220
+rect 172 203 220 220
+rect -220 172 -203 203
+rect 203 172 220 203
+rect -220 -203 -203 -172
+rect 203 -203 220 -172
+rect -220 -220 -172 -203
+rect 172 -220 220 -203
+<< nsubdiff >>
+rect -151 134 -103 151
+rect 103 134 151 151
+rect -151 103 -134 134
+rect 134 103 151 134
+rect -151 -134 -134 -103
+rect 134 -134 151 -103
+rect -151 -151 -103 -134
+rect 103 -151 151 -134
+<< psubdiffcont >>
+rect -172 203 172 220
+rect -220 -172 -203 172
+rect 203 -172 220 172
+rect -172 -220 172 -203
+<< nsubdiffcont >>
+rect -103 134 103 151
+rect -151 -103 -134 103
+rect 134 -103 151 103
+rect -103 -151 103 -134
+<< pdiode >>
+rect -100 94 100 100
+rect -100 -94 -94 94
+rect 94 -94 100 94
+rect -100 -100 100 -94
+<< pdiodec >>
+rect -94 -94 94 94
+<< locali >>
+rect -220 203 -172 220
+rect 172 203 220 220
+rect -220 172 -203 203
+rect 203 172 220 203
+rect -151 134 -103 151
+rect 103 134 151 151
+rect -151 103 -134 134
+rect 134 103 151 134
+rect -102 -94 -94 94
+rect 94 -94 102 94
+rect -151 -134 -134 -103
+rect 134 -134 151 -103
+rect -151 -151 -103 -134
+rect 103 -151 151 -134
+rect -220 -203 -203 -172
+rect 203 -203 220 -172
+rect -220 -220 -172 -203
+rect 172 -220 220 -203
+<< viali >>
+rect -94 -94 94 94
+<< metal1 >>
+rect -100 94 100 97
+rect -100 -94 -94 94
+rect 94 -94 100 94
+rect -100 -97 100 -94
+<< properties >>
+string FIXED_BBOX -142 -142 142 142
+string gencell sky130_fd_pr__diode_pd2nw_05v5
+string library sky130
+string parameters w 2 l 2 area 4.0 peri 8.0 nx 1 ny 1 dummy 0 lmin 0.45 wmin 0.45 elc 1 erc 1 etc 1 ebc 1 glc 1 grc 1 gtc 1 gbc 1 doverlap 0 compatible {sky130_fd_pr__diode_pd2nw_05v5 sky130_fd_pr__diode_pd2nw_05v5_lvt sky130_fd_pr__diode_pd2nw_05v5_hvt sky130_fd_pr__diode_pd2nw_11v0} full_metal 1 vias 1 viagb 0 viagt 0 viagl 0 viagr 0
+<< end >>
diff --git a/mag/esd/sky130_fd_pr__diode_pw2nd_05v5_97KUCP.mag b/mag/esd/sky130_fd_pr__diode_pw2nd_05v5_97KUCP.mag
new file mode 100644
index 0000000..7312f84
--- /dev/null
+++ b/mag/esd/sky130_fd_pr__diode_pw2nd_05v5_97KUCP.mag
@@ -0,0 +1,50 @@
+magic
+tech sky130A
+timestamp 1646911677
+<< pwell >>
+rect -169 -169 169 169
+<< psubdiff >>
+rect -151 134 -103 151
+rect 103 134 151 151
+rect -151 103 -134 134
+rect 134 103 151 134
+rect -151 -134 -134 -103
+rect 134 -134 151 -103
+rect -151 -151 -103 -134
+rect 103 -151 151 -134
+<< psubdiffcont >>
+rect -103 134 103 151
+rect -151 -103 -134 103
+rect 134 -103 151 103
+rect -103 -151 103 -134
+<< ndiode >>
+rect -100 94 100 100
+rect -100 -94 -94 94
+rect 94 -94 100 94
+rect -100 -100 100 -94
+<< ndiodec >>
+rect -94 -94 94 94
+<< locali >>
+rect -151 134 -103 151
+rect 103 134 151 151
+rect -151 103 -134 134
+rect 134 103 151 134
+rect -102 -94 -94 94
+rect 94 -94 102 94
+rect -151 -134 -134 -103
+rect 134 -134 151 -103
+rect -151 -151 -103 -134
+rect 103 -151 151 -134
+<< viali >>
+rect -94 -94 94 94
+<< metal1 >>
+rect -100 94 100 97
+rect -100 -94 -94 94
+rect 94 -94 100 94
+rect -100 -97 100 -94
+<< properties >>
+string FIXED_BBOX -142 -142 142 142
+string gencell sky130_fd_pr__diode_pw2nd_05v5
+string library sky130
+string parameters w 2 l 2 area 4.0 peri 8.0 nx 1 ny 1 dummy 0 lmin 0.45 wmin 0.45 elc 1 erc 1 etc 1 ebc 1 doverlap 0 compatible {sky130_fd_pr__diode_pw2nd_05v5 sky130_fd_pr__diode_pw2nd_05v5_lvt sky130_fd_pr__diode_pw2nd_05v5_nvt sky130_fd_pr__diode_pw2nd_11v0} full_metal 1 vias 1 viagb 0 viagt 0 viagl 0 viagr 0
+<< end >>
diff --git a/mag/esd/sky130_fd_pr__diode_pw2nd_05v5_T9UBGD.mag b/mag/esd/sky130_fd_pr__diode_pw2nd_05v5_T9UBGD.mag
new file mode 100644
index 0000000..8d592c2
--- /dev/null
+++ b/mag/esd/sky130_fd_pr__diode_pw2nd_05v5_T9UBGD.mag
@@ -0,0 +1,338 @@
+magic
+tech sky130A
+timestamp 1646921651
+<< pwell >>
+rect -1816 -169 1816 169
+<< psubdiff >>
+rect -1798 134 -1750 151
+rect -1544 134 -1496 151
+rect -1798 103 -1781 134
+rect -1513 103 -1496 134
+rect -1798 -134 -1781 -103
+rect -1513 -134 -1496 -103
+rect -1798 -151 -1750 -134
+rect -1544 -151 -1496 -134
+rect -1432 134 -1384 151
+rect -1178 134 -1130 151
+rect -1432 103 -1415 134
+rect -1147 103 -1130 134
+rect -1432 -134 -1415 -103
+rect -1147 -134 -1130 -103
+rect -1432 -151 -1384 -134
+rect -1178 -151 -1130 -134
+rect -1066 134 -1018 151
+rect -812 134 -764 151
+rect -1066 103 -1049 134
+rect -781 103 -764 134
+rect -1066 -134 -1049 -103
+rect -781 -134 -764 -103
+rect -1066 -151 -1018 -134
+rect -812 -151 -764 -134
+rect -700 134 -652 151
+rect -446 134 -398 151
+rect -700 103 -683 134
+rect -415 103 -398 134
+rect -700 -134 -683 -103
+rect -415 -134 -398 -103
+rect -700 -151 -652 -134
+rect -446 -151 -398 -134
+rect -334 134 -286 151
+rect -80 134 -32 151
+rect -334 103 -317 134
+rect -49 103 -32 134
+rect -334 -134 -317 -103
+rect -49 -134 -32 -103
+rect -334 -151 -286 -134
+rect -80 -151 -32 -134
+rect 32 134 80 151
+rect 286 134 334 151
+rect 32 103 49 134
+rect 317 103 334 134
+rect 32 -134 49 -103
+rect 317 -134 334 -103
+rect 32 -151 80 -134
+rect 286 -151 334 -134
+rect 398 134 446 151
+rect 652 134 700 151
+rect 398 103 415 134
+rect 683 103 700 134
+rect 398 -134 415 -103
+rect 683 -134 700 -103
+rect 398 -151 446 -134
+rect 652 -151 700 -134
+rect 764 134 812 151
+rect 1018 134 1066 151
+rect 764 103 781 134
+rect 1049 103 1066 134
+rect 764 -134 781 -103
+rect 1049 -134 1066 -103
+rect 764 -151 812 -134
+rect 1018 -151 1066 -134
+rect 1130 134 1178 151
+rect 1384 134 1432 151
+rect 1130 103 1147 134
+rect 1415 103 1432 134
+rect 1130 -134 1147 -103
+rect 1415 -134 1432 -103
+rect 1130 -151 1178 -134
+rect 1384 -151 1432 -134
+rect 1496 134 1544 151
+rect 1750 134 1798 151
+rect 1496 103 1513 134
+rect 1781 103 1798 134
+rect 1496 -134 1513 -103
+rect 1781 -134 1798 -103
+rect 1496 -151 1544 -134
+rect 1750 -151 1798 -134
+<< psubdiffcont >>
+rect -1750 134 -1544 151
+rect -1798 -103 -1781 103
+rect -1513 -103 -1496 103
+rect -1750 -151 -1544 -134
+rect -1384 134 -1178 151
+rect -1432 -103 -1415 103
+rect -1147 -103 -1130 103
+rect -1384 -151 -1178 -134
+rect -1018 134 -812 151
+rect -1066 -103 -1049 103
+rect -781 -103 -764 103
+rect -1018 -151 -812 -134
+rect -652 134 -446 151
+rect -700 -103 -683 103
+rect -415 -103 -398 103
+rect -652 -151 -446 -134
+rect -286 134 -80 151
+rect -334 -103 -317 103
+rect -49 -103 -32 103
+rect -286 -151 -80 -134
+rect 80 134 286 151
+rect 32 -103 49 103
+rect 317 -103 334 103
+rect 80 -151 286 -134
+rect 446 134 652 151
+rect 398 -103 415 103
+rect 683 -103 700 103
+rect 446 -151 652 -134
+rect 812 134 1018 151
+rect 764 -103 781 103
+rect 1049 -103 1066 103
+rect 812 -151 1018 -134
+rect 1178 134 1384 151
+rect 1130 -103 1147 103
+rect 1415 -103 1432 103
+rect 1178 -151 1384 -134
+rect 1544 134 1750 151
+rect 1496 -103 1513 103
+rect 1781 -103 1798 103
+rect 1544 -151 1750 -134
+<< ndiode >>
+rect -1747 94 -1547 100
+rect -1747 -94 -1741 94
+rect -1553 -94 -1547 94
+rect -1747 -100 -1547 -94
+rect -1381 94 -1181 100
+rect -1381 -94 -1375 94
+rect -1187 -94 -1181 94
+rect -1381 -100 -1181 -94
+rect -1015 94 -815 100
+rect -1015 -94 -1009 94
+rect -821 -94 -815 94
+rect -1015 -100 -815 -94
+rect -649 94 -449 100
+rect -649 -94 -643 94
+rect -455 -94 -449 94
+rect -649 -100 -449 -94
+rect -283 94 -83 100
+rect -283 -94 -277 94
+rect -89 -94 -83 94
+rect -283 -100 -83 -94
+rect 83 94 283 100
+rect 83 -94 89 94
+rect 277 -94 283 94
+rect 83 -100 283 -94
+rect 449 94 649 100
+rect 449 -94 455 94
+rect 643 -94 649 94
+rect 449 -100 649 -94
+rect 815 94 1015 100
+rect 815 -94 821 94
+rect 1009 -94 1015 94
+rect 815 -100 1015 -94
+rect 1181 94 1381 100
+rect 1181 -94 1187 94
+rect 1375 -94 1381 94
+rect 1181 -100 1381 -94
+rect 1547 94 1747 100
+rect 1547 -94 1553 94
+rect 1741 -94 1747 94
+rect 1547 -100 1747 -94
+<< ndiodec >>
+rect -1741 -94 -1553 94
+rect -1375 -94 -1187 94
+rect -1009 -94 -821 94
+rect -643 -94 -455 94
+rect -277 -94 -89 94
+rect 89 -94 277 94
+rect 455 -94 643 94
+rect 821 -94 1009 94
+rect 1187 -94 1375 94
+rect 1553 -94 1741 94
+<< locali >>
+rect -1798 134 -1750 151
+rect -1544 134 -1496 151
+rect -1798 103 -1781 134
+rect -1513 103 -1496 134
+rect -1749 -94 -1741 94
+rect -1553 -94 -1545 94
+rect -1798 -134 -1781 -103
+rect -1513 -134 -1496 -103
+rect -1798 -151 -1750 -134
+rect -1544 -151 -1496 -134
+rect -1432 134 -1384 151
+rect -1178 134 -1130 151
+rect -1432 103 -1415 134
+rect -1147 103 -1130 134
+rect -1383 -94 -1375 94
+rect -1187 -94 -1179 94
+rect -1432 -134 -1415 -103
+rect -1147 -134 -1130 -103
+rect -1432 -151 -1384 -134
+rect -1178 -151 -1130 -134
+rect -1066 134 -1018 151
+rect -812 134 -764 151
+rect -1066 103 -1049 134
+rect -781 103 -764 134
+rect -1017 -94 -1009 94
+rect -821 -94 -813 94
+rect -1066 -134 -1049 -103
+rect -781 -134 -764 -103
+rect -1066 -151 -1018 -134
+rect -812 -151 -764 -134
+rect -700 134 -652 151
+rect -446 134 -398 151
+rect -700 103 -683 134
+rect -415 103 -398 134
+rect -651 -94 -643 94
+rect -455 -94 -447 94
+rect -700 -134 -683 -103
+rect -415 -134 -398 -103
+rect -700 -151 -652 -134
+rect -446 -151 -398 -134
+rect -334 134 -286 151
+rect -80 134 -32 151
+rect -334 103 -317 134
+rect -49 103 -32 134
+rect -285 -94 -277 94
+rect -89 -94 -81 94
+rect -334 -134 -317 -103
+rect -49 -134 -32 -103
+rect -334 -151 -286 -134
+rect -80 -151 -32 -134
+rect 32 134 80 151
+rect 286 134 334 151
+rect 32 103 49 134
+rect 317 103 334 134
+rect 81 -94 89 94
+rect 277 -94 285 94
+rect 32 -134 49 -103
+rect 317 -134 334 -103
+rect 32 -151 80 -134
+rect 286 -151 334 -134
+rect 398 134 446 151
+rect 652 134 700 151
+rect 398 103 415 134
+rect 683 103 700 134
+rect 447 -94 455 94
+rect 643 -94 651 94
+rect 398 -134 415 -103
+rect 683 -134 700 -103
+rect 398 -151 446 -134
+rect 652 -151 700 -134
+rect 764 134 812 151
+rect 1018 134 1066 151
+rect 764 103 781 134
+rect 1049 103 1066 134
+rect 813 -94 821 94
+rect 1009 -94 1017 94
+rect 764 -134 781 -103
+rect 1049 -134 1066 -103
+rect 764 -151 812 -134
+rect 1018 -151 1066 -134
+rect 1130 134 1178 151
+rect 1384 134 1432 151
+rect 1130 103 1147 134
+rect 1415 103 1432 134
+rect 1179 -94 1187 94
+rect 1375 -94 1383 94
+rect 1130 -134 1147 -103
+rect 1415 -134 1432 -103
+rect 1130 -151 1178 -134
+rect 1384 -151 1432 -134
+rect 1496 134 1544 151
+rect 1750 134 1798 151
+rect 1496 103 1513 134
+rect 1781 103 1798 134
+rect 1545 -94 1553 94
+rect 1741 -94 1749 94
+rect 1496 -134 1513 -103
+rect 1781 -134 1798 -103
+rect 1496 -151 1544 -134
+rect 1750 -151 1798 -134
+<< viali >>
+rect -1741 -94 -1553 94
+rect -1375 -94 -1187 94
+rect -1009 -94 -821 94
+rect -643 -94 -455 94
+rect -277 -94 -89 94
+rect 89 -94 277 94
+rect 455 -94 643 94
+rect 821 -94 1009 94
+rect 1187 -94 1375 94
+rect 1553 -94 1741 94
+<< metal1 >>
+rect -1747 94 -1547 97
+rect -1747 -94 -1741 94
+rect -1553 -94 -1547 94
+rect -1747 -97 -1547 -94
+rect -1381 94 -1181 97
+rect -1381 -94 -1375 94
+rect -1187 -94 -1181 94
+rect -1381 -97 -1181 -94
+rect -1015 94 -815 97
+rect -1015 -94 -1009 94
+rect -821 -94 -815 94
+rect -1015 -97 -815 -94
+rect -649 94 -449 97
+rect -649 -94 -643 94
+rect -455 -94 -449 94
+rect -649 -97 -449 -94
+rect -283 94 -83 97
+rect -283 -94 -277 94
+rect -89 -94 -83 94
+rect -283 -97 -83 -94
+rect 83 94 283 97
+rect 83 -94 89 94
+rect 277 -94 283 94
+rect 83 -97 283 -94
+rect 449 94 649 97
+rect 449 -94 455 94
+rect 643 -94 649 94
+rect 449 -97 649 -94
+rect 815 94 1015 97
+rect 815 -94 821 94
+rect 1009 -94 1015 94
+rect 815 -97 1015 -94
+rect 1181 94 1381 97
+rect 1181 -94 1187 94
+rect 1375 -94 1381 94
+rect 1181 -97 1381 -94
+rect 1547 94 1747 97
+rect 1547 -94 1553 94
+rect 1741 -94 1747 94
+rect 1547 -97 1747 -94
+<< properties >>
+string FIXED_BBOX 1504 -142 1789 142
+string gencell sky130_fd_pr__diode_pw2nd_05v5
+string library sky130
+string parameters w 2 l 2 area 4.0 peri 8.0 nx 10 ny 1 dummy 0 lmin 0.45 wmin 0.45 elc 1 erc 1 etc 1 ebc 1 doverlap 0 compatible {sky130_fd_pr__diode_pw2nd_05v5 sky130_fd_pr__diode_pw2nd_05v5_lvt sky130_fd_pr__diode_pw2nd_05v5_nvt sky130_fd_pr__diode_pw2nd_11v0} full_metal 1 vias 1 viagb 0 viagt 0 viagl 0 viagr 0
+<< end >>
diff --git a/xschem/.ztr-directory b/mag/isource/.ztr-directory
similarity index 100%
rename from xschem/.ztr-directory
rename to mag/isource/.ztr-directory
diff --git a/mag/isource/isource.mag b/mag/isource/isource.mag
index 266d739..1cd3d72 100644
--- a/mag/isource/isource.mag
+++ b/mag/isource/isource.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1646406885
+timestamp 1646921651
<< psubdiff >>
rect 8476 13900 8500 15280
rect 10040 13900 10064 15280
@@ -449,52 +449,52 @@
rect 21060 -4660 21084 -4240
rect 20680 -4680 21084 -4660
rect 20736 -4684 21084 -4680
-use isource_cmirror isource_cmirror_2
-timestamp 1645630008
+use isource_cmirror#0 isource_cmirror_2
+timestamp 1646921651
transform 1 0 18900 0 1 9740
box 0 0 2044 2280
-use isource_cmirror isource_cmirror_3
-timestamp 1645630008
+use isource_cmirror#0 isource_cmirror_3
+timestamp 1646921651
transform 1 0 18900 0 1 7480
box 0 0 2044 2280
use isource_conv isource_conv_0
-timestamp 1645701277
+timestamp 1646921651
transform 1 0 9200 0 1 -6200
box 3980 6900 13920 13860
use isource_conv_tsmal_nwell isource_conv_tsmal_nwell_0
-timestamp 1645700356
+timestamp 1646921651
transform 1 0 12044 0 1 -1430
box 4070 6210 5960 9050
use isource_diffamp isource_diffamp_0
-timestamp 1645698808
+timestamp 1646921651
transform 1 0 -280 0 1 16996
box 14560 -8200 18240 -5200
use isource_diffamp isource_diffamp_1
-timestamp 1645698808
+timestamp 1646921651
transform 1 0 -280 0 1 21120
box 14560 -8200 18240 -5200
use isource_out isource_out_0
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 -4300 0 1 -13810
box 4320 8980 25514 15188
use isource_ref isource_ref_0
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 20 0 1 40
box -30 -40 13220 13420
use isource_startup isource_startup_0
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 10820 0 1 13700
box 200 0 2352 1238
use sky130_fd_pr__cap_mim_m3_1_WXTTNJ#0 sky130_fd_pr__cap_mim_m3_1_WXTTNJ_0
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 19490 0 1 10040
box -2150 -2100 2149 2100
use sky130_fd_pr__cap_mim_m3_2_LJ5JLG#1 sky130_fd_pr__cap_mim_m3_2_LJ5JLG_0
-timestamp 1645614240
+timestamp 1646921651
transform 1 0 7151 0 1 1700
box -3351 -3101 3373 3101
use sky130_fd_pr__cap_mim_m3_2_LJ5JLG#1 sky130_fd_pr__cap_mim_m3_2_LJ5JLG_1
-timestamp 1645614240
+timestamp 1646921651
transform 1 0 7151 0 1 8700
box -3351 -3101 3373 3101
<< labels >>
diff --git a/mag/isource/isource.zip b/mag/isource/isource.zip
new file mode 100644
index 0000000..4147e05
--- /dev/null
+++ b/mag/isource/isource.zip
Binary files differ
diff --git "a/mag/isource/isource_cmirror\0430.mag" "b/mag/isource/isource_cmirror\0430.mag"
new file mode 100644
index 0000000..b7815b1
--- /dev/null
+++ "b/mag/isource/isource_cmirror\0430.mag"
@@ -0,0 +1,125 @@
+magic
+tech sky130A
+magscale 1 2
+timestamp 1646743514
+<< locali >>
+rect 0 2200 2040 2280
+rect 0 60 60 2200
+rect 380 1840 480 2200
+rect 1980 2020 2040 2200
+rect 1880 1840 2040 2020
+rect 360 320 480 1840
+rect 1980 420 2040 1840
+rect 380 60 480 320
+rect 1880 240 2040 420
+rect 1980 60 2040 240
+rect 0 0 2040 60
+<< metal1 >>
+rect 100 2120 1860 2180
+rect 100 2100 1850 2120
+rect 180 2090 260 2100
+rect 110 1260 120 1460
+rect 180 1260 190 1460
+rect 250 1260 260 1460
+rect 320 1260 330 1460
+rect 360 1220 480 2100
+rect 810 1840 820 2040
+rect 880 1840 890 2040
+rect 1330 1840 1340 2040
+rect 1400 1840 1410 2040
+rect 1830 1840 1840 2040
+rect 1920 1840 1930 2040
+rect 550 1260 560 1460
+rect 620 1260 630 1460
+rect 1070 1260 1080 1460
+rect 1140 1260 1150 1460
+rect 1590 1260 1600 1460
+rect 1660 1260 1670 1460
+rect 0 1060 1880 1220
+rect 110 820 120 1020
+rect 180 820 190 1020
+rect 250 820 260 1020
+rect 320 820 330 1020
+rect 360 180 480 1060
+rect 550 820 560 1020
+rect 620 820 630 1020
+rect 1070 820 1080 1020
+rect 1140 820 1150 1020
+rect 1590 820 1600 1020
+rect 1660 820 1670 1020
+rect 810 220 820 420
+rect 880 220 890 420
+rect 1330 220 1340 420
+rect 1400 220 1410 420
+rect 1830 220 1840 420
+rect 1920 220 1930 420
+rect 100 160 1850 180
+rect 100 100 1860 160
+<< via1 >>
+rect 120 1260 180 1460
+rect 260 1260 320 1460
+rect 820 1840 880 2040
+rect 1340 1840 1400 2040
+rect 1840 1840 1920 2040
+rect 560 1260 620 1460
+rect 1080 1260 1140 1460
+rect 1600 1260 1660 1460
+rect 120 820 180 1020
+rect 260 820 320 1020
+rect 560 820 620 1020
+rect 1080 820 1140 1020
+rect 1600 820 1660 1020
+rect 820 220 880 420
+rect 1340 220 1400 420
+rect 1840 220 1920 420
+<< metal2 >>
+rect 820 2040 880 2050
+rect 1340 2040 1400 2050
+rect 1840 2040 1920 2050
+rect 880 1840 1340 2040
+rect 1400 1840 1840 2040
+rect 820 1830 880 1840
+rect 1340 1830 1400 1840
+rect 120 1460 180 1470
+rect 60 1260 120 1460
+rect 60 1020 180 1260
+rect 60 820 120 1020
+rect 120 810 180 820
+rect 260 1460 320 1470
+rect 560 1460 620 1470
+rect 1080 1460 1140 1470
+rect 1600 1460 1660 1470
+rect 320 1260 560 1460
+rect 620 1260 1080 1460
+rect 1140 1260 1600 1460
+rect 260 1020 440 1260
+rect 560 1250 620 1260
+rect 1080 1250 1140 1260
+rect 1600 1250 1660 1260
+rect 560 1020 620 1030
+rect 1080 1020 1140 1030
+rect 1600 1020 1660 1030
+rect 320 820 560 1020
+rect 620 820 1080 1020
+rect 1140 820 1600 1020
+rect 260 810 320 820
+rect 560 810 620 820
+rect 1080 810 1140 820
+rect 1600 810 1660 820
+rect 820 420 880 430
+rect 1340 420 1400 430
+rect 1720 420 1920 1840
+rect 880 220 1340 420
+rect 1400 220 1840 420
+rect 820 210 880 220
+rect 1340 210 1400 220
+rect 1840 210 1920 220
+use sky130_fd_pr__pfet_01v8_ACY9XJ#0 sky130_fd_pr__pfet_01v8_ACY9XJ_0
+timestamp 1645630008
+transform 1 0 216 0 1 1137
+box -216 -1137 216 1137
+use sky130_fd_pr__pfet_01v8_J24RLQ#0 sky130_fd_pr__pfet_01v8_J24RLQ_0
+timestamp 1645630008
+transform 1 0 1232 0 1 1137
+box -812 -1137 812 1137
+<< end >>
diff --git a/mag/isource/isource_cmirror.mag b/mag/isource/isource_cmirror.mag
index 41cf787..6b76792 100644
--- a/mag/isource/isource_cmirror.mag
+++ b/mag/isource/isource_cmirror.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1645630008
+timestamp 1646921651
<< locali >>
rect 0 2200 2040 2280
rect 0 60 60 2200
@@ -114,12 +114,12 @@
rect 820 210 880 220
rect 1340 210 1400 220
rect 1840 210 1920 220
-use sky130_fd_pr__pfet_01v8_ACY9XJ sky130_fd_pr__pfet_01v8_ACY9XJ_0
-timestamp 1645630008
+use sky130_fd_pr__pfet_01v8_ACY9XJ#0 sky130_fd_pr__pfet_01v8_ACY9XJ_0
+timestamp 1646921651
transform 1 0 216 0 1 1137
box -216 -1137 216 1137
-use sky130_fd_pr__pfet_01v8_J24RLQ sky130_fd_pr__pfet_01v8_J24RLQ_0
-timestamp 1645630008
+use sky130_fd_pr__pfet_01v8_J24RLQ#0 sky130_fd_pr__pfet_01v8_J24RLQ_0
+timestamp 1646921651
transform 1 0 1232 0 1 1137
box -812 -1137 812 1137
<< end >>
diff --git a/mag/isource/isource_conv.mag b/mag/isource/isource_conv.mag
index 7b0cf66..91c2109 100644
--- a/mag/isource/isource_conv.mag
+++ b/mag/isource/isource_conv.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1645701277
+timestamp 1646921651
<< locali >>
rect 9700 11420 13840 11480
rect 11360 11400 13840 11420
@@ -183,39 +183,39 @@
rect 9590 7955 9810 7960
rect 11790 7955 11930 7960
use isource_cmirror isource_cmirror_0 ~/code/asic/layout/isource
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 9700 0 1 11420
box 0 0 2044 2280
use isource_cmirror isource_cmirror_1
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 9700 0 1 9160
box 0 0 2044 2280
use isource_cmirror isource_cmirror_2
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 9700 0 1 6900
box 0 0 2044 2280
use isource_cmirror isource_cmirror_3
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 11740 0 1 11420
box 0 0 2044 2280
use isource_cmirror isource_cmirror_4
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 11740 0 1 9160
box 0 0 2044 2280
use isource_cmirror isource_cmirror_5
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 11740 0 1 6900
box 0 0 2044 2280
use sky130_fd_pr__nfet_01v8_WY4VMC sky130_fd_pr__nfet_01v8_WY4VMC_2
-timestamp 1645614240
+timestamp 1646921651
transform 1 0 5405 0 1 12950
box -1425 -610 1425 610
use sky130_fd_pr__res_xhigh_po_1p41_BQY2W7 sky130_fd_pr__res_xhigh_po_1p41_BQY2W7_0
-timestamp 1645462850
+timestamp 1646921651
transform 1 0 7322 0 1 9278
box -2162 -1598 2162 1598
use sky130_fd_pr__res_xhigh_po_1p41_J2NVFM sky130_fd_pr__res_xhigh_po_1p41_J2NVFM_0
-timestamp 1645628777
+timestamp 1646921651
transform 1 0 4592 0 1 9278
box -572 -1598 572 1598
<< end >>
diff --git a/mag/isource/isource_conv_tsmal.mag b/mag/isource/isource_conv_tsmal.mag
index b1d3dbf..59d92ff 100644
--- a/mag/isource/isource_conv_tsmal.mag
+++ b/mag/isource/isource_conv_tsmal.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1645614240
+timestamp 1646921651
<< pwell >>
rect 4410 8570 5630 8630
rect 4410 7700 4470 8570
@@ -161,7 +161,7 @@
rect 5280 6720 5340 6730
rect 5470 6720 5530 6730
use sky130_fd_pr__nfet_01v8_lvt_26RGPZ sky130_fd_pr__nfet_01v8_lvt_26RGPZ_0
-timestamp 1645614240
+timestamp 1646921651
transform 1 0 5017 0 1 7629
box -647 -1119 647 1119
<< end >>
diff --git a/mag/isource/isource_conv_tsmal_nwell.mag b/mag/isource/isource_conv_tsmal_nwell.mag
index 35e6500..03480bc 100644
--- a/mag/isource/isource_conv_tsmal_nwell.mag
+++ b/mag/isource/isource_conv_tsmal_nwell.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1645700356
+timestamp 1646921651
<< dnwell >>
rect 4150 6290 5880 8970
<< nwell >>
@@ -190,7 +190,7 @@
rect 5280 6720 5340 6730
rect 5470 6720 5530 6730
use sky130_fd_pr__nfet_01v8_lvt_26RGPZ sky130_fd_pr__nfet_01v8_lvt_26RGPZ_0
-timestamp 1645614240
+timestamp 1646921651
transform 1 0 5017 0 1 7629
box -647 -1119 647 1119
<< end >>
diff --git a/mag/isource/isource_diffamp.mag b/mag/isource/isource_diffamp.mag
index 6d14394..c4f0366 100644
--- a/mag/isource/isource_diffamp.mag
+++ b/mag/isource/isource_diffamp.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1645698808
+timestamp 1646921651
<< dnwell >>
rect 14640 -8120 18160 -5280
<< nwell >>
@@ -188,7 +188,7 @@
rect 17140 -7610 17220 -7600
rect 17660 -7610 17740 -7600
use sky130_fd_pr__nfet_01v8_lvt_ZZ3Y87 sky130_fd_pr__nfet_01v8_lvt_ZZ3Y87_0
-timestamp 1645633816
+timestamp 1646921651
transform 1 0 16397 0 1 -6701
box -1457 -1119 1457 1119
<< end >>
diff --git a/mag/isource/isource_out.mag b/mag/isource/isource_out.mag
index 3979c0a..c52aea8 100644
--- a/mag/isource/isource_out.mag
+++ b/mag/isource/isource_out.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1645630008
+timestamp 1646921651
<< locali >>
rect 17180 12710 22720 13000
rect 4360 12650 22720 12710
@@ -137,28 +137,28 @@
rect 16670 11680 16680 11820
rect 17000 11680 17010 11820
rect 16670 11675 17010 11680
-use isource_cmirror isource_cmirror_0
-timestamp 1645630008
+use isource_cmirror#0 isource_cmirror_0
+timestamp 1646921651
transform 1 0 23200 0 1 12240
box 0 0 2044 2280
use isource_conv_tsmal isource_conv_tsmal_0
-timestamp 1645614240
+timestamp 1646921651
transform 1 0 16700 0 1 6440
box 4250 6510 5820 8748
use isource_ref_transistor isource_ref_transistor_0
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 4813 0 1 12757
box -493 -117 12421 1103
use isource_ref_transistor isource_ref_transistor_1
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 4813 0 1 11547
box -493 -117 12421 1103
use sky130_fd_pr__nfet_01v8_834VMG sky130_fd_pr__nfet_01v8_834VMG_0
-timestamp 1645614240
+timestamp 1646921651
transform 1 0 20043 0 1 12050
box -2683 -610 2683 610
use sky130_fd_pr__res_xhigh_po_1p41_JAGHGM sky130_fd_pr__res_xhigh_po_1p41_JAGHGM_0
-timestamp 1645614240
+timestamp 1646921651
transform 1 0 24147 0 1 10578
box -1367 -1598 1367 1598
<< end >>
diff --git a/mag/isource/isource_ref.mag b/mag/isource/isource_ref.mag
index 6d0a318..816e23f 100644
--- a/mag/isource/isource_ref.mag
+++ b/mag/isource/isource_ref.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1645630008
+timestamp 1646921651
<< isosubstrate >>
rect 12100 8800 12340 8900
<< pwell >>
@@ -290,23 +290,23 @@
rect 11640 260 11660 360
rect 11350 255 11650 260
use isource_ref_5transistors isource_ref_5transistors_0
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 0 0 1 0
box 0 0 12914 4940
use isource_ref_5transistors isource_ref_5transistors_1
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 0 0 -1 13400
box 0 0 12914 4940
use isource_ref_transistor isource_ref_transistor_0
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 493 0 1 4997
box -493 -117 12421 1103
use sky130_fd_pr__nfet_01v8_TV3VM6 sky130_fd_pr__nfet_01v8_TV3VM6_0
-timestamp 1645614240
+timestamp 1646921651
transform 1 0 3312 0 1 6700
box -3312 -610 3312 610
use sky130_fd_pr__nfet_01v8_WY4VMC sky130_fd_pr__nfet_01v8_WY4VMC_0
-timestamp 1645614240
+timestamp 1646921651
transform 1 0 11495 0 1 6700
box -1425 -610 1425 610
<< end >>
diff --git a/mag/isource/isource_ref_5transistors.mag b/mag/isource/isource_ref_5transistors.mag
index 09020fc..5531e5b 100644
--- a/mag/isource/isource_ref_5transistors.mag
+++ b/mag/isource/isource_ref_5transistors.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1645630008
+timestamp 1646921651
<< locali >>
rect 40 4820 12900 4940
rect 20 3600 12880 3720
@@ -175,19 +175,19 @@
rect 12460 75 12690 80
rect 12460 40 12660 75
use isource_ref_transistor isource_ref_transistor_0
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 493 0 1 117
box -493 -117 12421 1103
use isource_ref_transistor isource_ref_transistor_1
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 493 0 1 1337
box -493 -117 12421 1103
use isource_ref_transistor isource_ref_transistor_3
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 493 0 1 2557
box -493 -117 12421 1103
use isource_ref_transistor isource_ref_transistor_4
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 493 0 1 3777
box -493 -117 12421 1103
<< end >>
diff --git a/mag/isource/isource_ref_transistor.mag b/mag/isource/isource_ref_transistor.mag
index 3865a50..185ab83 100644
--- a/mag/isource/isource_ref_transistor.mag
+++ b/mag/isource/isource_ref_transistor.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1645630008
+timestamp 1646921651
<< metal1 >>
rect 886 930 978 966
rect 2144 930 2236 966
@@ -89,7 +89,7 @@
rect 9703 97 9763 100
rect 12223 97 12283 100
use sky130_fd_pr__nfet_01v8_HZ8P49 sky130_fd_pr__nfet_01v8_HZ8P49_0
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 5964 0 1 493
box -6457 -610 6457 610
<< end >>
diff --git a/mag/isource/isource_startup.mag b/mag/isource/isource_startup.mag
index d822176..8566546 100644
--- a/mag/isource/isource_startup.mag
+++ b/mag/isource/isource_startup.mag
@@ -1,7 +1,7 @@
magic
tech sky130A
magscale 1 2
-timestamp 1645630008
+timestamp 1646921651
<< locali >>
rect 240 1150 1480 1200
rect 1440 650 1480 1150
@@ -120,15 +120,15 @@
rect 1220 220 1280 230
rect 1630 150 1770 160
use sky130_fd_pr__nfet_01v8_U3V43Z sky130_fd_pr__nfet_01v8_U3V43Z_0
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 1936 0 1 440
box -396 -260 396 260
use sky130_fd_pr__nfet_01v8_lvt_E9U3PA sky130_fd_pr__nfet_01v8_lvt_E9U3PA_0
-timestamp 1645614240
+timestamp 1646921651
transform 1 0 857 0 1 610
box -657 -610 657 610
use sky130_fd_pr__pfet_01v8_QDYTZD sky130_fd_pr__pfet_01v8_QDYTZD_1
-timestamp 1645630008
+timestamp 1646921651
transform 1 0 1956 0 1 969
box -396 -269 396 269
<< end >>
diff --git a/mag/isource/obsolete/isource_ref.mag b/mag/isource/obsolete/isource_ref.mag
new file mode 100644
index 0000000..d7813e0
--- /dev/null
+++ b/mag/isource/obsolete/isource_ref.mag
@@ -0,0 +1,172 @@
+magic
+timestamp 1645191714
+<< checkpaint >>
+rect 0 -18910 8914 -260
+<< pwell >>
+rect 920 -17616 982 -17610
+rect 920 -17610 922 -17540
+rect 958 -14948 1020 -14942
+rect 958 -14942 960 -14872
+<< metal1 >>
+rect 920 -18910 8519 -18876
+rect 942 -18548 1042 -18348
+rect 2652 -18548 2752 -18348
+rect 4372 -18548 4472 -18348
+rect 6092 -18548 6192 -18348
+rect 7812 -18548 7912 -18348
+rect 82 -18228 92 -18028
+rect 172 -18228 182 -18028
+rect 1802 -18228 1812 -18028
+rect 1892 -18228 1902 -18028
+rect 3512 -18228 3522 -18028
+rect 3602 -18228 3612 -18028
+rect 5232 -18228 5242 -18028
+rect 5322 -18228 5332 -18028
+rect 6942 -18228 6952 -18028
+rect 7032 -18228 7042 -18028
+rect 8662 -18228 8672 -18028
+rect 8752 -18228 8762 -18028
+rect 938 -17600 8425 -17566
+rect 1032 -17566 8425 -17565
+rect 958 -16242 8557 -16208
+rect 980 -15880 1080 -15680
+rect 2690 -15880 2790 -15680
+rect 4410 -15880 4510 -15680
+rect 6130 -15880 6230 -15680
+rect 7850 -15880 7950 -15680
+rect 120 -15560 130 -15360
+rect 210 -15560 220 -15360
+rect 1840 -15560 1850 -15360
+rect 1930 -15560 1940 -15360
+rect 3550 -15560 3560 -15360
+rect 3640 -15560 3650 -15360
+rect 5270 -15560 5280 -15360
+rect 5360 -15560 5370 -15360
+rect 6980 -15560 6990 -15360
+rect 7070 -15560 7080 -15360
+rect 8700 -15560 8710 -15360
+rect 8790 -15560 8800 -15360
+rect 976 -14932 8463 -14898
+rect 1070 -14898 8463 -14897
+<< via1 >>
+rect 92 -18228 172 -18028
+rect 1812 -18228 1892 -18028
+rect 3522 -18228 3602 -18028
+rect 5242 -18228 5322 -18028
+rect 6952 -18228 7032 -18028
+rect 8672 -18228 8752 -18028
+rect 130 -15560 210 -15360
+rect 1850 -15560 1930 -15360
+rect 3560 -15560 3640 -15360
+rect 5280 -15560 5360 -15360
+rect 6990 -15560 7070 -15360
+rect 8710 -15560 8790 -15360
+<< metal2 >>
+rect 952 -18558 1032 -18548
+rect 2662 -18558 2742 -18548
+rect 4382 -18558 4462 -18548
+rect 6102 -18558 6182 -18548
+rect 7822 -18558 7902 -18548
+rect 952 -18348 1032 -18338
+rect 2662 -18348 2742 -18338
+rect 4382 -18348 4462 -18338
+rect 6102 -18348 6182 -18338
+rect 7822 -18348 7902 -18338
+rect 92 -18238 172 -18228
+rect 1812 -18238 1892 -18228
+rect 3522 -18238 3602 -18228
+rect 5242 -18238 5322 -18228
+rect 6952 -18238 7032 -18228
+rect 8672 -18238 8752 -18228
+rect 172 -18228 1812 -18028
+rect 1892 -18228 3522 -18028
+rect 3602 -18228 5242 -18028
+rect 5322 -18228 6952 -18028
+rect 7032 -18228 8672 -18028
+rect 8752 -18228 8762 -18028
+rect 92 -18028 172 -18018
+rect 1812 -18028 1892 -18018
+rect 3522 -18028 3602 -18018
+rect 5242 -18028 5322 -18018
+rect 6952 -18028 7032 -18018
+rect 8672 -18028 8752 -18018
+rect 990 -15890 1070 -15880
+rect 2700 -15890 2780 -15880
+rect 4420 -15890 4500 -15880
+rect 6140 -15890 6220 -15880
+rect 7860 -15890 7940 -15880
+rect 990 -15680 1070 -15670
+rect 2700 -15680 2780 -15670
+rect 4420 -15680 4500 -15670
+rect 6140 -15680 6220 -15670
+rect 7860 -15680 7940 -15670
+rect 130 -15570 210 -15560
+rect 1850 -15570 1930 -15560
+rect 3560 -15570 3640 -15560
+rect 5280 -15570 5360 -15560
+rect 6990 -15570 7070 -15560
+rect 8710 -15570 8790 -15560
+rect 210 -15560 1850 -15360
+rect 1930 -15560 3560 -15360
+rect 3640 -15560 5280 -15360
+rect 5360 -15560 6990 -15360
+rect 7070 -15560 8710 -15360
+rect 8790 -15560 8800 -15360
+rect 130 -15360 210 -15350
+rect 1850 -15360 1930 -15350
+rect 3560 -15360 3640 -15350
+rect 5280 -15360 5360 -15350
+rect 6990 -15360 7070 -15350
+rect 8710 -15360 8790 -15350
+<< rmetal2 >>
+rect 1032 -18548 2662 -18348
+rect 2742 -18548 4382 -18348
+rect 4462 -18548 6102 -18348
+rect 6182 -18548 7822 -18348
+rect 7902 -18548 8842 -18348
+rect 1070 -15880 2700 -15680
+rect 2780 -15880 4420 -15680
+rect 4500 -15880 6140 -15680
+rect 6220 -15880 7860 -15680
+rect 7940 -15880 8880 -15680
+use sky130_fd_pr__nfet_01v8_HH9N49 sky130_fd_pr__nfet_01v8_HH9N49_1
+timestamp 1645191714
+transform 1 0 4457 0 1 -2680
+box -4457 -810 4457 810
+use sky130_fd_pr__nfet_01v8_HH9N49 sky130_fd_pr__nfet_01v8_HH9N49_2
+timestamp 1645191714
+transform 1 0 4457 0 1 -1070
+box -4457 -810 4457 810
+use sky130_fd_pr__nfet_01v8_HH9N49 sky130_fd_pr__nfet_01v8_HH9N49_3
+timestamp 1645191714
+transform 1 0 4457 0 1 -4290
+box -4457 -810 4457 810
+use sky130_fd_pr__nfet_01v8_HH9N49 sky130_fd_pr__nfet_01v8_HH9N49_4
+timestamp 1645191714
+transform 1 0 4457 0 1 -5900
+box -4457 -810 4457 810
+use sky130_fd_pr__nfet_01v8_HH9N49 sky130_fd_pr__nfet_01v8_HH9N49_5
+timestamp 1645191714
+transform 1 0 4457 0 1 -7510
+box -4457 -810 4457 810
+use sky130_fd_pr__nfet_01v8_HH9N49 sky130_fd_pr__nfet_01v8_HH9N49_6
+timestamp 1645191714
+transform 1 0 4457 0 1 -9120
+box -4457 -810 4457 810
+use sky130_fd_pr__nfet_01v8_HH9N49 sky130_fd_pr__nfet_01v8_HH9N49_7
+timestamp 1645191714
+transform 1 0 4457 0 1 -10730
+box -4457 -810 4457 810
+use sky130_fd_pr__nfet_01v8_HH9N49 sky130_fd_pr__nfet_01v8_HH9N49_8
+timestamp 1645191714
+transform 1 0 4457 0 1 -12340
+box -4457 -810 4457 810
+use sky130_fd_pr__nfet_01v8_HH9N49 sky130_fd_pr__nfet_01v8_HH9N49_9
+timestamp 1645191714
+transform 1 0 4457 0 1 -13950
+box -4457 -810 4457 810
+use sky130_fd_pr__nfet_01v8_HH9N49 sky130_fd_pr__nfet_01v8_HH9N49_10
+timestamp 1645191714
+transform 1 0 4457 0 1 -15570
+box -4457 -810 4457 810
+<< end >>
diff --git a/mag/isource/obsolete/isource_ref2_kl.mag b/mag/isource/obsolete/isource_ref2_kl.mag
new file mode 100644
index 0000000..2c0735f
--- /dev/null
+++ b/mag/isource/obsolete/isource_ref2_kl.mag
@@ -0,0 +1,13 @@
+magic
+timestamp 1645198271
+<< checkpaint >>
+rect 0 0 12914 2440
+use isource_ref2 isource_ref2_1
+timestamp 1645198271
+transform 1 0 493 0 1 117
+box -493 -117 12421 1103
+use sky130_fd_pr__nfet_01v8_HZ8P49 sky130_fd_pr__nfet_01v8_HZ8P49_1
+timestamp 1645198271
+transform 1 0 6457 0 1 1830
+box -6457 -610 6457 610
+<< end >>
diff --git a/mag/isource/obsolete/isource_ref_kl.gds b/mag/isource/obsolete/isource_ref_kl.gds
new file mode 100644
index 0000000..5d94ccc
--- /dev/null
+++ b/mag/isource/obsolete/isource_ref_kl.gds
Binary files differ
diff --git a/mag/isource/obsolete/isource_ref_kl.mag b/mag/isource/obsolete/isource_ref_kl.mag
new file mode 100644
index 0000000..87aa1ce
--- /dev/null
+++ b/mag/isource/obsolete/isource_ref_kl.mag
@@ -0,0 +1,13 @@
+magic
+timestamp 1645191714
+<< checkpaint >>
+rect 0 0 8914 20270
+use isource_ref isource_ref_1
+timestamp 1645191714
+transform 1 0 0 0 1 18910
+box 0 -18910 8914 -260
+use sky130_fd_pr__nfet_01v8_HH9N49 sky130_fd_pr__nfet_01v8_HH9N49_1
+timestamp 1645191714
+transform 1 0 4457 0 1 19460
+box -4457 -810 4457 810
+<< end >>
diff --git a/xschem/.ztr-directory b/mag/isource/pls/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/.ztr-directory
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.7V/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.7V/.ztr-directory
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/.ztr-directory
diff --git a/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..3f584d5
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.09449698e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..b4890f9
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.10940399e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..f913952
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.27123986e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..744b83a
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.11057636e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..e4aea7e
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.11739762e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..e83a1f6
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.30479954e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..907023c
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.11517728e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..144a02b
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.11760253e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..e9e9e9c
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.32360131e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/run.log b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/run.spice b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/run.spice
new file mode 100644
index 0000000..c7230bd
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_1318809ae448855c5d87d3b65631b7e474d82124/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.7
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="ll_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice ll_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.ll_mm.red ll_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/.ztr-directory
diff --git a/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..1ee6386
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.19872568e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..6edd8e8
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.11746044e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..acddccf
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.21889050e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..46462cb
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.22697906e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..7f56017
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.12726523e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..9d1ecb6
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.24163119e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..435b776
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.24232190e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..06dd260
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.12856054e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..652db80
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.25274974e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/run.log b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/run.spice b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/run.spice
new file mode 100644
index 0000000..f74ee16
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_135b1ca8106434c007a93de5225bf6c44e553046/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.7
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="lh_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice lh_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.lh_mm.red lh_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/.ztr-directory
diff --git a/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..85da624
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.02619358e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..205ffe7
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.92395688e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..8f95f08
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.96013016e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..d5ca249
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.04894671e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..084f2c9
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.92926540e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..8bec0a5
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.97627023e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..e725b2a
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.05881484e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..c542b4d
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.92640340e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..89a2681
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.98169154e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/run.log b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/run.spice b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/run.spice
new file mode 100644
index 0000000..a3265ba
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_15af06979a2d00b7fe7edd707e7b56ef1ee89ae0/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.7
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="tt_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice tt_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt_mm.red tt_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/.ztr-directory
diff --git a/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..049e44a
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.77436378e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..b20153b
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.68165222e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..e260542
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.64266875e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..6e922e5
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.79405979e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..8c04cb5
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.68966758e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..187a23a
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.63254313e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..9f035bf
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.80026286e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..89f27f2
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.68608796e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..fa2a570
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.61695643e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/run.log b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/run.spice b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/run.spice
new file mode 100644
index 0000000..8746855
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_9d9b4c8a52b13cffc1229a54963ecc2766ee91fc/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.7
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="ff_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice ff_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.ff_mm.red ff_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/.ztr-directory
diff --git a/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..ac9213e
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.68019177e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..a09a5c0
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.60193903e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..925f798
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.53683092e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..341a296
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.70914689e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..b417dd5
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.62007485e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..6430350
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.54439245e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..f948182
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.72201214e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..8b1a890
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.62471514e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..c0b0c98
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.53686542e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/run.log b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/run.spice b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/run.spice
new file mode 100644
index 0000000..de9d3eb
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_a917cc40b43ee8d4832764cb288b0d63ecf526fb/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.7
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="sf_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice sf_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.sf_mm.red sf_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/.ztr-directory
diff --git a/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..40a5dcc
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.14564428e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..36f7797
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.20756071e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..75d06a5
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.11043243e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..4139b67
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.15642181e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..a89eb24
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.22425465e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..833ef47
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.09787778e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..508923d
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.16098472e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..d390abb
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.23384449e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..31da30d
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.08654218e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/run.log b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/run.spice b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/run.spice
new file mode 100644
index 0000000..9524257
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_ac088012dd6cb4d90121386befe1e494c2e833ab/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.7
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="ss_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice ss_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.ss_mm.red ss_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/.ztr-directory
diff --git a/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..afd60c9
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.83492280e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..a152b3a
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.81680435e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..b77676e
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.89404653e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..2aa7b79
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.84890919e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..ca18e12
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.83822513e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..2605b36
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.91538929e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..a024bfe
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.85325583e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..15556bb
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.84748036e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..a9f64ca
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.92469157e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/run.log b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/run.spice b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/run.spice
new file mode 100644
index 0000000..9a6c509
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_cee01043099f1032db31de021d0b2b626592e5bb/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.7
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="hh_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice hh_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.hh_mm.red hh_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/.ztr-directory
diff --git a/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..e19f4bb
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.78539692e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..d29e9d1
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.77491379e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..8069de4
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.78713064e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..6fbd76a
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.80005048e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..183696e
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.78853318e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..979596a
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.78671141e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..9b41e2a
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.80282634e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..f57aff9
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.79101290e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..82bd799
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 7.78080527e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/run.log b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/run.spice b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/run.spice
new file mode 100644
index 0000000..fd7bbe8
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_d2d5dd42366026236c68babf1ea8953db4421f5a/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.7
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="hl_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice hl_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.hl_mm.red hl_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/.ztr-directory
diff --git a/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..eee66af
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.35347379e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..b1f96b6
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.32495540e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..e9c1017
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.50485322e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..86e670c
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.36098969e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..6953967
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.34024124e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..4f49136
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.54030079e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..63976ee
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.36380579e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..f0afeb0
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.34615559e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..67352cc
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.70000000e+00 8.56217127e-06
diff --git a/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/run.log b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/run.spice b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/run.spice
new file mode 100644
index 0000000..1c6021e
--- /dev/null
+++ b/mag/isource/pls/corners_1.7V/rundir_f827f139ef991cdff89e562e56e160ceb74f2b3b/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.7
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="fs_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice fs_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.fs_mm.red fs_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/.ztr-directory
diff --git a/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..c29b111
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.01336973e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..2faa8c1
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.02856744e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..1c28758
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.95097772e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..a594832
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.02880207e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..c4e7be4
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.05585490e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..8df5cca
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.96434600e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..181ad19
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.03438314e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..5a8cfe3
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.07012389e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..6ab9bf2
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.96753231e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/run.log b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/run.spice b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/run.spice
new file mode 100644
index 0000000..6d5fee9
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_19c44c3f94841e391147f8c2aea4b3f37a0c275c/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.8
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="tt_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice tt_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt_mm.red tt_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/.ztr-directory
diff --git a/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..f6af474
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.77562073e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..b91b119
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.81789618e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..5a4e1ef
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.63841273e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..0defc4f
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.79691198e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..9acd054
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.84144069e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..3a164a7
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.64473908e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..f8939d1
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.80375058e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..2071b33
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.85045968e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..23f5637
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.63898118e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/run.log b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/run.spice b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/run.spice
new file mode 100644
index 0000000..71944a1
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_29d7144eb9aae6d740984da6b1da479ba75490c1/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.8
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="ff_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice ff_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.ff_mm.red ff_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/.ztr-directory
diff --git a/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..aed8a88
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.20762443e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..ca53726
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.14897745e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..6b21c60
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.30100237e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..50fcf8a
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.23870829e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..4ea8e19
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.16634775e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..9829726
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.33120686e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..79f5988
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.25482277e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..5bfc383
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.17281344e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..c26ea6c
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.34951792e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/run.log b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/run.spice b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/run.spice
new file mode 100644
index 0000000..447ebed
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_4dd3f1b2b55fb6929cc99bbea2cf2e7fd724c0c7/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.8
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="ll_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice ll_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.ll_mm.red ll_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/.ztr-directory
diff --git a/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..7d609dc
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.47207403e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..e40851c
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.44682667e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..dcbfa82
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.38594904e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..ea272b1
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.50502353e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..660cf8e
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.48015209e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..f6ddd00
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.41437730e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..e0c6040
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.52456360e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..7beba55
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.49962313e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..653a51f
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.43031299e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/run.log b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/run.spice b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/run.spice
new file mode 100644
index 0000000..84c50f4
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_63daa08aee043a8d3a9a7b9857a8458d7cd67f54/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.8
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="fs_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice fs_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.fs_mm.red fs_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/.ztr-directory
diff --git a/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..e130675
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.79497616e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..f71d731
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.76910205e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..84273e9
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.75709298e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..15ec244
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.81150109e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..15eca1b
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.77826596e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..0b216fe
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.76323110e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..1a0394e
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.81664410e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..e3dfebc
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.77672984e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..25abdc7
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.75947739e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/run.log b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/run.spice b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/run.spice
new file mode 100644
index 0000000..d4d3b38
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_671f0942218ed639232694451fe63881a75b33ed/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.8
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="hh_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice hh_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.hh_mm.red hh_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/.ztr-directory
diff --git a/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..46c4afe
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.16054964e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..f1f5199
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.14818359e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..5089905
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.17381515e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..c7a79b1
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.18405182e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..5294f99
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.16268796e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..51499eb
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.19646367e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..534595f
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.19480986e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..445d350
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.16723127e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..e7b704b
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.20638192e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/run.log b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/run.spice b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/run.spice
new file mode 100644
index 0000000..f5976ee
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_83b076116cc252eccc8bbb511f086ffe11d5a043/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.8
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="lh_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice lh_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.lh_mm.red lh_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/.ztr-directory
diff --git a/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..d8971ab
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.81462448e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..7866a9f
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.82357170e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..ac9c06f
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.82208019e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..c93cb57
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.82654026e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..c5f92f9
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.83811447e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..81934f5
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.83996037e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..05eeb02
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.82858911e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..723583e
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.84196020e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..02b0080
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.84619343e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/run.log b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/run.spice b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/run.spice
new file mode 100644
index 0000000..63315ea
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_a9428bbd517dfdb62a5a3a71b0495a386cce9a6e/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.8
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="hl_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice hl_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.hl_mm.red hl_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/.ztr-directory
diff --git a/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..c72ec20
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.17483601e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..07b1078
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.28767589e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..9c51a76
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.16031964e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..b462f32
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.18367917e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..639ce28
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.31988867e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..6df0745
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.16914451e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..12345cc
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.18634890e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..5ed8e56
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.34148694e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..69dbd21
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 8.17072956e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/run.log b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/run.spice b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/run.spice
new file mode 100644
index 0000000..711c482
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ddeafa534fa637fcf831e9f1bd82a5a06115589d/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.8
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="ss_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice ss_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.ss_mm.red ss_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/.ztr-directory
diff --git a/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..82bf7e2
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.54915256e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..7b6e92e
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.53948452e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..1966719
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.57131494e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..20db6c6
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.56064985e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..cc1420b
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.54483892e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..eaf98b8
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.58568386e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..78093ef
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.55993250e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..e23db9e
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.53876967e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..43ade55
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.80000000e+00 7.58459977e-06
diff --git a/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/run.log b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/run.spice b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/run.spice
new file mode 100644
index 0000000..4ec4b15
--- /dev/null
+++ b/mag/isource/pls/corners_1.8V/rundir_ec66cb6be059860de52114bfdb1ff068e60a60e4/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.8
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="sf_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice sf_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.sf_mm.red sf_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/.ztr-directory
diff --git a/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..27f3148
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.81536340e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..46f0fc5
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.83721378e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..13d2ec7
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.82256004e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..c7cd66b
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.82816409e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..688ec92
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.84608303e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..9882960
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.83896349e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..ae9f79d
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.82974685e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..6a06e35
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.84723794e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..f28d2c5
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.84317881e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/run.log b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/run.spice b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/run.spice
new file mode 100644
index 0000000..e7ee88c
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_078d983ea1ec3c3f774ad29c522c3793fb492e49/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.9
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="hl_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice hl_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.hl_mm.red hl_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/.ztr-directory
diff --git a/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..1d1b674
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.98533442e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..797f922
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.74030948e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..77a908e
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.77744576e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..1c33251
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.01764285e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..1ad88d2
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.74752029e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..3b190ae
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.78255026e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..e30d62e
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.03626496e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..3450824
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.74515320e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..386b21c
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.77886485e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/run.log b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/run.spice b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/run.spice
new file mode 100644
index 0000000..85c08c1
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_1192cec5a067b3a2657f28158a0fb679af504f07/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.9
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="hh_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice hh_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.hh_mm.red hh_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/.ztr-directory
diff --git a/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..e5a4bd8
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.08790441e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..9e7421f
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.31852909e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..e258073
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.27803235e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..0c0a897
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.06591112e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..7ff6630
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.35355963e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..ee7dfaf
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.31110295e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..8db4349
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.04589023e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..b0efe4a
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.37610964e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..27d9399
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.32948305e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/run.log b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/run.spice b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/run.spice
new file mode 100644
index 0000000..60ea2ab
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_361d7dcf4d23445b0a35126e35965e7c1f415aa0/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.9
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="ss_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice ss_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.ss_mm.red ss_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/.ztr-directory
diff --git a/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..3926001
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.45203602e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..8c787c9
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.49724841e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..bef2f6b
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.63663097e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..5864ab1
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.45018550e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..3935097
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.49631415e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..1e1fc10
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.65319869e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..2cd300b
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.43910363e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..63ba533
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.48705797e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..2f59b4e
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 7.65502804e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/run.log b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/run.spice b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/run.spice
new file mode 100644
index 0000000..b9d9228
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_7191973ec5f99ea2fa8d323b54f06cafac669df6/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.9
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="sf_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice sf_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.sf_mm.red sf_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/.ztr-directory
diff --git a/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..86b1eb3
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.09234726e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..409196f
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.00260680e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..08a0f1d
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.05204606e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..4c22dfe
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.12130356e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..89ed233
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.01841892e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..cee2013
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.08059507e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..1cf4ab4
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.13721402e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..acece2b
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.02375359e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..9f18ed1
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.09452366e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/run.log b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/run.log
new file mode 100644
index 0000000..8a1beba
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/run.log
@@ -0,0 +1,118 @@
+
+Compatibility modes selected: hs
+
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 0.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 30.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 60.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+
+No. of Data Rows : 1
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Doing analysis at TEMP = 90.000000 and TNOM = 27.000000
+
+Reset re-loads circuit ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+Circuit: ** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+
+option SCALE: Scale is set to 1e-06 for instance and model parameters
diff --git a/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/run.spice b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/run.spice
new file mode 100644
index 0000000..ef4a3a1
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_85659577963ca415c92e493709d67300f80fade0/run.spice
@@ -0,0 +1,166 @@
+** sch_path: /home/simon/code/asic/analog/test/test_low_pvt_source_mc.sch
+**.subckt test_low_pvt_source_mc
+VB VDD GND 1.9
+V0 VDD V_iout_0 0
+xisource V_iout_0 VDD GND isource_flat
+I0 V_iout_0 V_iout_0 10u
+**** begin user architecture code
+
+
+*.options savecurrents
+.option warn=1
+.control
+set wr_vecnames
+set wr_singlescale
+set hcopydevtype=svg
+set model="tt_mm"
+let mc_runs=3
+let mc_runNo = 1
+
+dowhile mc_runNo <= mc_runs
+ destroy all
+ let min_temp=0
+ let var_temp = min_temp
+ let max_temp=100
+ let temp_step=30
+ dowhile var_temp <= max_temp
+ option temp=$&var_temp
+ wrdata 'result_op_op_{$&var_temp}deg_{$&mc_runNo}.csv' i(V0)
+ op
+ run
+ if i(V0) > 1.3E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_high_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+ if i(V0) < 0.7E-5
+ echo 'Large current'
+* print i(v.xisource.v1) i(V0)
+* write 'result_op_low_{$&var_temp}deg_{$&mc_runNo}_{$&i(v.xisource.v1)}.raw'
+ end
+*
+* tran 100n 100u
+* MEAS tran isource AVG i(v.xisource.v1) from=50u to=100u
+* wrdata 'result_tran_{$&var_temp}deg_{$&mc_runNo}.csv' isource
+ run
+ let var_temp = var_temp + temp_step
+ end
+ let mc_runNo = mc_runNo +1
+ reset
+end
+
+.endc
+
+
+
+
+* .include ../../tia.spice
+* .include ../../filter_diff.spice
+* .include ../../cmm_sense3.spice
+
+* .include bandgap.spice
+.include ../../../pex_isource.spice
+
+
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice tt_mm
+* .lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt_mm.red tt_mm
+* .lib /home/simon/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice.tt.red tt
+
+**** end user architecture code
+**.ends
+
+* expanding symbol: /home/simon/code/asic/analog/bias/low_pvt_source.sym # of pins=3
+** sym_path: /home/simon/code/asic/analog/bias/low_pvt_source.sym
+** sch_path: /home/simon/code/asic/analog/bias/low_pvt_source.sch
+.subckt low_pvt_source VP I_ref VN
+*.iopin VP
+*.opin I_ref
+*.iopin VN
+XM1 VM1D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM2 VM2D VM2D VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=30 m=30
+XM5 VM9D VM8D VM1D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM11 VM11D VM2D VM12D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=65 m=65
+XM12 VM12D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM14 VM14D VM12G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=2 m=2
+XM16 VM16D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10 m=10
+XM17 VM8D VM8D VM16D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2 m=2
+XM18 VM18D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*3*2 m=10*3*2
+XM19 VM14D VM8D VM18D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*3*2 m=2*3*2
+XM20 VM20D VM8D VP VP sky130_fd_pr__pfet_01v8 L=1 W=4 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=10*1*1 m=10*1*1
+XM21 VM22D VM8D VM20D VP sky130_fd_pr__pfet_01v8 L=0.2 W=4 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=2*1*1 m=2*1*1
+XM22 VM22D VM4S VM3D VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=20 m=20
+XM3 VM3D VM3G VN VN sky130_fd_pr__nfet_01v8 L=6 W=4 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=4 m=4
+XM13 VP VM14D VM12G VM12G sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM4 I_ref VM22D VM4S VN sky130_fd_pr__nfet_01v8_lvt L=0.15 W=4 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=20 m=20
+XM48 VM50D VM11D VP VP sky130_fd_pr__pfet_01v8 L=2 W=0.5 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
+XM50 VM50D VM11D VN VN sky130_fd_pr__nfet_01v8_lvt L=0.2 W=4 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=10 m=10
+XC3 VP VM8D sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XM8 VM8D VM9D VM11D VM11D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM9 VM9D VM9D VM2D VM2D sky130_fd_pr__nfet_01v8_lvt L=1 W=4 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=20 m=20
+XM10 VM8D VM50D VN VN sky130_fd_pr__nfet_01v8 L=2 W=0.5 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
+XC1 VP VN VN sky130_fd_pr__cap_var_lvt W=5 L=2 VM=10
+XC2 VP VN sky130_fd_pr__cap_mim_m3_1 W=20 L=20 MF=1 m=1
+XC4 VP VN sky130_fd_pr__cap_mim_m3_2 W=20 L=20 MF=1 m=1
+XR7 net3 VM4S VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR3 net4 net3 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR4 net2 net4 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR5 net1 net2 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR6 VN net1 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR8 net5 VM12G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR1 net5 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR2 net7 net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR9 VN net6 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR10 net11 net7 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR11 net12 net11 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR12 net8 net12 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR13 net10 VM3G VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR14 net9 net10 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+XR15 net8 net9 VN sky130_fd_pr__res_xhigh_po_1p41 L=10 mult=1 m=1
+.ends
+
+.GLOBAL VDD
+.GLOBAL GND
+.end
diff --git a/xschem/.ztr-directory b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/.ztr-directory
similarity index 100%
copy from xschem/.ztr-directory
copy to mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/.ztr-directory
diff --git a/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_30deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_30deg_1.csv
new file mode 100644
index 0000000..dbe7a30
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_30deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.29196831e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_30deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_30deg_2.csv
new file mode 100644
index 0000000..601e5ab
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_30deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.42531795e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_30deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_30deg_3.csv
new file mode 100644
index 0000000..6947c96
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_30deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.39349256e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_60deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_60deg_1.csv
new file mode 100644
index 0000000..4d84f2d
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_60deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.30540850e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_60deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_60deg_2.csv
new file mode 100644
index 0000000..7769cff
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_60deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.44761201e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_60deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_60deg_3.csv
new file mode 100644
index 0000000..42557b6
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_60deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.41766098e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_90deg_1.csv b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_90deg_1.csv
new file mode 100644
index 0000000..3f33d78
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_90deg_1.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.30942756e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_90deg_2.csv b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_90deg_2.csv
new file mode 100644
index 0000000..63fa6d2
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_90deg_2.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.90000000e+00 8.45994043e-06
diff --git a/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_90deg_3.csv b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_90deg_3.csv
new file mode 100644
index 0000000..df7d0b2
--- /dev/null
+++ b/mag/isource/pls/corners_1.9V/rundir_c0c3b539f0d37a0f05eeeaf890a2e3db4a7e735b/result_op_op_90deg_3.csv
@@ -0,0 +1,2 @@
+ vdd i(V0)
+ 1.