blob: 05dcac76af0f9050827fdb381518fb5ef0c64a3f [file] [log] [blame]
Teo Ene74d7e282020-07-23 15:38:19 -05001// type: ADDF
2`timescale 1ns/10ps
3`celldefine
4module ADDFXL (CO, S, A, B, CI);
5 output CO, S;
6 input A, B, CI;
7
8 // Function
9 or (CO, B, CI);
10 buf (S, 1'b1);
11
12 // Timing
13 specify
14 if ((B & ~CI))
15 (posedge A => (CO+:1'b1)) = 0;
16 if ((~B & CI))
17 (posedge A => (CO+:1'b1)) = 0;
18 ifnone (posedge A => (CO+:1'b1)) = 0;
19 if ((A & ~CI))
20 (B => CO) = 0;
21 if ((~A & CI))
22 (posedge B => (CO+:1'b1)) = 0;
23 if ((~A & ~CI))
24 (negedge B => (CO+:1'b0)) = 0;
25 ifnone (B => CO) = 0;
26 if ((A & ~B))
27 (CI => CO) = 0;
28 if ((~A & B))
29 (posedge CI => (CO+:1'b1)) = 0;
30 if ((~A & ~B))
31 (negedge CI => (CO+:1'b0)) = 0;
32 ifnone (CI => CO) = 0;
33 if ((B & CI))
34 (posedge A => (S+:1'b1)) = 0;
35 if ((~B & ~CI))
36 (posedge A => (S+:1'b1)) = 0;
37 ifnone (posedge A => (S+:1'b1)) = 0;
38 if ((A & CI))
39 (posedge B => (S+:1'b1)) = 0;
40 if ((~A & ~CI))
41 (posedge B => (S+:1'b1)) = 0;
42 ifnone (posedge B => (S+:1'b1)) = 0;
43 if ((A & B))
44 (posedge CI => (S+:1'b1)) = 0;
45 if ((~A & ~B))
46 (posedge CI => (S+:1'b1)) = 0;
47 ifnone (posedge CI => (S+:1'b1)) = 0;
48 endspecify
49endmodule
50`endcelldefine
51