blob: bf8d0f86d8b9716c5a898b8992d8388dcaa889d8 [file] [log] [blame]
// type: ADDF
`timescale 1ns/10ps
`celldefine
module sky130_osu_sc_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