analog switch layout
diff --git a/mag/analog_switch.mag b/mag/analog_switch.mag
new file mode 100644
index 0000000..ba037fd
--- /dev/null
+++ b/mag/analog_switch.mag
@@ -0,0 +1,194 @@
+magic
+tech sky130A
+timestamp 1634419951
+<< nwell >>
+rect 800 -600 2150 900
+<< pwell >>
+rect -400 -600 650 900
+<< nnmos >>
+rect 400 -500 450 500
+<< mvpmos >>
+rect 1000 -500 1050 200
+rect 1200 -500 1250 200
+<< mvndiff >>
+rect 300 490 400 500
+rect 300 -490 310 490
+rect 380 -490 400 490
+rect 300 -500 400 -490
+rect 450 490 550 500
+rect 450 -490 470 490
+rect 540 -490 550 490
+rect 450 -500 550 -490
+<< mvpdiff >>
+rect 900 190 1000 200
+rect 900 -490 910 190
+rect 980 -490 1000 190
+rect 900 -500 1000 -490
+rect 1050 180 1200 200
+rect 1050 -490 1070 180
+rect 1180 -490 1200 180
+rect 1050 -500 1200 -490
+rect 1250 190 1350 200
+rect 1250 -490 1270 190
+rect 1340 -490 1350 190
+rect 1250 -500 1350 -490
+<< mvndiffc >>
+rect 310 -490 380 490
+rect 470 -490 540 490
+<< mvpdiffc >>
+rect 910 -490 980 190
+rect 1070 -490 1180 180
+rect 1270 -490 1340 190
+<< mvpsubdiff >>
+rect -400 850 100 900
+rect -400 450 -350 850
+rect 50 450 100 850
+rect -400 400 100 450
+<< mvnsubdiff >>
+rect 1650 -50 2100 0
+rect 1650 -450 1700 -50
+rect 2050 -450 2100 -50
+rect 1650 -500 2100 -450
+<< mvpsubdiffcont >>
+rect -350 450 50 850
+<< mvnsubdiffcont >>
+rect 1700 -450 2050 -50
+<< poly >>
+rect 300 650 550 700
+rect 300 600 350 650
+rect 500 600 550 650
+rect 300 550 550 600
+rect 400 500 450 550
+rect 1000 350 1250 400
+rect 1000 300 1050 350
+rect 1200 300 1250 350
+rect 1000 250 1250 300
+rect 1000 200 1050 250
+rect 1200 200 1250 250
+rect 400 -550 450 -500
+rect 1000 -550 1050 -500
+rect 1200 -550 1250 -500
+rect 300 -600 550 -550
+rect 300 -650 350 -600
+rect 500 -650 550 -600
+rect 300 -700 550 -650
+rect 1000 -600 1250 -550
+rect 1000 -650 1050 -600
+rect 1200 -650 1250 -600
+rect 1000 -700 1250 -650
+<< polycont >>
+rect 350 600 500 650
+rect 1050 300 1200 350
+rect 350 -650 500 -600
+rect 1050 -650 1200 -600
+<< locali >>
+rect -400 850 100 900
+rect -400 450 -350 850
+rect 50 450 100 850
+rect 300 650 550 1100
+rect 300 600 350 650
+rect 500 600 550 650
+rect 300 550 550 600
+rect -400 400 100 450
+rect 470 490 900 500
+rect 540 480 900 490
+rect 540 170 570 480
+rect 880 200 900 480
+rect 1000 350 1250 1100
+rect 1000 300 1050 350
+rect 1200 300 1250 350
+rect 1000 250 1250 300
+rect 880 190 980 200
+rect 880 170 910 190
+rect 540 -490 910 170
+rect 470 -500 980 -490
+rect 1270 190 1350 200
+rect 1340 -490 1350 190
+rect 1270 -500 1350 -490
+rect 1650 -50 2150 0
+rect 1650 -450 1700 -50
+rect 2100 -450 2150 -50
+rect 1650 -500 2150 -450
+rect 300 -600 550 -550
+rect 300 -650 350 -600
+rect 500 -650 550 -600
+rect 300 -750 550 -650
+rect 1000 -600 1250 -550
+rect 1000 -650 1050 -600
+rect 1200 -650 1250 -600
+rect 1000 -750 1250 -650
+<< viali >>
+rect -350 450 50 850
+rect 220 490 380 500
+rect 220 -490 310 490
+rect 310 -490 380 490
+rect 220 -500 380 -490
+rect 570 170 880 480
+rect 1070 180 1180 200
+rect 1070 -490 1180 180
+rect 1070 -500 1180 -490
+rect 1350 -500 1500 500
+rect 1700 -450 2050 -50
+rect 2050 -450 2100 -50
+<< metal1 >>
+rect -400 850 100 900
+rect -400 450 -350 850
+rect 50 450 100 850
+rect -400 400 100 450
+rect 200 500 400 520
+rect 200 0 220 500
+rect -500 -400 220 0
+rect 200 -500 220 -400
+rect 380 0 400 500
+rect 550 500 2250 800
+rect 550 480 1350 500
+rect 550 170 570 480
+rect 880 300 1350 480
+rect 880 170 900 300
+rect 550 150 900 170
+rect 1050 200 1200 210
+rect 1050 0 1070 200
+rect 380 -400 1070 0
+rect 380 -500 400 -400
+rect 200 -520 400 -500
+rect 1050 -500 1070 -400
+rect 1180 -500 1200 200
+rect 1050 -520 1200 -500
+rect 1330 -500 1350 300
+rect 1500 400 2250 500
+rect 1500 -500 1520 400
+rect 1650 -50 2150 0
+rect 1650 -450 1700 -50
+rect 2100 -450 2150 -50
+rect 1650 -500 2150 -450
+rect 1330 -520 1520 -500
+<< via1 >>
+rect -350 450 50 850
+rect 1700 -450 2100 -50
+<< metal2 >>
+rect -400 850 100 1100
+rect -400 450 -350 850
+rect 50 450 100 850
+rect -400 -750 100 450
+rect 1650 -50 2150 1100
+rect 1650 -450 1700 -50
+rect 2100 -450 2150 -50
+rect 1650 -750 2150 -450
+<< labels >>
+rlabel metal1 2200 400 2250 800 1 VOUT
+port 1 n
+rlabel metal1 -500 -400 -450 0 1 VIN
+port 2 n
+rlabel locali 300 1050 550 1100 1 EN
+port 3 n
+rlabel locali 1000 1050 1250 1100 1 ENB
+port 4 n
+rlabel metal2 1650 1050 2150 1100 1 VDD3v3
+port 5 n
+rlabel metal2 -400 1050 100 1100 1 VGND
+port 6 n
+rlabel metal2 -400 -750 100 -700 1 VGND
+port 6 n
+rlabel metal2 1650 -750 2150 -700 1 VDD3v3
+port 5 n
+<< end >>
diff --git a/xschem/analogue_mux_tb.spice b/xschem/analogue_mux_tb.spice
index bf14006..e59b89b 100644
--- a/xschem/analogue_mux_tb.spice
+++ b/xschem/analogue_mux_tb.spice
@@ -90,12 +90,12 @@
 *.ipin VIN
 *.ipin !EN
 *.opin VOUT
