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
