source: XOpenSparcT1/trunk/T1-FPU/fpu_denorm_frac.v @ 6

Revision 6, 11.3 KB checked in by pntsvt00, 13 years ago (diff)

versione iniziale opensparc

Line 
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T1 Processor File: fpu_denorm_frac.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//      Fraction comparison of two inputs that both have leading 0's.
24//
25///////////////////////////////////////////////////////////////////////////////
26
27module fpu_denorm_frac (
28        din1,
29        din2,
30
31        din2_din1_denorm,
32        din2_din1_denorm_inv,
33        din2_din1_denorma,
34        din2_din1_denorm_inva
35);
36
37
38input [53:0]    din1;                   // input 1- fraction
39input [53:0]    din2;                   // input 2- fraction
40
41output          din2_din1_denorm;       // input 1 == denorm
42output          din2_din1_denorm_inv;   // input 1 != denorm
43output          din2_din1_denorma;      // input 1 == denorm- copy
44output          din2_din1_denorm_inva;  // input 1 != denorm- copy
45
46
47wire            din2_din1_nz_53_51;
48wire            din2_din1_denorm_53_51;
49wire            din2_din1_nz_50_48;
50wire            din2_din1_denorm_50_48;
51wire            din2_din1_nz_47_45;
52wire            din2_din1_denorm_47_45;
53wire            din2_din1_nz_44_42;
54wire            din2_din1_denorm_44_42;
55wire            din2_din1_nz_41_39;
56wire            din2_din1_denorm_41_39;
57wire            din2_din1_nz_38_36;
58wire            din2_din1_denorm_38_36;
59wire            din2_din1_nz_35_33;
60wire            din2_din1_denorm_35_33;
61wire            din2_din1_nz_32_30;
62wire            din2_din1_denorm_32_30;
63wire            din2_din1_nz_29_27;
64wire            din2_din1_denorm_29_27;
65wire            din2_din1_nz_26_24;
66wire            din2_din1_denorm_26_24;
67wire            din2_din1_nz_23_21;
68wire            din2_din1_denorm_23_21;
69wire            din2_din1_nz_20_18;
70wire            din2_din1_denorm_20_18;
71wire            din2_din1_nz_17_15;
72wire            din2_din1_denorm_17_15;
73wire            din2_din1_nz_14_12;
74wire            din2_din1_denorm_14_12;
75wire            din2_din1_nz_11_9;
76wire            din2_din1_denorm_11_9;
77wire            din2_din1_nz_8_6;
78wire            din2_din1_denorm_8_6;
79wire            din2_din1_nz_5_3;
80wire            din2_din1_denorm_5_3;
81wire            din2_din1_nz_2_0;
82wire            din2_din1_denorm_2_0;
83wire            din2_din1_nz_53_45;
84wire            din2_din1_denorm_53_45;
85wire            din2_din1_nz_44_36;
86wire            din2_din1_denorm_44_36;
87wire            din2_din1_nz_35_27;
88wire            din2_din1_denorm_35_27;
89wire            din2_din1_nz_26_18;
90wire            din2_din1_denorm_26_18;
91wire            din2_din1_nz_17_9;
92wire            din2_din1_denorm_17_9;
93wire            din2_din1_nz_8_0;
94wire            din2_din1_denorm_8_0;
95wire            din2_din1_nz_53_27;
96wire            din2_din1_denorm_53_27;
97wire            din2_din1_nz_26_0;
98wire            din2_din1_denorm_26_0;
99wire            din2_din1_denorm;
100wire            din2_din1_denorm_inv;
101wire            din2_din1_denorma;
102wire            din2_din1_denorm_inva;
103
104
105fpu_denorm_3b i_fpu_denorm_53_51 (
106        .din1                   (din1[53:51]),
107        .din2                   (din2[53:51]),
108
109        .din2_din1_nz           (din2_din1_nz_53_51),
110        .din2_din1_denorm       (din2_din1_denorm_53_51)
111);
112
113fpu_denorm_3b i_fpu_denorm_50_48 (
114        .din1                   (din1[50:48]),
115        .din2                   (din2[50:48]),
116
117        .din2_din1_nz           (din2_din1_nz_50_48),
118        .din2_din1_denorm       (din2_din1_denorm_50_48)
119);
120
121fpu_denorm_3b i_fpu_denorm_47_45 (
122        .din1                   (din1[47:45]),
123        .din2                   (din2[47:45]),
124
125        .din2_din1_nz           (din2_din1_nz_47_45),
126        .din2_din1_denorm       (din2_din1_denorm_47_45)
127);
128
129fpu_denorm_3b i_fpu_denorm_44_42 (
130        .din1                   (din1[44:42]),
131        .din2                   (din2[44:42]),
132
133        .din2_din1_nz           (din2_din1_nz_44_42),
134        .din2_din1_denorm       (din2_din1_denorm_44_42)
135);
136
137fpu_denorm_3b i_fpu_denorm_41_39 (
138        .din1                   (din1[41:39]),
139        .din2                   (din2[41:39]),
140
141        .din2_din1_nz           (din2_din1_nz_41_39),
142        .din2_din1_denorm       (din2_din1_denorm_41_39)
143);
144
145fpu_denorm_3b i_fpu_denorm_38_36 (
146        .din1                   (din1[38:36]),
147        .din2                   (din2[38:36]),
148
149        .din2_din1_nz           (din2_din1_nz_38_36),
150        .din2_din1_denorm       (din2_din1_denorm_38_36)
151);
152
153fpu_denorm_3b i_fpu_denorm_35_33 (
154        .din1                   (din1[35:33]),
155        .din2                   (din2[35:33]),
156
157        .din2_din1_nz           (din2_din1_nz_35_33),
158        .din2_din1_denorm       (din2_din1_denorm_35_33)
159);
160
161fpu_denorm_3b i_fpu_denorm_32_30 (
162        .din1                   (din1[32:30]),
163        .din2                   (din2[32:30]),
164
165        .din2_din1_nz           (din2_din1_nz_32_30),
166        .din2_din1_denorm       (din2_din1_denorm_32_30)
167);
168
169fpu_denorm_3b i_fpu_denorm_29_27 (
170        .din1                   (din1[29:27]),
171        .din2                   (din2[29:27]),
172
173        .din2_din1_nz           (din2_din1_nz_29_27),
174        .din2_din1_denorm       (din2_din1_denorm_29_27)
175);
176
177fpu_denorm_3b i_fpu_denorm_26_24 (
178        .din1                   (din1[26:24]),
179        .din2                   (din2[26:24]),
180
181        .din2_din1_nz           (din2_din1_nz_26_24),
182        .din2_din1_denorm       (din2_din1_denorm_26_24)
183);
184
185fpu_denorm_3b i_fpu_denorm_23_21 (
186        .din1                   (din1[23:21]),
187        .din2                   (din2[23:21]),
188
189        .din2_din1_nz           (din2_din1_nz_23_21),
190        .din2_din1_denorm       (din2_din1_denorm_23_21)
191);
192
193fpu_denorm_3b i_fpu_denorm_20_18 (
194        .din1                   (din1[20:18]),
195        .din2                   (din2[20:18]),
196
197        .din2_din1_nz           (din2_din1_nz_20_18),
198        .din2_din1_denorm       (din2_din1_denorm_20_18)
199);
200
201fpu_denorm_3b i_fpu_denorm_17_15 (
202        .din1                   (din1[17:15]),
203        .din2                   (din2[17:15]),
204
205        .din2_din1_nz           (din2_din1_nz_17_15),
206        .din2_din1_denorm       (din2_din1_denorm_17_15)
207);
208
209fpu_denorm_3b i_fpu_denorm_14_12 (
210        .din1                   (din1[14:12]),
211        .din2                   (din2[14:12]),
212
213        .din2_din1_nz           (din2_din1_nz_14_12),
214        .din2_din1_denorm       (din2_din1_denorm_14_12)
215);
216
217fpu_denorm_3b i_fpu_denorm_11_9 (
218        .din1                   (din1[11:9]),
219        .din2                   (din2[11:9]),
220
221        .din2_din1_nz           (din2_din1_nz_11_9),
222        .din2_din1_denorm       (din2_din1_denorm_11_9)
223);
224
225fpu_denorm_3b i_fpu_denorm_8_6 (
226        .din1                   (din1[8:6]),
227        .din2                   (din2[8:6]),
228
229        .din2_din1_nz           (din2_din1_nz_8_6),
230        .din2_din1_denorm       (din2_din1_denorm_8_6)
231);
232
233fpu_denorm_3b i_fpu_denorm_5_3 (
234        .din1                   (din1[5:3]),
235        .din2                   (din2[5:3]),
236
237        .din2_din1_nz           (din2_din1_nz_5_3),
238        .din2_din1_denorm       (din2_din1_denorm_5_3)
239);
240
241fpu_denorm_3b i_fpu_denorm_2_0 (
242        .din1                   (din1[2:0]),
243        .din2                   (din2[2:0]),
244
245        .din2_din1_nz           (din2_din1_nz_2_0),
246        .din2_din1_denorm       (din2_din1_denorm_2_0)
247);
248
249
250fpu_denorm_3to1 i_fpu_denorm_53_45 (
251        .din2_din1_nz_hi        (din2_din1_nz_53_51),
252        .din2_din1_denorm_hi    (din2_din1_denorm_53_51),
253        .din2_din1_nz_mid       (din2_din1_nz_50_48),
254        .din2_din1_denorm_mid   (din2_din1_denorm_50_48),
255        .din2_din1_nz_lo        (din2_din1_nz_47_45),
256        .din2_din1_denorm_lo    (din2_din1_denorm_47_45),
257
258        .din2_din1_nz           (din2_din1_nz_53_45),
259        .din2_din1_denorm       (din2_din1_denorm_53_45)
260);
261
262fpu_denorm_3to1 i_fpu_denorm_44_36 (
263        .din2_din1_nz_hi        (din2_din1_nz_44_42),
264        .din2_din1_denorm_hi    (din2_din1_denorm_44_42),
265        .din2_din1_nz_mid       (din2_din1_nz_41_39),
266        .din2_din1_denorm_mid   (din2_din1_denorm_41_39),
267        .din2_din1_nz_lo        (din2_din1_nz_38_36),
268        .din2_din1_denorm_lo    (din2_din1_denorm_38_36),
269
270        .din2_din1_nz           (din2_din1_nz_44_36),
271        .din2_din1_denorm       (din2_din1_denorm_44_36)
272);
273
274fpu_denorm_3to1 i_fpu_denorm_35_27 (
275        .din2_din1_nz_hi        (din2_din1_nz_35_33),
276        .din2_din1_denorm_hi    (din2_din1_denorm_35_33),
277        .din2_din1_nz_mid       (din2_din1_nz_32_30),
278        .din2_din1_denorm_mid   (din2_din1_denorm_32_30),
279        .din2_din1_nz_lo        (din2_din1_nz_29_27),
280        .din2_din1_denorm_lo    (din2_din1_denorm_29_27),
281
282        .din2_din1_nz           (din2_din1_nz_35_27),
283        .din2_din1_denorm       (din2_din1_denorm_35_27)
284);
285
286fpu_denorm_3to1 i_fpu_denorm_26_18 (
287        .din2_din1_nz_hi        (din2_din1_nz_26_24),
288        .din2_din1_denorm_hi    (din2_din1_denorm_26_24),
289        .din2_din1_nz_mid       (din2_din1_nz_23_21),
290        .din2_din1_denorm_mid   (din2_din1_denorm_23_21),
291        .din2_din1_nz_lo        (din2_din1_nz_20_18),
292        .din2_din1_denorm_lo    (din2_din1_denorm_20_18),
293
294        .din2_din1_nz           (din2_din1_nz_26_18),
295        .din2_din1_denorm       (din2_din1_denorm_26_18)
296);
297
298fpu_denorm_3to1 i_fpu_denorm_17_9 (
299        .din2_din1_nz_hi        (din2_din1_nz_17_15),
300        .din2_din1_denorm_hi    (din2_din1_denorm_17_15),
301        .din2_din1_nz_mid       (din2_din1_nz_14_12),
302        .din2_din1_denorm_mid   (din2_din1_denorm_14_12),
303        .din2_din1_nz_lo        (din2_din1_nz_11_9),
304        .din2_din1_denorm_lo    (din2_din1_denorm_11_9),
305
306        .din2_din1_nz           (din2_din1_nz_17_9),
307        .din2_din1_denorm       (din2_din1_denorm_17_9)
308);
309
310fpu_denorm_3to1 i_fpu_denorm_8_0 (
311        .din2_din1_nz_hi        (din2_din1_nz_8_6),
312        .din2_din1_denorm_hi    (din2_din1_denorm_8_6),
313        .din2_din1_nz_mid       (din2_din1_nz_5_3),
314        .din2_din1_denorm_mid   (din2_din1_denorm_5_3),
315        .din2_din1_nz_lo        (din2_din1_nz_2_0),
316        .din2_din1_denorm_lo    (din2_din1_denorm_2_0),
317
318        .din2_din1_nz           (din2_din1_nz_8_0),
319        .din2_din1_denorm       (din2_din1_denorm_8_0)
320);
321
322
323fpu_denorm_3to1 i_fpu_denorm_53_27 (
324        .din2_din1_nz_hi        (din2_din1_nz_53_45),
325        .din2_din1_denorm_hi    (din2_din1_denorm_53_45),
326        .din2_din1_nz_mid       (din2_din1_nz_44_36),
327        .din2_din1_denorm_mid   (din2_din1_denorm_44_36),
328        .din2_din1_nz_lo        (din2_din1_nz_35_27),
329        .din2_din1_denorm_lo    (din2_din1_denorm_35_27),
330
331        .din2_din1_nz           (din2_din1_nz_53_27),
332        .din2_din1_denorm       (din2_din1_denorm_53_27)
333);
334
335fpu_denorm_3to1 i_fpu_denorm_26_0 (
336        .din2_din1_nz_hi        (din2_din1_nz_26_18),
337        .din2_din1_denorm_hi    (din2_din1_denorm_26_18),
338        .din2_din1_nz_mid       (din2_din1_nz_17_9),
339        .din2_din1_denorm_mid   (din2_din1_denorm_17_9),
340        .din2_din1_nz_lo        (din2_din1_nz_8_0),
341        .din2_din1_denorm_lo    (din2_din1_denorm_8_0),
342
343        .din2_din1_nz           (din2_din1_nz_26_0),
344        .din2_din1_denorm       (din2_din1_denorm_26_0)
345);
346
347
348assign din2_din1_denorm= (din2_din1_nz_53_27 && din2_din1_denorm_53_27)
349                || ((!din2_din1_nz_53_27) && (!din2_din1_nz_26_0))
350                || ((!din2_din1_nz_53_27) && din2_din1_denorm_26_0);
351
352assign din2_din1_denorm_inv= (!din2_din1_denorm);
353
354assign din2_din1_denorma= din2_din1_denorm;
355
356assign din2_din1_denorm_inva= din2_din1_denorm_inv;
357
358
359endmodule
360
361
Note: See TracBrowser for help on using the repository browser.