Split verilog
diff --git a/verilog/s8_osu130_addfx1.v b/verilog/s8_osu130_addfx1.v
new file mode 100644
index 0000000..5b8a214
--- /dev/null
+++ b/verilog/s8_osu130_addfx1.v
@@ -0,0 +1,74 @@
+// type: ADDF 
+`timescale 1ns/10ps
+`celldefine
+module ADDFX1 (CO, S, A, B, CI);
+	output CO, S;
+	input A, B, CI;
+
+	// Function
+	wire A__bar, B__bar, CI__bar;
+	wire int_fwire_0, int_fwire_1, int_fwire_2;
+	wire int_fwire_3, int_fwire_4, int_fwire_5;
+	wire int_fwire_6;
+
+	and (int_fwire_0, B, CI);
+	and (int_fwire_1, A, CI);
+	and (int_fwire_2, A, B);
+	or (CO, int_fwire_2, int_fwire_1, int_fwire_0);
+	not (B__bar, B);
+	not (A__bar, A);
+	and (int_fwire_3, A__bar, B__bar, CI);
+	not (CI__bar, CI);
+	and (int_fwire_4, A__bar, B, CI__bar);
+	and (int_fwire_5, A, B__bar, CI__bar);
+	and (int_fwire_6, A, B, CI);
+	or (S, int_fwire_6, int_fwire_5, int_fwire_4, int_fwire_3);
+
+	// Timing
+	specify
+		if ((B & ~CI))
+			(A => CO) = 0;
+		if ((~B & CI))
+			(A => CO) = 0;
+		ifnone (A => CO) = 0;
+		if ((A & ~CI))
+			(B => CO) = 0;
+		if ((~A & CI))
+			(B => CO) = 0;
+		ifnone (B => CO) = 0;
+		if ((A & ~B))
+			(CI => CO) = 0;
+		if ((~A & B))
+			(CI => CO) = 0;
+		ifnone (CI => CO) = 0;
+		if ((B & CI))
+			(A => S) = 0;
+		if ((~B & ~CI))
+			(A => S) = 0;
+		ifnone (A => S) = 0;
+		if ((B & ~CI))
+			(A => S) = 0;
+		if ((~B & CI))
+			(A => S) = 0;
+		if ((A & CI))
+			(B => S) = 0;
+		if ((~A & ~CI))
+			(B => S) = 0;
+		ifnone (B => S) = 0;
+		if ((A & ~CI))
+			(B => S) = 0;
+		if ((~A & CI))
+			(B => S) = 0;
+		if ((A & B))
+			(CI => S) = 0;
+		if ((~A & ~B))
+			(CI => S) = 0;
+		ifnone (CI => S) = 0;
+		if ((A & ~B))
+			(CI => S) = 0;
+		if ((~A & B))
+			(CI => S) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_addfxl.v b/verilog/s8_osu130_addfxl.v
new file mode 100644
index 0000000..05dcac7
--- /dev/null
+++ b/verilog/s8_osu130_addfxl.v
@@ -0,0 +1,51 @@
+// type: ADDF 
+`timescale 1ns/10ps
+`celldefine
+module ADDFXL (CO, S, A, B, CI);
+	output CO, S;
+	input A, B, CI;
+
+	// Function
+	or (CO, B, CI);
+	buf (S, 1'b1);
+
+	// Timing
+	specify
+		if ((B & ~CI))
+			(posedge A => (CO+:1'b1)) = 0;
+		if ((~B & CI))
+			(posedge A => (CO+:1'b1)) = 0;
+		ifnone (posedge A => (CO+:1'b1)) = 0;
+		if ((A & ~CI))
+			(B => CO) = 0;
+		if ((~A & CI))
+			(posedge B => (CO+:1'b1)) = 0;
+		if ((~A & ~CI))
+			(negedge B => (CO+:1'b0)) = 0;
+		ifnone (B => CO) = 0;
+		if ((A & ~B))
+			(CI => CO) = 0;
+		if ((~A & B))
+			(posedge CI => (CO+:1'b1)) = 0;
+		if ((~A & ~B))
+			(negedge CI => (CO+:1'b0)) = 0;
+		ifnone (CI => CO) = 0;
+		if ((B & CI))
+			(posedge A => (S+:1'b1)) = 0;
+		if ((~B & ~CI))
+			(posedge A => (S+:1'b1)) = 0;
+		ifnone (posedge A => (S+:1'b1)) = 0;
+		if ((A & CI))
+			(posedge B => (S+:1'b1)) = 0;
+		if ((~A & ~CI))
+			(posedge B => (S+:1'b1)) = 0;
+		ifnone (posedge B => (S+:1'b1)) = 0;
+		if ((A & B))
+			(posedge CI => (S+:1'b1)) = 0;
+		if ((~A & ~B))
+			(posedge CI => (S+:1'b1)) = 0;
+		ifnone (posedge CI => (S+:1'b1)) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_addhx1.v b/verilog/s8_osu130_addhx1.v
new file mode 100644
index 0000000..f9f0c26
--- /dev/null
+++ b/verilog/s8_osu130_addhx1.v
@@ -0,0 +1,27 @@
+// type: ADDH 
+`timescale 1ns/10ps
+`celldefine
+module ADDHX1 (CO, S, A, B);
+	output CO, S;
+	input A, B;
+
+	// Function
+	wire A__bar, B__bar;
+
+	and (CO, A, B);
+	not (B__bar, B);
+	not (A__bar, A);
+	or (S, A__bar, B__bar);
+
+	// Timing
+	specify
+		(A => CO) = 0;
+		(B => CO) = 0;
+		ifnone (posedge A => (S+:1'b1)) = 0;
+		(A => S) = 0;
+		ifnone (posedge B => (S+:1'b1)) = 0;
+		(B => S) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_addhxl.v b/verilog/s8_osu130_addhxl.v
new file mode 100644
index 0000000..4844c70
--- /dev/null
+++ b/verilog/s8_osu130_addhxl.v
@@ -0,0 +1,34 @@
+// type: ADDH 
+`timescale 1ns/10ps
+`celldefine
+module ADDHXL (CO, S, A, B);
+	output CO, S;
+	input A, B;
+
+	// Function
+	wire A__bar, B__bar, int_fwire_0;
+	wire int_fwire_1;
+
+	and (CO, A, B);
+	not (A__bar, A);
+	and (int_fwire_0, A__bar, B);
+	not (B__bar, B);
+	and (int_fwire_1, A, B__bar);
+	or (S, int_fwire_1, int_fwire_0);
+
+	// Timing
+	specify
+		(A => CO) = 0;
+		(B => CO) = 0;
+		if (~B)
+			(A => S) = 0;
+		if (B)
+			(A => S) = 0;
+		if (~A)
+			(B => S) = 0;
+		if (A)
+			(B => S) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_and2x1.v b/verilog/s8_osu130_and2x1.v
new file mode 100644
index 0000000..85562b5
--- /dev/null
+++ b/verilog/s8_osu130_and2x1.v
@@ -0,0 +1,18 @@
+// type: AND2 
+`timescale 1ns/10ps
+`celldefine
+module AND2X1 (Y, A, B);
+	output Y;
+	input A, B;
+
+	// Function
+	and (Y, A, B);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		(B => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_and2x2.v b/verilog/s8_osu130_and2x2.v
new file mode 100644
index 0000000..5ee348a
--- /dev/null
+++ b/verilog/s8_osu130_and2x2.v
@@ -0,0 +1,18 @@
+// type: AND2 
+`timescale 1ns/10ps
+`celldefine
+module AND2X2 (Y, A, B);
+	output Y;
+	input A, B;
+
+	// Function
+	and (Y, A, B);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		(B => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_and2x4.v b/verilog/s8_osu130_and2x4.v
new file mode 100644
index 0000000..38b6682
--- /dev/null
+++ b/verilog/s8_osu130_and2x4.v
@@ -0,0 +1,18 @@
+// type: AND2 
+`timescale 1ns/10ps
+`celldefine
+module AND2X4 (Y, A, B);
+	output Y;
+	input A, B;
+
+	// Function
+	and (Y, A, B);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		(B => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_and2x8.v b/verilog/s8_osu130_and2x8.v
new file mode 100644
index 0000000..ed2e119
--- /dev/null
+++ b/verilog/s8_osu130_and2x8.v
@@ -0,0 +1,18 @@
+// type: AND2 
+`timescale 1ns/10ps
+`celldefine
+module AND2X8 (Y, A, B);
+	output Y;
+	input A, B;
+
+	// Function
+	and (Y, A, B);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		(B => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_and2xl.v b/verilog/s8_osu130_and2xl.v
new file mode 100644
index 0000000..201e4bd
--- /dev/null
+++ b/verilog/s8_osu130_and2xl.v
@@ -0,0 +1,18 @@
+// type: AND2 
+`timescale 1ns/10ps
+`celldefine
+module AND2XL (Y, A, B);
+	output Y;
+	input A, B;
+
+	// Function
+	and (Y, A, B);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		(B => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_and3xl.v b/verilog/s8_osu130_and3xl.v
new file mode 100644
index 0000000..86f303e
--- /dev/null
+++ b/verilog/s8_osu130_and3xl.v
@@ -0,0 +1,24 @@
+// type: AND3 
+`timescale 1ns/10ps
+`celldefine
+module AND3XL (Y, A, B, C);
+	output Y;
+	input A, B, C;
+
+	// Function
+	wire A__bar, B__bar, C__bar;
+
+	not (C__bar, C);
+	not (B__bar, B);
+	not (A__bar, A);
+	or (Y, A__bar, B__bar, C__bar);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		(B => Y) = 0;
+		(C => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_ant.v b/verilog/s8_osu130_ant.v
new file mode 100644
index 0000000..472073b
--- /dev/null
+++ b/verilog/s8_osu130_ant.v
@@ -0,0 +1,11 @@
+// type: ANT 
+`timescale 1ns/10ps
+`celldefine
+module ANT (A);
+	input A;
+	// Timing
+	specify
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_aoi21xl.v b/verilog/s8_osu130_aoi21xl.v
new file mode 100644
index 0000000..9395a2f
--- /dev/null
+++ b/verilog/s8_osu130_aoi21xl.v
@@ -0,0 +1,33 @@
+// type: AOI21 
+`timescale 1ns/10ps
+`celldefine
+module AOI21XL (Y, A0, A1, B0);
+	output Y;
+	input A0, A1, B0;
+
+	// Function
+	wire A0__bar, A1__bar, B0__bar;
+	wire int_fwire_0, int_fwire_1;
+
+	not (B0__bar, B0);
+	not (A1__bar, A1);
+	and (int_fwire_0, A1__bar, B0__bar);
+	not (A0__bar, A0);
+	and (int_fwire_1, A0__bar, B0__bar);
+	or (Y, int_fwire_1, int_fwire_0);
+
+	// Timing
+	specify
+		(A0 => Y) = 0;
+		(A1 => Y) = 0;
+		if ((A0 & ~A1))
+			(B0 => Y) = 0;
+		if ((~A0 & A1))
+			(B0 => Y) = 0;
+		if ((~A0 & ~A1))
+			(B0 => Y) = 0;
+		ifnone (B0 => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_bufx1.v b/verilog/s8_osu130_bufx1.v
new file mode 100644
index 0000000..0e39291
--- /dev/null
+++ b/verilog/s8_osu130_bufx1.v
@@ -0,0 +1,17 @@
+// type: BUF 
+`timescale 1ns/10ps
+`celldefine
+module BUFX1 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	buf (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_bufx2.v b/verilog/s8_osu130_bufx2.v
new file mode 100644
index 0000000..35126a6
--- /dev/null
+++ b/verilog/s8_osu130_bufx2.v
@@ -0,0 +1,17 @@
+// type: BUF 
+`timescale 1ns/10ps
+`celldefine
+module BUFX2 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	buf (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_bufx4.v b/verilog/s8_osu130_bufx4.v
new file mode 100644
index 0000000..31285b4
--- /dev/null
+++ b/verilog/s8_osu130_bufx4.v
@@ -0,0 +1,17 @@
+// type: BUF 
+`timescale 1ns/10ps
+`celldefine
+module BUFX4 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	buf (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_bufx6.v b/verilog/s8_osu130_bufx6.v
new file mode 100644
index 0000000..926c81b
--- /dev/null
+++ b/verilog/s8_osu130_bufx6.v
@@ -0,0 +1,17 @@
+// type: BUF 
+`timescale 1ns/10ps
+`celldefine
+module BUFX6 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	buf (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_bufx8.v b/verilog/s8_osu130_bufx8.v
new file mode 100644
index 0000000..d81c32f
--- /dev/null
+++ b/verilog/s8_osu130_bufx8.v
@@ -0,0 +1,17 @@
+// type: BUF 
+`timescale 1ns/10ps
+`celldefine
+module BUFX8 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	buf (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_bufxl.v b/verilog/s8_osu130_bufxl.v
new file mode 100644
index 0000000..6dde6e9
--- /dev/null
+++ b/verilog/s8_osu130_bufxl.v
@@ -0,0 +1,17 @@
+// type: BUF 
+`timescale 1ns/10ps
+`celldefine
+module BUFXL (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	buf (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_clkbufx1.v b/verilog/s8_osu130_clkbufx1.v
new file mode 100644
index 0000000..9550a02
--- /dev/null
+++ b/verilog/s8_osu130_clkbufx1.v
@@ -0,0 +1,17 @@
+// type: CLKBUF 
+`timescale 1ns/10ps
+`celldefine
+module CLKBUFX1 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	buf (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_clkinvx1.v b/verilog/s8_osu130_clkinvx1.v
new file mode 100644
index 0000000..c0fb04b
--- /dev/null
+++ b/verilog/s8_osu130_clkinvx1.v
@@ -0,0 +1,17 @@
+// type: CLKINV 
+`timescale 1ns/10ps
+`celldefine
+module CLKINVX1 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	not (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_clkinvx2.v b/verilog/s8_osu130_clkinvx2.v
new file mode 100644
index 0000000..9e48ff4
--- /dev/null
+++ b/verilog/s8_osu130_clkinvx2.v
@@ -0,0 +1,17 @@
+// type: CLKINV 
+`timescale 1ns/10ps
+`celldefine
+module CLKINVX2 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	not (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_clkinvx4.v b/verilog/s8_osu130_clkinvx4.v
new file mode 100644
index 0000000..6817a57
--- /dev/null
+++ b/verilog/s8_osu130_clkinvx4.v
@@ -0,0 +1,17 @@
+// type: CLKINV 
+`timescale 1ns/10ps
+`celldefine
+module CLKINVX4 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	not (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_dffnxl.v b/verilog/s8_osu130_dffnxl.v
new file mode 100644
index 0000000..5fedeef
--- /dev/null
+++ b/verilog/s8_osu130_dffnxl.v
@@ -0,0 +1,34 @@
+// type: DFFN 
+`timescale 1ns/10ps
+`celldefine
+module DFFNXL (Q, QN, D, CK);
+	output Q, QN;
+	input D, CK;
+	reg notifier;
+	wire delayed_D, delayed_CK;
+
+	// Function
+	wire int_fwire_clk, int_fwire_IQ, int_fwire_IQN;
+	wire xcr_0;
+
+	not (int_fwire_clk, delayed_CK);
+	altos_dff_err (xcr_0, int_fwire_clk, delayed_D);
+	altos_dff (int_fwire_IQ, notifier, int_fwire_clk, delayed_D, xcr_0);
+	buf (Q, int_fwire_IQ);
+	not (int_fwire_IQN, int_fwire_IQ);
+	buf (QN, int_fwire_IQN);
+
+	// Timing
+	specify
+		(negedge CK => (Q+:D)) = 0;
+		(negedge CK => (QN-:D)) = 0;
+		$setuphold (negedge CK, posedge D, 0, 0, notifier,,, delayed_CK, delayed_D);
+		$setuphold (negedge CK, negedge D, 0, 0, notifier,,, delayed_CK, delayed_D);
+		$width (posedge CK &&& D, 0, 0, notifier);
+		$width (negedge CK &&& D, 0, 0, notifier);
+		$width (posedge CK &&& ~D, 0, 0, notifier);
+		$width (negedge CK &&& ~D, 0, 0, notifier);
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_dffrxl.v b/verilog/s8_osu130_dffrxl.v
new file mode 100644
index 0000000..230c134
--- /dev/null
+++ b/verilog/s8_osu130_dffrxl.v
@@ -0,0 +1,66 @@
+// type: DFFR 
+`timescale 1ns/10ps
+`celldefine
+module DFFRXL (Q, QN, D, RN, CK);
+	output Q, QN;
+	input D, RN, CK;
+	reg notifier;
+	wire delayed_D, delayed_CK;
+
+	// Function
+	wire int_fwire_IQ, int_fwire_IQN, int_fwire_r;
+	wire xcr_0;
+
+	not (int_fwire_r, RN);
+	altos_dff_r_err (xcr_0, delayed_CK, delayed_D, int_fwire_r);
+	altos_dff_r (int_fwire_IQ, notifier, delayed_CK, delayed_D, int_fwire_r, xcr_0);
+	buf (Q, int_fwire_IQ);
+	not (int_fwire_IQN, int_fwire_IQ);
+	buf (QN, int_fwire_IQN);
+
+	// Timing
+
+	// Additional timing wires
+	wire adacond0, adacond1, D__bar;
+
+
+	// Additional timing gates
+	and (adacond0, D, RN);
+	not (D__bar, D);
+	and (adacond1, D__bar, RN);
+
+	specify
+		if (CK)
+			(negedge RN => (Q+:1'b0)) = 0;
+		if ((~CK & D))
+			(negedge RN => (Q+:1'b0)) = 0;
+		if ((~CK & ~D))
+			(negedge RN => (Q+:1'b0)) = 0;
+		ifnone (negedge RN => (Q+:1'b0)) = 0;
+		(posedge CK => (Q+:D)) = 0;
+		if (CK)
+			(negedge RN => (QN-:1'b0)) = 0;
+		if ((~CK & D))
+			(negedge RN => (QN-:1'b0)) = 0;
+		if ((~CK & ~D))
+			(negedge RN => (QN-:1'b0)) = 0;
+		ifnone (negedge RN => (QN-:1'b0)) = 0;
+		(posedge CK => (QN-:D)) = 0;
+		$setuphold (posedge CK &&& RN, posedge D &&& RN, 0, 0, notifier,,, delayed_CK, delayed_D);
+		$setuphold (posedge CK &&& RN, negedge D &&& RN, 0, 0, notifier,,, delayed_CK, delayed_D);
+		$setuphold (posedge CK, posedge D, 0, 0, notifier,,, delayed_CK, delayed_D);
+		$setuphold (posedge CK, negedge D, 0, 0, notifier,,, delayed_CK, delayed_D);
+		$recovery (posedge RN &&& D, posedge CK &&& D, 0, notifier);
+		$recovery (posedge RN, posedge CK, 0, notifier);
+		$hold (posedge CK &&& D, posedge RN &&& D, 0, notifier);
+		$hold (posedge CK, posedge RN, 0, notifier);
+		$width (negedge RN &&& CK, 0, 0, notifier);
+		$width (negedge RN &&& ~CK, 0, 0, notifier);
+		$width (posedge CK &&& adacond0, 0, 0, notifier);
+		$width (negedge CK &&& adacond0, 0, 0, notifier);
+		$width (posedge CK &&& adacond1, 0, 0, notifier);
+		$width (negedge CK &&& adacond1, 0, 0, notifier);
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_dffsxl.v b/verilog/s8_osu130_dffsxl.v
new file mode 100644
index 0000000..45f9995
--- /dev/null
+++ b/verilog/s8_osu130_dffsxl.v
@@ -0,0 +1,66 @@
+// type: DFFS 
+`timescale 1ns/10ps
+`celldefine
+module DFFSXL (Q, QN, D, SN, CK);
+	output Q, QN;
+	input D, SN, CK;
+	reg notifier;
+	wire delayed_D, delayed_CK;
+
+	// Function
+	wire int_fwire_IQ, int_fwire_IQN, int_fwire_s;
+	wire xcr_0;
+
+	not (int_fwire_s, SN);
+	altos_dff_s_err (xcr_0, delayed_CK, delayed_D, int_fwire_s);
+	altos_dff_s (int_fwire_IQ, notifier, delayed_CK, delayed_D, int_fwire_s, xcr_0);
+	buf (Q, int_fwire_IQ);
+	not (int_fwire_IQN, int_fwire_IQ);
+	buf (QN, int_fwire_IQN);
+
+	// Timing
+
+	// Additional timing wires
+	wire adacond0, adacond1, D__bar;
+
+
+	// Additional timing gates
+	and (adacond0, D, SN);
+	not (D__bar, D);
+	and (adacond1, D__bar, SN);
+
+	specify
+		if (CK)
+			(negedge SN => (Q+:1'b1)) = 0;
+		if ((~CK & D))
+			(negedge SN => (Q+:1'b1)) = 0;
+		if ((~CK & ~D))
+			(negedge SN => (Q+:1'b1)) = 0;
+		ifnone (negedge SN => (Q+:1'b1)) = 0;
+		(posedge CK => (Q+:D)) = 0;
+		if (CK)
+			(negedge SN => (QN-:1'b1)) = 0;
+		if ((~CK & D))
+			(negedge SN => (QN-:1'b1)) = 0;
+		if ((~CK & ~D))
+			(negedge SN => (QN-:1'b1)) = 0;
+		ifnone (negedge SN => (QN-:1'b1)) = 0;
+		(posedge CK => (QN-:D)) = 0;
+		$setuphold (posedge CK &&& SN, posedge D &&& SN, 0, 0, notifier,,, delayed_CK, delayed_D);
+		$setuphold (posedge CK &&& SN, negedge D &&& SN, 0, 0, notifier,,, delayed_CK, delayed_D);
+		$setuphold (posedge CK, posedge D, 0, 0, notifier,,, delayed_CK, delayed_D);
+		$setuphold (posedge CK, negedge D, 0, 0, notifier,,, delayed_CK, delayed_D);
+		$recovery (posedge SN &&& ~D, posedge CK &&& ~D, 0, notifier);
+		$recovery (posedge SN, posedge CK, 0, notifier);
+		$hold (posedge CK &&& ~D, posedge SN &&& ~D, 0, notifier);
+		$hold (posedge CK, posedge SN, 0, notifier);
+		$width (negedge SN &&& CK, 0, 0, notifier);
+		$width (negedge SN &&& ~CK, 0, 0, notifier);
+		$width (posedge CK &&& adacond0, 0, 0, notifier);
+		$width (negedge CK &&& adacond0, 0, 0, notifier);
+		$width (posedge CK &&& adacond1, 0, 0, notifier);
+		$width (negedge CK &&& adacond1, 0, 0, notifier);
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_dffxl.v b/verilog/s8_osu130_dffxl.v
new file mode 100644
index 0000000..01db9d7
--- /dev/null
+++ b/verilog/s8_osu130_dffxl.v
@@ -0,0 +1,34 @@
+// type: DFF 
+`timescale 1ns/10ps
+`celldefine
+module DFFXL (Q, QN, D, CK);
+	output Q, QN;
+	input D, CK;
+	reg notifier;
+	wire delayed_D, delayed_CK;
+
+	// Function
+	wire delayed_D__bar, int_fwire_0, int_fwire_d;
+	wire int_fwire_IQ, int_fwire_IQN, xcr_0;
+
+	not (delayed_D__bar, delayed_D);
+	and (int_fwire_0, delayed_D__bar, int_fwire_IQ);
+	or (int_fwire_d, delayed_D, int_fwire_0);
+	altos_dff_err (xcr_0, delayed_CK, int_fwire_d);
+	altos_dff (int_fwire_IQ, notifier, delayed_CK, int_fwire_d, xcr_0);
+	buf (Q, int_fwire_IQ);
+	not (int_fwire_IQN, int_fwire_IQ);
+	buf (QN, int_fwire_IQN);
+
+	// Timing
+	specify
+		(posedge CK => (Q+:((D) || (!D && int_fwire_IQ)))) = 0;
+		(posedge CK => (QN-:((D) || (!D && int_fwire_IQ)))) = 0;
+		$setuphold (posedge CK, posedge D, 0, 0, notifier,,, delayed_CK, delayed_D);
+		$setuphold (posedge CK, negedge D, 0, 0, notifier,,, delayed_CK, delayed_D);
+		$width (posedge CK &&& D, 0, 0, notifier);
+		$width (negedge CK &&& D, 0, 0, notifier);
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_dly1.v b/verilog/s8_osu130_dly1.v
new file mode 100644
index 0000000..805e87b
--- /dev/null
+++ b/verilog/s8_osu130_dly1.v
@@ -0,0 +1,17 @@
+// type: DLY1 
+`timescale 1ns/10ps
+`celldefine
+module DLY1 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	buf (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_dly2.v b/verilog/s8_osu130_dly2.v
new file mode 100644
index 0000000..dea6e9f
--- /dev/null
+++ b/verilog/s8_osu130_dly2.v
@@ -0,0 +1,17 @@
+// type: DLY2 
+`timescale 1ns/10ps
+`celldefine
+module DLY2 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	buf (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_dly3.v b/verilog/s8_osu130_dly3.v
new file mode 100644
index 0000000..c9b2116
--- /dev/null
+++ b/verilog/s8_osu130_dly3.v
@@ -0,0 +1,17 @@
+// type: DLY3 
+`timescale 1ns/10ps
+`celldefine
+module DLY3 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	buf (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_dly4.v b/verilog/s8_osu130_dly4.v
new file mode 100644
index 0000000..a703499
--- /dev/null
+++ b/verilog/s8_osu130_dly4.v
@@ -0,0 +1,17 @@
+// type: DLY4 
+`timescale 1ns/10ps
+`celldefine
+module DLY4 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	buf (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_invx1.v b/verilog/s8_osu130_invx1.v
new file mode 100644
index 0000000..16b0250
--- /dev/null
+++ b/verilog/s8_osu130_invx1.v
@@ -0,0 +1,17 @@
+// type: INV 
+`timescale 1ns/10ps
+`celldefine
+module INVX1 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	not (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_invx10.v b/verilog/s8_osu130_invx10.v
new file mode 100644
index 0000000..4dd24fc
--- /dev/null
+++ b/verilog/s8_osu130_invx10.v
@@ -0,0 +1,17 @@
+// type: INV 
+`timescale 1ns/10ps
+`celldefine
+module INVX10 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	not (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_invx2.v b/verilog/s8_osu130_invx2.v
new file mode 100644
index 0000000..e259cd7
--- /dev/null
+++ b/verilog/s8_osu130_invx2.v
@@ -0,0 +1,17 @@
+// type: INV 
+`timescale 1ns/10ps
+`celldefine
+module INVX2 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	not (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_invx3.v b/verilog/s8_osu130_invx3.v
new file mode 100644
index 0000000..34cd10d
--- /dev/null
+++ b/verilog/s8_osu130_invx3.v
@@ -0,0 +1,17 @@
+// type: INV 
+`timescale 1ns/10ps
+`celldefine
+module INVX3 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	not (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_invx4.v b/verilog/s8_osu130_invx4.v
new file mode 100644
index 0000000..ec6995a
--- /dev/null
+++ b/verilog/s8_osu130_invx4.v
@@ -0,0 +1,17 @@
+// type: INV 
+`timescale 1ns/10ps
+`celldefine
+module INVX4 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	not (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_invx6.v b/verilog/s8_osu130_invx6.v
new file mode 100644
index 0000000..7f3da23
--- /dev/null
+++ b/verilog/s8_osu130_invx6.v
@@ -0,0 +1,17 @@
+// type: INV 
+`timescale 1ns/10ps
+`celldefine
+module INVX6 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	not (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_invx8.v b/verilog/s8_osu130_invx8.v
new file mode 100644
index 0000000..f5cf36a
--- /dev/null
+++ b/verilog/s8_osu130_invx8.v
@@ -0,0 +1,17 @@
+// type: INV 
+`timescale 1ns/10ps
+`celldefine
+module INVX8 (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	not (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_invxl.v b/verilog/s8_osu130_invxl.v
new file mode 100644
index 0000000..1a3084e
--- /dev/null
+++ b/verilog/s8_osu130_invxl.v
@@ -0,0 +1,17 @@
+// type: INV 
+`timescale 1ns/10ps
+`celldefine
+module INVXL (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	not (Y, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_nand2x1.v b/verilog/s8_osu130_nand2x1.v
new file mode 100644
index 0000000..a44c3a3
--- /dev/null
+++ b/verilog/s8_osu130_nand2x1.v
@@ -0,0 +1,22 @@
+// type: NAND2 
+`timescale 1ns/10ps
+`celldefine
+module NAND2X1 (Y, A, B);
+	output Y;
+	input A, B;
+
+	// Function
+	wire A__bar, B__bar;
+
+	not (B__bar, B);
+	not (A__bar, A);
+	or (Y, A__bar, B__bar);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		(B => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_nand2xl.v b/verilog/s8_osu130_nand2xl.v
new file mode 100644
index 0000000..7e9af58
--- /dev/null
+++ b/verilog/s8_osu130_nand2xl.v
@@ -0,0 +1,22 @@
+// type: NAND2 
+`timescale 1ns/10ps
+`celldefine
+module NAND2XL (Y, A, B);
+	output Y;
+	input A, B;
+
+	// Function
+	wire A__bar, B__bar;
+
+	not (B__bar, B);
+	not (A__bar, A);
+	or (Y, A__bar, B__bar);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		(B => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_nand3x1.v b/verilog/s8_osu130_nand3x1.v
new file mode 100644
index 0000000..f0f2dbc
--- /dev/null
+++ b/verilog/s8_osu130_nand3x1.v
@@ -0,0 +1,24 @@
+// type: NAND3 
+`timescale 1ns/10ps
+`celldefine
+module NAND3X1 (Y, A, B, C);
+	output Y;
+	input A, B, C;
+
+	// Function
+	wire A__bar, B__bar, C__bar;
+
+	not (C__bar, C);
+	not (B__bar, B);
+	not (A__bar, A);
+	or (Y, A__bar, B__bar, C__bar);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		(B => Y) = 0;
+		(C => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_nand3xl.v b/verilog/s8_osu130_nand3xl.v
new file mode 100644
index 0000000..f221c67
--- /dev/null
+++ b/verilog/s8_osu130_nand3xl.v
@@ -0,0 +1,24 @@
+// type: NAND3 
+`timescale 1ns/10ps
+`celldefine
+module NAND3XL (Y, A, B, C);
+	output Y;
+	input A, B, C;
+
+	// Function
+	wire A__bar, B__bar, C__bar;
+
+	not (C__bar, C);
+	not (B__bar, B);
+	not (A__bar, A);
+	or (Y, A__bar, B__bar, C__bar);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		(B => Y) = 0;
+		(C => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_nor2x1.v b/verilog/s8_osu130_nor2x1.v
new file mode 100644
index 0000000..836dbf6
--- /dev/null
+++ b/verilog/s8_osu130_nor2x1.v
@@ -0,0 +1,22 @@
+// type: NOR2 
+`timescale 1ns/10ps
+`celldefine
+module NOR2X1 (Y, A, B);
+	output Y;
+	input A, B;
+
+	// Function
+	wire A__bar, B__bar;
+
+	not (B__bar, B);
+	not (A__bar, A);
+	and (Y, A__bar, B__bar);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		(B => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_nor2xl.v b/verilog/s8_osu130_nor2xl.v
new file mode 100644
index 0000000..6469c1a
--- /dev/null
+++ b/verilog/s8_osu130_nor2xl.v
@@ -0,0 +1,22 @@
+// type: NOR2 
+`timescale 1ns/10ps
+`celldefine
+module NOR2XL (Y, A, B);
+	output Y;
+	input A, B;
+
+	// Function
+	wire A__bar, B__bar;
+
+	not (B__bar, B);
+	not (A__bar, A);
+	and (Y, A__bar, B__bar);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		(B => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_oai21xl.v b/verilog/s8_osu130_oai21xl.v
new file mode 100644
index 0000000..5a6a646
--- /dev/null
+++ b/verilog/s8_osu130_oai21xl.v
@@ -0,0 +1,32 @@
+// type: OAI21 
+`timescale 1ns/10ps
+`celldefine
+module OAI21XL (Y, A0, A1, B0);
+	output Y;
+	input A0, A1, B0;
+
+	// Function
+	wire A0__bar, A1__bar, B0__bar;
+	wire int_fwire_0;
+
+	not (B0__bar, B0);
+	not (A1__bar, A1);
+	not (A0__bar, A0);
+	and (int_fwire_0, A0__bar, A1__bar);
+	or (Y, int_fwire_0, B0__bar);
+
+	// Timing
+	specify
+		(A0 => Y) = 0;
+		(A1 => Y) = 0;
+		if ((A0 & A1))
+			(B0 => Y) = 0;
+		if ((A0 & ~A1))
+			(B0 => Y) = 0;
+		if ((~A0 & A1))
+			(B0 => Y) = 0;
+		ifnone (B0 => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_or2x1.v b/verilog/s8_osu130_or2x1.v
new file mode 100644
index 0000000..75d0287
--- /dev/null
+++ b/verilog/s8_osu130_or2x1.v
@@ -0,0 +1,18 @@
+// type: OR2 
+`timescale 1ns/10ps
+`celldefine
+module OR2X1 (Y, A, B);
+	output Y;
+	input A, B;
+
+	// Function
+	or (Y, A, B);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		(B => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_or2x2.v b/verilog/s8_osu130_or2x2.v
new file mode 100644
index 0000000..0a86467
--- /dev/null
+++ b/verilog/s8_osu130_or2x2.v
@@ -0,0 +1,18 @@
+// type: OR2 
+`timescale 1ns/10ps
+`celldefine
+module OR2X2 (Y, A, B);
+	output Y;
+	input A, B;
+
+	// Function
+	buf (Y, 1'b1);
+
+	// Timing
+	specify
+		ifnone (posedge A => (Y+:1'b1)) = 0;
+		ifnone (posedge B => (Y+:1'b1)) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_or2x4.v b/verilog/s8_osu130_or2x4.v
new file mode 100644
index 0000000..92bbe0e
--- /dev/null
+++ b/verilog/s8_osu130_or2x4.v
@@ -0,0 +1,18 @@
+// type: OR2 
+`timescale 1ns/10ps
+`celldefine
+module OR2X4 (Y, A, B);
+	output Y;
+	input A, B;
+
+	// Function
+	or (Y, A, B);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		(B => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_or2xl.v b/verilog/s8_osu130_or2xl.v
new file mode 100644
index 0000000..524c5b0
--- /dev/null
+++ b/verilog/s8_osu130_or2xl.v
@@ -0,0 +1,18 @@
+// type: OR2 
+`timescale 1ns/10ps
+`celldefine
+module OR2XL (Y, A, B);
+	output Y;
+	input A, B;
+
+	// Function
+	or (Y, A, B);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		(B => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_tbufxl.v b/verilog/s8_osu130_tbufxl.v
new file mode 100644
index 0000000..7885ff8
--- /dev/null
+++ b/verilog/s8_osu130_tbufxl.v
@@ -0,0 +1,18 @@
+// type: TBUF 
+`timescale 1ns/10ps
+`celldefine
+module TBUFXL (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	bufif1 (Y, 1'b1, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		(negedge A => (Y:1)) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_tiehi.v b/verilog/s8_osu130_tiehi.v
new file mode 100644
index 0000000..84f2164
--- /dev/null
+++ b/verilog/s8_osu130_tiehi.v
@@ -0,0 +1,15 @@
+// type: TIEHI 
+`timescale 1ns/10ps
+`celldefine
+module TIEHI (Y);
+	output Y;
+
+	// Function
+	buf (Y, 1'b1);
+
+	// Timing
+	specify
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_tielo.v b/verilog/s8_osu130_tielo.v
new file mode 100644
index 0000000..f83e915
--- /dev/null
+++ b/verilog/s8_osu130_tielo.v
@@ -0,0 +1,15 @@
+// type: TIELO 
+`timescale 1ns/10ps
+`celldefine
+module TIELO (Y);
+	output Y;
+
+	// Function
+	buf (Y, 1'b0);
+
+	// Timing
+	specify
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_tnbufxl.v b/verilog/s8_osu130_tnbufxl.v
new file mode 100644
index 0000000..f065eb1
--- /dev/null
+++ b/verilog/s8_osu130_tnbufxl.v
@@ -0,0 +1,18 @@
+// type: TNBUF 
+`timescale 1ns/10ps
+`celldefine
+module TNBUFXL (Y, A);
+	output Y;
+	input A;
+
+	// Function
+	bufif0 (Y, 1'b1, A);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		(negedge A => (Y:1)) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_xnor2xl.v b/verilog/s8_osu130_xnor2xl.v
new file mode 100644
index 0000000..281f57d
--- /dev/null
+++ b/verilog/s8_osu130_xnor2xl.v
@@ -0,0 +1,31 @@
+// type: XNOR2 
+`timescale 1ns/10ps
+`celldefine
+module XNOR2XL (Y, A, B);
+	output Y;
+	input A, B;
+
+	// Function
+	wire A__bar, B__bar, int_fwire_0;
+	wire int_fwire_1;
+
+	not (B__bar, B);
+	not (A__bar, A);
+	and (int_fwire_0, A__bar, B__bar);
+	and (int_fwire_1, A, B);
+	or (Y, int_fwire_1, int_fwire_0);
+
+	// Timing
+	specify
+		if (B)
+			(A => Y) = 0;
+		if (~B)
+			(A => Y) = 0;
+		if (A)
+			(B => Y) = 0;
+		if (~A)
+			(B => Y) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
diff --git a/verilog/s8_osu130_xor2xl.v b/verilog/s8_osu130_xor2xl.v
new file mode 100644
index 0000000..4bddfac
--- /dev/null
+++ b/verilog/s8_osu130_xor2xl.v
@@ -0,0 +1,410 @@
+// type: XOR2 
+`timescale 1ns/10ps
+`celldefine
+module XOR2XL (Y, A, B);
+	output Y;
+	input A, B;
+
+	// Function
+	wire A__bar, int_fwire_enable;
+
+	not (A__bar, A);
+	and (int_fwire_enable, A__bar, B);
+	bufif0 (Y, 1'b1, int_fwire_enable);
+
+	// Timing
+	specify
+		(A => Y) = 0;
+		ifnone (posedge A => (Y-:1'b0)) = 0;
+		(negedge A => (Y:1)) = 0;
+		ifnone (negedge B => (Y+:1'b0)) = 0;
+		(B => Y) = 0;
+		(posedge B => (Y:1)) = 0;
+	endspecify
+endmodule
+`endcelldefine
+
+
+`ifdef _udp_def_altos_latch_
+`else
+`define _udp_def_altos_latch_
+primitive altos_latch (q, v, clk, d);
+	output q;
+	reg q;
+	input v, clk, d;
+
+	table
+		* ? ? : ? : x;
+		? 1 0 : ? : 0;
+		? 1 1 : ? : 1;
+		? x 0 : 0 : -;
+		? x 1 : 1 : -;
+		? 0 ? : ? : -;
+	endtable
+endprimitive
+`endif
+
+`ifdef _udp_def_altos_dff_err_
+`else
+`define _udp_def_altos_dff_err_
+primitive altos_dff_err (q, clk, d);
+	output q;
+	reg q;
+	input clk, d;
+
+	table
+		(0x) ? : ? : 0;
+		(1x) ? : ? : 1;
+	endtable
+endprimitive
+`endif
+
+`ifdef _udp_def_altos_dff_
+`else
+`define _udp_def_altos_dff_
+primitive altos_dff (q, v, clk, d, xcr);
+	output q;
+	reg q;
+	input v, clk, d, xcr;
+
+	table
+		*  ?   ? ? : ? : x;
+		? (x1) 0 0 : ? : 0;
+		? (x1) 1 0 : ? : 1;
+		? (x1) 0 1 : 0 : 0;
+		? (x1) 1 1 : 1 : 1;
+		? (x1) ? x : ? : -;
+		? (bx) 0 ? : 0 : -;
+		? (bx) 1 ? : 1 : -;
+		? (x0) b ? : ? : -;
+		? (x0) ? x : ? : -;
+		? (01) 0 ? : ? : 0;
+		? (01) 1 ? : ? : 1;
+		? (10) ? ? : ? : -;
+		?  b   * ? : ? : -;
+		?  ?   ? * : ? : -;
+	endtable
+endprimitive
+`endif
+
+`ifdef _udp_def_altos_dff_r_err_
+`else
+`define _udp_def_altos_dff_r_err_
+primitive altos_dff_r_err (q, clk, d, r);
+	output q;
+	reg q;
+	input clk, d, r;
+
+	table
+		 ?   0 (0x) : ? : -;
+		 ?   0 (x0) : ? : -;
+		(0x) ?  0   : ? : 0;
+		(0x) 0  x   : ? : 0;
+		(1x) ?  0   : ? : 1;
+		(1x) 0  x   : ? : 1;
+	endtable
+endprimitive
+`endif
+
+`ifdef _udp_def_altos_dff_r_
+`else
+`define _udp_def_altos_dff_r_
+primitive altos_dff_r (q, v, clk, d, r, xcr);
+	output q;
+	reg q;
+	input v, clk, d, r, xcr;
+
+	table
+		*  ?   ?  ?   ? : ? : x;
+		?  ?   ?  1   ? : ? : 0;
+		?  b   ? (1?) ? : 0 : -;
+		?  x   0 (1?) ? : 0 : -;
+		?  ?   ? (10) ? : ? : -;
+		?  ?   ? (x0) ? : ? : -;
+		?  ?   ? (0x) ? : 0 : -;
+		? (x1) 0  ?   0 : ? : 0;
+		? (x1) 1  0   0 : ? : 1;
+		? (x1) 0  ?   1 : 0 : 0;
+		? (x1) 1  0   1 : 1 : 1;
+		? (x1) ?  ?   x : ? : -;
+		? (bx) 0  ?   ? : 0 : -;
+		? (bx) 1  0   ? : 1 : -;
+		? (x0) 0  ?   ? : ? : -;
+		? (x0) 1  0   ? : ? : -;
+		? (x0) ?  0   x : ? : -;
+		? (01) 0  ?   ? : ? : 0;
+		? (01) 1  0   ? : ? : 1;
+		? (10) ?  ?   ? : ? : -;
+		?  b   *  ?   ? : ? : -;
+		?  ?   ?  ?   * : ? : -;
+	endtable
+endprimitive
+`endif
+
+`ifdef _udp_def_altos_dff_s_err_
+`else
+`define _udp_def_altos_dff_s_err_
+primitive altos_dff_s_err (q, clk, d, s);
+	output q;
+	reg q;
+	input clk, d, s;
+
+	table
+		 ?   1 (0x) : ? : -;
+		 ?   1 (x0) : ? : -;
+		(0x) ?  0   : ? : 0;
+		(0x) 1  x   : ? : 0;
+		(1x) ?  0   : ? : 1;
+		(1x) 1  x   : ? : 1;
+	endtable
+endprimitive
+`endif
+
+`ifdef _udp_def_altos_dff_s_
+`else
+`define _udp_def_altos_dff_s_
+primitive altos_dff_s (q, v, clk, d, s, xcr);
+	output q;
+	reg q;
+	input v, clk, d, s, xcr;
+
+	table
+		*  ?   ?  ?   ? : ? : x;
+		?  ?   ?  1   ? : ? : 1;
+		?  b   ? (1?) ? : 1 : -;
+		?  x   1 (1?) ? : 1 : -;
+		?  ?   ? (10) ? : ? : -;
+		?  ?   ? (x0) ? : ? : -;
+		?  ?   ? (0x) ? : 1 : -;
+		? (x1) 0  0   0 : ? : 0;
+		? (x1) 1  ?   0 : ? : 1;
+		? (x1) 1  ?   1 : 1 : 1;
+		? (x1) 0  0   1 : 0 : 0;
+		? (x1) ?  ?   x : ? : -;
+		? (bx) 1  ?   ? : 1 : -;
+		? (bx) 0  0   ? : 0 : -;
+		? (x0) 1  ?   ? : ? : -;
+		? (x0) 0  0   ? : ? : -;
+		? (x0) ?  0   x : ? : -;
+		? (01) 1  ?   ? : ? : 1;
+		? (01) 0  0   ? : ? : 0;
+		? (10) ?  ?   ? : ? : -;
+		?  b   *  ?   ? : ? : -;
+		?  ?   ?  ?   * : ? : -;
+	endtable
+endprimitive
+`endif
+
+`ifdef _udp_def_altos_dff_sr_err_
+`else
+`define _udp_def_altos_dff_sr_err_
+primitive altos_dff_sr_err (q, clk, d, s, r);
+	output q;
+	reg q;
+	input clk, d, s, r;
+
+	table
+		 ?   1 (0x)  ?   : ? : -;
+		 ?   0  ?   (0x) : ? : -;
+		 ?   0  ?   (x0) : ? : -;
+		(0x) ?  0    0   : ? : 0;
+		(0x) 1  x    0   : ? : 0;
+		(0x) 0  0    x   : ? : 0;
+		(1x) ?  0    0   : ? : 1;
+		(1x) 1  x    0   : ? : 1;
+		(1x) 0  0    x   : ? : 1;
+	endtable
+endprimitive
+`endif
+
+`ifdef _udp_def_altos_dff_sr_0
+`else
+`define _udp_def_altos_dff_sr_0
+primitive altos_dff_sr_0 (q, v, clk, d, s, r, xcr);
+	output q;
+	reg q;
+	input v, clk, d, s, r, xcr;
+
+	table
+	//	v,  clk, d, s, r : q' : q;
+
+		*  ?   ?   ?   ?   ? : ? : x;
+		?  ?   ?   ?   1   ? : ? : 0;
+		?  ?   ?   1   0   ? : ? : 1;
+		?  b   ? (1?)  0   ? : 1 : -;
+		?  x   1 (1?)  0   ? : 1 : -;
+		?  ?   ? (10)  0   ? : ? : -;
+		?  ?   ? (x0)  0   ? : ? : -;
+		?  ?   ? (0x)  0   ? : 1 : -;
+		?  b   ?  0   (1?) ? : 0 : -;
+		?  x   0  0   (1?) ? : 0 : -;
+		?  ?   ?  0   (10) ? : ? : -;
+		?  ?   ?  0   (x0) ? : ? : -;
+		?  ?   ?  0   (0x) ? : 0 : -;
+		? (x1) 0  0    ?   0 : ? : 0;
+		? (x1) 1  ?    0   0 : ? : 1;
+		? (x1) 0  0    ?   1 : 0 : 0;
+		? (x1) 1  ?    0   1 : 1 : 1;
+		? (x1) ?  ?    0   x : ? : -;
+		? (x1) ?  0    ?   x : ? : -;
+		? (1x) 0  0    ?   ? : 0 : -;
+		? (1x) 1  ?    0   ? : 1 : -;
+		? (x0) 0  0    ?   ? : ? : -;
+		? (x0) 1  ?    0   ? : ? : -;
+		? (x0) ?  0    0   x : ? : -;
+		? (0x) 0  0    ?   ? : 0 : -;
+		? (0x) 1  ?    0   ? : 1 : -;
+		? (01) 0  0    ?   ? : ? : 0;
+		? (01) 1  ?    0   ? : ? : 1;
+		? (10) ?  0    ?   ? : ? : -;
+		? (10) ?  ?    0   ? : ? : -;
+		?  b   *  0    ?   ? : ? : -;
+		?  b   *  ?    0   ? : ? : -;
+		?  ?   ?  ?    ?   * : ? : -;
+	endtable
+endprimitive
+`endif
+
+`ifdef _udp_def_altos_dff_sr_1
+`else
+`define _udp_def_altos_dff_sr_1
+primitive altos_dff_sr_1 (q, v, clk, d, s, r, xcr);
+	output q;
+	reg q;
+	input v, clk, d, s, r, xcr;
+
+	table
+	//	v,  clk, d, s, r : q' : q;
+
+		*  ?   ?   ?   ?   ? : ? : x;
+		?  ?   ?   0   1   ? : ? : 0;
+		?  ?   ?   1   ?   ? : ? : 1;
+		?  b   ? (1?)  0   ? : 1 : -;
+		?  x   1 (1?)  0   ? : 1 : -;
+		?  ?   ? (10)  0   ? : ? : -;
+		?  ?   ? (x0)  0   ? : ? : -;
+		?  ?   ? (0x)  0   ? : 1 : -;
+		?  b   ?  0   (1?) ? : 0 : -;
+		?  x   0  0   (1?) ? : 0 : -;
+		?  ?   ?  0   (10) ? : ? : -;
+		?  ?   ?  0   (x0) ? : ? : -;
+		?  ?   ?  0   (0x) ? : 0 : -;
+		? (x1) 0  0    ?   0 : ? : 0;
+		? (x1) 1  ?    0   0 : ? : 1;
+		? (x1) 0  0    ?   1 : 0 : 0;
+		? (x1) 1  ?    0   1 : 1 : 1;
+		? (x1) ?  ?    0   x : ? : -;
+		? (x1) ?  0    ?   x : ? : -;
+		? (1x) 0  0    ?   ? : 0 : -;
+		? (1x) 1  ?    0   ? : 1 : -;
+		? (x0) 0  0    ?   ? : ? : -;
+		? (x0) 1  ?    0   ? : ? : -;
+		? (x0) ?  0    0   x : ? : -;
+		? (0x) 0  0    ?   ? : 0 : -;
+		? (0x) 1  ?    0   ? : 1 : -;
+		? (01) 0  0    ?   ? : ? : 0;
+		? (01) 1  ?    0   ? : ? : 1;
+		? (10) ?  0    ?   ? : ? : -;
+		? (10) ?  ?    0   ? : ? : -;
+		?  b   *  0    ?   ? : ? : -;
+		?  b   *  ?    0   ? : ? : -;
+		?  ?   ?  ?    ?   * : ? : -;
+	endtable
+endprimitive
+`endif
+
+`ifdef _udp_def_altos_latch_r_
+`else
+`define _udp_def_altos_latch_r_
+primitive altos_latch_r (q, v, clk, d, r);
+	output q;
+	reg q;
+	input v, clk, d, r;
+
+	table
+		* ? ? ? : ? : x;
+		? ? ? 1 : ? : 0;
+		? 0 ? 0 : ? : -;
+		? 0 ? x : 0 : -;
+		? 1 0 0 : ? : 0;
+		? 1 0 x : ? : 0;
+		? 1 1 0 : ? : 1;
+		? x 0 0 : 0 : -;
+		? x 0 x : 0 : -;
+		? x 1 0 : 1 : -;
+	endtable
+endprimitive
+`endif
+
+`ifdef _udp_def_altos_latch_s_
+`else
+`define _udp_def_altos_latch_s_
+primitive altos_latch_s (q, v, clk, d, s);
+	output q;
+	reg q;
+	input v, clk, d, s;
+
+	table
+		* ? ? ? : ? : x;
+		? ? ? 1 : ? : 1;
+		? 0 ? 0 : ? : -;
+		? 0 ? x : 1 : -;
+		? 1 1 0 : ? : 1;
+		? 1 1 x : ? : 1;
+		? 1 0 0 : ? : 0;
+		? x 1 0 : 1 : -;
+		? x 1 x : 1 : -;
+		? x 0 0 : 0 : -;
+	endtable
+endprimitive
+`endif
+
+`ifdef _udp_def_altos_latch_sr_0
+`else
+`define _udp_def_altos_latch_sr_0
+primitive altos_latch_sr_0 (q, v, clk, d, s, r);
+	output q;
+	reg q;
+	input v, clk, d, s, r;
+
+	table
+		* ? ? ? ? : ? : x;
+		? 1 1 ? 0 : ? : 1;
+		? 1 0 0 ? : ? : 0;
+		? ? ? 1 0 : ? : 1;
+		? ? ? ? 1 : ? : 0;
+		? 0 * ? ? : ? : -;
+		? 0 ? * 0 : 1 : 1;
+		? 0 ? 0 * : 0 : 0;
+		? * 1 ? 0 : 1 : 1;
+		? * 0 0 ? : 0 : 0;
+		? ? 1 * 0 : 1 : 1;
+		? ? 0 0 * : 0 : 0;
+	endtable
+endprimitive
+`endif
+
+`ifdef _udp_def_altos_latch_sr_1
+`else
+`define _udp_def_altos_latch_sr_1
+primitive altos_latch_sr_1 (q, v, clk, d, s, r);
+	output q;
+	reg q;
+	input v, clk, d, s, r;
+
+	table
+		* ? ? ? ? : ? : x;
+		? 1 1 ? 0 : ? : 1;
+		? 1 0 0 ? : ? : 0;
+		? ? ? 1 ? : ? : 1;
+		? ? ? 0 1 : ? : 0;
+		? 0 * ? ? : ? : -;
+		? 0 ? * 0 : 1 : 1;
+		? 0 ? 0 * : 0 : 0;
+		? * 1 ? 0 : 1 : 1;
+		? * 0 0 ? : 0 : 0;
+		? ? 1 * 0 : 1 : 1;
+		? ? 0 0 * : 0 : 0;
+	endtable
+endprimitive
+`endif
diff --git a/verilog/sky130_osu_sc.v b/verilog/sky130_osu_sc.v
deleted file mode 100644
index 8be6609..0000000
--- a/verilog/sky130_osu_sc.v
+++ /dev/null
@@ -1,1667 +0,0 @@
-// Verilog for library /import/okita1/tdene/final_final/osugooglelib/char/liberate/VERILOG/sky130_osu_sc.v created by Liberate 19.2.1.215 on Wed Apr 15 19:42:51 CDT 2020 for SDF version 2.1
-
-// type: ADDF 
-`timescale 1ns/10ps
-`celldefine
-module ADDFX1 (CO, S, A, B, CI);
-	output CO, S;
-	input A, B, CI;
-
-	// Function
-	wire A__bar, B__bar, CI__bar;
-	wire int_fwire_0, int_fwire_1, int_fwire_2;
-	wire int_fwire_3, int_fwire_4, int_fwire_5;
-	wire int_fwire_6;
-
-	and (int_fwire_0, B, CI);
-	and (int_fwire_1, A, CI);
-	and (int_fwire_2, A, B);
-	or (CO, int_fwire_2, int_fwire_1, int_fwire_0);
-	not (B__bar, B);
-	not (A__bar, A);
-	and (int_fwire_3, A__bar, B__bar, CI);
-	not (CI__bar, CI);
-	and (int_fwire_4, A__bar, B, CI__bar);
-	and (int_fwire_5, A, B__bar, CI__bar);
-	and (int_fwire_6, A, B, CI);
-	or (S, int_fwire_6, int_fwire_5, int_fwire_4, int_fwire_3);
-
-	// Timing
-	specify
-		if ((B & ~CI))
-			(A => CO) = 0;
-		if ((~B & CI))
-			(A => CO) = 0;
-		ifnone (A => CO) = 0;
-		if ((A & ~CI))
-			(B => CO) = 0;
-		if ((~A & CI))
-			(B => CO) = 0;
-		ifnone (B => CO) = 0;
-		if ((A & ~B))
-			(CI => CO) = 0;
-		if ((~A & B))
-			(CI => CO) = 0;
-		ifnone (CI => CO) = 0;
-		if ((B & CI))
-			(A => S) = 0;
-		if ((~B & ~CI))
-			(A => S) = 0;
-		ifnone (A => S) = 0;
-		if ((B & ~CI))
-			(A => S) = 0;
-		if ((~B & CI))
-			(A => S) = 0;
-		if ((A & CI))
-			(B => S) = 0;
-		if ((~A & ~CI))
-			(B => S) = 0;
-		ifnone (B => S) = 0;
-		if ((A & ~CI))
-			(B => S) = 0;
-		if ((~A & CI))
-			(B => S) = 0;
-		if ((A & B))
-			(CI => S) = 0;
-		if ((~A & ~B))
-			(CI => S) = 0;
-		ifnone (CI => S) = 0;
-		if ((A & ~B))
-			(CI => S) = 0;
-		if ((~A & B))
-			(CI => S) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: ADDF 
-`timescale 1ns/10ps
-`celldefine
-module ADDFXL (CO, S, A, B, CI);
-	output CO, S;
-	input A, B, CI;
-
-	// Function
-	or (CO, B, CI);
-	buf (S, 1'b1);
-
-	// Timing
-	specify
-		if ((B & ~CI))
-			(posedge A => (CO+:1'b1)) = 0;
-		if ((~B & CI))
-			(posedge A => (CO+:1'b1)) = 0;
-		ifnone (posedge A => (CO+:1'b1)) = 0;
-		if ((A & ~CI))
-			(B => CO) = 0;
-		if ((~A & CI))
-			(posedge B => (CO+:1'b1)) = 0;
-		if ((~A & ~CI))
-			(negedge B => (CO+:1'b0)) = 0;
-		ifnone (B => CO) = 0;
-		if ((A & ~B))
-			(CI => CO) = 0;
-		if ((~A & B))
-			(posedge CI => (CO+:1'b1)) = 0;
-		if ((~A & ~B))
-			(negedge CI => (CO+:1'b0)) = 0;
-		ifnone (CI => CO) = 0;
-		if ((B & CI))
-			(posedge A => (S+:1'b1)) = 0;
-		if ((~B & ~CI))
-			(posedge A => (S+:1'b1)) = 0;
-		ifnone (posedge A => (S+:1'b1)) = 0;
-		if ((A & CI))
-			(posedge B => (S+:1'b1)) = 0;
-		if ((~A & ~CI))
-			(posedge B => (S+:1'b1)) = 0;
-		ifnone (posedge B => (S+:1'b1)) = 0;
-		if ((A & B))
-			(posedge CI => (S+:1'b1)) = 0;
-		if ((~A & ~B))
-			(posedge CI => (S+:1'b1)) = 0;
-		ifnone (posedge CI => (S+:1'b1)) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: ADDH 
-`timescale 1ns/10ps
-`celldefine
-module ADDHX1 (CO, S, A, B);
-	output CO, S;
-	input A, B;
-
-	// Function
-	wire A__bar, B__bar;
-
-	and (CO, A, B);
-	not (B__bar, B);
-	not (A__bar, A);
-	or (S, A__bar, B__bar);
-
-	// Timing
-	specify
-		(A => CO) = 0;
-		(B => CO) = 0;
-		ifnone (posedge A => (S+:1'b1)) = 0;
-		(A => S) = 0;
-		ifnone (posedge B => (S+:1'b1)) = 0;
-		(B => S) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: ADDH 
-`timescale 1ns/10ps
-`celldefine
-module ADDHXL (CO, S, A, B);
-	output CO, S;
-	input A, B;
-
-	// Function
-	wire A__bar, B__bar, int_fwire_0;
-	wire int_fwire_1;
-
-	and (CO, A, B);
-	not (A__bar, A);
-	and (int_fwire_0, A__bar, B);
-	not (B__bar, B);
-	and (int_fwire_1, A, B__bar);
-	or (S, int_fwire_1, int_fwire_0);
-
-	// Timing
-	specify
-		(A => CO) = 0;
-		(B => CO) = 0;
-		if (~B)
-			(A => S) = 0;
-		if (B)
-			(A => S) = 0;
-		if (~A)
-			(B => S) = 0;
-		if (A)
-			(B => S) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: AND2 
-`timescale 1ns/10ps
-`celldefine
-module AND2X1 (Y, A, B);
-	output Y;
-	input A, B;
-
-	// Function
-	and (Y, A, B);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		(B => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: AND2 
-`timescale 1ns/10ps
-`celldefine
-module AND2X2 (Y, A, B);
-	output Y;
-	input A, B;
-
-	// Function
-	and (Y, A, B);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		(B => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: AND2 
-`timescale 1ns/10ps
-`celldefine
-module AND2X4 (Y, A, B);
-	output Y;
-	input A, B;
-
-	// Function
-	and (Y, A, B);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		(B => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: AND2 
-`timescale 1ns/10ps
-`celldefine
-module AND2X8 (Y, A, B);
-	output Y;
-	input A, B;
-
-	// Function
-	and (Y, A, B);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		(B => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: AND2 
-`timescale 1ns/10ps
-`celldefine
-module AND2XL (Y, A, B);
-	output Y;
-	input A, B;
-
-	// Function
-	and (Y, A, B);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		(B => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: AND3 
-`timescale 1ns/10ps
-`celldefine
-module AND3XL (Y, A, B, C);
-	output Y;
-	input A, B, C;
-
-	// Function
-	wire A__bar, B__bar, C__bar;
-
-	not (C__bar, C);
-	not (B__bar, B);
-	not (A__bar, A);
-	or (Y, A__bar, B__bar, C__bar);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		(B => Y) = 0;
-		(C => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: ANT 
-`timescale 1ns/10ps
-`celldefine
-module ANT (A);
-	input A;
-	// Timing
-	specify
-	endspecify
-endmodule
-`endcelldefine
-
-// type: AOI21 
-`timescale 1ns/10ps
-`celldefine
-module AOI21XL (Y, A0, A1, B0);
-	output Y;
-	input A0, A1, B0;
-
-	// Function
-	wire A0__bar, A1__bar, B0__bar;
-	wire int_fwire_0, int_fwire_1;
-
-	not (B0__bar, B0);
-	not (A1__bar, A1);
-	and (int_fwire_0, A1__bar, B0__bar);
-	not (A0__bar, A0);
-	and (int_fwire_1, A0__bar, B0__bar);
-	or (Y, int_fwire_1, int_fwire_0);
-
-	// Timing
-	specify
-		(A0 => Y) = 0;
-		(A1 => Y) = 0;
-		if ((A0 & ~A1))
-			(B0 => Y) = 0;
-		if ((~A0 & A1))
-			(B0 => Y) = 0;
-		if ((~A0 & ~A1))
-			(B0 => Y) = 0;
-		ifnone (B0 => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: BUF 
-`timescale 1ns/10ps
-`celldefine
-module BUFX1 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	buf (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: BUF 
-`timescale 1ns/10ps
-`celldefine
-module BUFX2 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	buf (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: BUF 
-`timescale 1ns/10ps
-`celldefine
-module BUFX4 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	buf (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: BUF 
-`timescale 1ns/10ps
-`celldefine
-module BUFX6 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	buf (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: BUF 
-`timescale 1ns/10ps
-`celldefine
-module BUFX8 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	buf (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: BUF 
-`timescale 1ns/10ps
-`celldefine
-module BUFXL (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	buf (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: CLKBUF 
-`timescale 1ns/10ps
-`celldefine
-module CLKBUFX1 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	buf (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: CLKINV 
-`timescale 1ns/10ps
-`celldefine
-module CLKINVX1 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	not (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: CLKINV 
-`timescale 1ns/10ps
-`celldefine
-module CLKINVX2 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	not (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: CLKINV 
-`timescale 1ns/10ps
-`celldefine
-module CLKINVX4 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	not (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: DFFN 
-`timescale 1ns/10ps
-`celldefine
-module DFFNXL (Q, QN, D, CK);
-	output Q, QN;
-	input D, CK;
-	reg notifier;
-	wire delayed_D, delayed_CK;
-
-	// Function
-	wire int_fwire_clk, int_fwire_IQ, int_fwire_IQN;
-	wire xcr_0;
-
-	not (int_fwire_clk, delayed_CK);
-	altos_dff_err (xcr_0, int_fwire_clk, delayed_D);
-	altos_dff (int_fwire_IQ, notifier, int_fwire_clk, delayed_D, xcr_0);
-	buf (Q, int_fwire_IQ);
-	not (int_fwire_IQN, int_fwire_IQ);
-	buf (QN, int_fwire_IQN);
-
-	// Timing
-	specify
-		(negedge CK => (Q+:D)) = 0;
-		(negedge CK => (QN-:D)) = 0;
-		$setuphold (negedge CK, posedge D, 0, 0, notifier,,, delayed_CK, delayed_D);
-		$setuphold (negedge CK, negedge D, 0, 0, notifier,,, delayed_CK, delayed_D);
-		$width (posedge CK &&& D, 0, 0, notifier);
-		$width (negedge CK &&& D, 0, 0, notifier);
-		$width (posedge CK &&& ~D, 0, 0, notifier);
-		$width (negedge CK &&& ~D, 0, 0, notifier);
-	endspecify
-endmodule
-`endcelldefine
-
-// type: DFFR 
-`timescale 1ns/10ps
-`celldefine
-module DFFRXL (Q, QN, D, RN, CK);
-	output Q, QN;
-	input D, RN, CK;
-	reg notifier;
-	wire delayed_D, delayed_CK;
-
-	// Function
-	wire int_fwire_IQ, int_fwire_IQN, int_fwire_r;
-	wire xcr_0;
-
-	not (int_fwire_r, RN);
-	altos_dff_r_err (xcr_0, delayed_CK, delayed_D, int_fwire_r);
-	altos_dff_r (int_fwire_IQ, notifier, delayed_CK, delayed_D, int_fwire_r, xcr_0);
-	buf (Q, int_fwire_IQ);
-	not (int_fwire_IQN, int_fwire_IQ);
-	buf (QN, int_fwire_IQN);
-
-	// Timing
-
-	// Additional timing wires
-	wire adacond0, adacond1, D__bar;
-
-
-	// Additional timing gates
-	and (adacond0, D, RN);
-	not (D__bar, D);
-	and (adacond1, D__bar, RN);
-
-	specify
-		if (CK)
-			(negedge RN => (Q+:1'b0)) = 0;
-		if ((~CK & D))
-			(negedge RN => (Q+:1'b0)) = 0;
-		if ((~CK & ~D))
-			(negedge RN => (Q+:1'b0)) = 0;
-		ifnone (negedge RN => (Q+:1'b0)) = 0;
-		(posedge CK => (Q+:D)) = 0;
-		if (CK)
-			(negedge RN => (QN-:1'b0)) = 0;
-		if ((~CK & D))
-			(negedge RN => (QN-:1'b0)) = 0;
-		if ((~CK & ~D))
-			(negedge RN => (QN-:1'b0)) = 0;
-		ifnone (negedge RN => (QN-:1'b0)) = 0;
-		(posedge CK => (QN-:D)) = 0;
-		$setuphold (posedge CK &&& RN, posedge D &&& RN, 0, 0, notifier,,, delayed_CK, delayed_D);
-		$setuphold (posedge CK &&& RN, negedge D &&& RN, 0, 0, notifier,,, delayed_CK, delayed_D);
-		$setuphold (posedge CK, posedge D, 0, 0, notifier,,, delayed_CK, delayed_D);
-		$setuphold (posedge CK, negedge D, 0, 0, notifier,,, delayed_CK, delayed_D);
-		$recovery (posedge RN &&& D, posedge CK &&& D, 0, notifier);
-		$recovery (posedge RN, posedge CK, 0, notifier);
-		$hold (posedge CK &&& D, posedge RN &&& D, 0, notifier);
-		$hold (posedge CK, posedge RN, 0, notifier);
-		$width (negedge RN &&& CK, 0, 0, notifier);
-		$width (negedge RN &&& ~CK, 0, 0, notifier);
-		$width (posedge CK &&& adacond0, 0, 0, notifier);
-		$width (negedge CK &&& adacond0, 0, 0, notifier);
-		$width (posedge CK &&& adacond1, 0, 0, notifier);
-		$width (negedge CK &&& adacond1, 0, 0, notifier);
-	endspecify
-endmodule
-`endcelldefine
-
-// type: DFFS 
-`timescale 1ns/10ps
-`celldefine
-module DFFSXL (Q, QN, D, SN, CK);
-	output Q, QN;
-	input D, SN, CK;
-	reg notifier;
-	wire delayed_D, delayed_CK;
-
-	// Function
-	wire int_fwire_IQ, int_fwire_IQN, int_fwire_s;
-	wire xcr_0;
-
-	not (int_fwire_s, SN);
-	altos_dff_s_err (xcr_0, delayed_CK, delayed_D, int_fwire_s);
-	altos_dff_s (int_fwire_IQ, notifier, delayed_CK, delayed_D, int_fwire_s, xcr_0);
-	buf (Q, int_fwire_IQ);
-	not (int_fwire_IQN, int_fwire_IQ);
-	buf (QN, int_fwire_IQN);
-
-	// Timing
-
-	// Additional timing wires
-	wire adacond0, adacond1, D__bar;
-
-
-	// Additional timing gates
-	and (adacond0, D, SN);
-	not (D__bar, D);
-	and (adacond1, D__bar, SN);
-
-	specify
-		if (CK)
-			(negedge SN => (Q+:1'b1)) = 0;
-		if ((~CK & D))
-			(negedge SN => (Q+:1'b1)) = 0;
-		if ((~CK & ~D))
-			(negedge SN => (Q+:1'b1)) = 0;
-		ifnone (negedge SN => (Q+:1'b1)) = 0;
-		(posedge CK => (Q+:D)) = 0;
-		if (CK)
-			(negedge SN => (QN-:1'b1)) = 0;
-		if ((~CK & D))
-			(negedge SN => (QN-:1'b1)) = 0;
-		if ((~CK & ~D))
-			(negedge SN => (QN-:1'b1)) = 0;
-		ifnone (negedge SN => (QN-:1'b1)) = 0;
-		(posedge CK => (QN-:D)) = 0;
-		$setuphold (posedge CK &&& SN, posedge D &&& SN, 0, 0, notifier,,, delayed_CK, delayed_D);
-		$setuphold (posedge CK &&& SN, negedge D &&& SN, 0, 0, notifier,,, delayed_CK, delayed_D);
-		$setuphold (posedge CK, posedge D, 0, 0, notifier,,, delayed_CK, delayed_D);
-		$setuphold (posedge CK, negedge D, 0, 0, notifier,,, delayed_CK, delayed_D);
-		$recovery (posedge SN &&& ~D, posedge CK &&& ~D, 0, notifier);
-		$recovery (posedge SN, posedge CK, 0, notifier);
-		$hold (posedge CK &&& ~D, posedge SN &&& ~D, 0, notifier);
-		$hold (posedge CK, posedge SN, 0, notifier);
-		$width (negedge SN &&& CK, 0, 0, notifier);
-		$width (negedge SN &&& ~CK, 0, 0, notifier);
-		$width (posedge CK &&& adacond0, 0, 0, notifier);
-		$width (negedge CK &&& adacond0, 0, 0, notifier);
-		$width (posedge CK &&& adacond1, 0, 0, notifier);
-		$width (negedge CK &&& adacond1, 0, 0, notifier);
-	endspecify
-endmodule
-`endcelldefine
-
-// type: DFF 
-`timescale 1ns/10ps
-`celldefine
-module DFFXL (Q, QN, D, CK);
-	output Q, QN;
-	input D, CK;
-	reg notifier;
-	wire delayed_D, delayed_CK;
-
-	// Function
-	wire delayed_D__bar, int_fwire_0, int_fwire_d;
-	wire int_fwire_IQ, int_fwire_IQN, xcr_0;
-
-	not (delayed_D__bar, delayed_D);
-	and (int_fwire_0, delayed_D__bar, int_fwire_IQ);
-	or (int_fwire_d, delayed_D, int_fwire_0);
-	altos_dff_err (xcr_0, delayed_CK, int_fwire_d);
-	altos_dff (int_fwire_IQ, notifier, delayed_CK, int_fwire_d, xcr_0);
-	buf (Q, int_fwire_IQ);
-	not (int_fwire_IQN, int_fwire_IQ);
-	buf (QN, int_fwire_IQN);
-
-	// Timing
-	specify
-		(posedge CK => (Q+:((D) || (!D && int_fwire_IQ)))) = 0;
-		(posedge CK => (QN-:((D) || (!D && int_fwire_IQ)))) = 0;
-		$setuphold (posedge CK, posedge D, 0, 0, notifier,,, delayed_CK, delayed_D);
-		$setuphold (posedge CK, negedge D, 0, 0, notifier,,, delayed_CK, delayed_D);
-		$width (posedge CK &&& D, 0, 0, notifier);
-		$width (negedge CK &&& D, 0, 0, notifier);
-	endspecify
-endmodule
-`endcelldefine
-
-// type: DLY1 
-`timescale 1ns/10ps
-`celldefine
-module DLY1 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	buf (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: DLY2 
-`timescale 1ns/10ps
-`celldefine
-module DLY2 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	buf (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: DLY3 
-`timescale 1ns/10ps
-`celldefine
-module DLY3 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	buf (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: DLY4 
-`timescale 1ns/10ps
-`celldefine
-module DLY4 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	buf (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: INV 
-`timescale 1ns/10ps
-`celldefine
-module INVX1 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	not (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: INV 
-`timescale 1ns/10ps
-`celldefine
-module INVX10 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	not (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: INV 
-`timescale 1ns/10ps
-`celldefine
-module INVX2 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	not (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: INV 
-`timescale 1ns/10ps
-`celldefine
-module INVX3 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	not (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: INV 
-`timescale 1ns/10ps
-`celldefine
-module INVX4 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	not (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: INV 
-`timescale 1ns/10ps
-`celldefine
-module INVX6 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	not (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: INV 
-`timescale 1ns/10ps
-`celldefine
-module INVX8 (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	not (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: INV 
-`timescale 1ns/10ps
-`celldefine
-module INVXL (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	not (Y, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: NAND2 
-`timescale 1ns/10ps
-`celldefine
-module NAND2X1 (Y, A, B);
-	output Y;
-	input A, B;
-
-	// Function
-	wire A__bar, B__bar;
-
-	not (B__bar, B);
-	not (A__bar, A);
-	or (Y, A__bar, B__bar);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		(B => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: NAND2 
-`timescale 1ns/10ps
-`celldefine
-module NAND2XL (Y, A, B);
-	output Y;
-	input A, B;
-
-	// Function
-	wire A__bar, B__bar;
-
-	not (B__bar, B);
-	not (A__bar, A);
-	or (Y, A__bar, B__bar);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		(B => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: NAND3 
-`timescale 1ns/10ps
-`celldefine
-module NAND3X1 (Y, A, B, C);
-	output Y;
-	input A, B, C;
-
-	// Function
-	wire A__bar, B__bar, C__bar;
-
-	not (C__bar, C);
-	not (B__bar, B);
-	not (A__bar, A);
-	or (Y, A__bar, B__bar, C__bar);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		(B => Y) = 0;
-		(C => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: NAND3 
-`timescale 1ns/10ps
-`celldefine
-module NAND3XL (Y, A, B, C);
-	output Y;
-	input A, B, C;
-
-	// Function
-	wire A__bar, B__bar, C__bar;
-
-	not (C__bar, C);
-	not (B__bar, B);
-	not (A__bar, A);
-	or (Y, A__bar, B__bar, C__bar);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		(B => Y) = 0;
-		(C => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: NOR2 
-`timescale 1ns/10ps
-`celldefine
-module NOR2X1 (Y, A, B);
-	output Y;
-	input A, B;
-
-	// Function
-	wire A__bar, B__bar;
-
-	not (B__bar, B);
-	not (A__bar, A);
-	and (Y, A__bar, B__bar);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		(B => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: NOR2 
-`timescale 1ns/10ps
-`celldefine
-module NOR2XL (Y, A, B);
-	output Y;
-	input A, B;
-
-	// Function
-	wire A__bar, B__bar;
-
-	not (B__bar, B);
-	not (A__bar, A);
-	and (Y, A__bar, B__bar);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		(B => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: OAI21 
-`timescale 1ns/10ps
-`celldefine
-module OAI21XL (Y, A0, A1, B0);
-	output Y;
-	input A0, A1, B0;
-
-	// Function
-	wire A0__bar, A1__bar, B0__bar;
-	wire int_fwire_0;
-
-	not (B0__bar, B0);
-	not (A1__bar, A1);
-	not (A0__bar, A0);
-	and (int_fwire_0, A0__bar, A1__bar);
-	or (Y, int_fwire_0, B0__bar);
-
-	// Timing
-	specify
-		(A0 => Y) = 0;
-		(A1 => Y) = 0;
-		if ((A0 & A1))
-			(B0 => Y) = 0;
-		if ((A0 & ~A1))
-			(B0 => Y) = 0;
-		if ((~A0 & A1))
-			(B0 => Y) = 0;
-		ifnone (B0 => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: OR2 
-`timescale 1ns/10ps
-`celldefine
-module OR2X1 (Y, A, B);
-	output Y;
-	input A, B;
-
-	// Function
-	or (Y, A, B);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		(B => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: OR2 
-`timescale 1ns/10ps
-`celldefine
-module OR2X2 (Y, A, B);
-	output Y;
-	input A, B;
-
-	// Function
-	buf (Y, 1'b1);
-
-	// Timing
-	specify
-		ifnone (posedge A => (Y+:1'b1)) = 0;
-		ifnone (posedge B => (Y+:1'b1)) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: OR2 
-`timescale 1ns/10ps
-`celldefine
-module OR2X4 (Y, A, B);
-	output Y;
-	input A, B;
-
-	// Function
-	or (Y, A, B);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		(B => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: OR2 
-`timescale 1ns/10ps
-`celldefine
-module OR2XL (Y, A, B);
-	output Y;
-	input A, B;
-
-	// Function
-	or (Y, A, B);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		(B => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: TBUF 
-`timescale 1ns/10ps
-`celldefine
-module TBUFXL (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	bufif1 (Y, 1'b1, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		(negedge A => (Y:1)) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: TIEHI 
-`timescale 1ns/10ps
-`celldefine
-module TIEHI (Y);
-	output Y;
-
-	// Function
-	buf (Y, 1'b1);
-
-	// Timing
-	specify
-	endspecify
-endmodule
-`endcelldefine
-
-// type: TIELO 
-`timescale 1ns/10ps
-`celldefine
-module TIELO (Y);
-	output Y;
-
-	// Function
-	buf (Y, 1'b0);
-
-	// Timing
-	specify
-	endspecify
-endmodule
-`endcelldefine
-
-// type: TNBUF 
-`timescale 1ns/10ps
-`celldefine
-module TNBUFXL (Y, A);
-	output Y;
-	input A;
-
-	// Function
-	bufif0 (Y, 1'b1, A);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		(negedge A => (Y:1)) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: XNOR2 
-`timescale 1ns/10ps
-`celldefine
-module XNOR2XL (Y, A, B);
-	output Y;
-	input A, B;
-
-	// Function
-	wire A__bar, B__bar, int_fwire_0;
-	wire int_fwire_1;
-
-	not (B__bar, B);
-	not (A__bar, A);
-	and (int_fwire_0, A__bar, B__bar);
-	and (int_fwire_1, A, B);
-	or (Y, int_fwire_1, int_fwire_0);
-
-	// Timing
-	specify
-		if (B)
-			(A => Y) = 0;
-		if (~B)
-			(A => Y) = 0;
-		if (A)
-			(B => Y) = 0;
-		if (~A)
-			(B => Y) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-// type: XOR2 
-`timescale 1ns/10ps
-`celldefine
-module XOR2XL (Y, A, B);
-	output Y;
-	input A, B;
-
-	// Function
-	wire A__bar, int_fwire_enable;
-
-	not (A__bar, A);
-	and (int_fwire_enable, A__bar, B);
-	bufif0 (Y, 1'b1, int_fwire_enable);
-
-	// Timing
-	specify
-		(A => Y) = 0;
-		ifnone (posedge A => (Y-:1'b0)) = 0;
-		(negedge A => (Y:1)) = 0;
-		ifnone (negedge B => (Y+:1'b0)) = 0;
-		(B => Y) = 0;
-		(posedge B => (Y:1)) = 0;
-	endspecify
-endmodule
-`endcelldefine
-
-
-`ifdef _udp_def_altos_latch_
-`else
-`define _udp_def_altos_latch_
-primitive altos_latch (q, v, clk, d);
-	output q;
-	reg q;
-	input v, clk, d;
-
-	table
-		* ? ? : ? : x;
-		? 1 0 : ? : 0;
-		? 1 1 : ? : 1;
-		? x 0 : 0 : -;
-		? x 1 : 1 : -;
-		? 0 ? : ? : -;
-	endtable
-endprimitive
-`endif
-
-`ifdef _udp_def_altos_dff_err_
-`else
-`define _udp_def_altos_dff_err_
-primitive altos_dff_err (q, clk, d);
-	output q;
-	reg q;
-	input clk, d;
-
-	table
-		(0x) ? : ? : 0;
-		(1x) ? : ? : 1;
-	endtable
-endprimitive
-`endif
-
-`ifdef _udp_def_altos_dff_
-`else
-`define _udp_def_altos_dff_
-primitive altos_dff (q, v, clk, d, xcr);
-	output q;
-	reg q;
-	input v, clk, d, xcr;
-
-	table
-		*  ?   ? ? : ? : x;
-		? (x1) 0 0 : ? : 0;
-		? (x1) 1 0 : ? : 1;
-		? (x1) 0 1 : 0 : 0;
-		? (x1) 1 1 : 1 : 1;
-		? (x1) ? x : ? : -;
-		? (bx) 0 ? : 0 : -;
-		? (bx) 1 ? : 1 : -;
-		? (x0) b ? : ? : -;
-		? (x0) ? x : ? : -;
-		? (01) 0 ? : ? : 0;
-		? (01) 1 ? : ? : 1;
-		? (10) ? ? : ? : -;
-		?  b   * ? : ? : -;
-		?  ?   ? * : ? : -;
-	endtable
-endprimitive
-`endif
-
-`ifdef _udp_def_altos_dff_r_err_
-`else
-`define _udp_def_altos_dff_r_err_
-primitive altos_dff_r_err (q, clk, d, r);
-	output q;
-	reg q;
-	input clk, d, r;
-
-	table
-		 ?   0 (0x) : ? : -;
-		 ?   0 (x0) : ? : -;
-		(0x) ?  0   : ? : 0;
-		(0x) 0  x   : ? : 0;
-		(1x) ?  0   : ? : 1;
-		(1x) 0  x   : ? : 1;
-	endtable
-endprimitive
-`endif
-
-`ifdef _udp_def_altos_dff_r_
-`else
-`define _udp_def_altos_dff_r_
-primitive altos_dff_r (q, v, clk, d, r, xcr);
-	output q;
-	reg q;
-	input v, clk, d, r, xcr;
-
-	table
-		*  ?   ?  ?   ? : ? : x;
-		?  ?   ?  1   ? : ? : 0;
-		?  b   ? (1?) ? : 0 : -;
-		?  x   0 (1?) ? : 0 : -;
-		?  ?   ? (10) ? : ? : -;
-		?  ?   ? (x0) ? : ? : -;
-		?  ?   ? (0x) ? : 0 : -;
-		? (x1) 0  ?   0 : ? : 0;
-		? (x1) 1  0   0 : ? : 1;
-		? (x1) 0  ?   1 : 0 : 0;
-		? (x1) 1  0   1 : 1 : 1;
-		? (x1) ?  ?   x : ? : -;
-		? (bx) 0  ?   ? : 0 : -;
-		? (bx) 1  0   ? : 1 : -;
-		? (x0) 0  ?   ? : ? : -;
-		? (x0) 1  0   ? : ? : -;
-		? (x0) ?  0   x : ? : -;
-		? (01) 0  ?   ? : ? : 0;
-		? (01) 1  0   ? : ? : 1;
-		? (10) ?  ?   ? : ? : -;
-		?  b   *  ?   ? : ? : -;
-		?  ?   ?  ?   * : ? : -;
-	endtable
-endprimitive
-`endif
-
-`ifdef _udp_def_altos_dff_s_err_
-`else
-`define _udp_def_altos_dff_s_err_
-primitive altos_dff_s_err (q, clk, d, s);
-	output q;
-	reg q;
-	input clk, d, s;
-
-	table
-		 ?   1 (0x) : ? : -;
-		 ?   1 (x0) : ? : -;
-		(0x) ?  0   : ? : 0;
-		(0x) 1  x   : ? : 0;
-		(1x) ?  0   : ? : 1;
-		(1x) 1  x   : ? : 1;
-	endtable
-endprimitive
-`endif
-
-`ifdef _udp_def_altos_dff_s_
-`else
-`define _udp_def_altos_dff_s_
-primitive altos_dff_s (q, v, clk, d, s, xcr);
-	output q;
-	reg q;
-	input v, clk, d, s, xcr;
-
-	table
-		*  ?   ?  ?   ? : ? : x;
-		?  ?   ?  1   ? : ? : 1;
-		?  b   ? (1?) ? : 1 : -;
-		?  x   1 (1?) ? : 1 : -;
-		?  ?   ? (10) ? : ? : -;
-		?  ?   ? (x0) ? : ? : -;
-		?  ?   ? (0x) ? : 1 : -;
-		? (x1) 0  0   0 : ? : 0;
-		? (x1) 1  ?   0 : ? : 1;
-		? (x1) 1  ?   1 : 1 : 1;
-		? (x1) 0  0   1 : 0 : 0;
-		? (x1) ?  ?   x : ? : -;
-		? (bx) 1  ?   ? : 1 : -;
-		? (bx) 0  0   ? : 0 : -;
-		? (x0) 1  ?   ? : ? : -;
-		? (x0) 0  0   ? : ? : -;
-		? (x0) ?  0   x : ? : -;
-		? (01) 1  ?   ? : ? : 1;
-		? (01) 0  0   ? : ? : 0;
-		? (10) ?  ?   ? : ? : -;
-		?  b   *  ?   ? : ? : -;
-		?  ?   ?  ?   * : ? : -;
-	endtable
-endprimitive
-`endif
-
-`ifdef _udp_def_altos_dff_sr_err_
-`else
-`define _udp_def_altos_dff_sr_err_
-primitive altos_dff_sr_err (q, clk, d, s, r);
-	output q;
-	reg q;
-	input clk, d, s, r;
-
-	table
-		 ?   1 (0x)  ?   : ? : -;
-		 ?   0  ?   (0x) : ? : -;
-		 ?   0  ?   (x0) : ? : -;
-		(0x) ?  0    0   : ? : 0;
-		(0x) 1  x    0   : ? : 0;
-		(0x) 0  0    x   : ? : 0;
-		(1x) ?  0    0   : ? : 1;
-		(1x) 1  x    0   : ? : 1;
-		(1x) 0  0    x   : ? : 1;
-	endtable
-endprimitive
-`endif
-
-`ifdef _udp_def_altos_dff_sr_0
-`else
-`define _udp_def_altos_dff_sr_0
-primitive altos_dff_sr_0 (q, v, clk, d, s, r, xcr);
-	output q;
-	reg q;
-	input v, clk, d, s, r, xcr;
-
-	table
-	//	v,  clk, d, s, r : q' : q;
-
-		*  ?   ?   ?   ?   ? : ? : x;
-		?  ?   ?   ?   1   ? : ? : 0;
-		?  ?   ?   1   0   ? : ? : 1;
-		?  b   ? (1?)  0   ? : 1 : -;
-		?  x   1 (1?)  0   ? : 1 : -;
-		?  ?   ? (10)  0   ? : ? : -;
-		?  ?   ? (x0)  0   ? : ? : -;
-		?  ?   ? (0x)  0   ? : 1 : -;
-		?  b   ?  0   (1?) ? : 0 : -;
-		?  x   0  0   (1?) ? : 0 : -;
-		?  ?   ?  0   (10) ? : ? : -;
-		?  ?   ?  0   (x0) ? : ? : -;
-		?  ?   ?  0   (0x) ? : 0 : -;
-		? (x1) 0  0    ?   0 : ? : 0;
-		? (x1) 1  ?    0   0 : ? : 1;
-		? (x1) 0  0    ?   1 : 0 : 0;
-		? (x1) 1  ?    0   1 : 1 : 1;
-		? (x1) ?  ?    0   x : ? : -;
-		? (x1) ?  0    ?   x : ? : -;
-		? (1x) 0  0    ?   ? : 0 : -;
-		? (1x) 1  ?    0   ? : 1 : -;
-		? (x0) 0  0    ?   ? : ? : -;
-		? (x0) 1  ?    0   ? : ? : -;
-		? (x0) ?  0    0   x : ? : -;
-		? (0x) 0  0    ?   ? : 0 : -;
-		? (0x) 1  ?    0   ? : 1 : -;
-		? (01) 0  0    ?   ? : ? : 0;
-		? (01) 1  ?    0   ? : ? : 1;
-		? (10) ?  0    ?   ? : ? : -;
-		? (10) ?  ?    0   ? : ? : -;
-		?  b   *  0    ?   ? : ? : -;
-		?  b   *  ?    0   ? : ? : -;
-		?  ?   ?  ?    ?   * : ? : -;
-	endtable
-endprimitive
-`endif
-
-`ifdef _udp_def_altos_dff_sr_1
-`else
-`define _udp_def_altos_dff_sr_1
-primitive altos_dff_sr_1 (q, v, clk, d, s, r, xcr);
-	output q;
-	reg q;
-	input v, clk, d, s, r, xcr;
-
-	table
-	//	v,  clk, d, s, r : q' : q;
-
-		*  ?   ?   ?   ?   ? : ? : x;
-		?  ?   ?   0   1   ? : ? : 0;
-		?  ?   ?   1   ?   ? : ? : 1;
-		?  b   ? (1?)  0   ? : 1 : -;
-		?  x   1 (1?)  0   ? : 1 : -;
-		?  ?   ? (10)  0   ? : ? : -;
-		?  ?   ? (x0)  0   ? : ? : -;
-		?  ?   ? (0x)  0   ? : 1 : -;
-		?  b   ?  0   (1?) ? : 0 : -;
-		?  x   0  0   (1?) ? : 0 : -;
-		?  ?   ?  0   (10) ? : ? : -;
-		?  ?   ?  0   (x0) ? : ? : -;
-		?  ?   ?  0   (0x) ? : 0 : -;
-		? (x1) 0  0    ?   0 : ? : 0;
-		? (x1) 1  ?    0   0 : ? : 1;
-		? (x1) 0  0    ?   1 : 0 : 0;
-		? (x1) 1  ?    0   1 : 1 : 1;
-		? (x1) ?  ?    0   x : ? : -;
-		? (x1) ?  0    ?   x : ? : -;
-		? (1x) 0  0    ?   ? : 0 : -;
-		? (1x) 1  ?    0   ? : 1 : -;
-		? (x0) 0  0    ?   ? : ? : -;
-		? (x0) 1  ?    0   ? : ? : -;
-		? (x0) ?  0    0   x : ? : -;
-		? (0x) 0  0    ?   ? : 0 : -;
-		? (0x) 1  ?    0   ? : 1 : -;
-		? (01) 0  0    ?   ? : ? : 0;
-		? (01) 1  ?    0   ? : ? : 1;
-		? (10) ?  0    ?   ? : ? : -;
-		? (10) ?  ?    0   ? : ? : -;
-		?  b   *  0    ?   ? : ? : -;
-		?  b   *  ?    0   ? : ? : -;
-		?  ?   ?  ?    ?   * : ? : -;
-	endtable
-endprimitive
-`endif
-
-`ifdef _udp_def_altos_latch_r_
-`else
-`define _udp_def_altos_latch_r_
-primitive altos_latch_r (q, v, clk, d, r);
-	output q;
-	reg q;
-	input v, clk, d, r;
-
-	table
-		* ? ? ? : ? : x;
-		? ? ? 1 : ? : 0;
-		? 0 ? 0 : ? : -;
-		? 0 ? x : 0 : -;
-		? 1 0 0 : ? : 0;
-		? 1 0 x : ? : 0;
-		? 1 1 0 : ? : 1;
-		? x 0 0 : 0 : -;
-		? x 0 x : 0 : -;
-		? x 1 0 : 1 : -;
-	endtable
-endprimitive
-`endif
-
-`ifdef _udp_def_altos_latch_s_
-`else
-`define _udp_def_altos_latch_s_
-primitive altos_latch_s (q, v, clk, d, s);
-	output q;
-	reg q;
-	input v, clk, d, s;
-
-	table
-		* ? ? ? : ? : x;
-		? ? ? 1 : ? : 1;
-		? 0 ? 0 : ? : -;
-		? 0 ? x : 1 : -;
-		? 1 1 0 : ? : 1;
-		? 1 1 x : ? : 1;
-		? 1 0 0 : ? : 0;
-		? x 1 0 : 1 : -;
-		? x 1 x : 1 : -;
-		? x 0 0 : 0 : -;
-	endtable
-endprimitive
-`endif
-
-`ifdef _udp_def_altos_latch_sr_0
-`else
-`define _udp_def_altos_latch_sr_0
-primitive altos_latch_sr_0 (q, v, clk, d, s, r);
-	output q;
-	reg q;
-	input v, clk, d, s, r;
-
-	table
-		* ? ? ? ? : ? : x;
-		? 1 1 ? 0 : ? : 1;
-		? 1 0 0 ? : ? : 0;
-		? ? ? 1 0 : ? : 1;
-		? ? ? ? 1 : ? : 0;
-		? 0 * ? ? : ? : -;
-		? 0 ? * 0 : 1 : 1;
-		? 0 ? 0 * : 0 : 0;
-		? * 1 ? 0 : 1 : 1;
-		? * 0 0 ? : 0 : 0;
-		? ? 1 * 0 : 1 : 1;
-		? ? 0 0 * : 0 : 0;
-	endtable
-endprimitive
-`endif
-
-`ifdef _udp_def_altos_latch_sr_1
-`else
-`define _udp_def_altos_latch_sr_1
-primitive altos_latch_sr_1 (q, v, clk, d, s, r);
-	output q;
-	reg q;
-	input v, clk, d, s, r;
-
-	table
-		* ? ? ? ? : ? : x;
-		? 1 1 ? 0 : ? : 1;
-		? 1 0 0 ? : ? : 0;
-		? ? ? 1 ? : ? : 1;
-		? ? ? 0 1 : ? : 0;
-		? 0 * ? ? : ? : -;
-		? 0 ? * 0 : 1 : 1;
-		? 0 ? 0 * : 0 : 0;
-		? * 1 ? 0 : 1 : 1;
-		? * 0 0 ? : 0 : 0;
-		? ? 1 * 0 : 1 : 1;
-		? ? 0 0 * : 0 : 0;
-	endtable
-endprimitive
-`endif