bl_deltaz_add15.v
8.75 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
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
// Module instances modified by /home/rws/workarea/rf/sw/bbplayer/tools/necprimfix
//
// 15 instances of an02d1 changed to j_an02.
// 73 instances of mx21d1h changed to j_mx21.
// 14 instances of or02d1 changed to j_or02.
// 14 instances of xn02d1 changed to j_xn02.
// 15 instances of xo02d1 changed to j_xo02.
//
////////////////////////////////////////////////////////////////////////
//
// Project Reality
//
// module: bl_deltaz_add15
// description: Carry-propagating adder for sum of delta z's for blend,
// with carry out only. Conditional sum adder.
//
// designer: Phil Gossett
// date: 10/6/94
//
////////////////////////////////////////////////////////////////////////
module bl_deltaz_add15 (a, b, s);
input [14:0] a;
input [14:0] b;
wire [14:0] s0b;
wire [14:0] s1b;
wire [14:0] c0b;
wire [14:0] c1b;
output [15:0] s;
// conditional cells:
j_xo02 s00 (.a1(a[0]), .a2(b[0]), .z(s[0])); // output
assign s0b[0] = s[0]; // just to avoid warning (net not driven)
assign s1b[0] = s[0]; // just to avoid warning (net not driven)
j_an02 c00 (.a1(a[0]), .a2(b[0]), .z(c0b[0]));
assign c1b[0] = c0b[0]; // just to avoid warning (net not driven)
j_xo02 s01 (.a1(a[1]), .a2(b[1]), .z(s0b[1]));
j_xn02 s11 (.a1(a[1]), .a2(b[1]), .zn(s1b[1]));
j_an02 c01 (.a1(a[1]), .a2(b[1]), .z(c0b[1]));
j_or02 c11 (.a1(a[1]), .a2(b[1]), .z(c1b[1]));
j_xo02 s02 (.a1(a[2]), .a2(b[2]), .z(s0b[2]));
j_xn02 s12 (.a1(a[2]), .a2(b[2]), .zn(s1b[2]));
j_an02 c02 (.a1(a[2]), .a2(b[2]), .z(c0b[2]));
j_or02 c12 (.a1(a[2]), .a2(b[2]), .z(c1b[2]));
j_xo02 s03 (.a1(a[3]), .a2(b[3]), .z(s0b[3]));
j_xn02 s13 (.a1(a[3]), .a2(b[3]), .zn(s1b[3]));
j_an02 c03 (.a1(a[3]), .a2(b[3]), .z(c0b[3]));
j_or02 c13 (.a1(a[3]), .a2(b[3]), .z(c1b[3]));
j_xo02 s04 (.a1(a[4]), .a2(b[4]), .z(s0b[4]));
j_xn02 s14 (.a1(a[4]), .a2(b[4]), .zn(s1b[4]));
j_an02 c04 (.a1(a[4]), .a2(b[4]), .z(c0b[4]));
j_or02 c14 (.a1(a[4]), .a2(b[4]), .z(c1b[4]));
j_xo02 s05 (.a1(a[5]), .a2(b[5]), .z(s0b[5]));
j_xn02 s15 (.a1(a[5]), .a2(b[5]), .zn(s1b[5]));
j_an02 c05 (.a1(a[5]), .a2(b[5]), .z(c0b[5]));
j_or02 c15 (.a1(a[5]), .a2(b[5]), .z(c1b[5]));
j_xo02 s06 (.a1(a[6]), .a2(b[6]), .z(s0b[6]));
j_xn02 s16 (.a1(a[6]), .a2(b[6]), .zn(s1b[6]));
j_an02 c06 (.a1(a[6]), .a2(b[6]), .z(c0b[6]));
j_or02 c16 (.a1(a[6]), .a2(b[6]), .z(c1b[6]));
j_xo02 s07 (.a1(a[7]), .a2(b[7]), .z(s0b[7]));
j_xn02 s17 (.a1(a[7]), .a2(b[7]), .zn(s1b[7]));
j_an02 c07 (.a1(a[7]), .a2(b[7]), .z(c0b[7]));
j_or02 c17 (.a1(a[7]), .a2(b[7]), .z(c1b[7]));
j_xo02 s08 (.a1(a[8]), .a2(b[8]), .z(s0b[8]));
j_xn02 s18 (.a1(a[8]), .a2(b[8]), .zn(s1b[8]));
j_an02 c08 (.a1(a[8]), .a2(b[8]), .z(c0b[8]));
j_or02 c18 (.a1(a[8]), .a2(b[8]), .z(c1b[8]));
j_xo02 s09 (.a1(a[9]), .a2(b[9]), .z(s0b[9]));
j_xn02 s19 (.a1(a[9]), .a2(b[9]), .zn(s1b[9]));
j_an02 c09 (.a1(a[9]), .a2(b[9]), .z(c0b[9]));
j_or02 c19 (.a1(a[9]), .a2(b[9]), .z(c1b[9]));
j_xo02 s010 (.a1(a[10]),.a2(b[10]), .z(s0b[10]));
j_xn02 s110 (.a1(a[10]),.a2(b[10]),.zn(s1b[10]));
j_an02 c010 (.a1(a[10]),.a2(b[10]), .z(c0b[10]));
j_or02 c110 (.a1(a[10]),.a2(b[10]), .z(c1b[10]));
j_xo02 s011 (.a1(a[11]),.a2(b[11]), .z(s0b[11]));
j_xn02 s111 (.a1(a[11]),.a2(b[11]),.zn(s1b[11]));
j_an02 c011 (.a1(a[11]),.a2(b[11]), .z(c0b[11]));
j_or02 c111 (.a1(a[11]),.a2(b[11]), .z(c1b[11]));
j_xo02 s012 (.a1(a[12]),.a2(b[12]), .z(s0b[12]));
j_xn02 s112 (.a1(a[12]),.a2(b[12]),.zn(s1b[12]));
j_an02 c012 (.a1(a[12]),.a2(b[12]), .z(c0b[12]));
j_or02 c112 (.a1(a[12]),.a2(b[12]), .z(c1b[12]));
j_xo02 s013 (.a1(a[13]),.a2(b[13]), .z(s0b[13]));
j_xn02 s113 (.a1(a[13]),.a2(b[13]),.zn(s1b[13]));
j_an02 c013 (.a1(a[13]),.a2(b[13]), .z(c0b[13]));
j_or02 c113 (.a1(a[13]),.a2(b[13]), .z(c1b[13]));
j_xo02 s014 (.a1(a[14]),.a2(b[14]), .z(s0b[14]));
j_xn02 s114 (.a1(a[14]),.a2(b[14]),.zn(s1b[14]));
j_an02 c014 (.a1(a[14]),.a2(b[14]), .z(c0b[14]));
j_or02 c114 (.a1(a[14]),.a2(b[14]), .z(c1b[14]));
// first rank of muxes (all muxes should be high performance):
j_mx21 mas02 (.s(c0b[1]), .i0(s0b[2]), .i1(s1b[2]), .z(mas0b2));
j_mx21 mas12 (.s(c1b[1]), .i0(s0b[2]), .i1(s1b[2]), .z(mas1b2));
j_mx21 mac02 (.s(c0b[1]), .i0(c0b[2]), .i1(c1b[2]), .z(mac0b2));
j_mx21 mac12 (.s(c1b[1]), .i0(c0b[2]), .i1(c1b[2]), .z(mac1b2));
j_mx21 mas04 (.s(c0b[3]), .i0(s0b[4]), .i1(s1b[4]), .z(mas0b4));
j_mx21 mas14 (.s(c1b[3]), .i0(s0b[4]), .i1(s1b[4]), .z(mas1b4));
j_mx21 mac04 (.s(c0b[3]), .i0(c0b[4]), .i1(c1b[4]), .z(mac0b4));
j_mx21 mac14 (.s(c1b[3]), .i0(c0b[4]), .i1(c1b[4]), .z(mac1b4));
j_mx21 mas06 (.s(c0b[5]), .i0(s0b[6]), .i1(s1b[6]), .z(mas0b6));
j_mx21 mas16 (.s(c1b[5]), .i0(s0b[6]), .i1(s1b[6]), .z(mas1b6));
j_mx21 mac06 (.s(c0b[5]), .i0(c0b[6]), .i1(c1b[6]), .z(mac0b6));
j_mx21 mac16 (.s(c1b[5]), .i0(c0b[6]), .i1(c1b[6]), .z(mac1b6));
j_mx21 mas08 (.s(c0b[7]), .i0(s0b[8]), .i1(s1b[8]), .z(mas0b8));
j_mx21 mas18 (.s(c1b[7]), .i0(s0b[8]), .i1(s1b[8]), .z(mas1b8));
j_mx21 mac08 (.s(c0b[7]), .i0(c0b[8]), .i1(c1b[8]), .z(mac0b8));
j_mx21 mac18 (.s(c1b[7]), .i0(c0b[8]), .i1(c1b[8]), .z(mac1b8));
j_mx21 mas010 (.s(c0b[9]), .i0(s0b[10]),.i1(s1b[10]),.z(mas0b10));
j_mx21 mas110 (.s(c1b[9]), .i0(s0b[10]),.i1(s1b[10]),.z(mas1b10));
j_mx21 mac010 (.s(c0b[9]), .i0(c0b[10]),.i1(c1b[10]),.z(mac0b10));
j_mx21 mac110 (.s(c1b[9]), .i0(c0b[10]),.i1(c1b[10]),.z(mac1b10));
j_mx21 mas012 (.s(c0b[11]),.i0(s0b[12]),.i1(s1b[12]),.z(mas0b12));
j_mx21 mas112 (.s(c1b[11]),.i0(s0b[12]),.i1(s1b[12]),.z(mas1b12));
j_mx21 mac012 (.s(c0b[11]),.i0(c0b[12]),.i1(c1b[12]),.z(mac0b12));
j_mx21 mac112 (.s(c1b[11]),.i0(c0b[12]),.i1(c1b[12]),.z(mac1b12));
j_mx21 mas014 (.s(c0b[13]),.i0(s0b[14]),.i1(s1b[14]),.z(mas0b14));
j_mx21 mas114 (.s(c1b[13]),.i0(s0b[14]),.i1(s1b[14]),.z(mas1b14));
j_mx21 mac014 (.s(c0b[13]),.i0(c0b[14]),.i1(c1b[14]),.z(mac0b14));
j_mx21 mac114 (.s(c1b[13]),.i0(c0b[14]),.i1(c1b[14]),.z(mac1b14));
// second rank of muxes:
j_mx21 mbs01 (.s(c0b[0]), .i0(s0b[1]), .i1(s1b[1]), .z(s[1]));
j_mx21 mbs02 (.s(c0b[0]), .i0(mas0b2), .i1(mas1b2), .z(s[2]));
j_mx21 mbc02 (.s(c0b[0]), .i0(mac0b2), .i1(mac1b2), .z(mbc0b2));
j_mx21 mbs05 (.s(mac0b4), .i0(s0b[5]), .i1(s1b[5]), .z(mbs0b5));
j_mx21 mbs15 (.s(mac1b4), .i0(s0b[5]), .i1(s1b[5]), .z(mbs1b5));
j_mx21 mbs06 (.s(mac0b4), .i0(mas0b6), .i1(mas1b6), .z(mbs0b6));
j_mx21 mbs16 (.s(mac1b4), .i0(mas0b6), .i1(mas1b6), .z(mbs1b6));
j_mx21 mbc06 (.s(mac0b4), .i0(mac0b6), .i1(mac1b6), .z(mbc0b6));
j_mx21 mbc16 (.s(mac1b4), .i0(mac0b6), .i1(mac1b6), .z(mbc1b6));
j_mx21 mbs09 (.s(mac0b8), .i0(s0b[9]), .i1(s1b[9]), .z(mbs0b9));
j_mx21 mbs19 (.s(mac1b8), .i0(s0b[9]), .i1(s1b[9]), .z(mbs1b9));
j_mx21 mbs010 (.s(mac0b8), .i0(mas0b10),.i1(mas1b10),.z(mbs0b10));
j_mx21 mbs110 (.s(mac1b8), .i0(mas0b10),.i1(mas1b10),.z(mbs1b10));
j_mx21 mbc010 (.s(mac0b8), .i0(mac0b10),.i1(mac1b10),.z(mbc0b10));
j_mx21 mbc110 (.s(mac1b8), .i0(mac0b10),.i1(mac1b10),.z(mbc1b10));
j_mx21 mbs013 (.s(mac0b12),.i0(s0b[13]),.i1(s1b[13]),.z(mbs0b13));
j_mx21 mbs113 (.s(mac1b12),.i0(s0b[13]),.i1(s1b[13]),.z(mbs1b13));
j_mx21 mbs014 (.s(mac0b12),.i0(mas0b14),.i1(mas1b14),.z(mbs0b14));
j_mx21 mbs114 (.s(mac1b12),.i0(mas0b14),.i1(mas1b14),.z(mbs1b14));
j_mx21 mbc014 (.s(mac0b12),.i0(mac0b14),.i1(mac1b14),.z(mbc0b14));
j_mx21 mbc114 (.s(mac1b12),.i0(mac0b14),.i1(mac1b14),.z(mbc1b14));
// third rank of muxes:
j_mx21 mcs03 (.s(mbc0b2), .i0(s0b[3]), .i1(s1b[3]), .z(s[3]));
j_mx21 mcs04 (.s(mbc0b2), .i0(mas0b4), .i1(mas1b4), .z(s[4]));
j_mx21 mcs05 (.s(mbc0b2), .i0(mbs0b5), .i1(mbs1b5), .z(s[5]));
j_mx21 mcs06 (.s(mbc0b2), .i0(mbs0b6), .i1(mbs1b6), .z(s[6]));
j_mx21 mcc06 (.s(mbc0b2), .i0(mbc0b6), .i1(mbc1b6), .z(mcc0b6));
j_mx21 mcs011 (.s(mbc0b10),.i0(s0b[11]),.i1(s1b[11]),.z(mcs0b11));
j_mx21 mcs111 (.s(mbc1b10),.i0(s0b[11]),.i1(s1b[11]),.z(mcs1b11));
j_mx21 mcs012 (.s(mbc0b10),.i0(mas0b12),.i1(mas1b12),.z(mcs0b12));
j_mx21 mcs112 (.s(mbc1b10),.i0(mas0b12),.i1(mas1b12),.z(mcs1b12));
j_mx21 mcs013 (.s(mbc0b10),.i0(mbs0b13),.i1(mbs1b13),.z(mcs0b13));
j_mx21 mcs113 (.s(mbc1b10),.i0(mbs0b13),.i1(mbs1b13),.z(mcs1b13));
j_mx21 mcs014 (.s(mbc0b10),.i0(mbs0b14),.i1(mbs1b14),.z(mcs0b14));
j_mx21 mcs114 (.s(mbc1b10),.i0(mbs0b14),.i1(mbs1b14),.z(mcs1b14));
j_mx21 mcc014 (.s(mbc0b10),.i0(mbc0b14),.i1(mbc1b14),.z(mcc0b14));
j_mx21 mcc114 (.s(mbc1b10),.i0(mbc0b14),.i1(mbc1b14),.z(mcc1b14));
// fourth rank of muxes:
j_mx21 mds07 (.s(mcc0b6), .i0(s0b[7]), .i1(s1b[7]), .z(s[7]));
j_mx21 mds08 (.s(mcc0b6), .i0(mas0b8), .i1(mas1b8), .z(s[8]));
j_mx21 mds09 (.s(mcc0b6), .i0(mbs0b9), .i1(mbs1b9), .z(s[9]));
j_mx21 mds010 (.s(mcc0b6), .i0(mbs0b10),.i1(mbs1b10),.z(s[10]));
j_mx21 mds011 (.s(mcc0b6), .i0(mcs0b11),.i1(mcs1b11),.z(s[11]));
j_mx21 mds012 (.s(mcc0b6), .i0(mcs0b12),.i1(mcs1b12),.z(s[12]));
j_mx21 mds013 (.s(mcc0b6), .i0(mcs0b13),.i1(mcs1b13),.z(s[13]));
j_mx21 mds014 (.s(mcc0b6), .i0(mcs0b14),.i1(mcs1b14),.z(s[14]));
j_mx21 mdc0co (.s(mcc0b6), .i0(mcc0b14),.i1(mcc1b14),.z(s[15]));
endmodule // bl_deltaz_add15