Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / spc / dec / rtl / dec.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: dec.v
4// Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
5// 4150 Network Circle, Santa Clara, California 95054, U.S.A.
6//
7// * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8//
9// This program is free software; you can redistribute it and/or modify
10// it under the terms of the GNU General Public License as published by
11// the Free Software Foundation; version 2 of the License.
12//
13// This program is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16// GNU General Public License for more details.
17//
18// You should have received a copy of the GNU General Public License
19// along with this program; if not, write to the Free Software
20// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21//
22// For the avoidance of doubt, and except that if any non-GPL license
23// choice is available it will apply instead, Sun elects to use only
24// the General Public License version 2 (GPLv2) at this time for any
25// software where a choice of GPL license versions is made
26// available with the language indicating that GPLv2 or any later version
27// may be used, or where a choice of which version of the GPL is applied is
28// otherwise unspecified.
29//
30// Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
31// CA 95054 USA or visit www.sun.com if you need additional information or
32// have any questions.
33//
34// ========== Copyright Header End ============================================
35module dec (
36 l2clk,
37 scan_in,
38 tcu_pce_ov,
39 spc_aclk,
40 spc_bclk,
41 tcu_scan_en,
42 power_throttle,
43 lb_lbist_running,
44 lsu_dec_pmen,
45 lsu_exu_pmen,
46 spc_core_running_status,
47 exu_test_tid0,
48 exu_test_addr0,
49 exu_test_valid0,
50 exu_test_tid1,
51 exu_test_addr1,
52 exu_test_valid1,
53 tlu_cerer_icdp,
54 tlu_dec_pstate_pef,
55 fgu_fprs_fef,
56 tlu_dec_hpstate_hpriv,
57 tlu_dec_pstate_priv,
58 tlu_pstate_am,
59 tlu_window_block,
60 exu0_window_block,
61 exu1_window_block,
62 lsu_cpq_stall,
63 ifu_buf0_inst0,
64 ifu_buf0_inst1,
65 ifu_buf0_inst2,
66 ifu_buf0_inst3,
67 ifu_buf0_inst4,
68 ifu_buf0_inst5,
69 ifu_buf0_inst6,
70 ifu_buf0_inst7,
71 ifu_buf0_excp0,
72 ifu_buf0_excp1,
73 ifu_buf0_excp2,
74 ifu_buf0_excp3,
75 ifu_buf0_excp4,
76 ifu_buf0_excp5,
77 ifu_buf0_excp6,
78 ifu_buf0_excp7,
79 tlu_flush_ifu,
80 pku_load_flush_w,
81 pku_inst_cnt_brtaken00,
82 pku_inst_cnt_brtaken01,
83 pku_inst_cnt_brtaken02,
84 pku_inst_cnt_brtaken03,
85 pku_inst_cnt_brtaken04,
86 pku_inst_cnt_brtaken05,
87 pku_inst_cnt_brtaken06,
88 pku_inst_cnt_brtaken07,
89 pku_inst_cnt_brtaken10,
90 pku_inst_cnt_brtaken11,
91 pku_inst_cnt_brtaken12,
92 pku_inst_cnt_brtaken13,
93 pku_inst_cnt_brtaken14,
94 pku_inst_cnt_brtaken15,
95 pku_inst_cnt_brtaken16,
96 pku_inst_cnt_brtaken17,
97 pku_base_pick_p,
98 pku_raw_pick0_p,
99 pku_raw_pick1_p,
100 pku_annul_ds_dcti_brtaken0_e,
101 pku_annul_ds_dcti_brtaken1_e,
102 pku_valid_e,
103 pku_ds_e,
104 pku_lsu_p,
105 pku_fgu_p,
106 pku_pdist_p,
107 pku_twocycle_p,
108 pku_idest_p,
109 pku_fdest_p,
110 pku_fsrc_rd_p,
111 pku_isrc_rs1_p,
112 pku_isrc_rs2_p,
113 pku_isrc_rd_p,
114 pku_flush_f1,
115 pku_flush_f2,
116 pku_flush_lm,
117 pku_flush_lb,
118 pku_flush_m,
119 pku_flush_b,
120 spu_mult_request,
121 lsu_block_store_stall,
122 lsu_block_store_rd,
123 lsu_block_store_tid,
124 tlu_dtlb_reload_stall,
125 fgu_ecc_asi_stall,
126 exu0_oddwin_b,
127 exu1_oddwin_b,
128 fgu_idiv_stall,
129 fgu_fdiv_stall,
130 dec_br_taken_e1,
131 del_pick_d,
132 dec_inst0_rd_d,
133 dec_inst1_rd_d,
134 dec_rs1_addr0_e,
135 dec_rs1_addr1_e,
136 dec_inst0_d,
137 dec_inst1_d,
138 dec_decode0_d,
139 dec_decode1_d,
140 dec_valid0_d,
141 dec_valid1_d,
142 dec_true_valid_e,
143 dec_tid0_d,
144 dec_tid1_d,
145 dec_tid0_p,
146 dec_tid1_p,
147 dec_raw_pick_p,
148 dec_inst0_rs1_p,
149 dec_inst0_rs2_p,
150 dec_inst0_rs3_p,
151 dec_inst0_rs1_vld_p,
152 dec_inst0_rs2_vld_p,
153 dec_inst0_rs3_vld_p,
154 dec_inst1_rs1_p,
155 dec_inst1_rs2_p,
156 dec_inst1_rs3_p,
157 dec_inst1_rs1_vld_p,
158 dec_inst1_rs2_vld_p,
159 dec_inst1_rs3_vld_p,
160 dec_frf_r1_addr_d,
161 dec_frf_r2_addr_d,
162 dec_frf_r1_vld_d,
163 dec_frf_r2_vld_d,
164 dec_frf_r1_32b_d,
165 dec_frf_r2_32b_d,
166 dec_frf_r1_odd32b_d,
167 dec_frf_r2_odd32b_d,
168 dec_frf_w_addr_d,
169 dec_frf_w_vld_d,
170 dec_frf_w_32b_d,
171 dec_frf_w_odd32b_d,
172 dec_exu_src_vld_d,
173 dec_irf_w_addr_d,
174 dec_frf_store_d,
175 dec_fsr_store_d,
176 dec_fgu_op3_d,
177 dec_fgu_opf_d,
178 dec_fgu_decode_d,
179 dec_fgu_tid_d,
180 dec_flush_f1,
181 dec_flush_f2,
182 dec_flush_lm,
183 dec_flush_lb,
184 dec_flush_m,
185 dec_flush_b,
186 dec_spu_grant_d,
187 dec_spu_grant_fgu_d,
188 dec_block_store_b,
189 dec_load_flush_w,
190 dec_exc0_m,
191 dec_exc1_m,
192 dec_inst0_cnt,
193 dec_inst1_cnt,
194 dec_tid0_m,
195 dec_tid1_m,
196 dec_inst_valid_m,
197 dec_lsu_inst_m,
198 dec_fgu_inst_m,
199 dec_cti_inst_m,
200 dec_illegal_inst_m,
201 dec_icache_perr_m,
202 dec_priv_exc_m,
203 dec_hpriv_exc_m,
204 dec_fpdisable_exc_m,
205 dec_br_taken_m,
206 dec_done_inst_m,
207 dec_retry_inst_m,
208 dec_sir_inst_m,
209 dec_annul_ds_m,
210 dec_ds_m,
211 dec_fgu_sel_e,
212 dec_fgu_sel_m,
213 dec_lsu_sel0_e,
214 dec_lsu_sel1_e,
215 dec_lsu_sel0_lower_e,
216 dec_lsu_sel1_lower_e,
217 dec_lsu_sel0_upper_e,
218 dec_lsu_sel1_upper_e,
219 dec_rs1_addr0_upper_e,
220 dec_rs1_addr1_upper_e,
221 dec_ld_inst_e,
222 dec_st_inst_e,
223 dec_fsr_ldst_e,
224 dec_fpldst_inst_e,
225 dec_ldst_dbl_e,
226 dec_pref_inst_e,
227 dec_flush_inst_e,
228 dec_memstbar_inst_e,
229 dec_ldst_sz_e,
230 dec_frf_r2_addr_e,
231 dec_sr_inst_e,
232 dec_pr_inst_e,
233 dec_hpr_inst_e,
234 dec_casa_inst_e,
235 dec_ldstub_inst_e,
236 dec_swap_inst_e,
237 dec_altspace_d,
238 dec_sign_ext_e,
239 dec_sraddr_e,
240 dec_imm_asi_vld_d,
241 dec_imm_asi_d,
242 dec_lsu_tid0_d,
243 dec_lsu_tid1_d,
244 dec_lsu_tg_d,
245 dec_lsu_rd_e,
246 dec_ld_inst_d,
247 dec_instr0_type_d,
248 dec_instr1_type_d,
249 dec_valid_e,
250 dec_pmu_valid_e,
251 dec_fgu_valid_e,
252 dec_exu_clken,
253 dec_lsu_sel0_d,
254 dec_ierr_d,
255 dec_block_store_stall,
256 scan_out);
257wire del_scanin;
258wire del_scanout;
259wire ded0_scanin;
260wire ded0_scanout;
261wire [1:0] del_tg_clken;
262wire del_test0_sel_p;
263wire del_twocycle0_std_p;
264wire del_twocycle0_rs2_p;
265wire del_default0_sel_p;
266wire [4:0] del_test_addr0_p;
267wire del_noshift0_d;
268wire [1:0] ded_ferr_p;
269wire [1:0] ded_perr_p;
270wire [1:0] ded_ferr_d;
271wire [1:0] ded_perr_d;
272wire [1:0] ded_legal_p;
273wire ded_oddwin0_d;
274wire [4:0] ded_exc0_d;
275wire ded1_scanin;
276wire ded1_scanout;
277wire del_test1_sel_p;
278wire del_twocycle1_std_p;
279wire del_twocycle1_rs2_p;
280wire del_default1_sel_p;
281wire [4:0] del_test_addr1_p;
282wire del_noshift1_d;
283wire ded_oddwin1_d;
284wire [4:0] ded_exc1_d;
285wire [1:0] dcd_sir_d;
286wire [1:0] dcd_stdfa_d;
287wire [1:0] dcd_save_restore_d;
288wire [1:0] dcd_exu_src_d;
289wire [1:0] dcd_killfgu_d;
290wire [1:0] dcd_lsize0_d;
291wire [1:0] dcd_lsu_sign_ext_d;
292wire [1:0] dcd_load_d;
293wire [1:0] dcd_store_d;
294wire [1:0] dcd_lsdouble_d;
295wire [1:0] dcd_prefetch_d;
296wire [1:0] dcd_flush_d;
297wire [1:0] dcd_memstbar_d;
298wire [1:0] dcd_hpr_d;
299wire [1:0] dcd_pr_d;
300wire [1:0] dcd_priv_d;
301wire [1:0] dcd_sr_d;
302wire [1:0] dcd_casa_d;
303wire [1:0] dcd_ldstub_d;
304wire [1:0] dcd_alt_d;
305wire [1:0] dcd_alti_d;
306wire [1:0] dcd_swap_d;
307wire [1:0] dcd_done_d;
308wire [1:0] dcd_retry_d;
309wire [1:0] dcd_fsrc_rs1_d;
310wire [1:0] dcd_fsrc_rs2_d;
311wire [1:0] dcd_fpdest_single_d;
312wire [1:0] dcd_fp_rs1_single_d;
313wire [1:0] dcd_fp_rs2_single_d;
314wire [1:0] dcd_fsrsync_d;
315wire [1:0] dcd_callclass_d;
316wire [1:0] dcd_specbr_d;
317wire [1:0] dcd_specfp_d;
318wire [1:0] dcd_tcc_d;
319wire [1:0] dcd_sethi_d;
320wire [1:0] dcd_fpdisable_d;
321wire [1:0] dcd_wrtick_d;
322wire [1:0] dcd_lsize1_d;
323
324 input l2clk;
325 input scan_in;
326 input tcu_pce_ov; // scan signals
327 input spc_aclk;
328 input spc_bclk;
329 input tcu_scan_en;
330
331 input [2:0] power_throttle; // power throttle, [2:0] is encoded number of stalls in 8 cycle window
332 // 000 - no stalls, 001 - 1 stall, ... 111 - 7 stalls
333
334 input lb_lbist_running;
335
336 input lsu_dec_pmen; // power management enable for dec
337 input lsu_exu_pmen; // power management enable for exu
338
339 input [7:0] spc_core_running_status; // active bits for each of the threads
340
341 input [1:0] exu_test_tid0; // exu test interface to the irf (bist or ecc errors)
342 input [4:0] exu_test_addr0;
343 input exu_test_valid0;
344
345 input [1:0] exu_test_tid1; // exu test interface to the irf (bist or ecc errors)
346 input [4:0] exu_test_addr1;
347 input exu_test_valid1;
348
349 input tlu_cerer_icdp; // enable for icdp perr
350
351 input [7:0] tlu_dec_pstate_pef; // pstate enable fp bit
352 input [7:0] fgu_fprs_fef; // fprs enable fp bit
353 input [7:0] tlu_dec_hpstate_hpriv; // hpriv bits
354 input [7:0] tlu_dec_pstate_priv; // priv bits
355
356 input [7:0] tlu_pstate_am; // address mask bit from the pstate register
357
358 input [1:0] tlu_window_block; // tlu is doing a window operation and needs a hole created
359
360 input exu0_window_block; // exu0 is doing a window operation and needs a hole created
361 input exu1_window_block; // exu1 is doing a window operation and needs a hole created
362
363 input lsu_cpq_stall; // lsu stalls all other lsu ops at decode
364
365 input [32:0] ifu_buf0_inst0; // instructions for each of the threads
366 input [32:0] ifu_buf0_inst1;
367 input [32:0] ifu_buf0_inst2;
368 input [32:0] ifu_buf0_inst3;
369 input [32:0] ifu_buf0_inst4;
370 input [32:0] ifu_buf0_inst5;
371 input [32:0] ifu_buf0_inst6;
372 input [32:0] ifu_buf0_inst7;
373
374 input [4:0] ifu_buf0_excp0; // encoding of the various fetch exceptions that can occur
375 input [4:0] ifu_buf0_excp1;
376 input [4:0] ifu_buf0_excp2;
377 input [4:0] ifu_buf0_excp3;
378 input [4:0] ifu_buf0_excp4;
379 input [4:0] ifu_buf0_excp5;
380 input [4:0] ifu_buf0_excp6;
381 input [4:0] ifu_buf0_excp7;
382
383 input [7:0] tlu_flush_ifu;
384
385 input [7:0] pku_load_flush_w;
386
387 input [1:0] pku_inst_cnt_brtaken00; // count of instructions at e,m,b stages needed to compute the PC at decode (to tlu)
388 input [1:0] pku_inst_cnt_brtaken01;
389 input [1:0] pku_inst_cnt_brtaken02;
390 input [1:0] pku_inst_cnt_brtaken03;
391 input [1:0] pku_inst_cnt_brtaken04;
392 input [1:0] pku_inst_cnt_brtaken05;
393 input [1:0] pku_inst_cnt_brtaken06;
394 input [1:0] pku_inst_cnt_brtaken07;
395
396 input [1:0] pku_inst_cnt_brtaken10; // count of instructions at e,m,b stages needed to compute the PC at decode (to tlu)
397 input [1:0] pku_inst_cnt_brtaken11;
398 input [1:0] pku_inst_cnt_brtaken12;
399 input [1:0] pku_inst_cnt_brtaken13;
400 input [1:0] pku_inst_cnt_brtaken14;
401 input [1:0] pku_inst_cnt_brtaken15;
402 input [1:0] pku_inst_cnt_brtaken16;
403 input [1:0] pku_inst_cnt_brtaken17;
404
405 input [7:0] pku_base_pick_p; // base pick signals with swl_cancel_pick but not decode cancel
406
407 input [3:0] pku_raw_pick0_p; // raw pick signals to ifu to mux pc addresses (no swl_cancel_pick or decode cancel)
408 input [7:4] pku_raw_pick1_p;
409
410 input [7:0] pku_annul_ds_dcti_brtaken0_e; // the DS of the dcti at the e stage is annulled this cycle
411 input [7:0] pku_annul_ds_dcti_brtaken1_e; // the DS of the dcti at the e stage is annulled this cycle
412
413 input [7:0] pku_valid_e; // inst at e stage is valid (takes annul into account)
414
415 input [7:0] pku_ds_e; // inst at e stage is a DS (tlu)
416
417 input [7:0] pku_lsu_p; // lsu op at pick
418 input [7:0] pku_fgu_p; // fgu op at pick
419 input [7:0] pku_pdist_p; // pdist op at pick
420 input [7:0] pku_twocycle_p; // twocycle op at pick (std or casa)
421 input [7:0] pku_idest_p; // inst at p has int dest
422 input [7:0] pku_fdest_p; // inst at p has fp dest
423
424 input [7:0] pku_fsrc_rd_p; // inst at p has fp rd src
425 input [7:0] pku_isrc_rs1_p; // inst at p has rs1 src
426 input [7:0] pku_isrc_rs2_p; // inst at p has rs2 src
427 input [7:0] pku_isrc_rd_p; // inst at p has rd src
428
429 input [7:0] pku_flush_f1; // flush inst at f1 in the fgu pipe
430 input [7:0] pku_flush_f2; // flush inst at f2 in the fgu pipe
431 input [7:0] pku_flush_lm; // flush inst at m in the lsu pipe
432 input [7:0] pku_flush_lb; // flush inst at b in the lsu pipe
433 input [7:0] pku_flush_m; // flush inst at m in the integer pipe
434 input [7:0] pku_flush_b; // flush inst at b in the integer pipe
435
436 input spu_mult_request; // spu is requesting a hole be created for running a crypto multiply through the fgu pipe
437
438 input lsu_block_store_stall; // stall decode to read the sources of the store
439 input [4:3] lsu_block_store_rd; // rd of the block store
440 input [2:0] lsu_block_store_tid; // tid of the block store
441
442 input tlu_dtlb_reload_stall; // stall decode of lsu ops due to dtlb fill operation
443
444 input fgu_ecc_asi_stall; // fgu ecc stall
445
446 input [3:0] exu0_oddwin_b; // is the current window odd or not for TG0
447 input [3:0] exu1_oddwin_b; // is the current window odd or not for TG1
448
449 input [1:0] fgu_idiv_stall; // integer divide stall; no int ops to FGU
450 input fgu_fdiv_stall; // float divide stall; no float loads to the LSU
451
452 input [1:0] dec_br_taken_e1;
453
454 // exu interface
455 output [7:0] del_pick_d;
456
457 output [4:0] dec_inst0_rd_d; // rd for TG0 at decode
458 output [4:0] dec_inst1_rd_d; // rd for TG1 at decode
459
460 output dec_rs1_addr0_e; // tell exu to put rs1 onto the lsu address bus for casa
461 output dec_rs1_addr1_e;
462
463 output [32:0] dec_inst0_d; // inst for TG0 at decode
464 output [32:0] dec_inst1_d; // inst for TG1 at decode
465
466 output dec_decode0_d; // inst at d stage for TG0 is decoded this cycle
467 output dec_decode1_d; // inst at d stage for TG1 is decoded this cycle
468 output dec_valid0_d; // inst at d stage for TG0 is valid this cycle
469 output dec_valid1_d; // inst at d stage for TG1 is valid this cycle
470
471 output [1:0] dec_true_valid_e; // inst at E are valid taking exceptions into account
472
473 output [1:0] dec_tid0_d; // TID for exu0
474 output [1:0] dec_tid1_d; // TID for exu1
475 output [1:0] dec_tid0_p; // TID for IRF
476 output [1:0] dec_tid1_p;
477
478 output [7:0] dec_raw_pick_p; // fast signals for tlu address calculations
479
480 output [4:0] dec_inst0_rs1_p; // TG0 rs1
481 output [4:0] dec_inst0_rs2_p; // TG0 rs2
482 output [4:0] dec_inst0_rs3_p; // TG0 rs3
483 output dec_inst0_rs1_vld_p; // TG0 rs1 valid
484 output dec_inst0_rs2_vld_p; // TG0 rs2 valid
485 output dec_inst0_rs3_vld_p; // TG0 rs3 valid
486
487 output [4:0] dec_inst1_rs1_p; // TG1 rs1
488 output [4:0] dec_inst1_rs2_p; // TG1 rs2
489 output [4:0] dec_inst1_rs3_p; // TG1 rs3
490 output dec_inst1_rs1_vld_p; // TG1 rs1 valid
491 output dec_inst1_rs2_vld_p; // TG1 rs2 valid
492 output dec_inst1_rs3_vld_p; // TG1 rs3 valid
493
494 // fgu interface
495 output [4:0] dec_frf_r1_addr_d; // FRF r1 read addr
496 output [4:0] dec_frf_r2_addr_d; // FRF r2 read addr (including store-floats)
497 output dec_frf_r1_vld_d; // FRF r1 read valid
498 output dec_frf_r2_vld_d; // FRF r2 read valid
499 output dec_frf_r1_32b_d; // FRF rs1 source is single-precision
500 output dec_frf_r2_32b_d; // FRF rs2 source is single-precision
501 output dec_frf_r1_odd32b_d; // FRF rs1 source is single-precision and odd
502 output dec_frf_r2_odd32b_d; // FRF rs2 source is single-precision and odd
503 output [4:0] dec_frf_w_addr_d; // FRF write addr
504 output dec_frf_w_vld_d; // FRF write addr is valid
505 output dec_frf_w_32b_d; // FRF write is single precision
506 output dec_frf_w_odd32b_d; // FRF write is single precision; rd is odd
507 output dec_exu_src_vld_d; // FGU op has any valid exu src
508 output [4:0] dec_irf_w_addr_d; // RD for an integer op executed by the FGU
509 output dec_frf_store_d; // store-float of FRF data
510 output dec_fsr_store_d; // store-float of FSR data
511 output [5:0] dec_fgu_op3_d; // op3 field
512 output [7:0] dec_fgu_opf_d; // opf field
513 output dec_fgu_decode_d; // FGU op decoded this cycle
514 output [2:0] dec_fgu_tid_d; // TID for FGU op
515 output dec_flush_f1; // Flush f1 stage of the FGU
516 output dec_flush_f2; // Flush f2 stage of the FGU
517 output dec_flush_lm; // Flush the m stage of a load
518 output dec_flush_lb; // Flush the bypass stage of a load
519 output [1:0] dec_flush_m; // Flush the m stage of the exu's
520 output [1:0] dec_flush_b; // Flush the b stage of the exu's
521 output dec_spu_grant_d; // SPU grant for a crypto multiply
522 output dec_spu_grant_fgu_d; // SPU grant for a crypto multiply
523 output [7:0] dec_block_store_b; // to the TLU
524 output [1:0] dec_load_flush_w; // to IFU
525
526
527 // tlu interface
528 output [4:0] dec_exc0_m; // encoded exception status to tlu
529 output [4:0] dec_exc1_m;
530
531 output [1:0] dec_inst0_cnt; // count of instructions at e,m,b stages for inst at decode (TG0)
532 output [1:0] dec_inst1_cnt; // count of instructions at e,m,b stages for inst at decode (TG1)
533
534 output [1:0] dec_tid0_m; // TID for inst TG0
535 output [1:0] dec_tid1_m; // TID for inst TG1
536 output [1:0] dec_inst_valid_m; // valid inst
537 output [1:0] dec_lsu_inst_m; // lsu inst
538 output [1:0] dec_fgu_inst_m; // fgu inst
539 output [1:0] dec_cti_inst_m; // cti inst
540
541 output [1:0] dec_illegal_inst_m; // illegal inst
542 output [1:0] dec_icache_perr_m; // icache parity error at m stage
543 output [1:0] dec_priv_exc_m; // priv exception
544 output [1:0] dec_hpriv_exc_m; // hpriv exception
545 output [1:0] dec_fpdisable_exc_m; // fp disable exception
546 output [1:0] dec_br_taken_m; // br is taken at m stage
547 output [1:0] dec_done_inst_m; // DONE
548 output [1:0] dec_retry_inst_m; // RETRY
549 output [1:0] dec_sir_inst_m; // SIR
550
551 output [1:0] dec_annul_ds_m; // DS of branch is annuled
552 output [1:0] dec_ds_m; // this inst is DS
553
554 output [1:0] dec_fgu_sel_e; // mux select between TG's for fgu ops
555 output [1:0] dec_fgu_sel_m; // mux select between TG's for fgu ops
556
557 output dec_lsu_sel0_e; // mux select between TG's for lsu ops
558 output dec_lsu_sel1_e;
559
560 output dec_lsu_sel0_lower_e; // mux selects taking pstate AM into account (exu)
561 output dec_lsu_sel1_lower_e;
562
563 output dec_lsu_sel0_upper_e; // mux selects taking pstate AM into account (exu)
564 output dec_lsu_sel1_upper_e;
565
566 output dec_rs1_addr0_upper_e;
567 output dec_rs1_addr1_upper_e;
568
569 // lsu interface
570 output dec_ld_inst_e; // operation is a load or load-like
571 output dec_st_inst_e; // operation is a store or store-like
572 output dec_fsr_ldst_e; // ldfsr, stfsr inst
573 output dec_fpldst_inst_e; // FP load or store
574 output dec_ldst_dbl_e; // ldd inst
575 output dec_pref_inst_e; // prefetch inst
576 output dec_flush_inst_e; // flush inst
577 output dec_memstbar_inst_e; // membar, stbar inst
578 output [1:0] dec_ldst_sz_e; // size of the memory reference
579 output [4:3] dec_frf_r2_addr_e; // FRF r2 read addr
580 output dec_sr_inst_e; // state register instruction
581 output dec_pr_inst_e; // privileged instruction
582 output dec_hpr_inst_e; // hypervisor instruction
583 output dec_casa_inst_e; // casa inst
584 output dec_ldstub_inst_e; // ldstub inst
585 output dec_swap_inst_e; // swap inst
586 output dec_altspace_d; // is an alternate inst
587 output dec_sign_ext_e; // is a signed load
588 output [4:0] dec_sraddr_e; // register number for rdasr inst
589 output dec_imm_asi_vld_d; // immediate form of ASI's
590 output [7:0] dec_imm_asi_d; // value of ASI access
591 output [1:0] dec_lsu_tid0_d; // lsu tid at d; real lsu
592 output [1:0] dec_lsu_tid1_d; // lsu tid at d; real lsu
593 output dec_lsu_tg_d; // lsu thread group at d
594 output [4:0] dec_lsu_rd_e; // lsu rd at e
595 output dec_ld_inst_d; // load inst decoded
596
597 // pmu interface
598 output [9:0] dec_instr0_type_d; // pmu stuff thread group 0
599 output [9:0] dec_instr1_type_d; // pmu stuff thread group 1
600
601 output [1:0] dec_valid_e; // valid for inst at e stage (takes annul into account)
602 output [1:0] dec_pmu_valid_e; // valid for inst at e stage (takes annul into account); dont include ifetch_err
603 output dec_fgu_valid_e; // fgu is valid at e stage (takes annul into account)
604
605
606 output [1:0] dec_exu_clken; // clk enable signals to the exu
607 output dec_lsu_sel0_d; // to the pmu to decide which tid to use for lsu at d stage
608
609 output [1:0] dec_ierr_d; // tell pku that an inst error has occurred: illegal, parity error or ifetch error
610
611 output [7:0] dec_block_store_stall; // prevent window ops from coming too early after a block store
612
613 output scan_out;
614
615 dec_del_ctl del (
616 .scan_in(del_scanin),
617 .scan_out(del_scanout),
618 .l2clk(l2clk),
619 .dec_inst0_rs1_d(dec_inst0_d[18:14]),
620 .dec_inst0_rs2_d(dec_inst0_d[4:0]),
621 .dec_inst0_b31(dec_inst0_d[31]),
622 .dec_inst0_raw_rd_d(dec_inst0_d[29:25]),
623 .dec_inst0_op3_d(dec_inst0_d[24:19]),
624 .dec_inst0_opf_d(dec_inst0_d[12:5]),
625 .dec_inst1_rs1_d(dec_inst1_d[18:14]),
626 .dec_inst1_rs2_d(dec_inst1_d[4:0]),
627 .dec_inst1_b31(dec_inst1_d[31]),
628 .dec_inst1_raw_rd_d(dec_inst1_d[29:25]),
629 .dec_inst1_op3_d(dec_inst1_d[24:19]),
630 .dec_inst1_opf_d(dec_inst1_d[12:5]),
631 .tcu_pce_ov(tcu_pce_ov),
632 .spc_aclk(spc_aclk),
633 .spc_bclk(spc_bclk),
634 .tcu_scan_en(tcu_scan_en),
635 .lsu_dec_pmen(lsu_dec_pmen),
636 .lsu_exu_pmen(lsu_exu_pmen),
637 .spc_core_running_status(spc_core_running_status[7:0]),
638 .power_throttle(power_throttle[2:0]),
639 .lb_lbist_running(lb_lbist_running),
640 .pku_idest_p(pku_idest_p[7:0]),
641 .pku_fdest_p(pku_fdest_p[7:0]),
642 .pku_fsrc_rd_p(pku_fsrc_rd_p[7:0]),
643 .pku_lsu_p(pku_lsu_p[7:0]),
644 .pku_fgu_p(pku_fgu_p[7:0]),
645 .pku_pdist_p(pku_pdist_p[7:0]),
646 .pku_twocycle_p(pku_twocycle_p[7:0]),
647 .pku_inst_cnt_brtaken00(pku_inst_cnt_brtaken00[1:0]),
648 .pku_inst_cnt_brtaken01(pku_inst_cnt_brtaken01[1:0]),
649 .pku_inst_cnt_brtaken02(pku_inst_cnt_brtaken02[1:0]),
650 .pku_inst_cnt_brtaken03(pku_inst_cnt_brtaken03[1:0]),
651 .pku_inst_cnt_brtaken04(pku_inst_cnt_brtaken04[1:0]),
652 .pku_inst_cnt_brtaken05(pku_inst_cnt_brtaken05[1:0]),
653 .pku_inst_cnt_brtaken06(pku_inst_cnt_brtaken06[1:0]),
654 .pku_inst_cnt_brtaken07(pku_inst_cnt_brtaken07[1:0]),
655 .pku_inst_cnt_brtaken10(pku_inst_cnt_brtaken10[1:0]),
656 .pku_inst_cnt_brtaken11(pku_inst_cnt_brtaken11[1:0]),
657 .pku_inst_cnt_brtaken12(pku_inst_cnt_brtaken12[1:0]),
658 .pku_inst_cnt_brtaken13(pku_inst_cnt_brtaken13[1:0]),
659 .pku_inst_cnt_brtaken14(pku_inst_cnt_brtaken14[1:0]),
660 .pku_inst_cnt_brtaken15(pku_inst_cnt_brtaken15[1:0]),
661 .pku_inst_cnt_brtaken16(pku_inst_cnt_brtaken16[1:0]),
662 .pku_inst_cnt_brtaken17(pku_inst_cnt_brtaken17[1:0]),
663 .exu_test_tid0(exu_test_tid0[1:0]),
664 .exu_test_addr0(exu_test_addr0[4:0]),
665 .exu_test_valid0(exu_test_valid0),
666 .exu_test_tid1(exu_test_tid1[1:0]),
667 .exu_test_addr1(exu_test_addr1[4:0]),
668 .exu_test_valid1(exu_test_valid1),
669 .ded_exc0_d(ded_exc0_d[4:0]),
670 .ded_exc1_d(ded_exc1_d[4:0]),
671 .tlu_dec_pstate_pef(tlu_dec_pstate_pef[7:0]),
672 .fgu_fprs_fef(fgu_fprs_fef[7:0]),
673 .tlu_dec_hpstate_hpriv(tlu_dec_hpstate_hpriv[7:0]),
674 .tlu_dec_pstate_priv(tlu_dec_pstate_priv[7:0]),
675 .dcd_wrtick_d(dcd_wrtick_d[1:0]),
676 .lsu_cpq_stall(lsu_cpq_stall),
677 .dcd_callclass_d(dcd_callclass_d[1:0]),
678 .dcd_tcc_d(dcd_tcc_d[1:0]),
679 .dcd_specbr_d(dcd_specbr_d[1:0]),
680 .dcd_specfp_d(dcd_specfp_d[1:0]),
681 .dcd_exu_src_d(dcd_exu_src_d[1:0]),
682 .dcd_killfgu_d(dcd_killfgu_d[1:0]),
683 .dcd_sir_d(dcd_sir_d[1:0]),
684 .dcd_stdfa_d(dcd_stdfa_d[1:0]),
685 .pku_valid_e(pku_valid_e[7:0]),
686 .pku_annul_ds_dcti_brtaken0_e(pku_annul_ds_dcti_brtaken0_e[7:0]),
687 .pku_annul_ds_dcti_brtaken1_e(pku_annul_ds_dcti_brtaken1_e[7:0]),
688 .exu0_window_block(exu0_window_block),
689 .exu1_window_block(exu1_window_block),
690 .tlu_window_block(tlu_window_block[1:0]),
691 .fgu_idiv_stall(fgu_idiv_stall[1:0]),
692 .fgu_fdiv_stall(fgu_fdiv_stall),
693 .fgu_ecc_asi_stall(fgu_ecc_asi_stall),
694 .dcd_fpdisable_d(dcd_fpdisable_d[1:0]),
695 .dcd_lsize0_d(dcd_lsize0_d[1:0]),
696 .dcd_lsize1_d(dcd_lsize1_d[1:0]),
697 .dcd_lsu_sign_ext_d(dcd_lsu_sign_ext_d[1:0]),
698 .dcd_load_d(dcd_load_d[1:0]),
699 .dcd_store_d(dcd_store_d[1:0]),
700 .dcd_sethi_d(dcd_sethi_d[1:0]),
701 .dcd_lsdouble_d(dcd_lsdouble_d[1:0]),
702 .dcd_prefetch_d(dcd_prefetch_d[1:0]),
703 .dcd_flush_d(dcd_flush_d[1:0]),
704 .dcd_memstbar_d(dcd_memstbar_d[1:0]),
705 .dcd_pr_d(dcd_pr_d[1:0]),
706 .dcd_priv_d(dcd_priv_d[1:0]),
707 .dcd_hpr_d(dcd_hpr_d[1:0]),
708 .dcd_sr_d(dcd_sr_d[1:0]),
709 .dcd_casa_d(dcd_casa_d[1:0]),
710 .dcd_ldstub_d(dcd_ldstub_d[1:0]),
711 .dcd_alt_d(dcd_alt_d[1:0]),
712 .dcd_alti_d(dcd_alti_d[1:0]),
713 .dcd_swap_d(dcd_swap_d[1:0]),
714 .dcd_fsrc_rs1_d(dcd_fsrc_rs1_d[1:0]),
715 .dcd_fsrc_rs2_d(dcd_fsrc_rs2_d[1:0]),
716 .dcd_fpdest_single_d(dcd_fpdest_single_d[1:0]),
717 .dcd_fp_rs1_single_d(dcd_fp_rs1_single_d[1:0]),
718 .dcd_fp_rs2_single_d(dcd_fp_rs2_single_d[1:0]),
719 .dcd_fsrsync_d(dcd_fsrsync_d[1:0]),
720 .dcd_done_d(dcd_done_d[1:0]),
721 .dcd_retry_d(dcd_retry_d[1:0]),
722 .dcd_save_restore_d(dcd_save_restore_d[1:0]),
723 .ded_oddwin0_d(ded_oddwin0_d),
724 .ded_oddwin1_d(ded_oddwin1_d),
725 .ded_perr_p(ded_perr_p[1:0]),
726 .ded_ferr_p(ded_ferr_p[1:0]),
727 .ded_legal_p(ded_legal_p[1:0]),
728 .pku_base_pick_p(pku_base_pick_p[7:0]),
729 .pku_raw_pick0_p(pku_raw_pick0_p[3:0]),
730 .pku_raw_pick1_p(pku_raw_pick1_p[7:4]),
731 .pku_ds_e(pku_ds_e[7:0]),
732 .pku_load_flush_w(pku_load_flush_w[7:0]),
733 .tlu_flush_ifu(tlu_flush_ifu[7:0]),
734 .pku_flush_f1(pku_flush_f1[7:0]),
735 .pku_flush_f2(pku_flush_f2[7:0]),
736 .pku_flush_lm(pku_flush_lm[7:0]),
737 .pku_flush_lb(pku_flush_lb[7:0]),
738 .pku_flush_m(pku_flush_m[7:0]),
739 .pku_flush_b(pku_flush_b[7:0]),
740 .dec_br_taken_e1(dec_br_taken_e1[1:0]),
741 .spu_mult_request(spu_mult_request),
742 .lsu_block_store_stall(lsu_block_store_stall),
743 .lsu_block_store_rd(lsu_block_store_rd[4:3]),
744 .lsu_block_store_tid(lsu_block_store_tid[2:0]),
745 .tlu_dtlb_reload_stall(tlu_dtlb_reload_stall),
746 .tlu_pstate_am(tlu_pstate_am[7:0]),
747 .dec_valid0_d(dec_valid0_d),
748 .dec_valid1_d(dec_valid1_d),
749 .dec_decode0_d(dec_decode0_d),
750 .dec_decode1_d(dec_decode1_d),
751 .del_noshift0_d(del_noshift0_d),
752 .del_noshift1_d(del_noshift1_d),
753 .dec_inst0_rd_d(dec_inst0_rd_d[4:0]),
754 .dec_inst1_rd_d(dec_inst1_rd_d[4:0]),
755 .dec_tid0_d(dec_tid0_d[1:0]),
756 .dec_tid1_d(dec_tid1_d[1:0]),
757 .dec_tid0_p(dec_tid0_p[1:0]),
758 .dec_tid1_p(dec_tid1_p[1:0]),
759 .dec_valid_e(dec_valid_e[1:0]),
760 .dec_pmu_valid_e(dec_pmu_valid_e[1:0]),
761 .dec_fgu_valid_e(dec_fgu_valid_e),
762 .dec_frf_r1_addr_d(dec_frf_r1_addr_d[4:0]),
763 .dec_frf_r2_addr_d(dec_frf_r2_addr_d[4:0]),
764 .dec_frf_r2_addr_e(dec_frf_r2_addr_e[4:3]),
765 .dec_frf_r1_vld_d(dec_frf_r1_vld_d),
766 .dec_frf_r2_vld_d(dec_frf_r2_vld_d),
767 .dec_frf_r1_32b_d(dec_frf_r1_32b_d),
768 .dec_frf_r2_32b_d(dec_frf_r2_32b_d),
769 .dec_frf_r1_odd32b_d(dec_frf_r1_odd32b_d),
770 .dec_frf_r2_odd32b_d(dec_frf_r2_odd32b_d),
771 .dec_frf_w_addr_d(dec_frf_w_addr_d[4:0]),
772 .dec_frf_w_vld_d(dec_frf_w_vld_d),
773 .dec_frf_w_32b_d(dec_frf_w_32b_d),
774 .dec_frf_w_odd32b_d(dec_frf_w_odd32b_d),
775 .dec_spu_grant_d(dec_spu_grant_d),
776 .dec_spu_grant_fgu_d(dec_spu_grant_fgu_d),
777 .dec_exu_src_vld_d(dec_exu_src_vld_d),
778 .dec_irf_w_addr_d(dec_irf_w_addr_d[4:0]),
779 .dec_frf_store_d(dec_frf_store_d),
780 .dec_fsr_store_d(dec_fsr_store_d),
781 .dec_fgu_op3_d(dec_fgu_op3_d[5:0]),
782 .dec_fgu_opf_d(dec_fgu_opf_d[7:0]),
783 .dec_fgu_decode_d(dec_fgu_decode_d),
784 .dec_fgu_tid_d(dec_fgu_tid_d[2:0]),
785 .dec_flush_f1(dec_flush_f1),
786 .dec_flush_f2(dec_flush_f2),
787 .dec_flush_lm(dec_flush_lm),
788 .dec_flush_lb(dec_flush_lb),
789 .dec_flush_m(dec_flush_m[1:0]),
790 .dec_flush_b(dec_flush_b[1:0]),
791 .dec_block_store_b(dec_block_store_b[7:0]),
792 .dec_exc0_m(dec_exc0_m[4:0]),
793 .dec_exc1_m(dec_exc1_m[4:0]),
794 .dec_inst0_cnt(dec_inst0_cnt[1:0]),
795 .dec_inst1_cnt(dec_inst1_cnt[1:0]),
796 .dec_tid0_m(dec_tid0_m[1:0]),
797 .dec_tid1_m(dec_tid1_m[1:0]),
798 .dec_inst_valid_m(dec_inst_valid_m[1:0]),
799 .dec_lsu_inst_m(dec_lsu_inst_m[1:0]),
800 .dec_fgu_inst_m(dec_fgu_inst_m[1:0]),
801 .dec_cti_inst_m(dec_cti_inst_m[1:0]),
802 .dec_illegal_inst_m(dec_illegal_inst_m[1:0]),
803 .dec_icache_perr_m(dec_icache_perr_m[1:0]),
804 .dec_priv_exc_m(dec_priv_exc_m[1:0]),
805 .dec_hpriv_exc_m(dec_hpriv_exc_m[1:0]),
806 .dec_fpdisable_exc_m(dec_fpdisable_exc_m[1:0]),
807 .dec_br_taken_m(dec_br_taken_m[1:0]),
808 .dec_done_inst_m(dec_done_inst_m[1:0]),
809 .dec_retry_inst_m(dec_retry_inst_m[1:0]),
810 .dec_sir_inst_m(dec_sir_inst_m[1:0]),
811 .dec_ds_m(dec_ds_m[1:0]),
812 .dec_annul_ds_m(dec_annul_ds_m[1:0]),
813 .dec_fgu_sel_e(dec_fgu_sel_e[1:0]),
814 .dec_fgu_sel_m(dec_fgu_sel_m[1:0]),
815 .dec_lsu_sel0_e(dec_lsu_sel0_e),
816 .dec_lsu_sel1_e(dec_lsu_sel1_e),
817 .dec_rs1_addr0_e(dec_rs1_addr0_e),
818 .dec_rs1_addr1_e(dec_rs1_addr1_e),
819 .dec_lsu_sel0_upper_e(dec_lsu_sel0_upper_e),
820 .dec_lsu_sel1_upper_e(dec_lsu_sel1_upper_e),
821 .dec_lsu_sel0_lower_e(dec_lsu_sel0_lower_e),
822 .dec_lsu_sel1_lower_e(dec_lsu_sel1_lower_e),
823 .dec_rs1_addr0_upper_e(dec_rs1_addr0_upper_e),
824 .dec_rs1_addr1_upper_e(dec_rs1_addr1_upper_e),
825 .del_pick_d(del_pick_d[7:0]),
826 .dec_ld_inst_e(dec_ld_inst_e),
827 .dec_st_inst_e(dec_st_inst_e),
828 .dec_fsr_ldst_e(dec_fsr_ldst_e),
829 .dec_fpldst_inst_e(dec_fpldst_inst_e),
830 .dec_ldst_dbl_e(dec_ldst_dbl_e),
831 .dec_pref_inst_e(dec_pref_inst_e),
832 .dec_flush_inst_e(dec_flush_inst_e),
833 .dec_memstbar_inst_e(dec_memstbar_inst_e),
834 .dec_sr_inst_e(dec_sr_inst_e),
835 .dec_pr_inst_e(dec_pr_inst_e),
836 .dec_hpr_inst_e(dec_hpr_inst_e),
837 .dec_casa_inst_e(dec_casa_inst_e),
838 .dec_ldstub_inst_e(dec_ldstub_inst_e),
839 .dec_swap_inst_e(dec_swap_inst_e),
840 .dec_altspace_d(dec_altspace_d),
841 .dec_sign_ext_e(dec_sign_ext_e),
842 .dec_sraddr_e(dec_sraddr_e[4:0]),
843 .dec_imm_asi_vld_d(dec_imm_asi_vld_d),
844 .dec_imm_asi_d(dec_imm_asi_d[7:0]),
845 .dec_ldst_sz_e(dec_ldst_sz_e[1:0]),
846 .dec_ld_inst_d(dec_ld_inst_d),
847 .dec_lsu_tid0_d(dec_lsu_tid0_d[1:0]),
848 .dec_lsu_tid1_d(dec_lsu_tid1_d[1:0]),
849 .dec_lsu_tg_d(dec_lsu_tg_d),
850 .dec_lsu_rd_e(dec_lsu_rd_e[4:0]),
851 .del_test0_sel_p(del_test0_sel_p),
852 .del_twocycle0_std_p(del_twocycle0_std_p),
853 .del_twocycle0_rs2_p(del_twocycle0_rs2_p),
854 .del_default0_sel_p(del_default0_sel_p),
855 .del_test1_sel_p(del_test1_sel_p),
856 .del_twocycle1_std_p(del_twocycle1_std_p),
857 .del_twocycle1_rs2_p(del_twocycle1_rs2_p),
858 .del_default1_sel_p(del_default1_sel_p),
859 .del_test_addr0_p(del_test_addr0_p[4:0]),
860 .del_test_addr1_p(del_test_addr1_p[4:0]),
861 .dec_instr0_type_d(dec_instr0_type_d[9:0]),
862 .dec_instr1_type_d(dec_instr1_type_d[9:0]),
863 .dec_exu_clken(dec_exu_clken[1:0]),
864 .del_tg_clken(del_tg_clken[1:0]),
865 .dec_true_valid_e(dec_true_valid_e[1:0]),
866 .dec_load_flush_w(dec_load_flush_w[1:0]),
867 .dec_lsu_sel0_d(dec_lsu_sel0_d),
868 .dec_raw_pick_p(dec_raw_pick_p[7:0]),
869 .dec_ierr_d(dec_ierr_d[1:0]),
870 .dec_block_store_stall(dec_block_store_stall[7:0])
871 );
872
873
874 dec_ded_ctl ded0 (
875 .scan_in(ded0_scanin),
876 .scan_out(ded0_scanout),
877 .l2clk(l2clk),
878 .clken(del_tg_clken[0]),
879 .del_test_sel_p(del_test0_sel_p),
880 .del_twocycle_std_p(del_twocycle0_std_p),
881 .del_twocycle_rs2_p(del_twocycle0_rs2_p),
882 .del_default_sel_p(del_default0_sel_p),
883 .del_test_addr_p(del_test_addr0_p),
884 .ifu_buf0_inst0(ifu_buf0_inst0[32:0]),
885 .ifu_buf0_inst1(ifu_buf0_inst1[32:0]),
886 .ifu_buf0_inst2(ifu_buf0_inst2[32:0]),
887 .ifu_buf0_inst3(ifu_buf0_inst3[32:0]),
888 .ifu_buf0_excp0(ifu_buf0_excp0[4:0]),
889 .ifu_buf0_excp1(ifu_buf0_excp1[4:0]),
890 .ifu_buf0_excp2(ifu_buf0_excp2[4:0]),
891 .ifu_buf0_excp3(ifu_buf0_excp3[4:0]),
892 .del_noshift_d(del_noshift0_d),
893 .pku_raw_pick_p(pku_raw_pick0_p[3:0]),
894 .pku_isrc_rs1_p(pku_isrc_rs1_p[3:0]),
895 .pku_isrc_rs2_p(pku_isrc_rs2_p[3:0]),
896 .pku_isrc_rd_p(pku_isrc_rd_p[3:0]),
897 .exu_oddwin_b(exu0_oddwin_b[3:0]),
898 .ded_ferr_p(ded_ferr_p[0]),
899 .ded_perr_p(ded_perr_p[0]),
900 .ded_ferr_d(ded_ferr_d[0]),
901 .ded_perr_d(ded_perr_d[0]),
902 .ded_legal_p(ded_legal_p[0]),
903 .ded_oddwin_d(ded_oddwin0_d),
904 .dec_inst_d(dec_inst0_d[32:0]),
905 .dec_inst_rs1_p(dec_inst0_rs1_p[4:0]),
906 .dec_inst_rs2_p(dec_inst0_rs2_p[4:0]),
907 .dec_inst_rs3_p(dec_inst0_rs3_p[4:0]),
908 .dec_inst_rs1_vld_p(dec_inst0_rs1_vld_p),
909 .dec_inst_rs2_vld_p(dec_inst0_rs2_vld_p),
910 .dec_inst_rs3_vld_p(dec_inst0_rs3_vld_p),
911 .ded_exc_d(ded_exc0_d[4:0]),
912 .tcu_pce_ov(tcu_pce_ov),
913 .spc_aclk(spc_aclk),
914 .spc_bclk(spc_bclk),
915 .tcu_scan_en(tcu_scan_en),
916 .tlu_cerer_icdp(tlu_cerer_icdp)
917 );
918
919 dec_ded_ctl ded1 (
920 .scan_in(ded1_scanin),
921 .scan_out(ded1_scanout),
922 .l2clk(l2clk),
923 .clken(del_tg_clken[1]),
924 .del_test_sel_p(del_test1_sel_p),
925 .del_twocycle_std_p(del_twocycle1_std_p),
926 .del_twocycle_rs2_p(del_twocycle1_rs2_p),
927 .del_default_sel_p(del_default1_sel_p),
928 .del_test_addr_p(del_test_addr1_p),
929 .ifu_buf0_inst0(ifu_buf0_inst4[32:0]),
930 .ifu_buf0_inst1(ifu_buf0_inst5[32:0]),
931 .ifu_buf0_inst2(ifu_buf0_inst6[32:0]),
932 .ifu_buf0_inst3(ifu_buf0_inst7[32:0]),
933 .ifu_buf0_excp0(ifu_buf0_excp4[4:0]),
934 .ifu_buf0_excp1(ifu_buf0_excp5[4:0]),
935 .ifu_buf0_excp2(ifu_buf0_excp6[4:0]),
936 .ifu_buf0_excp3(ifu_buf0_excp7[4:0]),
937 .del_noshift_d(del_noshift1_d),
938 .pku_raw_pick_p(pku_raw_pick1_p[7:4]),
939 .pku_isrc_rs1_p(pku_isrc_rs1_p[7:4]),
940 .pku_isrc_rs2_p(pku_isrc_rs2_p[7:4]),
941 .pku_isrc_rd_p(pku_isrc_rd_p[7:4]),
942 .exu_oddwin_b(exu1_oddwin_b[3:0]),
943 .ded_ferr_p(ded_ferr_p[1]),
944 .ded_perr_p(ded_perr_p[1]),
945 .ded_ferr_d(ded_ferr_d[1]),
946 .ded_perr_d(ded_perr_d[1]),
947 .ded_legal_p(ded_legal_p[1]),
948 .ded_oddwin_d(ded_oddwin1_d),
949 .dec_inst_d(dec_inst1_d[32:0]),
950 .dec_inst_rs1_p(dec_inst1_rs1_p[4:0]),
951 .dec_inst_rs2_p(dec_inst1_rs2_p[4:0]),
952 .dec_inst_rs3_p(dec_inst1_rs3_p[4:0]),
953 .dec_inst_rs1_vld_p(dec_inst1_rs1_vld_p),
954 .dec_inst_rs2_vld_p(dec_inst1_rs2_vld_p),
955 .dec_inst_rs3_vld_p(dec_inst1_rs3_vld_p),
956 .ded_exc_d(ded_exc1_d[4:0]),
957 .tcu_pce_ov(tcu_pce_ov),
958 .spc_aclk(spc_aclk),
959 .spc_bclk(spc_bclk),
960 .tcu_scan_en(tcu_scan_en),
961 .tlu_cerer_icdp(tlu_cerer_icdp)
962 );
963
964
965
966 dec_dcd_ctl dcd0 (
967 .ded_ferr_d(ded_ferr_d[0]),
968 .ded_perr_d(ded_perr_d[0]),
969 .dec_inst_d(dec_inst0_d[31:0]),
970 .dcd_sir_d(dcd_sir_d[0]),
971 .dcd_stdfa_d(dcd_stdfa_d[0]),
972 .dcd_save_restore_d(dcd_save_restore_d[0]),
973 .dcd_exu_src_d(dcd_exu_src_d[0]),
974 .dcd_killfgu_d(dcd_killfgu_d[0]),
975 .dcd_lsize_d(dcd_lsize0_d[1:0]),
976 .dcd_lsu_sign_ext_d(dcd_lsu_sign_ext_d[0]),
977 .dcd_load_d(dcd_load_d[0]),
978 .dcd_store_d(dcd_store_d[0]),
979 .dcd_lsdouble_d(dcd_lsdouble_d[0]),
980 .dcd_prefetch_d(dcd_prefetch_d[0]),
981 .dcd_flush_d(dcd_flush_d[0]),
982 .dcd_memstbar_d(dcd_memstbar_d[0]),
983 .dcd_hpr_d(dcd_hpr_d[0]),
984 .dcd_pr_d(dcd_pr_d[0]),
985 .dcd_priv_d(dcd_priv_d[0]),
986 .dcd_sr_d(dcd_sr_d[0]),
987 .dcd_casa_d(dcd_casa_d[0]),
988 .dcd_ldstub_d(dcd_ldstub_d[0]),
989 .dcd_alt_d(dcd_alt_d[0]),
990 .dcd_alti_d(dcd_alti_d[0]),
991 .dcd_swap_d(dcd_swap_d[0]),
992 .dcd_done_d(dcd_done_d[0]),
993 .dcd_retry_d(dcd_retry_d[0]),
994 .dcd_fsrc_rs1_d(dcd_fsrc_rs1_d[0]),
995 .dcd_fsrc_rs2_d(dcd_fsrc_rs2_d[0]),
996 .dcd_fpdest_single_d(dcd_fpdest_single_d[0]),
997 .dcd_fp_rs1_single_d(dcd_fp_rs1_single_d[0]),
998 .dcd_fp_rs2_single_d(dcd_fp_rs2_single_d[0]),
999 .dcd_fsrsync_d(dcd_fsrsync_d[0]),
1000 .dcd_callclass_d(dcd_callclass_d[0]),
1001 .dcd_specbr_d(dcd_specbr_d[0]),
1002 .dcd_specfp_d(dcd_specfp_d[0]),
1003 .dcd_tcc_d(dcd_tcc_d[0]),
1004 .dcd_sethi_d(dcd_sethi_d[0]),
1005 .dcd_fpdisable_d(dcd_fpdisable_d[0]),
1006 .dcd_wrtick_d(dcd_wrtick_d[0])
1007 );
1008
1009 dec_dcd_ctl dcd1 (
1010 .ded_ferr_d(ded_ferr_d[1]),
1011 .ded_perr_d(ded_perr_d[1]),
1012 .dec_inst_d(dec_inst1_d[31:0]),
1013 .dcd_sir_d(dcd_sir_d[1]),
1014 .dcd_stdfa_d(dcd_stdfa_d[1]),
1015 .dcd_save_restore_d(dcd_save_restore_d[1]),
1016 .dcd_exu_src_d(dcd_exu_src_d[1]),
1017 .dcd_killfgu_d(dcd_killfgu_d[1]),
1018 .dcd_lsize_d(dcd_lsize1_d[1:0]),
1019 .dcd_lsu_sign_ext_d(dcd_lsu_sign_ext_d[1]),
1020 .dcd_load_d(dcd_load_d[1]),
1021 .dcd_store_d(dcd_store_d[1]),
1022 .dcd_lsdouble_d(dcd_lsdouble_d[1]),
1023 .dcd_prefetch_d(dcd_prefetch_d[1]),
1024 .dcd_flush_d(dcd_flush_d[1]),
1025 .dcd_memstbar_d(dcd_memstbar_d[1]),
1026 .dcd_hpr_d(dcd_hpr_d[1]),
1027 .dcd_pr_d(dcd_pr_d[1]),
1028 .dcd_priv_d(dcd_priv_d[1]),
1029 .dcd_sr_d(dcd_sr_d[1]),
1030 .dcd_casa_d(dcd_casa_d[1]),
1031 .dcd_ldstub_d(dcd_ldstub_d[1]),
1032 .dcd_alt_d(dcd_alt_d[1]),
1033 .dcd_alti_d(dcd_alti_d[1]),
1034 .dcd_swap_d(dcd_swap_d[1]),
1035 .dcd_done_d(dcd_done_d[1]),
1036 .dcd_retry_d(dcd_retry_d[1]),
1037 .dcd_fsrc_rs1_d(dcd_fsrc_rs1_d[1]),
1038 .dcd_fsrc_rs2_d(dcd_fsrc_rs2_d[1]),
1039 .dcd_fpdest_single_d(dcd_fpdest_single_d[1]),
1040 .dcd_fp_rs1_single_d(dcd_fp_rs1_single_d[1]),
1041 .dcd_fp_rs2_single_d(dcd_fp_rs2_single_d[1]),
1042 .dcd_fsrsync_d(dcd_fsrsync_d[1]),
1043 .dcd_callclass_d(dcd_callclass_d[1]),
1044 .dcd_specbr_d(dcd_specbr_d[1]),
1045 .dcd_specfp_d(dcd_specfp_d[1]),
1046 .dcd_tcc_d(dcd_tcc_d[1]),
1047 .dcd_sethi_d(dcd_sethi_d[1]),
1048 .dcd_fpdisable_d(dcd_fpdisable_d[1]),
1049 .dcd_wrtick_d(dcd_wrtick_d[1])
1050 );
1051
1052// fixscan start:
1053assign del_scanin = scan_in ;
1054assign ded0_scanin = del_scanout ;
1055assign ded1_scanin = ded0_scanout ;
1056assign scan_out = ded1_scanout ;
1057// fixscan end:
1058endmodule
1059