-XM2 VOUT !EN VIN VDD3v3 sky130_fd_pr__pfet_g5v0d10v5 L=0.5 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
+XM2 VOUT !EN VIN VDD3v3 sky130_fd_pr__pfet_g5v0d10v5 L=0.5 W=7 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
 + as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)'
-+ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=15 m=15 
-XM1 VIN EN VOUT VGND sky130_fd_pr__nfet_03v3_nvt L=0.5 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=2 m=2 
+XM1 VIN EN VOUT VGND sky130_fd_pr__nfet_03v3_nvt 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=10 m=10 
++ sa=0 sb=0 sd=0 mult=2 m=2 
 .ends
 
 .GLOBAL GND
diff --git a/xschem/analogue_switch.sch b/xschem/analogue_switch.sch
index e7775e9..ed3e32d 100644
--- a/xschem/analogue_switch.sch
+++ b/xschem/analogue_switch.sch
@@ -21,9 +21,9 @@
 N 1700 -1060 1700 -1020 { lab=VOUT}
 C {sky130_fd_pr/pfet_g5v0d10v5.sym} 1820 -1110 0 0 {name=M2
 L=0.5
-W=1
+W=7
 nf=1
-mult=15
+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'" 
@@ -38,9 +38,9 @@
 C {devices/iopin.sym} 1900 -1110 0 0 {name=p2 lab=VDD3v3}
 C {sky130_fd_pr/nfet_03v3_nvt.sym} 1620 -1110 0 0 {name=M1
 L=0.5
-W=1
+W=10
 nf=1
-mult=10
+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'" 
diff --git a/xschem/analogue_switch.spice b/xschem/analogue_switch.spice
index fbbfa23..13566a0 100644
--- a/xschem/analogue_switch.spice
+++ b/xschem/analogue_switch.spice
@@ -5,12 +5,12 @@
 *.ipin VIN
 *.ipin !EN
 *.opin VOUT
-XM2 VOUT !EN VIN VDD3v3 sky130_fd_pr__pfet_g5v0d10v5 L=0.5 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
+XM2 VOUT !EN VIN VDD3v3 sky130_fd_pr__pfet_g5v0d10v5 L=0.5 W=7 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
 + as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)'
-+ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=15 m=15 
-XM1 VIN EN VOUT VGND sky130_fd_pr__nfet_03v3_nvt L=0.5 W=1 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' as='int((nf+2)/2) * W/nf * 0.29'
++ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=2 m=2 
+XM1 VIN EN VOUT VGND sky130_fd_pr__nfet_03v3_nvt 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=10 m=10 
++ sa=0 sb=0 sd=0 mult=2 m=2 
 **.ends
 ** flattened .save nodes
 .end