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

Revision 6, 30.8 KB checked in by pntsvt00, 14 years ago (diff)

versione iniziale opensparc

Line 
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T1 Processor File: fpu_add_frac_dp.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//      Add pipeline fraction datapath.
24//
25///////////////////////////////////////////////////////////////////////////////
26
27module fpu_add_frac_dp (
28        inq_in1,
29        inq_in2,
30        a1stg_step,
31        a1stg_sngop,
32        a1stg_expadd3_11,
33        a1stg_norm_dbl_in1,
34        a1stg_denorm_dbl_in1,
35        a1stg_norm_sng_in1,
36        a1stg_denorm_sng_in1,
37        a1stg_norm_dbl_in2,
38        a1stg_denorm_dbl_in2,
39        a1stg_norm_sng_in2,
40        a1stg_denorm_sng_in2,
41        a1stg_intlngop,
42        a2stg_frac1_in_frac1,
43        a2stg_frac1_in_frac2,
44        a1stg_2nan_in_inv,
45        a1stg_faddsubop_inv,
46        a2stg_frac1_in_qnan,
47        a2stg_frac1_in_nv,
48        a2stg_frac1_in_nv_dbl,
49        a6stg_step,
50        a2stg_frac2_in_frac1,
51        a2stg_frac2_in_qnan,
52        a2stg_shr_cnt_in,
53        a2stg_shr_cnt_5_inv_in,
54        a2stg_shr_frac2_shr_int,
55        a2stg_shr_frac2_shr_dbl,
56        a2stg_shr_frac2_shr_sng,
57        a2stg_shr_frac2_max,
58        a2stg_expadd_11,
59        a2stg_sub_step,
60        a2stg_fracadd_frac2_inv_in,
61        a2stg_fracadd_frac2_inv_shr1_in,
62        a2stg_fracadd_frac2,
63        a2stg_fracadd_cin_in,
64        a2stg_exp,
65        a2stg_expdec_neq_0,
66        a3stg_faddsubopa,
67        a3stg_sub_in,
68        a3stg_exp10_0_eq0,
69        a3stg_exp10_1_eq0,
70        a3stg_exp_0,
71        a4stg_rnd_frac_add_inv,
72        a3stg_fdtos_inv,
73        a4stg_fixtos_fxtod_inv,
74        a4stg_rnd_sng,
75        a4stg_rnd_dbl,
76        a4stg_shl_cnt_in,
77        add_frac_out_rndadd,
78        add_frac_out_rnd_frac,
79        a4stg_in_of,
80        add_frac_out_shl,
81        a4stg_to_0,
82        fadd_clken_l,
83        rclk,
84       
85        a1stg_in2_neq_in1_frac,
86        a1stg_in2_gt_in1_frac,
87        a1stg_in2_eq_in1_exp,
88        a2stg_frac2_63,
89        a2stg_frac2hi_neq_0,
90        a2stg_frac2lo_neq_0,
91        a3stg_fsdtoix_nx,
92        a3stg_fsdtoi_nx,
93        a3stg_denorm,
94        a3stg_denorm_inv,
95        a3stg_lead0,
96        a4stg_round,
97        a4stg_shl_cnt,
98        a4stg_denorm_inv,
99        a3stg_inc_exp_inv,
100        a3stg_same_exp_inv,
101        a3stg_dec_exp_inv,
102        a4stg_rnd_frac_40,
103        a4stg_rnd_frac_39,
104        a4stg_rnd_frac_11,
105        a4stg_rnd_frac_10,
106        a4stg_rndadd_cout,
107        a4stg_frac_9_0_nx,
108        a4stg_frac_dbl_nx,
109        a4stg_frac_38_0_nx,
110        a4stg_frac_sng_nx,
111        a4stg_frac_neq_0,
112        a4stg_shl_data_neq_0,
113        add_of_out_cout,
114        add_frac_out,
115
116        se,
117        si,
118        so
119);
120
121
122input [62:0]    inq_in1;                // request operand 1 to op pipes
123input [63:0]    inq_in2;                // request operand 2 to op pipes
124input           a1stg_step;             // add pipe load
125input           a1stg_sngop;            // single precision operation- add 1 stg
126input           a1stg_expadd3_11;       // exponent adder sign out- add 1 stg
127input           a1stg_norm_dbl_in1;     // select line to normalized fraction 1
128input           a1stg_denorm_dbl_in1;   // select line to normalized fraction 1
129input           a1stg_norm_sng_in1;     // select line to normalized fraction 1
130input           a1stg_denorm_sng_in1;   // select line to normalized fraction 1
131input           a1stg_norm_dbl_in2;     // select line to normalized fraction 2
132input           a1stg_denorm_dbl_in2;   // select line to normalized fraction 2
133input           a1stg_norm_sng_in2;     // select line to normalized fraction 2
134input           a1stg_denorm_sng_in2;   // select line to normalized fraction 2
135input           a1stg_intlngop;         // integer/long input- add 1 stage
136input           a2stg_frac1_in_frac1;   // select line to a2stg_frac1
137input           a2stg_frac1_in_frac2;   // select line to a2stg_frac1
138input           a1stg_2nan_in_inv;      // 2 NaN inputs- a1 stage
139input           a1stg_faddsubop_inv;    // add/subtract- a1 stage
140input           a2stg_frac1_in_qnan;    // make fraction 1 a QNaN
141input           a2stg_frac1_in_nv;      // NV- make a new prec QNaN
142input           a2stg_frac1_in_nv_dbl;  // NV- make a new double prec QNaN
143input           a6stg_step;             // advance the add pipe
144input           a2stg_frac2_in_frac1;   // select line to a2stg_frac2
145input           a2stg_frac2_in_qnan;    // make fraction 2 a QNaN
146input [5:0]     a2stg_shr_cnt_in;       // right shift count input- add 1 stage
147input           a2stg_shr_cnt_5_inv_in; // right shift count input[5]- add 1 stg
148input           a2stg_shr_frac2_shr_int; // select line to a3stg_frac2
149input           a2stg_shr_frac2_shr_dbl; // select line to a3stg_frac2
150input           a2stg_shr_frac2_shr_sng; // select line to a3stg_frac2
151input           a2stg_shr_frac2_max;    // select line to a3stg_frac2
152input           a2stg_expadd_11;        // exponent adder[11]- add 2 stage
153input           a2stg_sub_step;         // select line to a3stg_frac2
154input           a2stg_fracadd_frac2_inv_in; // sel line to main adder input 2
155input           a2stg_fracadd_frac2_inv_shr1_in; // sel line to main adder in 2
156input           a2stg_fracadd_frac2;    // select line to main adder input 2
157input           a2stg_fracadd_cin_in;   // carry in to main adder- add 1 stage
158input [5:0]     a2stg_exp;              // exponent add 2 stage bits[5:0]
159input           a2stg_expdec_neq_0;     // exponent will be < 54
160input [1:0]     a3stg_faddsubopa;       // denorm compare lead0[10] input select
161input           a3stg_sub_in;           // subtract in main adder- add 3 stage
162input           a3stg_exp10_0_eq0;      // exponent[10:0]==0- add 3 stg
163input           a3stg_exp10_1_eq0;      // exponent[10:1]==0- add 3 stg
164input           a3stg_exp_0;            // exponent[0]- add 3 stg
165input           a4stg_rnd_frac_add_inv; // select line to a4stg_rnd_frac
166input           a3stg_fdtos_inv;        // double to single convert- add 3 stg
167input           a4stg_fixtos_fxtod_inv; // int to single/double cvt- add 4 stg
168input           a4stg_rnd_sng;          // round to single precision- add 4 stg
169input           a4stg_rnd_dbl;          // round to double precision- add 4 stg
170input [9:0]     a4stg_shl_cnt_in;       // postnorm shift left count- add 3 stg
171input           add_frac_out_rndadd;    // select line to add_frac_out
172input           add_frac_out_rnd_frac;  // select line to add_frac_out
173input           a4stg_in_of;            // add overflow- select fraction out
174input           add_frac_out_shl;       // select line to add_frac_out
175input           a4stg_to_0;             // result to max finite on overflow
176input           fadd_clken_l;           // add pipe clk enable - asserted low
177input           rclk;           // global clock
178
179output          a1stg_in2_neq_in1_frac; // operand 2 fraction != oprnd 1 frac
180output          a1stg_in2_gt_in1_frac;  // operand 2 fraction > oprnd 1 frac
181output          a1stg_in2_eq_in1_exp;   // operand 2 exponent == oprnd 1 exp
182output          a2stg_frac2_63;         // fraction 2 bit[63]- add 2 stage
183output          a2stg_frac2hi_neq_0;    // fraction 2[62:32]in add 2 stage != 0
184output          a2stg_frac2lo_neq_0;    // fraction 2[31:11] in add 2 stage != 0
185output          a3stg_fsdtoix_nx;       // inexact result for flt -> ints
186output          a3stg_fsdtoi_nx;        // inexact result for flt -> 32b ints
187output          a3stg_denorm;           // denorm output- add 3 stage
188output          a3stg_denorm_inv;       // result is not a denorm- add 3 stage
189output [5:0]    a3stg_lead0;            // leading 0's count- add 3 stage
190output          a4stg_round;            // round the result- add 4 stage
191output [5:0]    a4stg_shl_cnt;          // subtract in main adder- add 4 stage
192output          a4stg_denorm_inv;       // 0 the exponent
193output          a3stg_inc_exp_inv;      // increment the exponent- add 3 stg
194output          a3stg_same_exp_inv;     // keep the exponent- add 3 stg
195output          a3stg_dec_exp_inv;      // decrement the exponent- add 3 stg
196output          a4stg_rnd_frac_40;      // rounded fraction[40]- add 4 stage
197output          a4stg_rnd_frac_39;      // rounded fraction[39]- add 4 stage
198output          a4stg_rnd_frac_11;      // rounded fraction[11]- add 4 stage
199output          a4stg_rnd_frac_10;      // rounded fraction[10]- add 4 stage
200output          a4stg_rndadd_cout;      // fraction rounding adder carry out
201output          a4stg_frac_9_0_nx;      // inexact double precision result
202output          a4stg_frac_dbl_nx;      // inexact double precision result
203output          a4stg_frac_38_0_nx;     // inexact single precision result
204output          a4stg_frac_sng_nx;      // inexact single precision result
205output          a4stg_frac_neq_0;       // fraction != 0- add 4 stage
206output          a4stg_shl_data_neq_0;   // left shift result != 0- add 4 stage
207output          add_of_out_cout;        // fraction rounding adder carry out
208output [63:0]   add_frac_out;           // add fraction output
209
210input           se;                     // scan_enable
211input           si;                     // scan in
212output          so;                     // scan out
213
214
215wire [62:0]     a1stg_in1;
216wire [54:0]     a1stg_in1a;
217wire            a1stg_in1_31_0_neq_0;
218wire            a1stg_in1_50_32_neq_0;
219wire            a1stg_in1_50_0_neq_0;
220wire            a1stg_in1_53_32_neq_0;
221wire            a1stg_in1_51;
222wire            a1stg_in1_54;
223wire [63:0]     a1stg_in2;
224wire [54:0]     a1stg_in2a;
225wire            a1stg_in2_31_0_neq_0;
226wire            a1stg_in2_50_32_neq_0;
227wire            a1stg_in2_50_0_neq_0;
228wire            a1stg_in2_53_32_neq_0;
229wire            a1stg_in2_51;
230wire            a1stg_in2_54;
231wire            a1stg_in2_neq_in1_frac;
232wire            a1stg_in2_gt_in1_frac;
233wire            a1stg_in2_gt_in1;
234wire            a1stg_in2_eq_in1_exp;
235wire [63:0]     a1stg_norm_frac1;
236wire [63:0]     a1stg_norm_frac2;
237wire [63:0]     a2stg_frac1_in;
238wire [63:0]     a2stg_frac1;
239wire [63:0]     a2stg_frac2_in;
240wire [63:0]     a2stg_frac2;
241wire [63:0]     a2stg_frac2a;
242wire            a2stg_frac2_63;
243wire            a2stg_frac2hi_neq_0;
244wire            a2stg_frac2lo_neq_0;
245wire [115:52]   a2stg_shr;
246wire            a2stg_fsdtoix_nx;
247wire            a2stg_fsdtoi_nx;
248wire            a2stg_shr_60_0_neq_0;
249wire [63:0]     a2stg_shr_frac2_inv;
250wire [63:0]     a3stg_frac2_in;
251wire [63:0]     a3stg_frac2;
252wire [63:0]     a3stg_frac1;
253wire [63:0]     a2stg_fracadd_in2;
254wire [63:0]     a2stg_fracadd;
255wire [63:0]     a3stg_ld0_frac;
256wire [53:0]     a2stg_expdec_tmp;
257wire [53:0]     a2stg_expdec;
258wire [53:0]     a3stg_expdec;
259wire            a3stg_ld0_dnrm_10;
260wire            a3stg_denorm;
261wire            a3stg_denorm_inv;
262wire            a3stg_denorma;
263wire            a3stg_denorm_inva;
264wire [5:0]      a3stg_lead0;
265wire [63:0]     a3stg_fracadd;
266wire            a4stg_round_in;
267wire            a4stg_round;
268wire [5:0]      a2stg_shr_cnt;
269wire [5:3]      a2stg_shr_cnta;
270wire [2:0]      a2stg_shr_cnta_5;
271wire [3:0]      a2stg_shr_cnt_5_inv;
272wire [3:0]      a2stg_shr_cnt_5;
273wire [4:0]      a2stg_shr_cnt_4;
274wire [4:0]      a2stg_shr_cnt_3;
275wire [1:0]      a2stg_shr_cnt_2;
276wire [1:0]      a2stg_shr_cnt_1;
277wire [1:0]      a2stg_shr_cnt_0;
278wire            a3stg_sub;
279wire            a3stg_suba;
280wire [2:0]      a4stg_shl_cnt_dec54_0;
281wire [2:0]      a4stg_shl_cnt_dec54_1;
282wire [2:0]      a4stg_shl_cnt_dec54_2;
283wire [2:0]      a4stg_shl_cnt_dec54_3;
284wire [5:0]      a4stg_shl_cnt;
285wire            a2stg_fracadd_frac2_inv;
286wire            a2stg_fracadd_frac2_inv_shr1;
287wire            a4stg_denorm_inv;
288wire            a3stg_fsdtoix_nx;
289wire            a3stg_fsdtoi_nx;
290wire            a2stg_fracadd_cin;
291wire [63:0]     astg_xtra_regs;
292wire            a3stg_inc_exp_inv;
293wire            a3stg_same_exp_inv;
294wire            a3stg_dec_exp_inv;
295wire            a3stg_inc_exp_inva;
296wire            a3stg_fsame_exp_inv;
297wire            a3stg_fdec_exp_inv;
298wire [63:0]     a4stg_rnd_frac_pre1_in;
299wire [63:0]     a4stg_rnd_frac_pre1;
300wire [63:0]     a4stg_rnd_frac_pre2_in;
301wire [63:0]     a4stg_rnd_frac_pre2;
302wire [63:0]     a4stg_rnd_frac_pre3_in;
303wire [63:0]     a4stg_rnd_frac_pre3;
304wire [63:0]     a4stg_rnd_frac;
305wire [63:0]     a4stg_rnd_fraca;
306wire            a4stg_rnd_frac_40;
307wire            a4stg_rnd_frac_39;
308wire            a4stg_rnd_frac_11;
309wire            a4stg_rnd_frac_10;
310wire [63:0]     a4stg_shl_data_in;
311wire [63:0]     a4stg_shl_data;
312wire [52:0]     a4stg_rndadd_tmp;
313wire            a4stg_rndadd_cout;
314wire [51:0]     a4stg_rndadd;
315wire            a4stg_frac_9_0_nx;
316wire            a4stg_frac_dbl_nx;
317wire            a4stg_frac_38_0_nx;
318wire            a4stg_frac_sng_nx;
319wire            a4stg_frac_neq_0;
320wire            a4stg_shl_data_neq_0;
321wire [126:0]    a4stg_shl_tmp;
322wire [63:0]     a4stg_shl;
323wire            add_of_out_cout;
324wire            a5stg_frac_out_rndadd;
325wire            a5stg_frac_out_rnd_frac;
326wire            a5stg_in_of;
327wire            a5stg_frac_out_shl;
328wire            a5stg_to_0;
329wire [51:0]     a5stg_rndadd;
330wire [63:0]     a5stg_rnd_frac;
331wire [63:0]     a5stg_shl;
332wire [63:0]     add_frac_out;
333
334wire [63:0] a2stg_shr_tmp2;
335wire [63:0] a2stg_shr_tmp4;
336wire [63:0] a2stg_shr_tmp6;
337wire [63:0] a2stg_shr_tmp8;
338wire [63:0] a2stg_shr_tmp10;
339wire [63:0] a2stg_shr_tmp13;
340wire [63:0] a2stg_shr_tmp18;
341wire [63:20] a2stg_nx_neq0_84_tmp_1;
342wire [63:36] a2stg_nx_neq0_84_tmp_2;
343wire [63:44] a2stg_nx_neq0_84_tmp_3;
344wire [63:48] a2stg_nx_neq0_84_tmp_4;
345wire [61:50] a2stg_nx_neq0_84_tmp_5;
346wire [60:59] a2stg_nx_neq0_84_tmp_6;
347wire a2stg_nx_neq0_84_tmp_6_51;
348
349wire [63:0] a4stg_shl_tmp4;
350
351wire se_l;
352
353assign se_l = ~se;
354
355
356clken_buf  ckbuf_add_frac_dp (
357  .clk(clk),
358  .rclk(rclk),
359  .enb_l(fadd_clken_l),
360  .tmb_l(se_l)
361  );
362
363///////////////////////////////////////////////////////////////////////////////
364//
365//      Add fraction inputs.
366//
367//      Add input stage.
368//
369///////////////////////////////////////////////////////////////////////////////
370
371dffe_s #(63) i_a1stg_in1 (
372        .din    (inq_in1[62:0]),
373        .en     (a1stg_step),
374        .clk    (clk),
375 
376        .q      (a1stg_in1[62:0]),
377
378        .se     (se),
379        .si     (),
380        .so     ()
381);
382
383dffe_s #(55) i_a1stg_in1a (
384        .din    (inq_in1[54:0]),
385        .en     (a1stg_step),
386        .clk    (clk),
387 
388        .q      (a1stg_in1a[54:0]),
389 
390        .se     (se),
391        .si     (),
392        .so     ()
393);
394
395dffe_s #(64) i_a1stg_in2 (
396        .din    (inq_in2[63:0]),
397        .en     (a1stg_step),
398        .clk    (clk),
399 
400        .q      (a1stg_in2[63:0]),
401
402        .se     (se),
403        .si     (),
404        .so     ()
405);
406
407dffe_s #(55) i_a1stg_in2a (
408        .din    (inq_in2[54:0]),
409        .en     (a1stg_step),
410        .clk    (clk),
411 
412        .q      (a1stg_in2a[54:0]),
413 
414        .se     (se),
415        .si     (),
416        .so     ()
417);
418
419
420///////////////////////////////////////////////////////////////////////////////
421//
422//      Add normalization and special input injection.
423//
424//      Add stage 1.
425//
426///////////////////////////////////////////////////////////////////////////////
427
428fpu_in2_gt_in1_frac i_a1stg_in2_gt_in1_frac (
429        .din1                   (a1stg_in1a[54:0]),
430        .din2                   (a1stg_in2a[54:0]),
431        .sngop                  (a1stg_sngop),
432        .expadd11               (a1stg_expadd3_11),
433        .expeq                  (a1stg_in2_eq_in1_exp),
434
435        .din2_neq_din1          (a1stg_in2_neq_in1_frac),
436        .din2_gt_din1           (a1stg_in2_gt_in1_frac),
437        .din2_gt1_din1          (a1stg_in2_gt_in1)
438);
439
440assign a1stg_in2_eq_in1_exp= (&{(~(a1stg_in1[62:55] ^ a1stg_in2[62:55])),
441                                ((~(a1stg_in1[54:52] ^ a1stg_in2[54:52]))
442                                        | {3{a1stg_sngop}})});
443
444assign a1stg_norm_frac1[63:0]= ({64{a1stg_norm_dbl_in1}}
445                            & {1'b1, a1stg_in1[51:0], 11'b0})
446                | ({64{a1stg_denorm_dbl_in1}}
447                            & {a1stg_in1[51:0], 12'b0})
448                | ({64{a1stg_norm_sng_in1}}
449                            & {1'b1, a1stg_in1[54:32], 40'b0})
450                | ({64{a1stg_denorm_sng_in1}}
451                            & {a1stg_in1[54:32], 41'b0});
452
453assign a1stg_norm_frac2[63:0]= ({64{a1stg_norm_dbl_in2}}
454                            & {1'b1, a1stg_in2[51:0], 11'b0})
455                | ({64{a1stg_denorm_dbl_in2}}
456                            & {a1stg_in2[51:0], 12'b0})
457                | ({64{a1stg_norm_sng_in2}} 
458                            & {1'b1, a1stg_in2[54:32], 40'b0})
459                | ({64{a1stg_denorm_sng_in2}}
460                            & {a1stg_in2[54:32], 41'b0})
461                | ({64{a1stg_intlngop}}
462                            & a1stg_in2[63:0]);
463
464assign a2stg_frac1_in[63:0]= ({64{(a1stg_faddsubop_inv
465                                || (!((a1stg_in2_gt_in1 && a1stg_2nan_in_inv)
466                                                || a2stg_frac1_in_frac1)))}}
467                            & {a1stg_norm_frac1[63],
468                                (a1stg_norm_frac1[62] || a2stg_frac1_in_qnan),
469                                (a1stg_norm_frac1[61:40]
470                                                | {22{a2stg_frac1_in_nv}}),
471                                (a1stg_norm_frac1[39:11]
472                                                | {29{a2stg_frac1_in_nv_dbl}}),
473                                a1stg_norm_frac1[10:0]})
474                | ({64{(a2stg_frac1_in_frac2
475                                    && (a1stg_in2_gt_in1 || a2stg_frac1_in_frac1))}}
476                            & {a1stg_norm_frac2[63],
477                                (a1stg_norm_frac2[62] || a2stg_frac1_in_qnan),
478                                (a1stg_norm_frac2[61:40]
479                                                | {22{a2stg_frac1_in_nv}}),
480                                (a1stg_norm_frac2[39:11]
481                                                | {29{a2stg_frac1_in_nv_dbl}}),
482                                a1stg_norm_frac2[10:0]});
483
484dffe_s #(64) i_a2stg_frac1 (
485        .din    (a2stg_frac1_in[63:0]),
486        .en     (a6stg_step),
487        .clk    (clk),
488
489        .q      (a2stg_frac1[63:0]),
490
491        .se     (se),
492        .si     (),
493        .so     ()
494);
495
496assign a2stg_frac2_in[63:0]= ({64{a1stg_faddsubop_inv}}
497                            & {a1stg_norm_frac2[63],
498                                (a1stg_norm_frac2[62] || a2stg_frac2_in_qnan),
499                                a1stg_norm_frac2[61:0]})
500                | ({64{(a2stg_frac2_in_frac1 && (!a1stg_in2_gt_in1))}}
501                            & {a1stg_norm_frac2[63],
502                                (a1stg_norm_frac2[62] || a2stg_frac2_in_qnan),
503                                a1stg_norm_frac2[61:0]})
504                | ({64{(a2stg_frac2_in_frac1 && a1stg_in2_gt_in1)}}
505                            & a1stg_norm_frac1[63:0]);
506
507dffe_s #(64) i_a2stg_frac2 (
508        .din    (a2stg_frac2_in[63:0]),
509        .en     (a6stg_step),
510        .clk    (clk),
511
512        .q      (a2stg_frac2[63:0]),
513
514        .se     (se),
515        .si     (),
516        .so     ()
517);
518
519dffe_s #(64) i_a2stg_frac2a (
520        .din    (a2stg_frac2_in[63:0]),
521        .en     (a6stg_step),
522        .clk    (clk),
523
524        .q      (a2stg_frac2a[63:0]),
525
526        .se     (se),
527        .si     (),
528        .so     ()
529);
530
531
532///////////////////////////////////////////////////////////////////////////////
533//
534//      Add pipe right shift
535//              - shift the smaller fraction right for adds and subtracts
536//              - shift the fraction right for float to integer conversion
537//
538//      Add stage 2.
539//
540///////////////////////////////////////////////////////////////////////////////
541
542assign a2stg_frac2_63= a2stg_frac2[63];
543
544assign a2stg_frac2hi_neq_0= (|a2stg_frac2[62:32]);
545
546assign a2stg_frac2lo_neq_0= (|a2stg_frac2[31:11]);
547
548
549// a2 stage right shifter
550assign a2stg_shr_tmp2[63:0] = ({{24{a2stg_shr_cnt_5[0]}}, {16{a2stg_shr_cnt_5[1]}}, {13{a2stg_shr_cnt_5[2]}}, {11{a2stg_shr_cnt_5[3]}}} & {32'h00000000, a2stg_frac2a[63:32]})
551        | ({{24{a2stg_shr_cnt_5_inv[0]}}, {16{a2stg_shr_cnt_5_inv[1]}}, {13{a2stg_shr_cnt_5_inv[2]}}, {11{a2stg_shr_cnt_5_inv[3]}}} & a2stg_frac2a[63:0]);
552
553assign a2stg_shr_tmp4[63:0] = ({{24{a2stg_shr_cnt_4[0]}}, {16{a2stg_shr_cnt_4[1]}}, {13{a2stg_shr_cnt_4[2]}}, {11{a2stg_shr_cnt_4[3]}}} & {16'h0000, a2stg_shr_tmp2[63:16]})
554        | ({{43{~a2stg_shr_cnt_4[4]}}, {21{~a2stg_shr_cnt_4[4]}}} & a2stg_shr_tmp2[63:0]);
555
556assign a2stg_shr_tmp6[63:0] = ~(({{24{a2stg_shr_cnt_3[0]}}, {16{a2stg_shr_cnt_3[1]}}, {13{a2stg_shr_cnt_3[2]}}, {11{a2stg_shr_cnt_3[3]}}} & {8'h00, a2stg_shr_tmp4[63:8]})
557        | ({64{~a2stg_shr_cnt_3[4]}} & a2stg_shr_tmp4[63:0]));
558
559assign a2stg_shr_tmp8[63:0] = ~(({{43{a2stg_shr_cnt_2[0]}}, {21{a2stg_shr_cnt_2[0]}}} | a2stg_shr_tmp6[63:0])
560        & ({64{~a2stg_shr_cnt_2[1]}} | {4'hf, a2stg_shr_tmp6[63:4]}));
561
562assign a2stg_shr_tmp10[63:0] = ~(({{43{a2stg_shr_cnt_1[0]}}, {21{a2stg_shr_cnt_1[0]}}} & {2'b00, a2stg_shr_tmp8[63:2]})
563        | ({64{~a2stg_shr_cnt_1[1]}} & a2stg_shr_tmp8[63:0]));
564
565assign a2stg_shr[115:52] = ~(({{43{a2stg_shr_cnt_0[0]}}, {21{a2stg_shr_cnt_0[0]}}} | a2stg_shr_tmp10[63:0])
566         & ({64{~a2stg_shr_cnt_0[1]}} | {1'b1, a2stg_shr_tmp10[63:1]}));
567
568assign a2stg_shr_tmp18[63:0] = ~a2stg_shr_tmp2[63:0];
569assign a2stg_shr_tmp13[63:0] = a2stg_shr_tmp4[63:0];
570
571// a2 stage nx signals
572assign a2stg_fsdtoi_nx = (| a2stg_shr_tmp13[31:0])
573        | (~(& a2stg_shr_tmp6[31:24]))
574        | (| a2stg_shr_tmp8[31:28])
575        | (~(& a2stg_shr_tmp10[31:30]))
576        | a2stg_shr[83];
577
578
579assign a2stg_nx_neq0_84_tmp_1[63:20] = ~((a2stg_frac2a[43:0] & {44{a2stg_shr_cnt[5]}})
580        | ({a2stg_frac2a[11:0], 32'h00000000} & {44{~a2stg_shr_cnt[5]}}));
581
582assign a2stg_nx_neq0_84_tmp_2[63:36] = ~(({a2stg_shr_tmp18[27:12], a2stg_nx_neq0_84_tmp_1[63:52]} | {28{~a2stg_shr_cnt[4]}})
583        & (a2stg_nx_neq0_84_tmp_1[63:36] | {28{a2stg_shr_cnt[4]}}));
584
585assign a2stg_nx_neq0_84_tmp_3[63:44] = ~(({a2stg_shr_tmp13[19:12], a2stg_nx_neq0_84_tmp_2[63:52]} & {20{a2stg_shr_cnt[3]}})
586        | (a2stg_nx_neq0_84_tmp_2[63:44] & {20{~a2stg_shr_cnt[3]}}));
587
588assign a2stg_nx_neq0_84_tmp_4[63:48] = ~(({a2stg_shr_tmp6[15:12], a2stg_nx_neq0_84_tmp_3[63:52]} | {16{~a2stg_shr_cnt[2]}})
589        & (a2stg_nx_neq0_84_tmp_3[63:48] | {16{a2stg_shr_cnt[2]}}));
590
591assign a2stg_nx_neq0_84_tmp_5[61:50] = ~((a2stg_nx_neq0_84_tmp_4[63:52] & {12{a2stg_shr_cnt[1]}})
592        | (a2stg_nx_neq0_84_tmp_4[61:50] & {12{~a2stg_shr_cnt[1]}}));
593
594assign a2stg_nx_neq0_84_tmp_6[59] = ~(a2stg_shr_cnt[0] | a2stg_nx_neq0_84_tmp_5[60]);
595assign a2stg_nx_neq0_84_tmp_6[60] = ~(~a2stg_shr_cnt[0] | a2stg_nx_neq0_84_tmp_5[61]);
596assign a2stg_nx_neq0_84_tmp_6_51 = ~((a2stg_nx_neq0_84_tmp_5[52] | ~a2stg_shr_cnt[0])
597        & (a2stg_nx_neq0_84_tmp_5[51] | a2stg_shr_cnt[0]));
598
599assign a2stg_fsdtoix_nx = (~(& a2stg_nx_neq0_84_tmp_1[51:20])
600        | (| a2stg_nx_neq0_84_tmp_2[51:36])
601        | ~(& a2stg_nx_neq0_84_tmp_3[51:44])
602        | (| a2stg_nx_neq0_84_tmp_4[51:48])
603        | ~(& a2stg_nx_neq0_84_tmp_5[51:50])
604        | a2stg_nx_neq0_84_tmp_6_51);
605
606assign a2stg_shr_60_0_neq_0 = (~(& a2stg_nx_neq0_84_tmp_1[60:20])
607        | (| a2stg_nx_neq0_84_tmp_2[60:45])
608        | ~(& a2stg_nx_neq0_84_tmp_3[60:53])
609        | (| a2stg_nx_neq0_84_tmp_4[60:57])
610        | ~(& a2stg_nx_neq0_84_tmp_5[60:59])
611        | (| a2stg_nx_neq0_84_tmp_6[60:59]));
612
613
614assign a2stg_shr_frac2_inv[63:0]= (~(({64{a2stg_shr_frac2_shr_int}}
615                            & {1'b0, a2stg_shr[115:61], a2stg_shr_60_0_neq_0,
616                                        7'b0})
617                | ({64{(a2stg_shr_frac2_shr_dbl && a2stg_expadd_11)}}
618                            & a2stg_shr[115:52])
619                | ({64{(a2stg_shr_frac2_shr_sng && a2stg_expadd_11)}}
620                            & {a2stg_shr[115:84], 32'b0})
621                | ({64{(a2stg_shr_frac2_max && (!a2stg_expadd_11))}}
622                            & 64'h7fffffffffffffff)
623                | ({64{(!a6stg_step)}}
624                            & a3stg_frac2[63:0])));
625
626assign a3stg_frac2_in[63:0]= (~(a2stg_shr_frac2_inv[63:0]
627                ^ {64{a2stg_sub_step}}));
628
629dff_s #(64) i_a3stg_frac2 (
630        .din    (a3stg_frac2_in[63:0]),
631        .clk    (clk),
632
633        .q      (a3stg_frac2[63:0]),
634
635        .se     (se),
636        .si     (),
637        .so     ()
638);
639
640
641///////////////////////////////////////////////////////////////////////////////
642//
643//      Pipe the other/larger fraction to stage 3.
644//
645//      Add stage 2.
646//
647///////////////////////////////////////////////////////////////////////////////
648
649dffe_s #(64) i_a3stg_frac1 (
650        .din    ({1'b0, a2stg_frac1[63:1]}),
651        .en     (a6stg_step),
652        .clk    (clk),
653
654        .q      (a3stg_frac1[63:0]),
655         
656        .se     (se),
657        .si     (),
658        .so     ()
659);
660
661
662///////////////////////////////////////////////////////////////////////////////
663//
664//      Add pipe adder.
665//
666//      Add stage 2.
667//
668///////////////////////////////////////////////////////////////////////////////
669
670assign a2stg_fracadd_in2[63:0]= ({64{a2stg_fracadd_frac2_inv}}
671                            & (~a2stg_frac2[63:0]))
672                | ({64{a2stg_fracadd_frac2_inv_shr1}}
673                            & (~{1'b0, a2stg_frac2[63:1]}))
674                | ({64{a2stg_fracadd_frac2}}
675                            & a2stg_frac2[63:0]);
676
677assign a2stg_fracadd[63:0]= (a2stg_frac1[63:0]
678                        + a2stg_fracadd_in2[63:0]
679                        + {63'b0, a2stg_fracadd_cin});
680
681dffe_s #(64) i_a3stg_ld0_frac (
682        .din    (a2stg_fracadd[63:0]),
683        .en     (a6stg_step),
684        .clk    (clk),
685
686        .q      (a3stg_ld0_frac[63:0]),
687
688        .se     (se),
689        .si     (),
690        .so     ()
691);
692
693
694///////////////////////////////////////////////////////////////////////////////
695//
696//      Add pipe exponent decode- used to identify denorm results.
697//
698//      Add stage 2.
699//
700///////////////////////////////////////////////////////////////////////////////
701
702// assign a2stg_expdec_tmp[107:0]= ({54'b0, 54'h20000000000000} >> a2stg_exp[5:0]);
703assign a2stg_expdec_tmp[53:0] =          54'h20000000000000  >> a2stg_exp[5:0] ;
704
705assign a2stg_expdec[53:0]= a2stg_expdec_tmp[53:0] & {54{a2stg_expdec_neq_0}};
706
707dffe_s #(54) i_a3stg_expdec (
708        .din    (a2stg_expdec[53:0]),
709        .en     (a6stg_step),
710        .clk    (clk),
711
712        .q      (a3stg_expdec[53:0]),
713
714        .se     (se),
715        .si     (),
716        .so     ()
717);
718
719
720///////////////////////////////////////////////////////////////////////////////
721//
722//      Add pipe denorm comparator to identify denorm results.
723//
724//      Add stage 3.
725//
726///////////////////////////////////////////////////////////////////////////////
727
728assign a3stg_ld0_dnrm_10= (a3stg_faddsubopa[0] && a3stg_ld0_frac[10])
729                || ((!a3stg_faddsubopa[0]) && (|a3stg_ld0_frac[10:0]));
730
731fpu_denorm_frac i_a3stg_denorm (
732        .din1                   ({a3stg_ld0_frac[63:11], a3stg_ld0_dnrm_10}),
733        .din2                   (a3stg_expdec[53:0]),
734
735        .din2_din1_denorm       (a3stg_denorm),
736        .din2_din1_denorm_inv   (a3stg_denorm_inv),
737        .din2_din1_denorma      (a3stg_denorma),
738        .din2_din1_denorm_inva  (a3stg_denorm_inva)
739);
740
741
742///////////////////////////////////////////////////////////////////////////////
743//
744//      Add pipe leading 0's counter.
745//
746//      Add stage 3.
747//
748///////////////////////////////////////////////////////////////////////////////
749
750fpu_cnt_lead0_64b i_a3stg_lead0 (
751        .din    (a3stg_ld0_frac[63:0]),
752
753        .lead0  (a3stg_lead0[5:0])
754);
755
756
757///////////////////////////////////////////////////////////////////////////////
758//
759//      Add pipe main adder.
760//
761//      Add stage 3.
762//
763///////////////////////////////////////////////////////////////////////////////
764
765assign a3stg_fracadd[63:0]= (a3stg_frac1[63:0]
766                        + a3stg_frac2[63:0]
767                        + {63'b0, a3stg_suba});
768
769dffe_s #(64) i_astg_xtra_regs (
770        .din    ({{4{a2stg_shr_cnt_5_inv_in}}, {4{a2stg_shr_cnt_in[5]}},
771                        a2stg_shr_cnt_in[5:3],
772                        {5{a2stg_shr_cnt_in[4]}}, {5{a2stg_shr_cnt_in[3]}},
773                        a2stg_shr_cnt_in[5:0], a4stg_round_in,
774                        {2{a2stg_shr_cnt_in[2]}}, {2{a2stg_shr_cnt_in[1]}},
775                        {2{a2stg_shr_cnt_in[0]}},
776                        {3{a4stg_shl_cnt_in[6]}},
777                        {3{a4stg_shl_cnt_in[7]}},
778                        {3{a4stg_shl_cnt_in[8]}},
779                        {3{a4stg_shl_cnt_in[9]}},
780                        a4stg_shl_cnt_in[5:0],
781                        {3{a2stg_shr_cnt_in[5]}},
782                        a2stg_fracadd_frac2_inv_in,
783                        a2stg_fracadd_frac2_inv_shr1_in,
784                        a3stg_denorm_inva,
785                        a2stg_fsdtoix_nx, a2stg_fsdtoi_nx,
786                        1'b0, a2stg_fracadd_cin_in, {2{a3stg_sub_in}}}),
787        .en     (a6stg_step),
788        .clk    (clk),
789
790        .q      ({a2stg_shr_cnt_5_inv[3:0], a2stg_shr_cnt_5[3:0],
791                        a2stg_shr_cnta[5:3],
792                        a2stg_shr_cnt_4[4:0], a2stg_shr_cnt_3[4:0],
793                        a2stg_shr_cnt[5:0], a4stg_round,
794                        a2stg_shr_cnt_2[1:0], a2stg_shr_cnt_1[1:0],
795                        a2stg_shr_cnt_0[1:0],
796                        a4stg_shl_cnt_dec54_0[2:0],
797                        a4stg_shl_cnt_dec54_1[2:0],
798                        a4stg_shl_cnt_dec54_2[2:0],
799                        a4stg_shl_cnt_dec54_3[2:0],
800                        a4stg_shl_cnt[5:0],
801                        a2stg_shr_cnta_5[2:0],
802                        a2stg_fracadd_frac2_inv,
803                        a2stg_fracadd_frac2_inv_shr1,
804                        a4stg_denorm_inv,
805                        a3stg_fsdtoix_nx, a3stg_fsdtoi_nx,
806                        astg_xtra_regs[3], a2stg_fracadd_cin,
807                        a3stg_sub, a3stg_suba}),
808
809        .se     (se),
810        .si     (),
811        .so     ()
812);
813
814assign a4stg_round_in= a3stg_fracadd[61]
815                || a3stg_fracadd[62]
816                || a3stg_fracadd[63];
817
818assign a3stg_inc_exp_inv= (!a3stg_fracadd[63]);
819
820assign a3stg_same_exp_inv= (!(((!a3stg_fracadd[63]) && a3stg_fracadd[62])
821                || ((!a3stg_fracadd[63]) && a3stg_exp10_0_eq0)));
822
823assign a3stg_dec_exp_inv= (!((!a3stg_fracadd[63])
824                && (!a3stg_fracadd[62])
825                && a3stg_fracadd[61]
826                && (!a3stg_exp10_0_eq0)));
827
828assign a3stg_inc_exp_inva= (!a3stg_fracadd[63]);
829
830assign a3stg_fsame_exp_inv= (!(((!a3stg_fracadd[63])
831                        && (!a3stg_fracadd[62])
832                        && a3stg_fracadd[61]
833                        && a3stg_exp10_1_eq0
834                        && a3stg_exp_0)
835                || ((!a3stg_fracadd[63])
836                        && a3stg_fracadd[62]
837                        && (!a3stg_exp10_0_eq0))));
838
839assign a3stg_fdec_exp_inv= (!((!a3stg_fracadd[63])
840                && (!a3stg_fracadd[62])
841                && a3stg_fracadd[61]
842                && (!a3stg_exp10_1_eq0)));
843
844assign a4stg_rnd_frac_pre1_in[63:0]= ({64{(a3stg_faddsubopa[1] && a6stg_step
845                                        && (!a3stg_fdec_exp_inv))}}
846                            & {a3stg_fracadd[61:0], 2'b00});
847
848dff_s #(64) i_a4stg_rnd_frac_pre1 (
849        .din    (a4stg_rnd_frac_pre1_in[63:0]),
850        .clk    (clk),
851
852        .q      (a4stg_rnd_frac_pre1[63:0]),
853
854        .se     (se),
855        .si     (),
856        .so     ()
857);
858
859assign a4stg_rnd_frac_pre3_in[63:0]= ({64{(a3stg_faddsubopa[1] && a6stg_step
860                                        && (!a3stg_fsame_exp_inv))}}
861                            & {a3stg_fracadd[62:0], 1'b0});
862
863dff_s #(64) i_a4stg_rnd_frac_pre3 (
864        .din    (a4stg_rnd_frac_pre3_in[63:0]),
865        .clk    (clk),
866
867        .q      (a4stg_rnd_frac_pre3[63:0]),
868
869        .se     (se),
870        .si     (),
871        .so     ()
872);
873
874assign a4stg_rnd_frac_pre2_in[63:0]= ({64{(a3stg_faddsubopa[1] && a6stg_step
875                                        && (!a3stg_inc_exp_inva))}}
876                            & a3stg_fracadd[63:0])
877                | ({64{((!a4stg_rnd_frac_add_inv) && a6stg_step)}}
878                            & a3stg_fracadd[63:0])
879                | ({64{((!a3stg_fdtos_inv) && a6stg_step)}}
880                            & {a3stg_fracadd[62:0], 1'b0})
881                | ({64{((!a4stg_fixtos_fxtod_inv) && a6stg_step)}}
882                            & a4stg_shl[63:0])
883                | ({64{(!a6stg_step)}}
884                            & a4stg_rnd_frac[63:0]);
885
886dff_s #(64) i_a4stg_rnd_frac_pre2 (
887        .din    (a4stg_rnd_frac_pre2_in[63:0]),
888        .clk    (clk),
889
890        .q      (a4stg_rnd_frac_pre2[63:0]),
891
892        .se     (se),
893        .si     (),
894        .so     ()
895);
896
897
898///////////////////////////////////////////////////////////////////////////////
899//
900//      Add pipe input to left shift.
901//
902//      Add stage 3.
903//
904///////////////////////////////////////////////////////////////////////////////
905
906assign a4stg_shl_data_in[63:0]= ({64{a3stg_denorm_inva}}
907                            & a3stg_ld0_frac[63:0])
908                | ({64{a3stg_denorma}}
909                            & {1'b0, a3stg_ld0_frac[63:1]});
910
911dffe_s #(64) i_a4stg_shl_data (
912        .din    (a4stg_shl_data_in[63:0]),
913        .en     (a6stg_step),
914        .clk    (clk),
915
916        .q      (a4stg_shl_data[63:0]),
917
918        .se     (se),
919        .si     (),
920        .so     ()
921);
922
923
924///////////////////////////////////////////////////////////////////////////////
925//
926//      Add pipe rounding adder.
927//
928//      Add stage 4.
929//
930///////////////////////////////////////////////////////////////////////////////
931
932assign a4stg_rnd_frac[63:0]= (a4stg_rnd_frac_pre1[63:0]
933                                | a4stg_rnd_frac_pre2[63:0]
934                                | a4stg_rnd_frac_pre3[63:0]);
935
936assign a4stg_rnd_frac_40= a4stg_rnd_frac[40];
937
938assign a4stg_rnd_frac_39= a4stg_rnd_frac[39];
939
940assign a4stg_rnd_frac_11= a4stg_rnd_frac[11];
941
942assign a4stg_rnd_frac_10= a4stg_rnd_frac[10];
943
944assign a4stg_frac_9_0_nx= (|a4stg_rnd_frac[9:0]);
945
946assign a4stg_frac_dbl_nx= a4stg_frac_9_0_nx || a4stg_rnd_frac[10];
947
948assign a4stg_frac_38_0_nx= a4stg_frac_dbl_nx || (|a4stg_rnd_frac[38:11]);
949
950assign a4stg_frac_sng_nx= a4stg_frac_38_0_nx || a4stg_rnd_frac[39];
951
952assign a4stg_frac_neq_0= a4stg_frac_sng_nx || (|a4stg_rnd_frac[63:40]);
953
954assign a4stg_rndadd_tmp[52:0]= {1'b0, a4stg_rnd_frac[62:11]}
955                        + {23'b0, a4stg_rnd_sng, 28'b0, a4stg_rnd_dbl};
956
957assign a4stg_rndadd_cout= a4stg_rndadd_tmp[52];
958
959assign a4stg_rndadd[51:0]= a4stg_rndadd_tmp[51:0];
960
961
962///////////////////////////////////////////////////////////////////////////////
963//
964//      Add pipe left shift.
965//
966//      Add stage 4.
967//
968///////////////////////////////////////////////////////////////////////////////
969
970assign a4stg_shl_data_neq_0= (|a4stg_shl_data[63:0]);
971
972assign a4stg_shl_tmp4[63:0] = ({{32{a4stg_shl_cnt_dec54_0[0]}}, {21{a4stg_shl_cnt_dec54_0[1]}}, {11{a4stg_shl_cnt_dec54_0[2]}}} & a4stg_shl_data[63:0])
973        | ({{32{a4stg_shl_cnt_dec54_1[0]}}, {21{a4stg_shl_cnt_dec54_1[1]}}, {11{a4stg_shl_cnt_dec54_1[2]}}} & {a4stg_shl_data[47:0], 16'h0000})
974        | ({{32{a4stg_shl_cnt_dec54_2[0]}}, {21{a4stg_shl_cnt_dec54_2[1]}}, {11{a4stg_shl_cnt_dec54_2[2]}}} & {a4stg_shl_data[31:0], 32'h00000000})
975        | ({{32{a4stg_shl_cnt_dec54_3[0]}}, {21{a4stg_shl_cnt_dec54_3[1]}}, {11{a4stg_shl_cnt_dec54_3[2]}}} & {a4stg_shl_data[15:0], 32'h00000000, 16'h0000});
976
977assign a4stg_shl[63:0] = a4stg_shl_tmp4[63:0] << a4stg_shl_cnt[3:0];
978
979
980///////////////////////////////////////////////////////////////////////////////
981//
982//      Add pipe fraction output.
983//
984//      Add stage 4.
985//
986///////////////////////////////////////////////////////////////////////////////
987
988dffe_s #(58) i_a5stg_rndadd (
989        .din    ({a4stg_rndadd_cout, add_frac_out_rndadd, add_frac_out_rnd_frac,
990                        a4stg_in_of, add_frac_out_shl, a4stg_to_0,
991                        a4stg_rndadd[51:0]}),
992        .en     (a6stg_step),
993        .clk    (clk),
994
995        .q      ({add_of_out_cout, a5stg_frac_out_rndadd,
996                        a5stg_frac_out_rnd_frac, a5stg_in_of,
997                        a5stg_frac_out_shl, a5stg_to_0,
998                        a5stg_rndadd[51:0]}),
999
1000        .se     (se),
1001        .si     (),
1002        .so     ()
1003);
1004
1005dffe_s #(64) i_a5stg_rnd_frac (
1006        .din    (a4stg_rnd_frac[63:0]),
1007        .en     (a6stg_step),
1008        .clk    (clk),
1009
1010        .q      (a5stg_rnd_frac[63:0]),
1011
1012        .se     (se),
1013        .si     (),
1014        .so     ()
1015);
1016
1017dffe_s #(64) i_a5stg_shl (
1018        .din    (a4stg_shl[63:0]),
1019        .en     (a6stg_step),
1020        .clk    (clk),
1021
1022        .q      (a5stg_shl[63:0]),
1023
1024        .se     (se),
1025        .si     (),
1026        .so     ()
1027);
1028
1029assign add_frac_out[63:0]= ({64{a5stg_frac_out_rndadd}}
1030                            & {1'b0, a5stg_rndadd[51:0], 11'b0})
1031                | ({64{a5stg_frac_out_rnd_frac}}
1032                            & a5stg_rnd_frac[63:0])
1033                | ({64{a5stg_in_of}}
1034                            & {64{a5stg_to_0}})
1035                | ({64{a5stg_frac_out_shl}}
1036                            & a5stg_shl[63:0]);
1037
1038
1039endmodule
1040
Note: See TracBrowser for help on using the repository browser.