dp_csa32.v
4.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
// Module instances modified by /home/rws/workarea/rf/sw/bbplayer/tools/necprimfix
//
// 20 instances of ad01d1 changed to j_ad01.
// 4 instances of ad01d1h changed to j_ad01.
// 8 instances of ad01d2 changed to j_ad01.
//
////////////////////////////////////////////////////////////////////////
//
// Project Reality
//
// module: dp_csa32
// description: 32 bit carry save adder for use in replacing
// datapath CSA with standard cells. Does not
// requires carry in bit to or a carry out bit
// from the CSA.
//
// designer: Brian Ferguson
// date: 3/15/95
//
////////////////////////////////////////////////////////////////////////
module dp_csa32 (
carryin,
input1,
input2,
input3,
partial_sum,
partial_carry,
carryout
);
input carryin ;
input [31:0] input1 ;
input [31:0] input2 ;
input [31:0] input3 ;
output [31:0] partial_sum ;
output [31:0] partial_carry ;
output carryout;
// conditional cells:
assign partial_carry[0] = carryin ;
/*
* The lower eight bits use high performance cells since due to
* the late arrival of round bit 2 onto data bit 6 and the
* ripple affect of the adder these bits tend to be timing
* critical.
*/
j_ad01 csab0 ( .a(input1[0]), .b(input2[0]), .ci(input3[0]),
.s(partial_sum[0]), .co(partial_carry[1])
);
j_ad01 csab1 ( .a(input1[1]), .b(input2[1]), .ci(input3[1]),
.s(partial_sum[1]), .co(partial_carry[2])
);
j_ad01 csab2 ( .a(input1[2]), .b(input2[2]), .ci(input3[2]),
.s(partial_sum[2]), .co(partial_carry[3])
);
j_ad01 csab3 ( .a(input1[3]), .b(input2[3]), .ci(input3[3]),
.s(partial_sum[3]), .co(partial_carry[4])
);
j_ad01 csab4 ( .a(input1[4]), .b(input2[4]), .ci(input3[4]),
.s(partial_sum[4]), .co(partial_carry[5])
);
j_ad01 csab5 ( .a(input1[5]), .b(input2[5]), .ci(input3[5]),
.s(partial_sum[5]), .co(partial_carry[6])
);
j_ad01 csab6 ( .a(input1[6]), .b(input2[6]), .ci(input3[6]),
.s(partial_sum[6]), .co(partial_carry[7])
);
j_ad01 csab7 ( .a(input1[7]), .b(input2[7]), .ci(input3[7]),
.s(partial_sum[7]), .co(partial_carry[8])
);
j_ad01 csab8 ( .a(input1[8]), .b(input2[8]), .ci(input3[8]),
.s(partial_sum[8]), .co(partial_carry[9])
);
j_ad01 csab9 ( .a(input1[9]), .b(input2[9]), .ci(input3[9]),
.s(partial_sum[9]), .co(partial_carry[10])
);
j_ad01 csab10 ( .a(input1[10]), .b(input2[10]), .ci(input3[10]),
.s(partial_sum[10]), .co(partial_carry[11])
);
j_ad01 csab11 ( .a(input1[11]), .b(input2[11]), .ci(input3[11]),
.s(partial_sum[11]), .co(partial_carry[12])
);
j_ad01 csab12 ( .a(input1[12]), .b(input2[12]), .ci(input3[12]),
.s(partial_sum[12]), .co(partial_carry[13])
);
j_ad01 csab13 ( .a(input1[13]), .b(input2[13]), .ci(input3[13]),
.s(partial_sum[13]), .co(partial_carry[14])
);
j_ad01 csab14 ( .a(input1[14]), .b(input2[14]), .ci(input3[14]),
.s(partial_sum[14]), .co(partial_carry[15])
);
j_ad01 csab15 ( .a(input1[15]), .b(input2[15]), .ci(input3[15]),
.s(partial_sum[15]), .co(partial_carry[16])
);
j_ad01 csab16 ( .a(input1[16]), .b(input2[16]), .ci(input3[16]),
.s(partial_sum[16]), .co(partial_carry[17])
);
j_ad01 csab17 ( .a(input1[17]), .b(input2[17]), .ci(input3[17]),
.s(partial_sum[17]), .co(partial_carry[18])
);
j_ad01 csab18 ( .a(input1[18]), .b(input2[18]), .ci(input3[18]),
.s(partial_sum[18]), .co(partial_carry[19])
);
j_ad01 csab19 ( .a(input1[19]), .b(input2[19]), .ci(input3[19]),
.s(partial_sum[19]), .co(partial_carry[20])
);
j_ad01 csab20 ( .a(input1[20]), .b(input2[20]), .ci(input3[20]),
.s(partial_sum[20]), .co(partial_carry[21])
);
j_ad01 csab21 ( .a(input1[21]), .b(input2[21]), .ci(input3[21]),
.s(partial_sum[21]), .co(partial_carry[22])
);
j_ad01 csab22 ( .a(input1[22]), .b(input2[22]), .ci(input3[22]),
.s(partial_sum[22]), .co(partial_carry[23])
);
j_ad01 csab23 ( .a(input1[23]), .b(input2[23]), .ci(input3[23]),
.s(partial_sum[23]), .co(partial_carry[24])
);
j_ad01 csab24 ( .a(input1[24]), .b(input2[24]), .ci(input3[24]),
.s(partial_sum[24]), .co(partial_carry[25])
);
j_ad01 csab25 ( .a(input1[25]), .b(input2[25]), .ci(input3[25]),
.s(partial_sum[25]), .co(partial_carry[26])
);
j_ad01 csab26 ( .a(input1[26]), .b(input2[26]), .ci(input3[26]),
.s(partial_sum[26]), .co(partial_carry[27])
);
j_ad01 csab27 ( .a(input1[27]), .b(input2[27]), .ci(input3[27]),
.s(partial_sum[27]), .co(partial_carry[28])
);
j_ad01 csab28 ( .a(input1[28]), .b(input2[28]), .ci(input3[28]),
.s(partial_sum[28]), .co(partial_carry[29])
);
j_ad01 csab29 ( .a(input1[29]), .b(input2[29]), .ci(input3[29]),
.s(partial_sum[29]), .co(partial_carry[30])
);
j_ad01 csab30 ( .a(input1[30]), .b(input2[30]), .ci(input3[30]),
.s(partial_sum[30]), .co(partial_carry[31])
);
j_ad01 csab31 ( .a(input1[31]), .b(input2[31]), .ci(input3[31]),
.s(partial_sum[31]), .co(carryout)
);
endmodule // dp_csa32