New asynchronous cells
diff --git a/cells/xschem/ASYNC1.sch b/cells/xschem/ASYNC1.sch
new file mode 100644
index 0000000..40a9822
--- /dev/null
+++ b/cells/xschem/ASYNC1.sch
@@ -0,0 +1,55 @@
+v {xschem version=3.0.0 file_version=1.2 }
+G {}
+K {}
+V {}
+S {}
+E {}
+N 290 180 400 180 {lab=VDD}
+N 400 180 520 180 {lab=VDD}
+N 430 150 430 180 {lab=VDD}
+N 290 300 290 340 {lab=cn}
+N 290 340 290 370 {lab=cn}
+N 290 340 430 340 {lab=cn}
+N 430 340 430 370 {lab=cn}
+N 400 240 520 240 {lab=#net1}
+N 430 240 430 280 {lab=#net1}
+N 620 180 620 240 {lab=VDD}
+N 520 180 620 180 {lab=VDD}
+N 430 340 580 340 {lab=cn}
+N 580 270 580 340 {lab=cn}
+N 580 340 580 410 {lab=cn}
+N 390 310 390 400 {lab=c}
+N 390 360 620 360 {lab=c}
+N 620 300 620 380 {lab=c}
+N 490 490 620 490 {lab=GND}
+N 400 490 490 490 {lab=GND}
+N 290 490 400 490 {lab=GND}
+N 400 430 430 430 {lab=#net2}
+N 430 430 490 430 {lab=#net2}
+N 620 440 620 490 {lab=GND}
+N 420 490 420 500 {lab=GND}
+N 250 340 290 340 {lab=cn}
+C {devices/nmos.sym} 270 400 0 0 {name=m1 model=enbsim3 m=1 w=1u l=0.18u}
+C {devices/pmos.sym} 270 210 0 0 {name=x1 model=epbsim3 m=1 w=2u l=0.18u nfing=1 srcefirst=1 del=10}
+C {devices/pmos.sym} 270 270 0 0 {name=x0 model=epbsim3 m=1 w=2u l=0.18u nfing=1 srcefirst=1 del=10}
+C {devices/pmos.sym} 380 210 0 0 {name=x2 model=epbsim3 m=1 w=2u l=0.18u nfing=1 srcefirst=1 del=10}
+C {devices/pmos.sym} 500 210 0 0 {name=x3 model=epbsim3 m=1 w=2u l=0.18u nfing=1 srcefirst=1 del=10}
+C {devices/pmos.sym} 410 310 0 0 {name=x4 model=epbsim3 m=1 w=2u l=0.18u nfing=1 srcefirst=1 del=10}
+C {devices/pmos.sym} 600 270 0 0 {name=x5 model=epbsim3 m=1 w=2u l=0.18u nfing=1 srcefirst=1 del=10}
+C {devices/nmos.sym} 410 400 0 0 {name=m0 model=enbsim3 m=1 w=1u l=0.18u}
+C {devices/nmos.sym} 270 460 0 0 {name=m2 model=enbsim3 m=1 w=1u l=0.18u}
+C {devices/nmos.sym} 380 460 0 0 {name=m3 model=enbsim3 m=1 w=1u l=0.18u}
+C {devices/nmos.sym} 470 460 0 0 {name=m4 model=enbsim3 m=1 w=1u l=0.18u}
+C {devices/nmos.sym} 600 410 0 0 {name=m5 model=enbsim3 m=1 w=1u l=0.18u}
+C {devices/gnd.sym} 420 500 0 0 {name=l1 lab=GND}
+C {devices/vdd.sym} 430 150 0 0 {name=l0 lab=VDD}
+C {devices/lab_pin.sym} 250 210 0 0 {name=l2 sig_type=std_logic lab=A}
+C {devices/lab_pin.sym} 250 270 0 0 {name=l3 sig_type=std_logic lab=B}
+C {devices/lab_pin.sym} 360 210 0 0 {name=l4 sig_type=std_logic lab=A}
+C {devices/lab_pin.sym} 480 210 0 0 {name=l5 sig_type=std_logic lab=B}
+C {devices/lab_pin.sym} 620 330 0 0 {name=l6 sig_type=std_logic lab=c}
+C {devices/lab_pin.sym} 250 340 0 0 {name=l7 sig_type=std_logic lab=cn}
+C {devices/lab_pin.sym} 250 400 0 0 {name=l8 sig_type=std_logic lab=B}
+C {devices/lab_pin.sym} 250 460 0 0 {name=l9 sig_type=std_logic lab=A}
+C {devices/lab_pin.sym} 360 460 0 0 {name=l10 sig_type=std_logic lab=B}
+C {devices/lab_pin.sym} 450 460 0 0 {name=l11 sig_type=std_logic lab=A}
diff --git a/cells/xschem/ASYNC2.sch b/cells/xschem/ASYNC2.sch
new file mode 100644
index 0000000..003ee4a
--- /dev/null
+++ b/cells/xschem/ASYNC2.sch
@@ -0,0 +1,154 @@
+v {xschem version=3.0.0 file_version=1.2 }
+G {}
+K {}
+V {}
+S {}
+E {}
+N 320 120 320 140 { lab=VDD}
+N 230 310 230 320 { lab=CN}
+N 190 310 230 310 { lab=CN}
+N 370 350 370 410 { lab=CN}
+N 330 440 330 460 { lab=GND}
+N 410 380 450 380 { lab=C}
+N 450 290 450 380 { lab=C}
+N 230 260 230 310 { lab=CN}
+N 340 200 340 310 { lab=CN}
+N 340 200 370 200 { lab=CN}
+N 320 140 370 140 { lab=VDD}
+N 410 170 410 230 { lab=C}
+N 410 230 450 230 { lab=C}
+N 450 230 450 290 { lab=C}
+N 450 290 500 290 { lab=C}
+N 340 350 370 350 { lab=CN}
+N 340 310 340 350 { lab=CN}
+N 230 140 320 140 { lab=VDD}
+N 230 310 340 310 { lab=CN}
+N 230 440 330 440 { lab=GND}
+N 330 440 410 440 { lab=GND}
+C {devices/vdd.sym} 320 120 0 0 {name=l1 lab=VDD}
+C {devices/gnd.sym} 330 460 0 0 {name=l2 lab=GND}
+C {devices/gnd.sym} 370 260 0 0 {name=l3 lab=GND}
+C {devices/vdd.sym} 410 320 0 0 {name=l4 lab=VDD}
+C {devices/ipin.sym} 190 170 0 0 {name=p1 lab=A}
+C {devices/ipin.sym} 190 230 0 0 {name=p2 lab=B}
+C {devices/ipin.sym} 190 350 0 0 {name=p3 lab=B}
+C {devices/ipin.sym} 190 410 0 0 {name=p4 lab=A}
+C {devices/opin.sym} 190 310 0 1 {name=p5 lab=CN}
+C {devices/opin.sym} 500 290 0 0 {name=p6 lab=C}
+C {sky130_fd_pr/nfet3_01v8.sym} 390 230 0 1 {name=M5
+L=0.15
+W=1
+body=GND
+nf=1
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet3_01v8.sym} 210 170 0 0 {name=M1
+L=0.15
+W=1
+body=VDD
+nf=1
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet3_01v8.sym} 210 230 0 0 {name=M6
+L=0.15
+W=1
+body=VDD
+nf=1
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet3_01v8.sym} 390 350 0 0 {name=M7
+L=0.15
+W=1
+body=VDD
+nf=1
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet3_01v8.sym} 390 170 0 1 {name=M8
+L=0.15
+W=1
+body=VDD
+nf=1
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet_01v8.sym} 210 350 0 0 {name=M2
+L=0.15
+W=1
+nf=1 
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet_01v8.sym} 210 410 0 0 {name=M3
+L=0.15
+W=1
+nf=1 
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet_01v8.sym} 390 410 0 0 {name=M4
+L=0.15
+W=1
+nf=1 
+mult=1
+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_01v8
+spiceprefix=X
+}
diff --git a/cells/xschem/ASYNC3.sch b/cells/xschem/ASYNC3.sch
new file mode 100644
index 0000000..665cd14
--- /dev/null
+++ b/cells/xschem/ASYNC3.sch
@@ -0,0 +1,221 @@
+v {xschem version=3.0.0 file_version=1.2 }
+G {}
+K {}
+V {}
+S {}
+E {}
+N 300 390 360 390 { lab=#net1}
+N 170 390 240 390 { lab=#net2}
+N 170 330 360 330 { lab=CN}
+N 360 330 450 330 { lab=CN}
+N 450 330 450 370 { lab=CN}
+N 170 450 170 470 { lab=GND}
+N 170 470 360 470 { lab=GND}
+N 360 450 360 470 { lab=GND}
+N 360 470 490 470 { lab=GND}
+N 490 400 490 470 { lab=GND}
+N 450 310 450 330 { lab=CN}
+N 170 270 230 270 { lab=#net3}
+N 290 270 360 270 { lab=#net4}
+N 170 190 360 190 { lab=VDD}
+N 360 190 490 190 { lab=VDD}
+N 490 210 490 280 { lab=VDD}
+N 100 330 170 330 { lab=CN}
+N 490 340 570 340 { lab=C}
+N 170 190 170 210 { lab=VDD}
+N 490 190 490 210 { lab=VDD}
+N 360 190 360 210 { lab=VDD}
+C {sky130_fd_pr/nfet3_01v8.sym} 150 360 0 0 {name=M1
+L=0.15
+W=1
+body=GND
+nf=1
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet3_01v8.sym} 150 420 0 0 {name=M2
+L=0.15
+W=1
+body=GND
+nf=1
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet3_01v8.sym} 380 360 0 1 {name=M3
+L=0.15
+W=1
+body=GND
+nf=1
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet3_01v8.sym} 470 370 0 0 {name=M4
+L=0.15
+W=1
+body=GND
+nf=1
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet3_01v8.sym} 380 420 0 1 {name=M5
+L=0.15
+W=1
+body=GND
+nf=1
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/nfet3_01v8.sym} 270 410 3 0 {name=M6
+L=0.15
+W=1
+body=GND
+nf=1
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet3_01v8.sym} 150 300 0 0 {name=M7
+L=0.15
+W=1
+body=VDD
+nf=1
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet3_01v8.sym} 150 240 0 0 {name=M8
+L=0.15
+W=1
+body=VDD
+nf=1
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet3_01v8.sym} 380 240 0 1 {name=M9
+L=0.15
+W=1
+body=VDD
+nf=1
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet3_01v8.sym} 380 300 0 1 {name=M10
+L=0.15
+W=1
+body=VDD
+nf=1
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet3_01v8.sym} 470 310 0 0 {name=M11
+L=0.15
+W=1
+body=VDD
+nf=1
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {sky130_fd_pr/pfet3_01v8.sym} 260 250 3 1 {name=M12
+L=0.15
+W=1
+body=VDD
+nf=1
+mult=1
+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_01v8
+spiceprefix=X
+}
+C {devices/vdd.sym} 260 190 0 0 {name=l1 lab=VDD}
+C {devices/gnd.sym} 260 470 0 0 {name=l2 lab=GND}
+C {devices/ipin.sym} 130 240 0 0 {name=p1 lab=A}
+C {devices/ipin.sym} 130 300 0 0 {name=p2 lab=B}
+C {devices/ipin.sym} 130 360 0 0 {name=p3 lab=B}
+C {devices/ipin.sym} 130 420 0 0 {name=p4 lab=A}
+C {devices/ipin.sym} 400 240 2 0 {name=p5 lab=B}
+C {devices/ipin.sym} 400 300 2 0 {name=p6 lab=A}
+C {devices/ipin.sym} 400 360 2 0 {name=p7 lab=A}
+C {devices/ipin.sym} 400 420 2 0 {name=p8 lab=B}
+C {devices/iopin.sym} 260 230 3 0 {name=p9 lab=C}
+C {devices/iopin.sym} 270 430 1 0 {name=p10 lab=C}
+C {devices/iopin.sym} 100 330 2 0 {name=p11 lab=CN}
+C {devices/iopin.sym} 570 340 0 0 {name=p12 lab=C}