Merge branch 'main' of https://github.com/mabrains/caravel_user_project_ldo into main
diff --git a/caravel b/caravel
index c294344..42c9cab 160000
--- a/caravel
+++ b/caravel
@@ -1 +1 @@
-Subproject commit c2943440e278814787f761585b99b9ea3c1f4121
+Subproject commit 42c9cab06c7fdd94b7eacc12a5c4ff4a60338e74
diff --git a/mag/extracted.spi b/mag/extracted.spi
new file mode 100644
index 0000000..7e4c850
--- /dev/null
+++ b/mag/extracted.spi
@@ -0,0 +1,7 @@
+* NGSPICE file created from ldo_flattened_f.ext - technology: sky130A
+
+
+* Top level circuit ldo_flattened_f
+
+.end
+
diff --git a/mag/ldo_flattened_f.ext b/mag/ldo_flattened_f.ext
new file mode 100644
index 0000000..71cf72c
--- /dev/null
+++ b/mag/ldo_flattened_f.ext
@@ -0,0 +1,7 @@
+timestamp 0
+version 8.3
+tech sky130A
+style ngspice()
+scale 1000 1 500000
+resistclasses 4400000 2200000 1700000 3050000 120000 197000 114000 191000 120000 197000 114000 191000 48200 319800 2000000 48200 48200 12200 125 125 47 47 29 5
+substrate "VSUBS" 0 0 -1073741817 -1073741817 space 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
diff --git a/mag/run_magic_lvs.tcl b/mag/run_magic_lvs.tcl
new file mode 100644
index 0000000..ecf47e6
--- /dev/null
+++ b/mag/run_magic_lvs.tcl
@@ -0,0 +1,17 @@
+# run_magic_drc.tcl ---
+#    batch script for running DRC
+
+crashbackups stop
+drc euclidean on
+drc style drc(full)
+drc on
+snap internal
+gds flatglob *__example_*
+gds flatten true
+gds read /home/mustafa/mabrains/caravel_user_project_ldo/gds/ldo_v1/ldo_flattened_f.gds
+load ldo_flattened_f
+select top cell
+expand
+extract all
+ext2spice lvs
+ext2spice -M -o extracted.spi
diff --git a/xschem/bgr2.spice b/xschem/bgr2.spice
new file mode 100644
index 0000000..e1ed9c7
--- /dev/null
+++ b/xschem/bgr2.spice
@@ -0,0 +1,73 @@
+**.subckt bgr2 avdd agnd bg_out enable iref
+*.ipin avdd
+*.ipin agnd
+*.opin bg_out
+*.ipin enable
+*.ipin iref
+XM1 inn mir avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM2 inp mir avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM3 bg_out mir avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XQ1 agnd agnd net2 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ5 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ6 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ7 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ9 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ11 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ13 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ15 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ17 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XM7 net4 net4 avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM12 net4 inp net3 agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM21 mir inn net3 agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM23 mir net4 avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM15 net3 net5 agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=2 W=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=4 m=4 
+XM25 net5 mir avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM16 net5 net5 agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=2 W=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=4 m=4 
+XC1 mir agnd sky130_fd_pr__cap_mim_m3_1 W=16 L=16 MF=1 m=1
+XR1 net6 inp agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=3 m=3
+XR2 net2 inn agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=3 m=3
+XR3 net8 net2 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=1 m=1
+XR10 net1 net6 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=6 m=6
+XR4 agnd net7 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=15 m=15
+XR11 agnd net8 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=15 m=15
+XR6 net7 net6 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=1 m=1
+XR5 net9 bg_out agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=1 m=1
+XR14 agnd net9 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=53 m=53
+XM19 mir enable avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=0.5 W=0.42 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM4 net10 bg_out avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=5 W=0.42 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM5 net10 bg_out agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=0.5 W=10 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)'
++ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=8 m=8 
+XM6 avdd net10 inn agnd sky130_fd_pr__nfet_g5v0d10v5 L=0.5 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM26 iref mir avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+**.ends
+** flattened .save nodes
+.end
diff --git a/xschem/erroramp2.spice b/xschem/erroramp2.spice
new file mode 100644
index 0000000..d2391f0
--- /dev/null
+++ b/xschem/erroramp2.spice
@@ -0,0 +1,36 @@
+**.subckt erroramp2 vb avdd agnd out neg pos
+*.iopin vb
+*.ipin avdd
+*.ipin agnd
+*.opin out
+*.ipin neg
+*.ipin pos
+XM8 net2 net2 avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=1.2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM9 net2 neg net3 agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=2 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM10 net1 pos net3 agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=2 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM11 net1 net2 avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=1.2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 net3 vb agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM14 out net1 avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=1.2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)'
++ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=12 m=12 
+XM18 out vb agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=12 m=12 
+XM20 vb vb agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=4 m=4 
+XC3 net1 net4 sky130_fd_pr__cap_mim_m3_1 W=60 L=60 MF=1 m=1
+XR7 out net4 agnd sky130_fd_pr__res_xhigh_po_0p69 L=4.5 mult=1 m=1
+**.ends
+** flattened .save nodes
+.end
diff --git a/xschem/ldo_v2.spice b/xschem/ldo_v2.spice
new file mode 100644
index 0000000..77ca453
--- /dev/null
+++ b/xschem/ldo_v2.spice
@@ -0,0 +1,288 @@
+**.subckt ldo_v2
+XM8 net2 net2 VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=1.2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM9 net2 bg_out net3 GND sky130_fd_pr__nfet_g5v0d10v5 L=1 W=2 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM10 net1 pos net3 GND sky130_fd_pr__nfet_g5v0d10v5 L=1 W=2 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM11 net1 net2 VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=1.2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 net3 vb GND GND sky130_fd_pr__nfet_g5v0d10v5 L=1 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM14 out net1 VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=1.2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=12 m=12 
+XM18 out vb GND GND sky130_fd_pr__nfet_g5v0d10v5 L=1 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=12 m=12 
+XM20 vb vb GND GND sky130_fd_pr__nfet_g5v0d10v5 L=1 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=4 m=4 
+XM24 ldo_out net5 VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=0.5 W=10 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)'
++ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=800 m=800 
+XM26 vb mir VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XC3 net1 net4 sky130_fd_pr__cap_mim_m3_1 W=60 L=60 MF=1 m=1
+XR7 out net4 GND sky130_fd_pr__res_xhigh_po_0p69 L=4.5 mult=1 m=1
+Vs VDD GND 2.3
+Vt net6 GND 0
+C2 net5 net6 5G m=1
+L1 out net5 5G m=1
+XR8 net7 ldo_out GND sky130_fd_pr__res_xhigh_po_0p69 L=24 mult=8 m=8
+XR9 pos net7 GND sky130_fd_pr__res_xhigh_po_0p69 L=24 mult=3 m=3
+XR12 net8 pos GND sky130_fd_pr__res_xhigh_po_0p69 L=24 mult=2 m=2
+XR13 GND net8 GND sky130_fd_pr__res_xhigh_po_0p69 L=24 mult=4 m=4
+XM1 inn mir VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM2 inp mir VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM3 bg_out mir VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XQ1 GND GND net10 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ5 GND GND net9 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ6 GND GND net9 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ7 GND GND net9 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ9 GND GND net9 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ11 GND GND net9 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ13 GND GND net9 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ15 GND GND net9 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ17 GND GND net9 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XM7 net12 net12 VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM12 net12 inp net11 GND sky130_fd_pr__nfet_g5v0d10v5 L=1 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM21 mir inn net11 GND sky130_fd_pr__nfet_g5v0d10v5 L=1 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM23 mir net12 VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM15 net11 net13 GND GND sky130_fd_pr__nfet_g5v0d10v5 L=2 W=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=4 m=4 
+XM25 net13 mir VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM16 net13 net13 GND GND sky130_fd_pr__nfet_g5v0d10v5 L=2 W=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=4 m=4 
+XC1 mir GND sky130_fd_pr__cap_mim_m3_1 W=16 L=16 MF=1 m=1
+XR1 net14 inp GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=3 m=3
+XR2 net10 inn GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=3 m=3
+XR3 net16 net10 GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=1 m=1
+XR10 net9 net14 GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=6 m=6
+XR4 GND net15 GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=15 m=15
+XR11 GND net16 GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=15 m=15
+XR6 net15 net14 GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=1 m=1
+XR5 net17 bg_out GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=1 m=1
+XR14 GND net17 GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=53 m=53
+XM19 mir en VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=0.5 W=0.42 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+Ven en GND 2.3
+XM4 net18 bg_out VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=5 W=0.42 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM5 net18 bg_out GND GND sky130_fd_pr__nfet_g5v0d10v5 L=0.5 W=10 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)'
++ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=8 m=8 
+XM6 VDD net18 inn GND sky130_fd_pr__nfet_g5v0d10v5 L=0.5 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+**** begin user architecture code
+
+
+.param R=18k
+R10 ldo_out GND {R}
+IL ldo_out 0 PWL(0 0.1m 10u 0.1m 20u 10m 30u 10m)
+*CL ldo_out gnd 10p
+.lib /home/mustafa/mabrains/pdks/share/pdk/sky130A/libs.tech/ngspice/sky130.lib_mod.spice tt
+
+
+
+
+.nodeset v(inn)=1.2
+.nodeset v(inp)=1.2
+.nodeset v(mir)=1
+.nodeset v(net13)=1
+.nodeset v(bg_out)=1.1
+.nodeset v(ldo_out)=1.8
+.nodeset v(pos)=1.1
+*.nodeset v(net3)=0.8
+*.nodeset v(net1)=0.7
+.nodeset v(net14)=0.9
+*.nodeset v(net7)=0.75
+.nodeset v(vb)=0.9
+
+.option temp=27
+*User_defined_functions
+.control
+define max(vector_name) (vecmax(vector_name))
+define min(vector_name) (vecmin(vector_name))
+.endc
+
+
+*Temp_sweep
+.control
+alter IL 0
+dc temp 85 0 -1
+let temp_coeff=1000000*(max(ldo_out)-min(ldo_out))/85
+print temp_coeff
+plot v(ldo_out)
+set wr_singlescale
+set wr_vecnames
+set appendwrite
+.endc
+
+
+.control
+alter IL 0
+*alter R10 1G
+op
+let iq =i(Vs)
+print iq
+*print all
+set wr_singlescale
+set wr_vecnames
+set appendwrite
+if v(ldo_out)>1
+wrdata op_point_test v(ldo_out)
+end
+.endc
+
+
+
+*Stability_Analysis
+.control
+alter IL 0
+alter Vs AC =0
+alter Vt AC=1
+ac dec 10 1 1G
+plot vdb(out)
+plot (180/pi)*vp(out)
+let ph= (180/pi)*vp(out)
+meas ac pm FIND ph WHEN vdb(out)=0
+.endc
+
+
+*PSRR_Analysis
+.control
+alter IL 0
+alter Vs AC =1
+alter Vt AC=0
+alter L1 0
+alter C2 0
+ac dec 10 1 1G
+meas AC PSRR100 FIND vdb(ldo_out) AT=100
+meas AC PSRR100k FIND vdb(ldo_out) AT=100k
+plot vdb(ldo_out)
+.endc
+
+
+
+
+*supply_sweep
+.control
+alter IL 0
+dc Vs 2.8 0 -0.01
+plot vdd ldo_out
+meas DC Vldo_Sup_2 FIND ldo_out AT=2
+meas DC Vldo_nom FIND ldo_out AT=2.3
+meas DC Vldo_Sup_2_8 FIND ldo_out AT=2.8
+let line_reg = abs((Vldo_Sup_2_8-Vldo_Sup_2)/0.8)
+print line_reg
+meas DC vin WHEN v(ldo_out)=1.764
+let dropout=vin-1.764
+print dropout
+set wr_singlescale
+set wr_vecnames
+set appendwrite
+.endc
+
+
+
+
+
+*Load_Reg_switches
+*V1 c1 0 DC 0 PWL(0 5 20u 5 35u 0 50u 0 100u 0)
+*V2 c2 0 DC 0 PWL(0 0 20u 0 35u 0 50u 5 100u 5)
+*s1 ldo_out 2 c1 0 switch1 ON
+*s2 ldo_out 3 c2 0 switch1 OFF
+*.model switch1 sw vt=0.1 ron =0.1 roff =1G
+*R1 2 0 18k
+*R2 3 0 180
+
+*.control
+*alter R10 1G
+*tran 0.1u 90u
+*plot v(ldo_out) v(c1) v(c2)
+*meas TRAN V_ldo_100u FIND v(ldo_out) AT=10u
+*meas TRAN V_ldo_10m FIND v(ldo_out) AT=50u
+*let load_reg= V_ldo_100u-V_ldo_10m
+*print load_reg
+*.endc
+
+
+**Load_Transient
+.control
+alter IL 50u
+alter R10 3600k
+tran 0.1u 100u
+meas TRAN V_ldo_100u FIND v(ldo_out) AT=5u
+meas TRAN V_ldo_10m FIND v(ldo_out) AT=100u
+let load_reg= V_ldo_100u-V_ldo_10m
+let load_current =(-1*i(Vs)-131.8e-6)
+print load_reg
+plot load_current v(ldo_out)-1.8
+.endc
+
+
+**Transient
+.control
+alter R10 36k
+alter @IL[PWL] = [ 0 0 10u 0 20u 0 30u 0 ]
+alter @Vs[pulse] = [ 1 3 10u 10u 1u 100u 200u ]
+alter IL 0
+tran 0.1u 100u
+plot vdd ldo_out
+.endc
+
+.control
+alter R10 36k
+alter @IL[PWL] = [ 0 0 10u 0 20u 0 30u 0 ]
+alter @Vs[pulse] = [ 0 2.3 10u 0.1u 1u 100u 200u ]
+tran 0.1u 100u
+plot vdd ldo_out
+.endc
+
+.control
+alter R10 36k
+alter @IL[PWL] = [ 0 0 10u 0 20u 0 30u 0 ]
+alter @Ven[pulse] = [ 0 2.3 10u 0.1u 1u 100u 200u ]
+tran 0.1u 100u
+*meas TRAN st_up_time when v(ldo_out)>1.782
+plot en ldo_out
+.endc
+
+
+
+
+
+**** end user architecture code
+**.ends
+.GLOBAL GND
+.GLOBAL VDD
+** flattened .save nodes
+.end
diff --git a/xschem/ldo_v2/Error_Amp.sch b/xschem/ldo_v2/Error_Amp.sch
new file mode 100644
index 0000000..7fc7f12
--- /dev/null
+++ b/xschem/ldo_v2/Error_Amp.sch
@@ -0,0 +1,205 @@
+v {xschem version=2.9.9 file_version=1.2 }
+G {}
+K {}
+V {}
+S {}
+E {}
+N 1050 -1430 1050 -1410 { lab=avdd}
+N 1050 -1430 1300 -1430 { lab=avdd}
+N 1300 -1430 1300 -1410 { lab=avdd}
+N 1300 -1350 1300 -1310 { lab=#net1}
+N 1090 -1380 1260 -1380 { lab=#net2}
+N 1050 -1350 1050 -1310 { lab=#net2}
+N 1050 -1250 1050 -1190 { lab=#net3}
+N 1050 -1190 1300 -1190 { lab=#net3}
+N 1300 -1250 1300 -1190 { lab=#net3}
+N 1140 -1190 1140 -1170 { lab=#net3}
+N 1050 -1280 1300 -1280 { lab=agnd}
+N 1230 -1280 1230 -1100 { lab=agnd}
+N 1140 -1100 1230 -1100 { lab=agnd}
+N 1300 -1380 1400 -1380 { lab=avdd}
+N 1400 -1430 1400 -1380 { lab=avdd}
+N 1290 -1430 1400 -1430 { lab=avdd}
+N 950 -1380 1050 -1380 { lab=avdd}
+N 950 -1430 950 -1380 { lab=avdd}
+N 950 -1430 1050 -1430 { lab=avdd}
+N 1140 -1140 1230 -1140 { lab=agnd}
+N 1520 -1400 1560 -1400 { lab=#net1}
+N 1390 -1430 1520 -1430 { lab=avdd}
+N 1600 -1400 1700 -1400 { lab=avdd}
+N 1600 -1430 1700 -1430 { lab=avdd}
+N 1700 -1430 1700 -1400 { lab=avdd}
+N 1600 -1370 1600 -1330 { lab=out}
+N 1230 -1100 1520 -1100 { lab=agnd}
+N 1600 -1100 1690 -1100 { lab=agnd}
+N 1520 -1260 1560 -1260 { lab=vb}
+N 1070 -1140 1100 -1140 { lab=vb}
+N 1160 -1380 1160 -1330 { lab=#net2}
+N 1050 -1330 1160 -1330 { lab=#net2}
+N 1520 -1330 1530 -1330 { lab=#net4}
+N 1590 -1330 1600 -1330 { lab=out}
+N 1600 -1330 1600 -1290 { lab=out}
+N 1600 -1260 1700 -1260 { lab=agnd}
+N 1700 -1260 1700 -1100 { lab=agnd}
+N 1690 -1100 1700 -1100 { lab=agnd}
+N 1600 -1230 1600 -1100 { lab=agnd}
+N 990 -1280 1010 -1280 { lab=neg}
+N 1340 -1280 1370 -1280 { lab=pos}
+N 1520 -1400 1520 -1360 { lab=#net1}
+N 1300 -1330 1360 -1330 { lab=#net1}
+N 1330 -1360 1440 -1360 { lab=#net1}
+N 1330 -1360 1330 -1330 { lab=#net1}
+N 1600 -1330 1660 -1330 { lab=out}
+N 1660 -1330 1670 -1330 { lab=out}
+N 1670 -1330 1680 -1330 { lab=out}
+N 1540 -1310 1560 -1310 { lab=agnd}
+N 1480 -1310 1480 -1100 { lab=agnd}
+N 720 -1220 760 -1220 { lab=vb}
+N 720 -1270 720 -1220 { lab=vb}
+N 720 -1270 800 -1270 { lab=vb}
+N 800 -1190 800 -1170 { lab=agnd}
+N 800 -1220 880 -1220 { lab=agnd}
+N 880 -1220 880 -1180 { lab=agnd}
+N 800 -1180 880 -1180 { lab=agnd}
+N 690 -1220 720 -1220 { lab=vb}
+N 800 -1270 800 -1250 { lab=vb}
+N 800 -1320 800 -1270 { lab=vb}
+N 1140 -1110 1140 -1100 { lab=agnd}
+N 800 -1170 800 -1100 { lab=agnd}
+N 800 -1100 1140 -1100 { lab=agnd}
+N 1440 -1360 1520 -1360 { lab=#net1}
+N 1520 -1430 1600 -1430 { lab=avdd}
+N 1520 -1100 1540 -1100 { lab=agnd}
+N 1540 -1100 1600 -1100 { lab=agnd}
+N 1480 -1310 1540 -1310 { lab=agnd}
+N 1360 -1330 1420 -1330 { lab=#net1}
+N 1480 -1330 1520 -1330 { lab=#net4}
+C {sky130_fd_pr/pfet_g5v0d10v5.sym} 1070 -1380 0 1 {name=M8
+L=1.2
+W=3
+nf=1
+mult=4
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=pfet_g5v0d10v5
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet_g5v0d10v5.sym} 1030 -1280 0 0 {name=M9
+L=1
+W=2
+nf=1
+mult=8
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=nfet_g5v0d10v5
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet_g5v0d10v5.sym} 1320 -1280 0 1 {name=M10
+L=1
+W=2
+nf=1
+mult=8
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=nfet_g5v0d10v5
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet_g5v0d10v5.sym} 1280 -1380 0 0 {name=M11
+L=1.2
+W=3
+nf=1
+mult=4
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=pfet_g5v0d10v5
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet_g5v0d10v5.sym} 1120 -1140 0 0 {name=M13
+L=1
+W=1
+nf=1
+mult=8
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=nfet_g5v0d10v5
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet_g5v0d10v5.sym} 1580 -1400 0 0 {name=M14
+L=1.2
+W=3
+nf=1
+mult=12
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=pfet_g5v0d10v5
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet_g5v0d10v5.sym} 1580 -1260 0 0 {name=M18
+L=1
+W=1
+nf=1
+mult=12
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=nfet_g5v0d10v5
+spiceprefix=X
+}
+C {devices/lab_pin.sym} 1070 -1140 0 0 {name=l15 sig_type=std_logic lab=vb}
+C {devices/lab_pin.sym} 1520 -1260 0 0 {name=l16 sig_type=std_logic lab=vb}
+C {devices/lab_pin.sym} 1660 -1330 1 0 {name=l30 sig_type=std_logic lab=out}
+C {sky130_fd_pr/cap_mim_m3_1.sym} 1450 -1330 3 1 {name=C3 model=cap_mim_m3_1 W=50 L=50 MF=1 spiceprefix=X}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 1560 -1330 3 0 {name=R7
+W=0.69
+L=4.5
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=1}
+C {sky130_fd_pr/nfet_g5v0d10v5.sym} 780 -1220 0 0 {name=M20
+L=1
+W=1
+nf=1
+mult=4
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=nfet_g5v0d10v5
+spiceprefix=X
+}
+C {devices/lab_pin.sym} 690 -1220 0 0 {name=l14 sig_type=std_logic lab=vb}
+C {devices/opin.sym} 1670 -1330 0 0 {name=p1 lab=out}
+C {devices/iopin.sym} 1140 -1430 0 0 {name=p2 lab=avdd}
+C {devices/iopin.sym} 1160 -1100 0 0 {name=p3 lab=agnd}
+C {devices/iopin.sym} 800 -1300 3 0 {name=p4 lab=vb}
+C {devices/ipin.sym} 1000 -1280 0 0 {name=p5 lab=neg}
+C {devices/ipin.sym} 1350 -1280 0 1 {name=p6 lab=pos}
diff --git a/xschem/ldo_v2/Error_Amp.spice b/xschem/ldo_v2/Error_Amp.spice
new file mode 100644
index 0000000..93dc9a6
--- /dev/null
+++ b/xschem/ldo_v2/Error_Amp.spice
@@ -0,0 +1,4 @@
+**.subckt Error_Amp
+**.ends
+** flattened .save nodes
+.end
diff --git a/xschem/ldo_v2/Error_Amp.sym b/xschem/ldo_v2/Error_Amp.sym
new file mode 100644
index 0000000..44c9d77
--- /dev/null
+++ b/xschem/ldo_v2/Error_Amp.sym
@@ -0,0 +1,30 @@
+v {xschem version=2.9.9 file_version=1.2 }
+G {}
+K {type=subcircuit
+format="@name @pinlist @symname"
+template="name=y1"}
+V {}
+S {}
+E {}
+L 4 810 -1510 810 -1250 {}
+L 4 810 -1250 1040 -1380 {}
+L 4 810 -1510 1040 -1380 {}
+L 4 760 -1470 810 -1470 {}
+L 4 760 -1380 810 -1380 {}
+L 4 760 -1290 810 -1290 {}
+L 4 1040 -1380 1060 -1380 {}
+L 4 900 -1300 900 -1220 {}
+L 4 900 -1520 900 -1460 {}
+B 5 757.5 -1472.5 762.5 -1467.5 {name=neg
+dir=inout}
+B 5 757.5 -1292.5 762.5 -1287.5 {name=pos
+dir=inout}
+B 5 757.5 -1382.5 762.5 -1377.5 {name=vb
+dir=inout}
+B 5 1057.5 -1382.5 1062.5 -1377.5 {name=out
+dir=inout}
+B 5 897.5 -1522.5 902.5 -1517.5 {name=avdd
+dir=inout}
+B 5 897.5 -1222.5 902.5 -1217.5 {name=agnd
+dir=inout}
+T {@name} 880 -1390 0 0 0.2 0.2 {}
diff --git a/xschem/ldo_v2/bgr2.sch b/xschem/ldo_v2/bgr2.sch
new file mode 100644
index 0000000..a174e7e
--- /dev/null
+++ b/xschem/ldo_v2/bgr2.sch
@@ -0,0 +1,536 @@
+v {xschem version=2.9.9 file_version=1.2 }
+G {}
+K {}
+V {}
+S {}
+E {}
+N 1650 -990 1650 -940 { lab=agnd}
+N 1500 -1080 1500 -1040 { lab=#net1}
+N 1610 -1020 1610 -970 { lab=agnd}
+N 1610 -970 1650 -970 { lab=agnd}
+N 1460 -1010 1460 -960 { lab=agnd}
+N 1460 -960 1500 -960 { lab=agnd}
+N 1540 -1280 1610 -1280 { lab=mir}
+N 1500 -1370 1500 -1310 { lab=avdd}
+N 1500 -1370 1650 -1370 { lab=avdd}
+N 1650 -1370 1650 -1310 { lab=avdd}
+N 1640 -1370 1890 -1370 { lab=avdd}
+N 1500 -980 1500 -970 { lab=agnd}
+N 1500 -970 1500 -960 { lab=agnd}
+N 1500 -940 1650 -940 { lab=agnd}
+N 1500 -960 1500 -940 { lab=agnd}
+N 1650 -1280 1690 -1280 { lab=avdd}
+N 1690 -1370 1690 -1280 { lab=avdd}
+N 1390 -1280 1500 -1280 { lab=avdd}
+N 1390 -1370 1610 -1370 { lab=avdd}
+N 640 -1370 640 -1310 { lab=avdd}
+N 530 -1280 640 -1280 { lab=avdd}
+N 530 -1370 530 -1280 { lab=avdd}
+N 530 -1370 640 -1370 { lab=avdd}
+N 640 -1370 730 -1370 { lab=avdd}
+N 570 -1140 640 -1140 { lab=bg_out}
+N 1430 -1240 1460 -1240 { lab=inp}
+N 1650 -1240 1690 -1240 { lab=inn}
+N 1330 -1000 1330 -960 { lab=agnd}
+N 1270 -1030 1290 -1030 { lab=agnd}
+N 1270 -1030 1270 -990 { lab=agnd}
+N 1330 -1080 1330 -1060 { lab=#net1}
+N 1250 -1000 1250 -960 { lab=agnd}
+N 1190 -1030 1210 -1030 { lab=agnd}
+N 1190 -1030 1190 -990 { lab=agnd}
+N 1250 -1080 1250 -1060 { lab=#net1}
+N 1160 -1000 1160 -960 { lab=agnd}
+N 1100 -1030 1120 -1030 { lab=agnd}
+N 1100 -1030 1100 -990 { lab=agnd}
+N 1160 -1080 1160 -1060 { lab=#net1}
+N 1050 -1000 1050 -960 { lab=agnd}
+N 990 -1030 1010 -1030 { lab=agnd}
+N 990 -1030 990 -990 { lab=agnd}
+N 1050 -1080 1050 -1060 { lab=#net1}
+N 960 -1000 960 -960 { lab=agnd}
+N 900 -1030 920 -1030 { lab=agnd}
+N 900 -1030 900 -990 { lab=agnd}
+N 960 -1080 960 -1060 { lab=#net1}
+N 850 -1000 850 -960 { lab=agnd}
+N 790 -1030 810 -1030 { lab=agnd}
+N 790 -1030 790 -990 { lab=agnd}
+N 850 -1080 850 -1060 { lab=#net1}
+N 750 -1000 750 -960 { lab=agnd}
+N 690 -1030 710 -1030 { lab=agnd}
+N 690 -1030 690 -990 { lab=agnd}
+N 750 -1080 750 -1060 { lab=#net1}
+N 1370 -940 1500 -940 { lab=agnd}
+N 750 -1080 850 -1080 { lab=#net1}
+N 840 -1080 960 -1080 { lab=#net1}
+N 960 -1080 1050 -1080 { lab=#net1}
+N 1050 -1080 1160 -1080 { lab=#net1}
+N 1160 -1080 1250 -1080 { lab=#net1}
+N 1240 -1080 1330 -1080 { lab=#net1}
+N 680 -1370 1390 -1370 { lab=avdd}
+N 1390 -1370 1390 -1280 { lab=avdd}
+N 690 -990 690 -960 { lab=agnd}
+N 690 -960 750 -960 { lab=agnd}
+N 750 -960 850 -960 { lab=agnd}
+N 850 -960 970 -960 { lab=agnd}
+N 970 -960 1050 -960 { lab=agnd}
+N 1050 -960 1160 -960 { lab=agnd}
+N 1160 -960 1270 -960 { lab=agnd}
+N 1270 -960 1330 -960 { lab=agnd}
+N 620 -940 1370 -940 { lab=agnd}
+N 790 -990 790 -960 { lab=agnd}
+N 1100 -990 1100 -960 { lab=agnd}
+N 1190 -990 1190 -960 { lab=agnd}
+N 1270 -990 1270 -960 { lab=agnd}
+N 900 -990 900 -960 { lab=agnd}
+N 990 -990 990 -960 { lab=agnd}
+N 610 -940 620 -940 { lab=agnd}
+N 640 -960 640 -940 { lab=agnd}
+N 680 -1280 710 -1280 { lab=mir}
+N 1650 -1250 1650 -1240 { lab=inn}
+N 2040 -1190 2250 -1190 { lab=agnd}
+N 2250 -1240 2250 -1220 { lab=mir}
+N 2250 -1370 2250 -1300 { lab=avdd}
+N 1970 -1370 2250 -1370 { lab=avdd}
+N 2040 -1370 2040 -1300 { lab=avdd}
+N 2200 -1030 2200 -940 { lab=agnd}
+N 2110 -1190 2110 -940 { lab=agnd}
+N 1940 -1270 2040 -1270 { lab=avdd}
+N 1940 -1370 1940 -1270 { lab=avdd}
+N 2250 -1270 2360 -1270 { lab=avdd}
+N 2360 -1370 2360 -1270 { lab=avdd}
+N 2240 -1370 2360 -1370 { lab=avdd}
+N 2200 -1060 2280 -1060 { lab=agnd}
+N 2280 -1060 2280 -940 { lab=agnd}
+N 1650 -940 2020 -940 { lab=agnd}
+N 2110 -940 2200 -940 { lab=agnd}
+N 2200 -940 2280 -940 { lab=agnd}
+N 1980 -1190 2000 -1190 { lab=inp}
+N 2290 -1190 2320 -1190 { lab=inn}
+N 1890 -1370 1940 -1370 { lab=avdd}
+N 1940 -1370 1970 -1370 { lab=avdd}
+N 2020 -940 2110 -940 { lab=agnd}
+N 1840 -1370 1840 -1230 { lab=avdd}
+N 1840 -1200 1900 -1200 { lab=avdd}
+N 1900 -1370 1900 -1200 { lab=avdd}
+N 1770 -1200 1800 -1200 { lab=mir}
+N 1840 -1050 1840 -940 { lab=agnd}
+N 1790 -1080 1790 -940 { lab=agnd}
+N 2250 -1230 2330 -1230 { lab=mir}
+N 1650 -1060 1650 -1050 { lab=#net2}
+N 2040 -1160 2040 -1120 { lab=#net3}
+N 2040 -1240 2040 -1220 { lab=#net4}
+N 2080 -1270 2210 -1270 { lab=#net4}
+N 2150 -1270 2150 -1230 { lab=#net4}
+N 2040 -1230 2150 -1230 { lab=#net4}
+N 2250 -1160 2250 -1120 { lab=#net3}
+N 2040 -1120 2250 -1120 { lab=#net3}
+N 2200 -1120 2200 -1090 { lab=#net3}
+N 1840 -1170 1840 -1110 { lab=#net5}
+N 1880 -1080 1930 -1080 { lab=#net5}
+N 1930 -1120 1930 -1080 { lab=#net5}
+N 1840 -1120 1930 -1120 { lab=#net5}
+N 1930 -1060 2160 -1060 { lab=#net5}
+N 1930 -1080 1930 -1060 { lab=#net5}
+N 1790 -1080 1840 -1080 { lab=agnd}
+N 1300 -960 1300 -940 { lab=agnd}
+N 1330 -1080 1500 -1080 { lab=#net1}
+N 1650 -1150 1650 -1060 { lab=#net2}
+N 1500 -1090 1500 -1070 { lab=#net1}
+N 1500 -1250 1500 -1240 { lab=inp}
+N 1650 -1160 1650 -1150 { lab=#net2}
+N 1460 -1240 1480 -1240 { lab=inp}
+N 1480 -1240 1500 -1240 { lab=inp}
+N 2400 -1230 2410 -1230 { lab=mir}
+N 2330 -1230 2400 -1230 { lab=mir}
+N 2410 -1230 2430 -1230 { lab=mir}
+N 390 -1370 420 -1370 { lab=avdd}
+N 420 -940 440 -940 { lab=agnd}
+N 320 -940 420 -940 { lab=agnd}
+N 230 -940 320 -940 { lab=agnd}
+N 640 -1150 640 -1120 { lab=bg_out}
+N 640 -1250 640 -1210 { lab=bg_out}
+N 640 -1210 640 -1150 { lab=bg_out}
+N 1500 -1170 1500 -1150 { lab=#net6}
+N 1500 -1240 1500 -1230 { lab=inp}
+N 1400 -1160 1500 -1160 { lab=#net6}
+N 1400 -1000 1400 -940 { lab=agnd}
+N 640 -1120 640 -1090 { lab=bg_out}
+N 620 -1060 620 -940 { lab=agnd}
+N 1720 -1110 1720 -940 { lab=agnd}
+N 1380 -1030 1380 -940 { lab=agnd}
+N 1430 -1120 1480 -1120 { lab=agnd}
+N 1430 -1120 1430 -940 { lab=agnd}
+N 1590 -1190 1590 -940 { lab=agnd}
+N 1370 -1200 1480 -1200 { lab=agnd}
+N 1370 -1200 1370 -940 { lab=agnd}
+N 420 -1370 530 -1370 { lab=avdd}
+N 440 -940 610 -940 { lab=agnd}
+N 1400 -1160 1400 -1150 { lab=#net6}
+N 1400 -1090 1400 -1060 { lab=#net7}
+N 1650 -1170 1650 -1160 { lab=#net2}
+N 1590 -1200 1630 -1200 { lab=agnd}
+N 1590 -1200 1590 -1190 { lab=agnd}
+N 1700 -1000 1700 -940 { lab=agnd}
+N 1700 -1080 1700 -1060 { lab=#net8}
+N 1650 -1140 1700 -1140 { lab=#net2}
+N 1650 -1240 1650 -1230 { lab=inn}
+N 1370 -1120 1380 -1120 { lab=agnd}
+N 640 -1030 640 -1020 { lab=#net9}
+N 1560 -1300 1560 -1280 { lab=mir}
+N 1540 -1330 1560 -1330 { lab=avdd}
+N 1540 -1370 1540 -1330 { lab=avdd}
+N 1560 -1370 1560 -1360 { lab=avdd}
+N 1600 -1330 1620 -1330 { lab=enable}
+N 210 -1370 210 -1270 { lab=avdd}
+N 210 -1370 390 -1370 { lab=avdd}
+N 220 -1240 310 -1240 { lab=avdd}
+N 310 -1370 310 -1240 { lab=avdd}
+N 210 -1240 220 -1240 { lab=avdd}
+N 210 -1210 210 -1090 { lab=#net10}
+N 210 -1030 210 -940 { lab=agnd}
+N 210 -940 230 -940 { lab=agnd}
+N 210 -1060 270 -1060 { lab=agnd}
+N 270 -1060 270 -940 { lab=agnd}
+N 130 -1240 170 -1240 { lab=bg_out}
+N 130 -1240 130 -1060 { lab=bg_out}
+N 130 -1060 170 -1060 { lab=bg_out}
+N 210 -1140 280 -1140 { lab=#net10}
+N 320 -1140 390 -1140 { lab=agnd}
+N 390 -1140 390 -940 { lab=agnd}
+N 320 -1180 320 -1170 { lab=avdd}
+N 320 -1180 350 -1180 { lab=avdd}
+N 350 -1370 350 -1180 { lab=avdd}
+N 320 -1110 320 -1070 { lab=inn}
+N 320 -1070 350 -1070 { lab=inn}
+N 2420 -1230 2420 -1160 { lab=mir}
+N 2420 -1100 2420 -940 { lab=agnd}
+N 2280 -940 2420 -940 { lab=agnd}
+N 2580 -1170 2610 -1170 { lab=bg_out}
+N 2560 -1170 2580 -1170 { lab=bg_out}
+N 2810 -1320 2810 -1300 { lab=avdd}
+N 2810 -1270 2840 -1270 { lab=avdd}
+N 2840 -1310 2840 -1270 { lab=avdd}
+N 2810 -1310 2840 -1310 { lab=avdd}
+N 2730 -1270 2770 -1270 { lab=mir}
+N 2360 -1370 2810 -1370 { lab=avdd}
+N 2810 -1370 2810 -1320 { lab=avdd}
+N 2810 -1240 2810 -1180 { lab=iref}
+C {sky130_fd_pr/pfet_g5v0d10v5.sym} 1630 -1280 0 0 {name=M1
+L=2
+W=3
+nf=1
+mult=8
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=pfet_g5v0d10v5
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet_g5v0d10v5.sym} 1520 -1280 0 1 {name=M2
+L=2
+W=3
+nf=1
+mult=8
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=pfet_g5v0d10v5
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet_g5v0d10v5.sym} 660 -1280 0 1 {name=M3
+L=2
+W=3
+nf=1
+mult=8
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=pfet_g5v0d10v5
+spiceprefix=X
+}
+C {devices/lab_pin.sym} 570 -1140 0 0 {name=l1 sig_type=std_logic lab=bg_out}
+C {sky130_fd_pr/pnp_05v5.sym} 1630 -1020 0 0 {name=Q1
+model=pnp_05v5_W0p68L0p68
+spiceprefix=X
+}
+C {sky130_fd_pr/pnp_05v5.sym} 1480 -1010 0 0 {name=Q5
+model=pnp_05v5_W0p68L0p68
+spiceprefix=X
+}
+C {sky130_fd_pr/pnp_05v5.sym} 1310 -1030 0 0 {name=Q6
+model=pnp_05v5_W0p68L0p68
+spiceprefix=X
+}
+C {sky130_fd_pr/pnp_05v5.sym} 1230 -1030 0 0 {name=Q7
+model=pnp_05v5_W0p68L0p68
+spiceprefix=X
+}
+C {sky130_fd_pr/pnp_05v5.sym} 1140 -1030 0 0 {name=Q9
+model=pnp_05v5_W0p68L0p68
+spiceprefix=X
+}
+C {sky130_fd_pr/pnp_05v5.sym} 1030 -1030 0 0 {name=Q11
+model=pnp_05v5_W0p68L0p68
+spiceprefix=X
+}
+C {sky130_fd_pr/pnp_05v5.sym} 940 -1030 0 0 {name=Q13
+model=pnp_05v5_W0p68L0p68
+spiceprefix=X
+}
+C {sky130_fd_pr/pnp_05v5.sym} 830 -1030 0 0 {name=Q15
+model=pnp_05v5_W0p68L0p68
+spiceprefix=X
+}
+C {sky130_fd_pr/pnp_05v5.sym} 730 -1030 0 0 {name=Q17
+model=pnp_05v5_W0p68L0p68
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet_g5v0d10v5.sym} 2060 -1270 0 1 {name=M7
+L=2
+W=3
+nf=1
+mult=4
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=pfet_g5v0d10v5
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet_g5v0d10v5.sym} 2020 -1190 0 0 {name=M12
+L=1
+W=3
+nf=1
+mult=8
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=nfet_g5v0d10v5
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet_g5v0d10v5.sym} 2270 -1190 0 1 {name=M21
+L=1
+W=3
+nf=1
+mult=8
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=nfet_g5v0d10v5
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet_g5v0d10v5.sym} 2230 -1270 0 0 {name=M23
+L=2
+W=3
+nf=1
+mult=4
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=pfet_g5v0d10v5
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet_g5v0d10v5.sym} 2180 -1060 0 0 {name=M15
+L=2
+W=5
+nf=1
+mult=4
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=nfet_g5v0d10v5
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet_g5v0d10v5.sym} 1820 -1200 0 0 {name=M25
+L=2
+W=3
+nf=1
+mult=8
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=pfet_g5v0d10v5
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet_g5v0d10v5.sym} 1860 -1080 0 1 {name=M16
+L=2
+W=5
+nf=1
+mult=4
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=nfet_g5v0d10v5
+spiceprefix=X
+}
+C {devices/lab_pin.sym} 710 -1280 0 1 {name=l7 sig_type=std_logic lab=mir}
+C {devices/lab_pin.sym} 1570 -1280 3 0 {name=l8 sig_type=std_logic lab=mir}
+C {devices/lab_pin.sym} 1770 -1200 0 0 {name=l11 sig_type=std_logic lab=mir}
+C {devices/lab_pin.sym} 2320 -1190 0 1 {name=l13 sig_type=std_logic lab=inn}
+C {devices/lab_pin.sym} 1980 -1190 0 0 {name=l18 sig_type=std_logic lab=inp}
+C {devices/lab_pin.sym} 1430 -1240 0 0 {name=l19 sig_type=std_logic lab=inp}
+C {devices/lab_pin.sym} 1690 -1240 0 1 {name=l20 sig_type=std_logic lab=inn}
+C {sky130_fd_pr/cap_mim_m3_1.sym} 2420 -1130 0 0 {name=C1 model=cap_mim_m3_1 W=16 L=16 MF=1 spiceprefix=X}
+C {devices/lab_pin.sym} 2380 -1230 1 0 {name=l21 sig_type=std_logic lab=mir}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 1500 -1200 0 0 {name=R1
+W=0.69
+L=27
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=3}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 1650 -1200 0 0 {name=R2
+W=0.69
+L=27
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=3}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 1700 -1110 0 1 {name=R3
+W=0.69
+L=27
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=1}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 1500 -1120 0 0 {name=R10
+W=0.69
+L=27
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=6}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 1400 -1030 0 0 {name=R4
+W=0.69
+L=27
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=15}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 1700 -1030 0 1 {name=R11
+W=0.69
+L=27
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=15}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 1400 -1120 0 0 {name=R6
+W=0.69
+L=27
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=1}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 640 -1060 0 0 {name=R5
+W=0.69
+L=27
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=1}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 640 -990 0 0 {name=R14
+W=0.69
+L=27
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=53}
+C {sky130_fd_pr/pfet_g5v0d10v5.sym} 1580 -1330 0 1 {name=M19
+L=0.5
+W=0.42
+nf=1
+mult=2
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=pfet_g5v0d10v5
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet_g5v0d10v5.sym} 190 -1240 0 0 {name=M4
+L=5
+W=0.42
+nf=1
+mult=2
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=pfet_g5v0d10v5
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet_g5v0d10v5.sym} 190 -1060 0 0 {name=M5
+L=0.5
+W=10
+nf=1
+mult=8
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=nfet_g5v0d10v5
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet_g5v0d10v5.sym} 300 -1140 0 0 {name=M6
+L=0.5
+W=3
+nf=1
+mult=4
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=nfet_g5v0d10v5
+spiceprefix=X
+}
+C {devices/lab_pin.sym} 130 -1140 0 0 {name=l4 sig_type=std_logic lab=bg_out}
+C {devices/lab_pin.sym} 350 -1070 0 1 {name=l22 sig_type=std_logic lab=inn}
+C {devices/ipin.sym} 1080 -1370 0 0 {name=p1 lab=avdd}
+C {devices/ipin.sym} 1110 -940 0 0 {name=p2 lab=agnd}
+C {devices/opin.sym} 2610 -1170 0 0 {name=p3 lab=bg_out}
+C {devices/lab_pin.sym} 2560 -1170 0 0 {name=l2 sig_type=std_logic lab=bg_out}
+C {devices/ipin.sym} 1610 -1330 2 0 {name=p4 lab=enable}
+C {sky130_fd_pr/pfet_g5v0d10v5.sym} 2790 -1270 0 0 {name=M26
+L=2
+W=3
+nf=1
+mult=4
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=pfet_g5v0d10v5
+spiceprefix=X
+}
+C {devices/lab_pin.sym} 2730 -1270 2 1 {name=l32 sig_type=std_logic lab=mir}
+C {devices/ipin.sym} 2810 -1180 1 0 {name=p6 lab=iref}
diff --git a/xschem/ldo_v2/bgr2.sym b/xschem/ldo_v2/bgr2.sym
new file mode 100644
index 0000000..a08f951
--- /dev/null
+++ b/xschem/ldo_v2/bgr2.sym
@@ -0,0 +1,28 @@
+v {xschem version=2.9.9 file_version=1.2 }
+G {}
+K {type=subcircuit
+format="@name @pinlist @symname"
+template="name=xb2"}
+V {}
+S {}
+E {}
+L 4 1310 -1690 1310 -1610 {}
+L 4 1310 -1610 1420 -1610 {}
+L 4 1420 -1690 1420 -1610 {}
+L 4 1310 -1690 1420 -1690 {}
+L 4 1290 -1650 1310 -1650 {}
+L 4 1360 -1720 1360 -1690 {}
+L 4 1420 -1680 1440 -1680 {}
+L 4 1420 -1620 1440 -1620 {}
+L 4 1360 -1610 1360 -1570 {}
+B 5 1437.5 -1682.5 1442.5 -1677.5 {name=bg_out
+dir=inout}
+B 5 1437.5 -1622.5 1442.5 -1617.5 {name=iref
+dir=inout}
+B 5 1357.5 -1572.5 1362.5 -1567.5 {name=agnd
+dir=inout}
+B 5 1357.5 -1722.5 1362.5 -1717.5 {name=avdd
+dir=inout}
+B 5 1287.5 -1652.5 1292.5 -1647.5 {name=enable
+dir=inout}
+T {@name} 1340 -1660 0 0 0.2 0.2 {}
diff --git a/xschem/ldo_v2/ldo_v2.sch b/xschem/ldo_v2/ldo_v2.sch
index 6640fc0..85874ad 100644
--- a/xschem/ldo_v2/ldo_v2.sch
+++ b/xschem/ldo_v2/ldo_v2.sch
@@ -263,8 +263,6 @@
 N 1610 -1250 1610 -990 { lab=GND}
 N 660 -1420 770 -1420 { lab=VDD}
 N 680 -990 850 -990 { lab=GND}
-N 2670 -1420 2670 -1360 { lab=VDD}
-N 2600 -1420 2670 -1420 { lab=VDD}
 N 1640 -1210 1640 -1200 { lab=#net14}
 N 1640 -1140 1640 -1110 { lab=#net15}
 N 1890 -1220 1890 -1210 { lab=#net10}
@@ -732,7 +730,7 @@
 .control
 alter R10 36k
 alter @IL[PWL] = [ 0 0 10u 0 20u 0 30u 0 ]
-alter @Vs[pulse] = [ 1.8 3 10u 10u 1u 100u 200u ]
+alter @Vs[pulse] = [ 1 3 10u 10u 1u 100u 200u ]
 alter IL 0
 tran 0.1u 100u 
 plot vdd ldo_out
diff --git a/xschem/ldo_v2/ldo_v2.spice b/xschem/ldo_v2/ldo_v2.spice
new file mode 100644
index 0000000..8da89e6
--- /dev/null
+++ b/xschem/ldo_v2/ldo_v2.spice
@@ -0,0 +1,288 @@
+**.subckt ldo_v2
+XM8 net2 net2 VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=1.2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM9 net2 bg_out net3 GND sky130_fd_pr__nfet_g5v0d10v5 L=1 W=2 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM10 net1 pos net3 GND sky130_fd_pr__nfet_g5v0d10v5 L=1 W=2 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM11 net1 net2 VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=1.2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 net3 vb GND GND sky130_fd_pr__nfet_g5v0d10v5 L=1 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM14 out net1 VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=1.2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=12 m=12 
+XM18 out vb GND GND sky130_fd_pr__nfet_g5v0d10v5 L=1 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=12 m=12 
+XM20 vb vb GND GND sky130_fd_pr__nfet_g5v0d10v5 L=1 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=4 m=4 
+XM24 ldo_out net5 VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=0.5 W=10 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)'
++ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=800 m=800 
+XM26 vb mir VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XC3 net1 net4 sky130_fd_pr__cap_mim_m3_1 W=60 L=60 MF=1 m=1
+XR7 out net4 GND sky130_fd_pr__res_xhigh_po_0p69 L=4.5 mult=1 m=1
+Vs VDD GND 2.3
+Vt net6 GND 0
+C2 net5 net6 5G m=1
+L1 out net5 5G m=1
+XR8 net7 ldo_out GND sky130_fd_pr__res_xhigh_po_0p69 L=24 mult=8 m=8
+XR9 pos net7 GND sky130_fd_pr__res_xhigh_po_0p69 L=24 mult=3 m=3
+XR12 net8 pos GND sky130_fd_pr__res_xhigh_po_0p69 L=24 mult=2 m=2
+XR13 GND net8 GND sky130_fd_pr__res_xhigh_po_0p69 L=24 mult=4 m=4
+XM1 inn mir VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM2 inp mir VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM3 bg_out mir VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XQ1 GND GND net10 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ5 GND GND net9 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ6 GND GND net9 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ7 GND GND net9 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ9 GND GND net9 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ11 GND GND net9 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ13 GND GND net9 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ15 GND GND net9 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ17 GND GND net9 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XM7 net12 net12 VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM12 net12 inp net11 GND sky130_fd_pr__nfet_g5v0d10v5 L=1 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM21 mir inn net11 GND sky130_fd_pr__nfet_g5v0d10v5 L=1 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM23 mir net12 VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM15 net11 net13 GND GND sky130_fd_pr__nfet_g5v0d10v5 L=2 W=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=4 m=4 
+XM25 net13 mir VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM16 net13 net13 GND GND sky130_fd_pr__nfet_g5v0d10v5 L=2 W=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=4 m=4 
+XC1 mir GND sky130_fd_pr__cap_mim_m3_1 W=16 L=16 MF=1 m=1
+XR1 net14 inp GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=3 m=3
+XR2 net10 inn GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=3 m=3
+XR3 net16 net10 GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=1 m=1
+XR10 net9 net14 GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=6 m=6
+XR4 GND net15 GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=15 m=15
+XR11 GND net16 GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=15 m=15
+XR6 net15 net14 GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=1 m=1
+XR5 net17 bg_out GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=1 m=1
+XR14 GND net17 GND sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=53 m=53
+XM19 mir en VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=0.5 W=0.42 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+Ven en GND 2.3
+XM4 net18 bg_out VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=5 W=0.42 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM5 net18 bg_out GND GND sky130_fd_pr__nfet_g5v0d10v5 L=0.5 W=10 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)'
++ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=8 m=8 
+XM6 VDD net18 inn GND sky130_fd_pr__nfet_g5v0d10v5 L=0.5 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+**** begin user architecture code
+
+
+.param R=18k
+R10 ldo_out GND {R}
+IL ldo_out 0 PWL(0 0.1m 10u 0.1m 20u 10m 30u 10m)
+*CL ldo_out gnd 10p
+.lib /home/mustafa/mabrains/pdks/share/pdk/sky130A/libs.tech/ngspice/sky130.lib_mod.spice tt
+
+
+
+
+.nodeset v(inn)=1.2
+.nodeset v(inp)=1.2
+.nodeset v(mir)=1
+.nodeset v(net13)=1
+.nodeset v(bg_out)=1.1
+.nodeset v(ldo_out)=1.8
+.nodeset v(pos)=1.1
+*.nodeset v(net3)=0.8
+*.nodeset v(net1)=0.7
+.nodeset v(net14)=0.9
+*.nodeset v(net7)=0.75
+.nodeset v(vb)=0.9
+
+.option temp=27
+*User_defined_functions
+.control
+define max(vector_name) (vecmax(vector_name))
+define min(vector_name) (vecmin(vector_name))
+.endc
+
+
+*Temp_sweep
+.control
+alter IL 0
+dc temp 85 0 -1
+let temp_coeff=1000000*(max(ldo_out)-min(ldo_out))/85
+print temp_coeff
+plot v(ldo_out)
+set wr_singlescale
+set wr_vecnames
+set appendwrite
+.endc
+
+
+.control
+alter IL 0
+*alter R10 1G
+op
+let iq =i(Vs)
+print iq
+*print all
+set wr_singlescale
+set wr_vecnames
+set appendwrite
+if v(ldo_out)>1
+wrdata op_point_test v(ldo_out)
+end
+.endc
+
+
+
+*Stability_Analysis
+.control
+alter IL 0
+alter Vs AC =0
+alter Vt AC=1
+ac dec 10 1 1G
+plot vdb(out)
+plot (180/pi)*vp(out)
+let ph= (180/pi)*vp(out)
+meas ac pm FIND ph WHEN vdb(out)=0
+.endc
+
+
+*PSRR_Analysis
+.control
+alter IL 0
+alter Vs AC =1
+alter Vt AC=0
+alter L1 0
+alter C2 0
+ac dec 10 1 1G
+meas AC PSRR100 FIND vdb(ldo_out) AT=100
+meas AC PSRR100k FIND vdb(ldo_out) AT=100k
+plot vdb(ldo_out)
+.endc
+
+
+
+
+*supply_sweep
+.control
+alter IL 0
+dc Vs 2.8 0 -0.01
+plot vdd ldo_out
+meas DC Vldo_Sup_2 FIND ldo_out AT=2
+meas DC Vldo_nom FIND ldo_out AT=2.3
+meas DC Vldo_Sup_2_8 FIND ldo_out AT=2.8
+let line_reg = abs((Vldo_Sup_2_8-Vldo_Sup_2)/0.8)
+print line_reg
+meas DC vin WHEN v(ldo_out)=1.764
+let dropout=vin-1.764
+print dropout
+set wr_singlescale
+set wr_vecnames
+set appendwrite
+.endc
+
+
+
+
+
+*Load_Reg_switches
+*V1 c1 0 DC 0 PWL(0 5 20u 5 35u 0 50u 0 100u 0)
+*V2 c2 0 DC 0 PWL(0 0 20u 0 35u 0 50u 5 100u 5)
+*s1 ldo_out 2 c1 0 switch1 ON
+*s2 ldo_out 3 c2 0 switch1 OFF
+*.model switch1 sw vt=0.1 ron =0.1 roff =1G
+*R1 2 0 18k
+*R2 3 0 180
+
+*.control
+*alter R10 1G
+*tran 0.1u 90u
+*plot v(ldo_out) v(c1) v(c2)
+*meas TRAN V_ldo_100u FIND v(ldo_out) AT=10u
+*meas TRAN V_ldo_10m FIND v(ldo_out) AT=50u
+*let load_reg= V_ldo_100u-V_ldo_10m
+*print load_reg
+*.endc
+
+
+**Load_Transient
+.control
+alter IL 50u
+alter R10 3600k
+tran 0.1u 100u
+meas TRAN V_ldo_100u FIND v(ldo_out) AT=5u
+meas TRAN V_ldo_10m FIND v(ldo_out) AT=100u
+let load_reg= V_ldo_100u-V_ldo_10m
+let load_current =(-1*i(Vs)-131.8e-6)
+print load_reg
+plot load_current v(ldo_out)-1.8
+.endc
+
+
+**Transient
+.control
+alter R10 36k
+alter @IL[PWL] = [ 0 0 10u 0 20u 0 30u 0 ]
+alter @Vs[pulse] = [ 1.8 3 10u 10u 1u 100u 200u ]
+alter IL 0
+tran 0.1u 100u
+plot vdd ldo_out
+.endc
+
+.control
+alter R10 36k
+alter @IL[PWL] = [ 0 0 10u 0 20u 0 30u 0 ]
+alter @Vs[pulse] = [ 0 2.3 10u 0.1u 1u 100u 200u ]
+tran 0.1u 100u
+plot vdd ldo_out
+.endc
+
+.control
+alter R10 36k
+alter @IL[PWL] = [ 0 0 10u 0 20u 0 30u 0 ]
+alter @Ven[pulse] = [ 0 2.3 10u 0.1u 1u 100u 200u ]
+tran 0.1u 100u
+*meas TRAN st_up_time when v(ldo_out)>1.782
+plot en ldo_out
+.endc
+
+
+
+
+
+**** end user architecture code
+**.ends
+.GLOBAL GND
+.GLOBAL VDD
+** flattened .save nodes
+.end
diff --git a/xschem/ldo_v2/ldo_v2_lvs.sch b/xschem/ldo_v2/ldo_v2_lvs.sch
new file mode 100644
index 0000000..1af15e3
--- /dev/null
+++ b/xschem/ldo_v2/ldo_v2_lvs.sch
@@ -0,0 +1,96 @@
+v {xschem version=2.9.9 file_version=1.2 }
+G {}
+K {}
+V {}
+S {}
+E {}
+N 3160 -3340 3360 -3340 { lab=#net1}
+N 3160 -3430 3160 -3400 { lab=#net2}
+N 3160 -3430 3360 -3430 { lab=#net2}
+N 3080 -3550 3080 -3440 { lab=#net3}
+N 3080 -3550 3500 -3550 { lab=#net3}
+N 3500 -3550 3500 -3480 { lab=#net3}
+N 3800 -3350 3800 -3330 { lab=ldo_out}
+N 3800 -3180 3800 -3160 { lab=pos}
+N 3800 -3490 3800 -3410 { lab=#net3}
+N 3800 -3380 3900 -3380 { lab=#net3}
+N 3900 -3490 3900 -3380 { lab=#net3}
+N 3720 -3170 3800 -3170 { lab=pos}
+N 3800 -3340 3900 -3340 { lab=ldo_out}
+N 3900 -3340 3940 -3340 { lab=ldo_out}
+N 3800 -3570 3800 -3490 { lab=#net3}
+N 3900 -3570 3900 -3490 { lab=#net3}
+N 3800 -3570 3900 -3570 { lab=#net3}
+N 3800 -3270 3800 -3260 { lab=#net4}
+N 3800 -3200 3800 -3190 { lab=pos}
+N 3820 -3280 3820 -3230 { lab=GND}
+N 3820 -3300 3820 -3280 { lab=GND}
+N 3800 -3190 3800 -3180 { lab=pos}
+N 3800 -3100 3800 -3090 { lab=#net5}
+N 3820 -3130 3820 -3060 { lab=GND}
+N 3820 -3060 3820 -3030 { lab=GND}
+N 3810 -3030 3820 -3030 { lab=GND}
+N 3800 -3030 3810 -3030 { lab=GND}
+N 3800 -3030 3800 -3020 { lab=GND}
+N 3820 -3220 3820 -3130 { lab=GND}
+N 3820 -3230 3820 -3220 { lab=GND}
+N 3800 -3030 3800 -2990 { lab=GND}
+N 3800 -2990 3800 -2980 { lab=GND}
+N 3500 -3550 3800 -3550 { lab=#net3}
+N 3660 -3380 3760 -3380 { lab=#net6}
+N 3660 -3380 3660 -3340 { lab=#net6}
+N 3080 -3290 3080 -3270 { lab=GND}
+N 3500 -3180 3500 -3160 { lab=GND}
+N 3640 -3170 3720 -3170 { lab=pos}
+N 3640 -3170 3640 -3020 { lab=pos}
+N 3320 -3020 3640 -3020 { lab=pos}
+N 3320 -3250 3320 -3020 { lab=pos}
+N 3320 -3250 3360 -3250 { lab=pos}
+N 2980 -3370 3010 -3370 {}
+C {ldo_v2/bgr2.sym} 1720 -1720 0 0 {name=xb2}
+C {ldo_v1/Error_Amp.sym} 2600 -1960 0 0 {name=y1}
+C {sky130_fd_pr/pfet_g5v0d10v5.sym} 3780 -3380 0 0 {name=M24
+L=0.5
+W=10
+nf=1
+mult=800
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=pfet_g5v0d10v5
+spiceprefix=X
+}
+C {devices/lab_pin.sym} 3720 -3170 1 0 {name=l25 sig_type=std_logic lab=pos}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 3800 -3230 0 1 {name=R2
+W=0.69
+L=24
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=3}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 3800 -3300 0 1 {name=R3
+W=0.69
+L=24
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=8}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 3800 -3130 0 1 {name=R1
+W=0.69
+L=24
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=2}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 3800 -3060 0 1 {name=R4
+W=0.69
+L=24
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=4}
+C {devices/gnd.sym} 3800 -2980 0 0 {name=l2 lab=GND}
+C {devices/opin.sym} 3890 -3340 0 0 {name=p3 lab=ldo_out
+}
+C {devices/gnd.sym} 3500 -3160 0 0 {name=l1 lab=GND}
+C {devices/gnd.sym} 3080 -3270 0 0 {name=l3 lab=GND}
+C {devices/ipin.sym} 3000 -3370 0 0 {name=p2 lab=en}
diff --git a/xschem/ldo_v2/ldo_v2_lvs.spice b/xschem/ldo_v2/ldo_v2_lvs.spice
new file mode 100644
index 0000000..8057ce7
--- /dev/null
+++ b/xschem/ldo_v2/ldo_v2_lvs.spice
@@ -0,0 +1,131 @@
+**.subckt ldo_v2_lvs ldo_out en
+*.opin ldo_out
+*.ipin en
+xb2 net2 net1 GND net3 en bgr2
+y1 net2 pos net1 net6 net3 GND Error_Amp
+XM24 ldo_out net6 net3 net3 sky130_fd_pr__pfet_g5v0d10v5 L=0.5 W=10 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)'
++ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=800 m=800 
+XR2 pos net4 GND sky130_fd_pr__res_xhigh_po_0p69 L=24 mult=3 m=3
+XR3 net4 ldo_out GND sky130_fd_pr__res_xhigh_po_0p69 L=24 mult=8 m=8
+XR1 net5 pos GND sky130_fd_pr__res_xhigh_po_0p69 L=24 mult=2 m=2
+XR4 GND net5 GND sky130_fd_pr__res_xhigh_po_0p69 L=24 mult=4 m=4
+**.ends
+
+* expanding   symbol:  ldo_v2/bgr2.sym # of pins=5
+* sym_path: /home/mustafa/mabrains/caravel_user_project_ldo/xschem/ldo_v2/bgr2.sym
+* sch_path: /home/mustafa/mabrains/caravel_user_project_ldo/xschem/ldo_v2/bgr2.sch
+.subckt bgr2  bg_out iref agnd avdd enable
+*.ipin avdd
+*.ipin agnd
+*.opin bg_out
+*.ipin enable
+*.ipin iref
+XM1 inn mir avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM2 inp mir avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM3 bg_out mir avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XQ1 agnd agnd net2 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ5 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ6 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ7 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ9 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ11 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ13 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ15 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ17 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XM7 net4 net4 avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM12 net4 inp net3 agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM21 mir inn net3 agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM23 mir net4 avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM15 net3 net5 agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=2 W=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=4 m=4 
+XM25 net5 mir avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM16 net5 net5 agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=2 W=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=4 m=4 
+XC1 mir agnd sky130_fd_pr__cap_mim_m3_1 W=16 L=16 MF=1 m=1
+XR1 net6 inp agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=3 m=3
+XR2 net2 inn agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=3 m=3
+XR3 net8 net2 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=1 m=1
+XR10 net1 net6 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=6 m=6
+XR4 agnd net7 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=15 m=15
+XR11 agnd net8 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=15 m=15
+XR6 net7 net6 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=1 m=1
+XR5 net9 bg_out agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=1 m=1
+XR14 agnd net9 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=53 m=53
+XM19 mir enable avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=0.5 W=0.42 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM4 net10 bg_out avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=5 W=0.42 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM5 net10 bg_out agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=0.5 W=10 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)'
++ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=8 m=8 
+XM6 avdd net10 inn agnd sky130_fd_pr__nfet_g5v0d10v5 L=0.5 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM26 iref mir avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+.ends
+
+
+* expanding   symbol:  ldo_v1/Error_Amp.sym # of pins=6
+* sym_path: /home/mustafa/mabrains/caravel_user_project_ldo/xschem/ldo_v1/Error_Amp.sym
+* sch_path: /home/mustafa/mabrains/caravel_user_project_ldo/xschem/ldo_v1/Error_Amp.sch
+.subckt Error_Amp  neg pos vb out avdd agnd
+*.opin out
+*.iopin avdd
+*.iopin agnd
+*.iopin vb
+*.ipin neg
+*.ipin pos
+XM8 net2 net2 avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=1.2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM9 net2 neg net3 agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=2 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM10 net1 pos net3 agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=2 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM11 net1 net2 avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=1.2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 net3 vb agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM14 out net1 avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=1.2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)'
++ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=12 m=12 
+XM18 out vb agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=12 m=12 
+XC3 net1 net4 sky130_fd_pr__cap_mim_m3_1 W=50 L=50 MF=1 m=1
+XR7 out net4 agnd sky130_fd_pr__res_xhigh_po_0p69 L=4.5 mult=1 m=1
+XM20 vb vb agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=4 m=4 
+.ends
+
+.GLOBAL GND
+** flattened .save nodes
+.end
diff --git a/xschem/ldo_v2/ldo_v2_sim.sch b/xschem/ldo_v2/ldo_v2_sim.sch
new file mode 100644
index 0000000..c7e55ca
--- /dev/null
+++ b/xschem/ldo_v2/ldo_v2_sim.sch
@@ -0,0 +1,290 @@
+v {xschem version=2.9.9 file_version=1.2 }
+G {}
+K {}
+V {}
+S {}
+E {}
+N 3590 -3720 3790 -3720 { lab=#net1}
+N 3590 -3810 3590 -3780 { lab=#net2}
+N 3590 -3810 3790 -3810 { lab=#net2}
+N 3510 -3930 3510 -3820 { lab=VDD}
+N 3510 -3930 3930 -3930 { lab=VDD}
+N 3930 -3930 3930 -3860 { lab=VDD}
+N 4230 -3730 4230 -3710 { lab=ldo_out}
+N 4230 -3560 4230 -3540 { lab=pos}
+N 4230 -3870 4230 -3790 { lab=VDD}
+N 4230 -3760 4330 -3760 { lab=VDD}
+N 4330 -3870 4330 -3760 { lab=VDD}
+N 4150 -3550 4230 -3550 { lab=pos}
+N 4230 -3720 4330 -3720 { lab=ldo_out}
+N 4330 -3720 4370 -3720 { lab=ldo_out}
+N 4230 -3950 4230 -3870 { lab=VDD}
+N 4330 -3950 4330 -3870 { lab=VDD}
+N 4230 -3950 4330 -3950 { lab=VDD}
+N 4230 -3650 4230 -3640 { lab=#net3}
+N 4230 -3580 4230 -3570 { lab=pos}
+N 4250 -3660 4250 -3610 { lab=GND}
+N 4250 -3680 4250 -3660 { lab=GND}
+N 4230 -3570 4230 -3560 { lab=pos}
+N 4230 -3480 4230 -3470 { lab=#net4}
+N 4250 -3510 4250 -3440 { lab=GND}
+N 4250 -3440 4250 -3410 { lab=GND}
+N 4240 -3410 4250 -3410 { lab=GND}
+N 4230 -3410 4240 -3410 { lab=GND}
+N 4230 -3410 4230 -3400 { lab=GND}
+N 4250 -3600 4250 -3510 { lab=GND}
+N 4250 -3610 4250 -3600 { lab=GND}
+N 4230 -3410 4230 -3370 { lab=GND}
+N 4230 -3370 4230 -3360 { lab=GND}
+N 3930 -3930 4230 -3930 { lab=VDD}
+N 4090 -3760 4190 -3760 { lab=#net5}
+N 4090 -3760 4090 -3720 { lab=#net5}
+N 3510 -3670 3510 -3650 { lab=GND}
+N 3930 -3560 3930 -3540 { lab=GND}
+N 4070 -3550 4150 -3550 { lab=pos}
+N 4070 -3550 4070 -3400 { lab=pos}
+N 3750 -3400 4070 -3400 { lab=pos}
+N 3750 -3630 3750 -3400 { lab=pos}
+N 3750 -3630 3790 -3630 { lab=pos}
+N 3410 -3750 3440 -3750 { lab=en}
+N 3030 -3530 3030 -3490 { lab=GND}
+N 3030 -3610 3030 -3590 { lab=VDD}
+N 2800 -3620 2800 -3600 { lab=en}
+N 2800 -3540 2800 -3510 { lab=GND}
+N 3820 -3970 3820 -3930 { lab=VDD}
+N 3030 -3750 3030 -3610 { lab=VDD}
+N 3030 -3750 3040 -3750 { lab=VDD}
+C {ldo_v2/bgr2.sym} 2150 -2100 0 0 {name=xb2}
+C {ldo_v1/Error_Amp.sym} 3030 -2340 0 0 {name=xy1}
+C {sky130_fd_pr/pfet_g5v0d10v5.sym} 4210 -3760 0 0 {name=M24
+L=0.5
+W=10
+nf=1
+mult=800
+ad="'int((nf+1)/2) * W/nf * 0.29'" 
+pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
+as="'int((nf+2)/2) * W/nf * 0.29'" 
+ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
+nrd="'0.29 / W'" nrs="'0.29 / W'"
+sa=0 sb=0 sd=0
+model=pfet_g5v0d10v5
+spiceprefix=X
+}
+C {devices/lab_pin.sym} 4150 -3550 1 0 {name=l25 sig_type=std_logic lab=pos}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 4230 -3610 0 1 {name=R2
+W=0.69
+L=24
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=3}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 4230 -3680 0 1 {name=R3
+W=0.69
+L=24
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=8}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 4230 -3510 0 1 {name=R1
+W=0.69
+L=24
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=2}
+C {sky130_fd_pr/res_xhigh_po_0p69.sym} 4230 -3440 0 1 {name=R4
+W=0.69
+L=24
+model=res_xhigh_po_0p69
+spiceprefix=X
+mult=4}
+C {devices/gnd.sym} 4230 -3360 0 0 {name=l2 lab=GND}
+C {devices/opin.sym} 4320 -3720 0 0 {name=p3 lab=ldo_out
+}
+C {devices/gnd.sym} 3930 -3540 0 0 {name=l1 lab=GND}
+C {devices/gnd.sym} 3510 -3650 0 0 {name=l3 lab=GND}
+C {devices/vsource.sym} 3030 -3560 0 0 {name=Vs value=2.3}
+C {devices/vsource.sym} 2800 -3570 0 0 {name=Ven value=2.3}
+C {devices/lab_pin.sym} 2800 -3620 0 0 {name=l27 sig_type=std_logic lab=en}
+C {devices/gnd.sym} 3030 -3490 0 0 {name=l4 lab=GND}
+C {devices/gnd.sym} 2800 -3510 0 0 {name=l5 lab=GND}
+C {devices/vdd.sym} 3820 -3970 0 0 {name=l7 lab=VDD}
+C {devices/vdd.sym} 3040 -3750 0 0 {name=l8 lab=VDD}
+C {devices/code_shown.sym} 4760 -4550 0 0 {name= SPICE1 only_toplevel="false" value=
+"
+
+.param R=36k
+R10 ldo_out GND \{R\}
+IL ldo_out 0 PWL(0 0.1m 10u 0.1m 20u 10m 30u 10m)
+*CL ldo_out gnd 10p
+.lib "/home/mustafa/mabrains/pdks/share/pdk/sky130A/libs.tech/ngspice/sky130.lib_mod.spice" tt
+
+
+
+
+
+.nodeset v(x1.inn)=1.2
+.nodeset v(x1.inp)=1.2
+.nodeset v(x1.mir)=1
+.nodeset v(x1.net5)=1
+.nodeset v(x1.bg_out)=1.1
+.nodeset v(ldo_out)=1.8
+.nodeset v(pos)=1.1
+*.nodeset v(net3)=0.8
+*.nodeset v(net1)=0.7
+.nodeset v(x1.net6)=0.9
+*.nodeset v(net7)=0.75
+.nodeset v(xy1.vb)=0.9
+
+
+.option temp=27
+*User_defined_functions
+.control
+define max(vector_name) (vecmax(vector_name))
+define min(vector_name) (vecmin(vector_name))
+.endc
+
+
+*Temp_sweep
+.control
+alter IL 0
+dc temp 85 0 -1
+let temp_coeff=1000000*(max(ldo_out)-min(ldo_out))/85
+print temp_coeff
+plot v(ldo_out)
+set wr_singlescale
+set wr_vecnames
+set appendwrite
+.endc
+
+
+.control
+alter IL 0
+*alter R10 1G
+op
+let iq =i(Vs)
+print iq
+*print all
+set wr_singlescale
+set wr_vecnames
+set appendwrite
+if v(ldo_out)>1
+wrdata op_point_test v(ldo_out)
+end
+.endc
+
+
+
+*Stability_Analysis
+.control
+alter IL 0
+alter Vs AC =0
+alter Vt AC=1
+ac dec 10 1 1G
+plot vdb(out)
+plot (180/pi)*vp(out)
+let ph= (180/pi)*vp(out)
+meas ac pm FIND ph WHEN vdb(out)=0
+.endc
+
+
+*PSRR_Analysis
+.control
+alter IL 0
+alter Vs AC =1
+alter Vt AC=0
+alter L1 0
+alter C2 0
+ac dec 10 1 1G
+meas AC PSRR100 FIND vdb(ldo_out) AT=100
+meas AC PSRR100k FIND vdb(ldo_out) AT=100k
+plot vdb(ldo_out)
+.endc
+
+
+
+
+*supply_sweep
+.control
+alter IL 0
+dc Vs 2.8 0 -0.01
+plot vdd ldo_out
+meas DC Vldo_Sup_2 FIND ldo_out AT=2
+meas DC Vldo_nom FIND ldo_out AT=2.3
+meas DC Vldo_Sup_2_8 FIND ldo_out AT=2.8
+let line_reg = abs((Vldo_Sup_2_8-Vldo_Sup_2)/0.8)
+print line_reg
+meas DC vin WHEN v(ldo_out)=1.764
+let dropout=vin-1.764
+print dropout
+set wr_singlescale
+set wr_vecnames
+set appendwrite
+.endc
+
+
+
+
+
+*Load_Reg_switches
+*V1 c1 0 DC 0 PWL(0 5 20u 5 35u 0 50u 0 100u 0)
+*V2 c2 0 DC 0 PWL(0 0 20u 0 35u 0 50u 5 100u 5)
+*s1 ldo_out 2 c1 0 switch1 ON
+*s2 ldo_out 3 c2 0 switch1 OFF
+*.model switch1 sw vt=0.1 ron =0.1 roff =1G
+*R1 2 0 18k
+*R2 3 0 180
+
+*.control
+*alter R10 1G
+*tran 0.1u 90u
+*plot v(ldo_out) v(c1) v(c2)
+*meas TRAN V_ldo_100u FIND v(ldo_out) AT=10u
+*meas TRAN V_ldo_10m FIND v(ldo_out) AT=50u
+*let load_reg= V_ldo_100u-V_ldo_10m
+*print load_reg
+*.endc
+
+
+**Load_Transient
+.control
+alter IL 50u
+alter R10 3600k
+tran 0.1u 100u
+meas TRAN V_ldo_100u FIND v(ldo_out) AT=5u
+meas TRAN V_ldo_10m FIND v(ldo_out) AT=100u
+let load_reg= V_ldo_100u-V_ldo_10m
+let load_current =(-1*i(Vs)-131.8e-6)
+print load_reg
+plot load_current v(ldo_out)-1.8
+.endc
+
+
+**Transient
+.control
+alter R10 36k
+alter @IL[PWL] = [ 0 0 10u 0 20u 0 30u 0 ]
+alter @Vs[pulse] = [ 1.8 3 10u 10u 1u 100u 200u ]
+alter IL 0
+tran 0.1u 100u
+plot vdd ldo_out
+.endc
+.control
+alter R10 36k
+alter @IL[PWL] = [ 0 0 10u 0 20u 0 30u 0 ]
+alter @Vs[pulse] = [ 0 2.3 10u 0.1u 1u 100u 200u ]
+tran 0.1u 100u
+plot vdd ldo_out
+.endc
+.control
+alter R10 36k
+alter @IL[PWL] = [ 0 0 10u 0 20u 0 30u 0 ]
+alter @Ven[pulse] = [ 0 2.3 10u 0.1u 1u 100u 200u ]
+tran 0.1u 100u
+*meas TRAN st_up_time when v(ldo_out)>1.782
+plot en ldo_out
+.endc
+
+
+
+
+
+"}
+C {devices/lab_pin.sym} 3410 -3750 0 0 {name=l9 sig_type=std_logic lab=en}
diff --git a/xschem/ldo_v2/ldo_v2_sim.spice b/xschem/ldo_v2/ldo_v2_sim.spice
new file mode 100644
index 0000000..ca5357b
--- /dev/null
+++ b/xschem/ldo_v2/ldo_v2_sim.spice
@@ -0,0 +1,316 @@
+**.subckt ldo_v2_sim ldo_out
+*.opin ldo_out
+xb2 net2 net1 GND VDD en bgr2
+xy1 net2 pos net1 net5 VDD GND Error_Amp
+XM24 ldo_out net5 VDD VDD sky130_fd_pr__pfet_g5v0d10v5 L=0.5 W=10 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)'
++ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=800 m=800 
+XR2 pos net3 GND sky130_fd_pr__res_xhigh_po_0p69 L=24 mult=3 m=3
+XR3 net3 ldo_out GND sky130_fd_pr__res_xhigh_po_0p69 L=24 mult=8 m=8
+XR1 net4 pos GND sky130_fd_pr__res_xhigh_po_0p69 L=24 mult=2 m=2
+XR4 GND net4 GND sky130_fd_pr__res_xhigh_po_0p69 L=24 mult=4 m=4
+Vs VDD GND 2.3
+Ven en GND 2.3
+**** begin user architecture code
+
+
+
+.param R=36k
+R10 ldo_out GND {R}
+IL ldo_out 0 PWL(0 0.1m 10u 0.1m 20u 10m 30u 10m)
+*CL ldo_out gnd 10p
+.lib /home/mustafa/mabrains/pdks/share/pdk/sky130A/libs.tech/ngspice/sky130.lib_mod.spice tt
+
+
+
+
+
+.nodeset v(x1.inn)=1.2
+.nodeset v(x1.inp)=1.2
+.nodeset v(x1.mir)=1
+.nodeset v(x1.net5)=1
+.nodeset v(x1.bg_out)=1.1
+.nodeset v(ldo_out)=1.8
+.nodeset v(pos)=1.1
+*.nodeset v(net3)=0.8
+*.nodeset v(net1)=0.7
+.nodeset v(x1.net6)=0.9
+*.nodeset v(net7)=0.75
+.nodeset v(xy1.vb)=0.9
+
+
+.option temp=27
+*User_defined_functions
+.control
+define max(vector_name) (vecmax(vector_name))
+define min(vector_name) (vecmin(vector_name))
+.endc
+
+
+*Temp_sweep
+.control
+alter IL 0
+dc temp 85 0 -1
+let temp_coeff=1000000*(max(ldo_out)-min(ldo_out))/85
+print temp_coeff
+plot v(ldo_out)
+set wr_singlescale
+set wr_vecnames
+set appendwrite
+.endc
+
+
+.control
+alter IL 0
+*alter R10 1G
+op
+let iq =i(Vs)
+print iq
+*print all
+set wr_singlescale
+set wr_vecnames
+set appendwrite
+if v(ldo_out)>1
+wrdata op_point_test v(ldo_out)
+end
+.endc
+
+
+
+*Stability_Analysis
+.control
+alter IL 0
+alter Vs AC =0
+alter Vt AC=1
+ac dec 10 1 1G
+plot vdb(out)
+plot (180/pi)*vp(out)
+let ph= (180/pi)*vp(out)
+meas ac pm FIND ph WHEN vdb(out)=0
+.endc
+
+
+*PSRR_Analysis
+.control
+alter IL 0
+alter Vs AC =1
+alter Vt AC=0
+alter L1 0
+alter C2 0
+ac dec 10 1 1G
+meas AC PSRR100 FIND vdb(ldo_out) AT=100
+meas AC PSRR100k FIND vdb(ldo_out) AT=100k
+plot vdb(ldo_out)
+.endc
+
+
+
+
+*supply_sweep
+.control
+alter IL 0
+dc Vs 2.8 0 -0.01
+plot vdd ldo_out
+meas DC Vldo_Sup_2 FIND ldo_out AT=2
+meas DC Vldo_nom FIND ldo_out AT=2.3
+meas DC Vldo_Sup_2_8 FIND ldo_out AT=2.8
+let line_reg = abs((Vldo_Sup_2_8-Vldo_Sup_2)/0.8)
+print line_reg
+meas DC vin WHEN v(ldo_out)=1.764
+let dropout=vin-1.764
+print dropout
+set wr_singlescale
+set wr_vecnames
+set appendwrite
+.endc
+
+
+
+
+
+*Load_Reg_switches
+*V1 c1 0 DC 0 PWL(0 5 20u 5 35u 0 50u 0 100u 0)
+*V2 c2 0 DC 0 PWL(0 0 20u 0 35u 0 50u 5 100u 5)
+*s1 ldo_out 2 c1 0 switch1 ON
+*s2 ldo_out 3 c2 0 switch1 OFF
+*.model switch1 sw vt=0.1 ron =0.1 roff =1G
+*R1 2 0 18k
+*R2 3 0 180
+
+*.control
+*alter R10 1G
+*tran 0.1u 90u
+*plot v(ldo_out) v(c1) v(c2)
+*meas TRAN V_ldo_100u FIND v(ldo_out) AT=10u
+*meas TRAN V_ldo_10m FIND v(ldo_out) AT=50u
+*let load_reg= V_ldo_100u-V_ldo_10m
+*print load_reg
+*.endc
+
+
+**Load_Transient
+.control
+alter IL 50u
+alter R10 3600k
+tran 0.1u 100u
+meas TRAN V_ldo_100u FIND v(ldo_out) AT=5u
+meas TRAN V_ldo_10m FIND v(ldo_out) AT=100u
+let load_reg= V_ldo_100u-V_ldo_10m
+let load_current =(-1*i(Vs)-131.8e-6)
+print load_reg
+plot load_current v(ldo_out)-1.8
+.endc
+
+
+**Transient
+.control
+alter R10 36k
+alter @IL[PWL] = [ 0 0 10u 0 20u 0 30u 0 ]
+alter @Vs[pulse] = [ 1.8 3 10u 10u 1u 100u 200u ]
+alter IL 0
+tran 0.1u 100u
+plot vdd ldo_out
+.endc
+.control
+alter R10 36k
+alter @IL[PWL] = [ 0 0 10u 0 20u 0 30u 0 ]
+alter @Vs[pulse] = [ 0 2.3 10u 0.1u 1u 100u 200u ]
+tran 0.1u 100u
+plot vdd ldo_out
+.endc
+.control
+alter R10 36k
+alter @IL[PWL] = [ 0 0 10u 0 20u 0 30u 0 ]
+alter @Ven[pulse] = [ 0 2.3 10u 0.1u 1u 100u 200u ]
+tran 0.1u 100u
+*meas TRAN st_up_time when v(ldo_out)>1.782
+plot en ldo_out
+.endc
+
+
+
+
+
+
+
+**** end user architecture code
+**.ends
+
+* expanding   symbol:  ldo_v2/bgr2.sym # of pins=5
+* sym_path: /home/mustafa/mabrains/caravel_user_project_ldo/xschem/ldo_v2/bgr2.sym
+* sch_path: /home/mustafa/mabrains/caravel_user_project_ldo/xschem/ldo_v2/bgr2.sch
+.subckt bgr2  bg_out iref agnd avdd enable
+*.ipin avdd
+*.ipin agnd
+*.opin bg_out
+*.ipin enable
+*.ipin iref
+XM1 inn mir avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM2 inp mir avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM3 bg_out mir avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XQ1 agnd agnd net2 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ5 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ6 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ7 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ9 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ11 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ13 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ15 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XQ17 agnd agnd net1 sky130_fd_pr__pnp_05v5_W0p68L0p68
+XM7 net4 net4 avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM12 net4 inp net3 agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM21 mir inn net3 agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM23 mir net4 avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM15 net3 net5 agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=2 W=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=4 m=4 
+XM25 net5 mir avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM16 net5 net5 agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=2 W=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=4 m=4 
+XC1 mir agnd sky130_fd_pr__cap_mim_m3_1 W=16 L=16 MF=1 m=1
+XR1 net6 inp agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=3 m=3
+XR2 net2 inn agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=3 m=3
+XR3 net8 net2 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=1 m=1
+XR10 net1 net6 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=6 m=6
+XR4 agnd net7 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=15 m=15
+XR11 agnd net8 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=15 m=15
+XR6 net7 net6 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=1 m=1
+XR5 net9 bg_out agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=1 m=1
+XR14 agnd net9 agnd sky130_fd_pr__res_xhigh_po_0p69 L=27 mult=53 m=53
+XM19 mir enable avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=0.5 W=0.42 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM4 net10 bg_out avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=5 W=0.42 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM5 net10 bg_out agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=0.5 W=10 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)'
++ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=8 m=8 
+XM6 avdd net10 inn agnd sky130_fd_pr__nfet_g5v0d10v5 L=0.5 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM26 iref mir avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+.ends
+
+
+* expanding   symbol:  ldo_v1/Error_Amp.sym # of pins=6
+* sym_path: /home/mustafa/mabrains/caravel_user_project_ldo/xschem/ldo_v1/Error_Amp.sym
+* sch_path: /home/mustafa/mabrains/caravel_user_project_ldo/xschem/ldo_v1/Error_Amp.sch
+.subckt Error_Amp  neg pos vb out avdd agnd
+*.opin out
+*.iopin avdd
+*.iopin agnd
+*.iopin vb
+*.ipin neg
+*.ipin pos
+XM8 net2 net2 avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=1.2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 
+XM9 net2 neg net3 agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=2 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM10 net1 pos net3 agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=2 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM11 net1 net2 avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=1.2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='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 net3 vb agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=8 m=8 
+XM14 out net1 avdd avdd sky130_fd_pr__pfet_g5v0d10v5 L=1.2 W=3 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
++ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)'
++ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=12 m=12 
+XM18 out vb agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=12 m=12 
+XC3 net1 net4 sky130_fd_pr__cap_mim_m3_1 W=50 L=50 MF=1 m=1
+XR7 out net4 agnd sky130_fd_pr__res_xhigh_po_0p69 L=4.5 mult=1 m=1
+XM20 vb vb agnd agnd sky130_fd_pr__nfet_g5v0d10v5 L=1 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' nrd='0.29 / W' nrs='0.29 / W'
++ sa=0 sb=0 sd=0 mult=4 m=4 
+.ends
+
+.GLOBAL GND
+.GLOBAL VDD
+** flattened .save nodes
+.end
diff --git a/xschem/op_point_test b/xschem/op_point_test
new file mode 100644
index 0000000..f4a3fd4
--- /dev/null
+++ b/xschem/op_point_test
@@ -0,0 +1,18 @@
+ net2            v(ldo_out)     
+ 1.17000776e+00  1.80180100e+00 
+ xb2.inn         v(ldo_out)     
+ 1.15218360e+00  1.80180765e+00 
+ net2            v(ldo_out)     
+ 1.17000776e+00  1.80180100e+00 
+ net2            v(ldo_out)     
+ 1.17000776e+00  1.80180100e+00 
+ net2            v(ldo_out)     
+ 1.17000776e+00  1.80180100e+00 
+ net2            v(ldo_out)     
+ 1.17000776e+00  1.80180100e+00 
+ net2            v(ldo_out)     
+ 1.17000776e+00  1.80180100e+00 
+ net2            v(ldo_out)     
+ 1.17000776e+00  1.80180100e+00 
+ net2            v(ldo_out)     
+ 1.17000776e+00  1.80180100e+00