1ENTITY fulladder_x4 IS
2GENERIC (
3  CONSTANT area 	 : NATURAL := 5250;
4  CONSTANT cin_a1	 : NATURAL := 8;
5  CONSTANT cin_a2	 : NATURAL := 8;
6  CONSTANT cin_a3	 : NATURAL := 6;
7  CONSTANT cin_a4	 : NATURAL := 6;
8  CONSTANT cin_b1	 : NATURAL := 8;
9  CONSTANT cin_b2	 : NATURAL := 8;
10  CONSTANT cin_b3	 : NATURAL := 6;
11  CONSTANT cin_b4	 : NATURAL := 6;
12  CONSTANT cin_cin1	 : NATURAL := 7;
13  CONSTANT cin_cin2	 : NATURAL := 6;
14  CONSTANT cin_cin3	 : NATURAL := 6;
15  CONSTANT rdown_a1_cout	 : NATURAL := 810;
16  CONSTANT rdown_a1_sout	 : NATURAL := 810;
17  CONSTANT rdown_a2_cout	 : NATURAL := 810;
18  CONSTANT rdown_a2_sout	 : NATURAL := 810;
19  CONSTANT rdown_a3_sout	 : NATURAL := 810;
20  CONSTANT rdown_a4_sout	 : NATURAL := 810;
21  CONSTANT rdown_b1_cout	 : NATURAL := 810;
22  CONSTANT rdown_b1_sout	 : NATURAL := 810;
23  CONSTANT rdown_b2_cout	 : NATURAL := 810;
24  CONSTANT rdown_b2_sout	 : NATURAL := 810;
25  CONSTANT rdown_b3_sout	 : NATURAL := 810;
26  CONSTANT rdown_b4_sout	 : NATURAL := 810;
27  CONSTANT rdown_cin1_cout	 : NATURAL := 810;
28  CONSTANT rdown_cin1_sout	 : NATURAL := 810;
29  CONSTANT rdown_cin2_sout	 : NATURAL := 810;
30  CONSTANT rdown_cin3_sout	 : NATURAL := 810;
31  CONSTANT rup_a1_cout	 : NATURAL := 890;
32  CONSTANT rup_a1_sout	 : NATURAL := 890;
33  CONSTANT rup_a2_cout	 : NATURAL := 890;
34  CONSTANT rup_a2_sout	 : NATURAL := 890;
35  CONSTANT rup_a3_sout	 : NATURAL := 890;
36  CONSTANT rup_a4_sout	 : NATURAL := 890;
37  CONSTANT rup_b1_cout	 : NATURAL := 890;
38  CONSTANT rup_b1_sout	 : NATURAL := 890;
39  CONSTANT rup_b2_cout	 : NATURAL := 890;
40  CONSTANT rup_b2_sout	 : NATURAL := 890;
41  CONSTANT rup_b3_sout	 : NATURAL := 890;
42  CONSTANT rup_b4_sout	 : NATURAL := 890;
43  CONSTANT rup_cin1_cout	 : NATURAL := 890;
44  CONSTANT rup_cin1_sout	 : NATURAL := 890;
45  CONSTANT rup_cin2_sout	 : NATURAL := 890;
46  CONSTANT rup_cin3_sout	 : NATURAL := 890;
47  CONSTANT tphh_cin3_sout	 : NATURAL := 630;
48  CONSTANT tphh_a4_sout	 : NATURAL := 673;
49  CONSTANT tphh_b4_sout	 : NATURAL := 715;
50  CONSTANT tphh_a1_cout	 : NATURAL := 800;
51  CONSTANT tphh_a2_cout	 : NATURAL := 801;
52  CONSTANT tpll_cin1_cout	 : NATURAL := 830;
53  CONSTANT tpll_b1_cout	 : NATURAL := 839;
54  CONSTANT tpll_a1_cout	 : NATURAL := 866;
55  CONSTANT tpll_b2_cout	 : NATURAL := 883;
56  CONSTANT tphh_b1_cout	 : NATURAL := 884;
57  CONSTANT tphh_b2_cout	 : NATURAL := 892;
58  CONSTANT tphh_cin1_cout	 : NATURAL := 899;
59  CONSTANT tpll_a2_cout	 : NATURAL := 924;
60  CONSTANT tphh_a3_sout	 : NATURAL := 1086;
61  CONSTANT tpll_cin2_sout	 : NATURAL := 1150;
62  CONSTANT tphh_b3_sout	 : NATURAL := 1202;
63  CONSTANT tpll_b3_sout	 : NATURAL := 1208;
64  CONSTANT tpll_a3_sout	 : NATURAL := 1265;
65  CONSTANT tphh_cin2_sout	 : NATURAL := 1308;
66  CONSTANT tpll_b4_sout	 : NATURAL := 1329;
67  CONSTANT tpll_a4_sout	 : NATURAL := 1377;
68  CONSTANT tpll_cin3_sout	 : NATURAL := 1417;
69  CONSTANT tphl_a1_sout	 : NATURAL := 1471;
70  CONSTANT tphl_a2_sout	 : NATURAL := 1472;
71  CONSTANT tplh_cin1_sout	 : NATURAL := 1492;
72  CONSTANT tplh_b1_sout	 : NATURAL := 1501;
73  CONSTANT tplh_a1_sout	 : NATURAL := 1528;
74  CONSTANT tplh_b2_sout	 : NATURAL := 1545;
75  CONSTANT tphl_b1_sout	 : NATURAL := 1555;
76  CONSTANT tphl_b2_sout	 : NATURAL := 1563;
77  CONSTANT tphl_cin1_sout	 : NATURAL := 1570;
78  CONSTANT tplh_a2_sout	 : NATURAL := 1586;
79  CONSTANT transistors	 : NATURAL := 32
80);
81PORT (
82  a1	 : in  BIT;
83  a2	 : in  BIT;
84  a3	 : in  BIT;
85  a4	 : in  BIT;
86  b1	 : in  BIT;
87  b2	 : in  BIT;
88  b3	 : in  BIT;
89  b4	 : in  BIT;
90  cin1	 : in  BIT;
91  cin2	 : in  BIT;
92  cin3	 : in  BIT;
93  cout	 : out BIT;
94  sout	 : out BIT;
95  vdd	 : in  BIT;
96  vss	 : in  BIT
97);
98END fulladder_x4;
99
100ARCHITECTURE behaviour_data_flow OF fulladder_x4 IS
101  SIGNAL ncout	 : BIT;
102
103BEGIN
104  ASSERT ((vdd and not (vss)) = '1')
105  REPORT "power supply is missing on fulladder_x4"
106  SEVERITY WARNING;
107  ASSERT (((((a1 and a2) and a3) and a4) or not ((((a1 or a2) or a3) or
108  a4))) = '1')
109  REPORT "a1, a2, a3, a4 must be connected together on fulladder_x4"
110  SEVERITY WARNING;
111  ASSERT (((((b1 and b2) and b3) and b4) or not ((((b1 or b2) or b3) or
112  b4))) = '1')
113  REPORT "b1, b2, b3, b4 must be connected together on fulladder_x4"
114  SEVERITY WARNING;
115  ASSERT ((((cin1 and cin2) and cin3) or not (((cin1 or cin2) or cin3))) = '1')
116  REPORT "cin1, cin2, cin3 must be connected together on fulladder_x4"
117  SEVERITY WARNING;
118  ncout <= not (((a1 and b1) or ((a2 or b2) and cin1)));
119  sout <= (((a3 and b3) and cin2) or (((a4 or b4) or cin3) and ncout)) after 2200 ps;
120  cout <= not (ncout) after 1500 ps;
121END;
122