OpenCores
URL https://opencores.org/ocsvn/sparc64soc/sparc64soc/trunk

Subversion Repositories sparc64soc

[/] [sparc64soc/] [trunk/] [T1-FPU/] [fpu_cnt_lead0_53b.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dmitryr
// ========== Copyright Header Begin ==========================================
2
// 
3
// OpenSPARC T1 Processor File: fpu_cnt_lead0_53b.v
4
// Copyright (c) 2006 Sun Microsystems, Inc.  All Rights Reserved.
5
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
6
// 
7
// The above named program is free software; you can redistribute it and/or
8
// modify it under the terms of the GNU General Public
9
// License version 2 as published by the Free Software Foundation.
10
// 
11
// The above named program is distributed in the hope that it will be 
12
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
// General Public License for more details.
15
// 
16
// You should have received a copy of the GNU General Public
17
// License along with this work; if not, write to the Free Software
18
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
19
// 
20
// ========== Copyright Header End ============================================
21
///////////////////////////////////////////////////////////////////////////////
22
//
23
//      53 bit lead 0 counter.
24
//
25
///////////////////////////////////////////////////////////////////////////////
26
 
27
module fpu_cnt_lead0_53b (
28
        din,
29
 
30
        lead0
31
);
32
 
33
 
34
input [52:0]     din;                    // data in- count its leading 0's
35
 
36
output [5:0]     lead0;                  // number of leading 0's in data in
37
 
38
 
39
wire            din_52_49_eq_0;
40
wire            din_52_51_eq_0;
41
wire            lead0_52_49_0;
42
wire            din_48_45_eq_0;
43
wire            din_48_47_eq_0;
44
wire            lead0_48_45_0;
45
wire            din_44_41_eq_0;
46
wire            din_44_43_eq_0;
47
wire            lead0_44_41_0;
48
wire            din_40_37_eq_0;
49
wire            din_40_39_eq_0;
50
wire            lead0_40_37_0;
51
wire            din_36_33_eq_0;
52
wire            din_36_35_eq_0;
53
wire            lead0_36_33_0;
54
wire            din_32_29_eq_0;
55
wire            din_32_31_eq_0;
56
wire            lead0_32_29_0;
57
wire            din_28_25_eq_0;
58
wire            din_28_27_eq_0;
59
wire            lead0_28_25_0;
60
wire            din_24_21_eq_0;
61
wire            din_24_23_eq_0;
62
wire            lead0_24_21_0;
63
wire            din_20_17_eq_0;
64
wire            din_20_19_eq_0;
65
wire            lead0_20_17_0;
66
wire            din_16_13_eq_0;
67
wire            din_16_15_eq_0;
68
wire            lead0_16_13_0;
69
wire            din_12_9_eq_0;
70
wire            din_12_11_eq_0;
71
wire            lead0_12_9_0;
72
wire            din_8_5_eq_0;
73
wire            din_8_7_eq_0;
74
wire            lead0_8_5_0;
75
wire            din_4_1_eq_0;
76
wire            din_4_3_eq_0;
77
wire            lead0_4_1_0;
78
wire            lead0_0_0;
79
wire            din_52_45_eq_0;
80
wire            lead0_52_45_1;
81
wire            lead0_52_45_0;
82
wire            din_44_37_eq_0;
83
wire            lead0_44_37_1;
84
wire            lead0_44_37_0;
85
wire            din_36_29_eq_0;
86
wire            lead0_36_29_1;
87
wire            lead0_36_29_0;
88
wire            din_28_21_eq_0;
89
wire            lead0_28_21_1;
90
wire            lead0_28_21_0;
91
wire            din_20_13_eq_0;
92
wire            lead0_20_13_1;
93
wire            lead0_20_13_0;
94
wire            din_12_5_eq_0;
95
wire            lead0_12_5_1;
96
wire            lead0_12_5_0;
97
wire            lead0_4_0_1;
98
wire            lead0_4_0_0;
99
wire            din_52_37_eq_0;
100
wire            lead0_52_37_2;
101
wire            lead0_52_37_1;
102
wire            lead0_52_37_0;
103
wire            din_36_21_eq_0;
104
wire            lead0_36_21_2;
105
wire            lead0_36_21_1;
106
wire            lead0_36_21_0;
107
wire            din_20_5_eq_0;
108
wire            lead0_20_5_2;
109
wire            lead0_20_5_1;
110
wire            lead0_20_5_0;
111
wire            lead0_4_0_2;
112
wire            din_52_21_eq_0;
113
wire            lead0_52_21_3;
114
wire            lead0_52_21_2;
115
wire            lead0_52_21_1;
116
wire            lead0_52_21_0;
117
wire            lead0_20_0_3;
118
wire            lead0_20_0_2;
119
wire            lead0_20_0_1;
120
wire            lead0_20_0_0;
121
wire            lead0_5;
122
wire            lead0_4;
123
wire            lead0_3;
124
wire            lead0_2;
125
wire            lead0_1;
126
wire            lead0_0;
127
wire [5:0]       lead0;
128
 
129
 
130
///////////////////////////////////////////////////////////////////////////////
131
//
132
//      Instantiations of lead 0 building blocks.
133
//
134
///////////////////////////////////////////////////////////////////////////////
135
 
136
fpu_cnt_lead0_lvl1 i_fpu_cnt_lead0_lvl1_52_49 (
137
        .din                    (din[52:49]),
138
 
139
        .din_3_0_eq_0           (din_52_49_eq_0),
140
        .din_3_2_eq_0           (din_52_51_eq_0),
141
        .lead0_4b_0             (lead0_52_49_0)
142
);
143
 
144
fpu_cnt_lead0_lvl1 i_fpu_cnt_lead0_lvl1_48_45 (
145
        .din                    (din[48:45]),
146
 
147
        .din_3_0_eq_0           (din_48_45_eq_0),
148
        .din_3_2_eq_0           (din_48_47_eq_0),
149
        .lead0_4b_0             (lead0_48_45_0)
150
);
151
 
152
fpu_cnt_lead0_lvl1 i_fpu_cnt_lead0_lvl1_44_41 (
153
        .din                    (din[44:41]),
154
 
155
        .din_3_0_eq_0           (din_44_41_eq_0),
156
        .din_3_2_eq_0           (din_44_43_eq_0),
157
        .lead0_4b_0             (lead0_44_41_0)
158
);
159
 
160
fpu_cnt_lead0_lvl1 i_fpu_cnt_lead0_lvl1_40_37 (
161
        .din                    (din[40:37]),
162
 
163
        .din_3_0_eq_0           (din_40_37_eq_0),
164
        .din_3_2_eq_0           (din_40_39_eq_0),
165
        .lead0_4b_0             (lead0_40_37_0)
166
);
167
 
168
fpu_cnt_lead0_lvl1 i_fpu_cnt_lead0_lvl1_36_33 (
169
        .din                    (din[36:33]),
170
 
171
        .din_3_0_eq_0           (din_36_33_eq_0),
172
        .din_3_2_eq_0           (din_36_35_eq_0),
173
        .lead0_4b_0             (lead0_36_33_0)
174
);
175
 
176
fpu_cnt_lead0_lvl1 i_fpu_cnt_lead0_lvl1_32_29 (
177
        .din                    (din[32:29]),
178
 
179
        .din_3_0_eq_0           (din_32_29_eq_0),
180
        .din_3_2_eq_0           (din_32_31_eq_0),
181
        .lead0_4b_0             (lead0_32_29_0)
182
);
183
 
184
fpu_cnt_lead0_lvl1 i_fpu_cnt_lead0_lvl1_28_25 (
185
        .din                    (din[28:25]),
186
 
187
        .din_3_0_eq_0           (din_28_25_eq_0),
188
        .din_3_2_eq_0           (din_28_27_eq_0),
189
        .lead0_4b_0             (lead0_28_25_0)
190
);
191
 
192
fpu_cnt_lead0_lvl1 i_fpu_cnt_lead0_lvl1_24_21 (
193
        .din                    (din[24:21]),
194
 
195
        .din_3_0_eq_0           (din_24_21_eq_0),
196
        .din_3_2_eq_0           (din_24_23_eq_0),
197
        .lead0_4b_0             (lead0_24_21_0)
198
);
199
 
200
fpu_cnt_lead0_lvl1 i_fpu_cnt_lead0_lvl1_20_17 (
201
        .din                    (din[20:17]),
202
 
203
        .din_3_0_eq_0           (din_20_17_eq_0),
204
        .din_3_2_eq_0           (din_20_19_eq_0),
205
        .lead0_4b_0             (lead0_20_17_0)
206
);
207
 
208
fpu_cnt_lead0_lvl1 i_fpu_cnt_lead0_lvl1_16_13 (
209
        .din                    (din[16:13]),
210
 
211
        .din_3_0_eq_0           (din_16_13_eq_0),
212
        .din_3_2_eq_0           (din_16_15_eq_0),
213
        .lead0_4b_0             (lead0_16_13_0)
214
);
215
 
216
fpu_cnt_lead0_lvl1 i_fpu_cnt_lead0_lvl1_12_9 (
217
        .din                    (din[12:9]),
218
 
219
        .din_3_0_eq_0           (din_12_9_eq_0),
220
        .din_3_2_eq_0           (din_12_11_eq_0),
221
        .lead0_4b_0             (lead0_12_9_0)
222
);
223
 
224
fpu_cnt_lead0_lvl1 i_fpu_cnt_lead0_lvl1_8_5 (
225
        .din                    (din[8:5]),
226
 
227
        .din_3_0_eq_0           (din_8_5_eq_0),
228
        .din_3_2_eq_0           (din_8_7_eq_0),
229
        .lead0_4b_0             (lead0_8_5_0)
230
);
231
 
232
fpu_cnt_lead0_lvl1 i_fpu_cnt_lead0_lvl1_4_1 (
233
        .din                    (din[4:1]),
234
 
235
        .din_3_0_eq_0           (din_4_1_eq_0),
236
        .din_3_2_eq_0           (din_4_3_eq_0),
237
        .lead0_4b_0             (lead0_4_1_0)
238
);
239
 
240
assign lead0_0_0= (!din[0]);
241
 
242
 
243
fpu_cnt_lead0_lvl2 i_fpu_cnt_lead0_lvl2_52_45 (
244
        .din_7_4_eq_0           (din_52_49_eq_0),
245
        .din_7_6_eq_0           (din_52_51_eq_0),
246
        .lead0_4b_0_hi          (lead0_52_49_0),
247
        .din_3_0_eq_0           (din_48_45_eq_0),
248
        .din_3_2_eq_0           (din_48_47_eq_0),
249
        .lead0_4b_0_lo          (lead0_48_45_0),
250
 
251
        .din_7_0_eq_0           (din_52_45_eq_0),
252
        .lead0_8b_1             (lead0_52_45_1),
253
        .lead0_8b_0             (lead0_52_45_0)
254
);
255
 
256
fpu_cnt_lead0_lvl2 i_fpu_cnt_lead0_lvl2_44_37 (
257
        .din_7_4_eq_0           (din_44_41_eq_0),
258
        .din_7_6_eq_0           (din_44_43_eq_0),
259
        .lead0_4b_0_hi          (lead0_44_41_0),
260
        .din_3_0_eq_0           (din_40_37_eq_0),
261
        .din_3_2_eq_0           (din_40_39_eq_0),
262
        .lead0_4b_0_lo          (lead0_40_37_0),
263
 
264
        .din_7_0_eq_0           (din_44_37_eq_0),
265
        .lead0_8b_1             (lead0_44_37_1),
266
        .lead0_8b_0             (lead0_44_37_0)
267
);
268
 
269
fpu_cnt_lead0_lvl2 i_fpu_cnt_lead0_lvl2_36_29 (
270
        .din_7_4_eq_0           (din_36_33_eq_0),
271
        .din_7_6_eq_0           (din_36_35_eq_0),
272
        .lead0_4b_0_hi          (lead0_36_33_0),
273
        .din_3_0_eq_0           (din_32_29_eq_0),
274
        .din_3_2_eq_0           (din_32_31_eq_0),
275
        .lead0_4b_0_lo          (lead0_32_29_0),
276
 
277
        .din_7_0_eq_0           (din_36_29_eq_0),
278
        .lead0_8b_1             (lead0_36_29_1),
279
        .lead0_8b_0             (lead0_36_29_0)
280
);
281
 
282
fpu_cnt_lead0_lvl2 i_fpu_cnt_lead0_lvl2_28_21 (
283
        .din_7_4_eq_0           (din_28_25_eq_0),
284
        .din_7_6_eq_0           (din_28_27_eq_0),
285
        .lead0_4b_0_hi          (lead0_28_25_0),
286
        .din_3_0_eq_0           (din_24_21_eq_0),
287
        .din_3_2_eq_0           (din_24_23_eq_0),
288
        .lead0_4b_0_lo          (lead0_24_21_0),
289
 
290
        .din_7_0_eq_0           (din_28_21_eq_0),
291
        .lead0_8b_1             (lead0_28_21_1),
292
        .lead0_8b_0             (lead0_28_21_0)
293
);
294
 
295
fpu_cnt_lead0_lvl2 i_fpu_cnt_lead0_lvl2_20_13 (
296
        .din_7_4_eq_0           (din_20_17_eq_0),
297
        .din_7_6_eq_0           (din_20_19_eq_0),
298
        .lead0_4b_0_hi          (lead0_20_17_0),
299
        .din_3_0_eq_0           (din_16_13_eq_0),
300
        .din_3_2_eq_0           (din_16_15_eq_0),
301
        .lead0_4b_0_lo          (lead0_16_13_0),
302
 
303
        .din_7_0_eq_0           (din_20_13_eq_0),
304
        .lead0_8b_1             (lead0_20_13_1),
305
        .lead0_8b_0             (lead0_20_13_0)
306
);
307
 
308
fpu_cnt_lead0_lvl2 i_fpu_cnt_lead0_lvl2_12_5 (
309
        .din_7_4_eq_0           (din_12_9_eq_0),
310
        .din_7_6_eq_0           (din_12_11_eq_0),
311
        .lead0_4b_0_hi          (lead0_12_9_0),
312
        .din_3_0_eq_0           (din_8_5_eq_0),
313
        .din_3_2_eq_0           (din_8_7_eq_0),
314
        .lead0_4b_0_lo          (lead0_8_5_0),
315
 
316
        .din_7_0_eq_0           (din_12_5_eq_0),
317
        .lead0_8b_1             (lead0_12_5_1),
318
        .lead0_8b_0             (lead0_12_5_0)
319
);
320
 
321
assign lead0_4_0_1= (!din_4_1_eq_0) && din_4_3_eq_0;
322
 
323
assign lead0_4_0_0= ((!din_4_1_eq_0) && lead0_4_1_0)
324
                || (din_4_1_eq_0 && lead0_0_0);
325
 
326
 
327
fpu_cnt_lead0_lvl3 i_fpu_cnt_lead0_lvl3_52_37 (
328
        .din_15_8_eq_0          (din_52_45_eq_0),
329
        .din_15_12_eq_0         (din_52_49_eq_0),
330
        .lead0_8b_1_hi          (lead0_52_45_1),
331
        .lead0_8b_0_hi          (lead0_52_45_0),
332
        .din_7_0_eq_0           (din_44_37_eq_0),
333
        .din_7_4_eq_0           (din_44_41_eq_0),
334
        .lead0_8b_1_lo          (lead0_44_37_1),
335
        .lead0_8b_0_lo          (lead0_44_37_0),
336
 
337
        .din_15_0_eq_0          (din_52_37_eq_0),
338
        .lead0_16b_2            (lead0_52_37_2),
339
        .lead0_16b_1            (lead0_52_37_1),
340
        .lead0_16b_0            (lead0_52_37_0)
341
);
342
 
343
fpu_cnt_lead0_lvl3 i_fpu_cnt_lead0_lvl3_36_21 (
344
        .din_15_8_eq_0          (din_36_29_eq_0),
345
        .din_15_12_eq_0         (din_36_33_eq_0),
346
        .lead0_8b_1_hi          (lead0_36_29_1),
347
        .lead0_8b_0_hi          (lead0_36_29_0),
348
        .din_7_0_eq_0           (din_28_21_eq_0),
349
        .din_7_4_eq_0           (din_28_25_eq_0),
350
        .lead0_8b_1_lo          (lead0_28_21_1),
351
        .lead0_8b_0_lo          (lead0_28_21_0),
352
 
353
        .din_15_0_eq_0          (din_36_21_eq_0),
354
        .lead0_16b_2            (lead0_36_21_2),
355
        .lead0_16b_1            (lead0_36_21_1),
356
        .lead0_16b_0            (lead0_36_21_0)
357
);
358
 
359
fpu_cnt_lead0_lvl3 i_fpu_cnt_lead0_lvl3_20_5 (
360
        .din_15_8_eq_0          (din_20_13_eq_0),
361
        .din_15_12_eq_0         (din_20_17_eq_0),
362
        .lead0_8b_1_hi          (lead0_20_13_1),
363
        .lead0_8b_0_hi          (lead0_20_13_0),
364
        .din_7_0_eq_0           (din_12_5_eq_0),
365
        .din_7_4_eq_0           (din_12_9_eq_0),
366
        .lead0_8b_1_lo          (lead0_12_5_1),
367
        .lead0_8b_0_lo          (lead0_12_5_0),
368
 
369
        .din_15_0_eq_0          (din_20_5_eq_0),
370
        .lead0_16b_2            (lead0_20_5_2),
371
        .lead0_16b_1            (lead0_20_5_1),
372
        .lead0_16b_0            (lead0_20_5_0)
373
);
374
 
375
assign lead0_4_0_2= din_4_1_eq_0;
376
 
377
 
378
fpu_cnt_lead0_lvl4 i_fpu_cnt_lead0_lvl4_52_21 (
379
        .din_31_16_eq_0         (din_52_37_eq_0),
380
        .din_31_24_eq_0         (din_52_45_eq_0),
381
        .lead0_16b_2_hi         (lead0_52_37_2),
382
        .lead0_16b_1_hi         (lead0_52_37_1),
383
        .lead0_16b_0_hi         (lead0_52_37_0),
384
        .din_15_0_eq_0          (din_36_21_eq_0),
385
        .din_15_8_eq_0          (din_36_29_eq_0),
386
        .lead0_16b_2_lo         (lead0_36_21_2),
387
        .lead0_16b_1_lo         (lead0_36_21_1),
388
        .lead0_16b_0_lo         (lead0_36_21_0),
389
 
390
        .din_31_0_eq_0          (din_52_21_eq_0),
391
        .lead0_32b_3            (lead0_52_21_3),
392
        .lead0_32b_2            (lead0_52_21_2),
393
        .lead0_32b_1            (lead0_52_21_1),
394
        .lead0_32b_0            (lead0_52_21_0)
395
);
396
 
397
fpu_cnt_lead0_lvl4 i_fpu_cnt_lead0_lvl4_20_0 (
398
        .din_31_16_eq_0         (din_20_5_eq_0),
399
        .din_31_24_eq_0         (din_20_13_eq_0),
400
        .lead0_16b_2_hi         (lead0_20_5_2),
401
        .lead0_16b_1_hi         (lead0_20_5_1),
402
        .lead0_16b_0_hi         (lead0_20_5_0),
403
        .din_15_0_eq_0          (1'b0),
404
        .din_15_8_eq_0          (1'b0),
405
        .lead0_16b_2_lo         (lead0_4_0_2),
406
        .lead0_16b_1_lo         (lead0_4_0_1),
407
        .lead0_16b_0_lo         (lead0_4_0_0),
408
 
409
        .din_31_0_eq_0          (            ),
410
        .lead0_32b_3            (lead0_20_0_3),
411
        .lead0_32b_2            (lead0_20_0_2),
412
        .lead0_32b_1            (lead0_20_0_1),
413
        .lead0_32b_0            (lead0_20_0_0)
414
);
415
 
416
assign lead0_5= din_52_21_eq_0;
417
 
418
assign lead0_4= ((!din_52_21_eq_0) && din_52_37_eq_0)
419
                || (din_52_21_eq_0 && din_20_5_eq_0);
420
 
421
assign lead0_3= ((!din_52_21_eq_0) && lead0_52_21_3)
422
                || (din_52_21_eq_0 && lead0_20_0_3);
423
 
424
assign lead0_2= ((!din_52_21_eq_0) && lead0_52_21_2)
425
                || (din_52_21_eq_0 && lead0_20_0_2);
426
 
427
assign lead0_1= ((!din_52_21_eq_0) && lead0_52_21_1)
428
                || (din_52_21_eq_0 && lead0_20_0_1);
429
 
430
assign lead0_0= ((!din_52_21_eq_0) && lead0_52_21_0)
431
                || (din_52_21_eq_0 && lead0_20_0_0);
432
 
433
assign lead0[5:0]= {lead0_5, lead0_4, lead0_3, lead0_2, lead0_1, lead0_0};
434
 
435
 
436
endmodule
437
 
438
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.