bl_deltaz_add15.v
8.5 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
////////////////////////////////////////////////////////////////////////
//
// 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:
xo02d1 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)
an02d1 c00 (.a1(a[0]), .a2(b[0]), .z(c0b[0]));
assign c1b[0] = c0b[0]; // just to avoid warning (net not driven)
xo02d1 s01 (.a1(a[1]), .a2(b[1]), .z(s0b[1]));
xn02d1 s11 (.a1(a[1]), .a2(b[1]), .zn(s1b[1]));
an02d1 c01 (.a1(a[1]), .a2(b[1]), .z(c0b[1]));
or02d1 c11 (.a1(a[1]), .a2(b[1]), .z(c1b[1]));
xo02d1 s02 (.a1(a[2]), .a2(b[2]), .z(s0b[2]));
xn02d1 s12 (.a1(a[2]), .a2(b[2]), .zn(s1b[2]));
an02d1 c02 (.a1(a[2]), .a2(b[2]), .z(c0b[2]));
or02d1 c12 (.a1(a[2]), .a2(b[2]), .z(c1b[2]));
xo02d1 s03 (.a1(a[3]), .a2(b[3]), .z(s0b[3]));
xn02d1 s13 (.a1(a[3]), .a2(b[3]), .zn(s1b[3]));
an02d1 c03 (.a1(a[3]), .a2(b[3]), .z(c0b[3]));
or02d1 c13 (.a1(a[3]), .a2(b[3]), .z(c1b[3]));
xo02d1 s04 (.a1(a[4]), .a2(b[4]), .z(s0b[4]));
xn02d1 s14 (.a1(a[4]), .a2(b[4]), .zn(s1b[4]));
an02d1 c04 (.a1(a[4]), .a2(b[4]), .z(c0b[4]));
or02d1 c14 (.a1(a[4]), .a2(b[4]), .z(c1b[4]));
xo02d1 s05 (.a1(a[5]), .a2(b[5]), .z(s0b[5]));
xn02d1 s15 (.a1(a[5]), .a2(b[5]), .zn(s1b[5]));
an02d1 c05 (.a1(a[5]), .a2(b[5]), .z(c0b[5]));
or02d1 c15 (.a1(a[5]), .a2(b[5]), .z(c1b[5]));
xo02d1 s06 (.a1(a[6]), .a2(b[6]), .z(s0b[6]));
xn02d1 s16 (.a1(a[6]), .a2(b[6]), .zn(s1b[6]));
an02d1 c06 (.a1(a[6]), .a2(b[6]), .z(c0b[6]));
or02d1 c16 (.a1(a[6]), .a2(b[6]), .z(c1b[6]));
xo02d1 s07 (.a1(a[7]), .a2(b[7]), .z(s0b[7]));
xn02d1 s17 (.a1(a[7]), .a2(b[7]), .zn(s1b[7]));
an02d1 c07 (.a1(a[7]), .a2(b[7]), .z(c0b[7]));
or02d1 c17 (.a1(a[7]), .a2(b[7]), .z(c1b[7]));
xo02d1 s08 (.a1(a[8]), .a2(b[8]), .z(s0b[8]));
xn02d1 s18 (.a1(a[8]), .a2(b[8]), .zn(s1b[8]));
an02d1 c08 (.a1(a[8]), .a2(b[8]), .z(c0b[8]));
or02d1 c18 (.a1(a[8]), .a2(b[8]), .z(c1b[8]));
xo02d1 s09 (.a1(a[9]), .a2(b[9]), .z(s0b[9]));
xn02d1 s19 (.a1(a[9]), .a2(b[9]), .zn(s1b[9]));
an02d1 c09 (.a1(a[9]), .a2(b[9]), .z(c0b[9]));
or02d1 c19 (.a1(a[9]), .a2(b[9]), .z(c1b[9]));
xo02d1 s010 (.a1(a[10]),.a2(b[10]), .z(s0b[10]));
xn02d1 s110 (.a1(a[10]),.a2(b[10]),.zn(s1b[10]));
an02d1 c010 (.a1(a[10]),.a2(b[10]), .z(c0b[10]));
or02d1 c110 (.a1(a[10]),.a2(b[10]), .z(c1b[10]));
xo02d1 s011 (.a1(a[11]),.a2(b[11]), .z(s0b[11]));
xn02d1 s111 (.a1(a[11]),.a2(b[11]),.zn(s1b[11]));
an02d1 c011 (.a1(a[11]),.a2(b[11]), .z(c0b[11]));
or02d1 c111 (.a1(a[11]),.a2(b[11]), .z(c1b[11]));
xo02d1 s012 (.a1(a[12]),.a2(b[12]), .z(s0b[12]));
xn02d1 s112 (.a1(a[12]),.a2(b[12]),.zn(s1b[12]));
an02d1 c012 (.a1(a[12]),.a2(b[12]), .z(c0b[12]));
or02d1 c112 (.a1(a[12]),.a2(b[12]), .z(c1b[12]));
xo02d1 s013 (.a1(a[13]),.a2(b[13]), .z(s0b[13]));
xn02d1 s113 (.a1(a[13]),.a2(b[13]),.zn(s1b[13]));
an02d1 c013 (.a1(a[13]),.a2(b[13]), .z(c0b[13]));
or02d1 c113 (.a1(a[13]),.a2(b[13]), .z(c1b[13]));
xo02d1 s014 (.a1(a[14]),.a2(b[14]), .z(s0b[14]));
xn02d1 s114 (.a1(a[14]),.a2(b[14]),.zn(s1b[14]));
an02d1 c014 (.a1(a[14]),.a2(b[14]), .z(c0b[14]));
or02d1 c114 (.a1(a[14]),.a2(b[14]), .z(c1b[14]));
// first rank of muxes (all muxes should be high performance):
mx21d1h mas02 (.s(c0b[1]), .i0(s0b[2]), .i1(s1b[2]), .z(mas0b2));
mx21d1h mas12 (.s(c1b[1]), .i0(s0b[2]), .i1(s1b[2]), .z(mas1b2));
mx21d1h mac02 (.s(c0b[1]), .i0(c0b[2]), .i1(c1b[2]), .z(mac0b2));
mx21d1h mac12 (.s(c1b[1]), .i0(c0b[2]), .i1(c1b[2]), .z(mac1b2));
mx21d1h mas04 (.s(c0b[3]), .i0(s0b[4]), .i1(s1b[4]), .z(mas0b4));
mx21d1h mas14 (.s(c1b[3]), .i0(s0b[4]), .i1(s1b[4]), .z(mas1b4));
mx21d1h mac04 (.s(c0b[3]), .i0(c0b[4]), .i1(c1b[4]), .z(mac0b4));
mx21d1h mac14 (.s(c1b[3]), .i0(c0b[4]), .i1(c1b[4]), .z(mac1b4));
mx21d1h mas06 (.s(c0b[5]), .i0(s0b[6]), .i1(s1b[6]), .z(mas0b6));
mx21d1h mas16 (.s(c1b[5]), .i0(s0b[6]), .i1(s1b[6]), .z(mas1b6));
mx21d1h mac06 (.s(c0b[5]), .i0(c0b[6]), .i1(c1b[6]), .z(mac0b6));
mx21d1h mac16 (.s(c1b[5]), .i0(c0b[6]), .i1(c1b[6]), .z(mac1b6));
mx21d1h mas08 (.s(c0b[7]), .i0(s0b[8]), .i1(s1b[8]), .z(mas0b8));
mx21d1h mas18 (.s(c1b[7]), .i0(s0b[8]), .i1(s1b[8]), .z(mas1b8));
mx21d1h mac08 (.s(c0b[7]), .i0(c0b[8]), .i1(c1b[8]), .z(mac0b8));
mx21d1h mac18 (.s(c1b[7]), .i0(c0b[8]), .i1(c1b[8]), .z(mac1b8));
mx21d1h mas010 (.s(c0b[9]), .i0(s0b[10]),.i1(s1b[10]),.z(mas0b10));
mx21d1h mas110 (.s(c1b[9]), .i0(s0b[10]),.i1(s1b[10]),.z(mas1b10));
mx21d1h mac010 (.s(c0b[9]), .i0(c0b[10]),.i1(c1b[10]),.z(mac0b10));
mx21d1h mac110 (.s(c1b[9]), .i0(c0b[10]),.i1(c1b[10]),.z(mac1b10));
mx21d1h mas012 (.s(c0b[11]),.i0(s0b[12]),.i1(s1b[12]),.z(mas0b12));
mx21d1h mas112 (.s(c1b[11]),.i0(s0b[12]),.i1(s1b[12]),.z(mas1b12));
mx21d1h mac012 (.s(c0b[11]),.i0(c0b[12]),.i1(c1b[12]),.z(mac0b12));
mx21d1h mac112 (.s(c1b[11]),.i0(c0b[12]),.i1(c1b[12]),.z(mac1b12));
mx21d1h mas014 (.s(c0b[13]),.i0(s0b[14]),.i1(s1b[14]),.z(mas0b14));
mx21d1h mas114 (.s(c1b[13]),.i0(s0b[14]),.i1(s1b[14]),.z(mas1b14));
mx21d1h mac014 (.s(c0b[13]),.i0(c0b[14]),.i1(c1b[14]),.z(mac0b14));
mx21d1h mac114 (.s(c1b[13]),.i0(c0b[14]),.i1(c1b[14]),.z(mac1b14));
// second rank of muxes:
mx21d1h mbs01 (.s(c0b[0]), .i0(s0b[1]), .i1(s1b[1]), .z(s[1]));
mx21d1h mbs02 (.s(c0b[0]), .i0(mas0b2), .i1(mas1b2), .z(s[2]));
mx21d1h mbc02 (.s(c0b[0]), .i0(mac0b2), .i1(mac1b2), .z(mbc0b2));
mx21d1h mbs05 (.s(mac0b4), .i0(s0b[5]), .i1(s1b[5]), .z(mbs0b5));
mx21d1h mbs15 (.s(mac1b4), .i0(s0b[5]), .i1(s1b[5]), .z(mbs1b5));
mx21d1h mbs06 (.s(mac0b4), .i0(mas0b6), .i1(mas1b6), .z(mbs0b6));
mx21d1h mbs16 (.s(mac1b4), .i0(mas0b6), .i1(mas1b6), .z(mbs1b6));
mx21d1h mbc06 (.s(mac0b4), .i0(mac0b6), .i1(mac1b6), .z(mbc0b6));
mx21d1h mbc16 (.s(mac1b4), .i0(mac0b6), .i1(mac1b6), .z(mbc1b6));
mx21d1h mbs09 (.s(mac0b8), .i0(s0b[9]), .i1(s1b[9]), .z(mbs0b9));
mx21d1h mbs19 (.s(mac1b8), .i0(s0b[9]), .i1(s1b[9]), .z(mbs1b9));
mx21d1h mbs010 (.s(mac0b8), .i0(mas0b10),.i1(mas1b10),.z(mbs0b10));
mx21d1h mbs110 (.s(mac1b8), .i0(mas0b10),.i1(mas1b10),.z(mbs1b10));
mx21d1h mbc010 (.s(mac0b8), .i0(mac0b10),.i1(mac1b10),.z(mbc0b10));
mx21d1h mbc110 (.s(mac1b8), .i0(mac0b10),.i1(mac1b10),.z(mbc1b10));
mx21d1h mbs013 (.s(mac0b12),.i0(s0b[13]),.i1(s1b[13]),.z(mbs0b13));
mx21d1h mbs113 (.s(mac1b12),.i0(s0b[13]),.i1(s1b[13]),.z(mbs1b13));
mx21d1h mbs014 (.s(mac0b12),.i0(mas0b14),.i1(mas1b14),.z(mbs0b14));
mx21d1h mbs114 (.s(mac1b12),.i0(mas0b14),.i1(mas1b14),.z(mbs1b14));
mx21d1h mbc014 (.s(mac0b12),.i0(mac0b14),.i1(mac1b14),.z(mbc0b14));
mx21d1h mbc114 (.s(mac1b12),.i0(mac0b14),.i1(mac1b14),.z(mbc1b14));
// third rank of muxes:
mx21d1h mcs03 (.s(mbc0b2), .i0(s0b[3]), .i1(s1b[3]), .z(s[3]));
mx21d1h mcs04 (.s(mbc0b2), .i0(mas0b4), .i1(mas1b4), .z(s[4]));
mx21d1h mcs05 (.s(mbc0b2), .i0(mbs0b5), .i1(mbs1b5), .z(s[5]));
mx21d1h mcs06 (.s(mbc0b2), .i0(mbs0b6), .i1(mbs1b6), .z(s[6]));
mx21d1h mcc06 (.s(mbc0b2), .i0(mbc0b6), .i1(mbc1b6), .z(mcc0b6));
mx21d1h mcs011 (.s(mbc0b10),.i0(s0b[11]),.i1(s1b[11]),.z(mcs0b11));
mx21d1h mcs111 (.s(mbc1b10),.i0(s0b[11]),.i1(s1b[11]),.z(mcs1b11));
mx21d1h mcs012 (.s(mbc0b10),.i0(mas0b12),.i1(mas1b12),.z(mcs0b12));
mx21d1h mcs112 (.s(mbc1b10),.i0(mas0b12),.i1(mas1b12),.z(mcs1b12));
mx21d1h mcs013 (.s(mbc0b10),.i0(mbs0b13),.i1(mbs1b13),.z(mcs0b13));
mx21d1h mcs113 (.s(mbc1b10),.i0(mbs0b13),.i1(mbs1b13),.z(mcs1b13));
mx21d1h mcs014 (.s(mbc0b10),.i0(mbs0b14),.i1(mbs1b14),.z(mcs0b14));
mx21d1h mcs114 (.s(mbc1b10),.i0(mbs0b14),.i1(mbs1b14),.z(mcs1b14));
mx21d1h mcc014 (.s(mbc0b10),.i0(mbc0b14),.i1(mbc1b14),.z(mcc0b14));
mx21d1h mcc114 (.s(mbc1b10),.i0(mbc0b14),.i1(mbc1b14),.z(mcc1b14));
// fourth rank of muxes:
mx21d1h mds07 (.s(mcc0b6), .i0(s0b[7]), .i1(s1b[7]), .z(s[7]));
mx21d1h mds08 (.s(mcc0b6), .i0(mas0b8), .i1(mas1b8), .z(s[8]));
mx21d1h mds09 (.s(mcc0b6), .i0(mbs0b9), .i1(mbs1b9), .z(s[9]));
mx21d1h mds010 (.s(mcc0b6), .i0(mbs0b10),.i1(mbs1b10),.z(s[10]));
mx21d1h mds011 (.s(mcc0b6), .i0(mcs0b11),.i1(mcs1b11),.z(s[11]));
mx21d1h mds012 (.s(mcc0b6), .i0(mcs0b12),.i1(mcs1b12),.z(s[12]));
mx21d1h mds013 (.s(mcc0b6), .i0(mcs0b13),.i1(mcs1b13),.z(s[13]));
mx21d1h mds014 (.s(mcc0b6), .i0(mcs0b14),.i1(mcs1b14),.z(s[14]));
mx21d1h mdc0co (.s(mcc0b6), .i0(mcc0b14),.i1(mcc1b14),.z(s[15]));
endmodule // bl_deltaz_add15