blob: 8be66093b7626048a9ab707beef0da86ada3d1cb [file] [log] [blame]
// 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