Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / spc / ifu / rtl / ifu_ftu_agc_ctl.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: ifu_ftu_agc_ctl.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 ifu_ftu_agc_ctl (
36 tcu_se_scancollar_out,
37 tcu_scan_en,
38 l2clk,
39 scan_in,
40 tcu_pce_ov,
41 spc_aclk,
42 spc_bclk,
43 tlu_trap_pc_0_valid,
44 tlu_retry,
45 tlu_ceter_pscce,
46 tlu_trap_pc_1_valid,
47 tlu_ifu_invalidate,
48 tlu_trap_0_tid,
49 tlu_trap_1_tid,
50 spc_core_running_status,
51 mbi_wdata,
52 mbi_addr,
53 mbi_cmpsel,
54 mbi_run,
55 mbi_icv_write_en,
56 tlu_flush_ifu,
57 tlu_ifu_hpstate_hpriv,
58 tlu_ifu_pstate_priv,
59 tlu_cerer_ittp,
60 tlu_cerer_itdp,
61 tlu_cerer_ittm,
62 tlu_cerer_icl2c,
63 tlu_cerer_icl2u,
64 tlu_cerer_icl2nd,
65 tlu_cerer_icvp,
66 tlu_cerer_ictp,
67 tlu_cerer_ictm,
68 tlb_nfo,
69 agd_va_hole_excp_f,
70 agd_itlb_valid_f,
71 agd_itlb_valid_dupl_f,
72 asi_ith_det_req,
73 asi_vl_arr_data,
74 ftp_asi_tg_wr_req_hold,
75 ftp_itlb_cam_vld_f,
76 asi_addr_bf,
77 asi_way_bf,
78 ifu_agd_pc_f,
79 agd_thr0_pc_4_2_f,
80 agd_thr1_pc_4_2_f,
81 agd_thr2_pc_4_2_f,
82 agd_thr3_pc_4_2_f,
83 agd_thr4_pc_4_2_f,
84 agd_thr5_pc_4_2_f,
85 agd_thr6_pc_4_2_f,
86 agd_thr7_pc_4_2_f,
87 dec_load_flush_w,
88 itc_bypass_bf,
89 itc_real_bf,
90 itc_demap_next,
91 ftp_curr_fetch_thr_f,
92 ftp_fetch_thr_q_f,
93 ftp_fill_req_q_bf,
94 ftp_any_thr_clken,
95 err_w0_8b_parity_f,
96 err_w1_8b_parity_f,
97 err_w2_8b_parity_f,
98 err_w3_8b_parity_f,
99 err_w4_8b_parity_f,
100 err_w5_8b_parity_f,
101 err_w6_8b_parity_f,
102 err_w7_8b_parity_f,
103 tsm_thr0_ignore_by_pass,
104 tsm_thr1_ignore_by_pass,
105 tsm_thr2_ignore_by_pass,
106 tsm_thr3_ignore_by_pass,
107 tsm_thr4_ignore_by_pass,
108 tsm_thr5_ignore_by_pass,
109 tsm_thr6_ignore_by_pass,
110 tsm_thr7_ignore_by_pass,
111 tsm_thr0_no_new_miss,
112 tsm_thr1_no_new_miss,
113 tsm_thr2_no_new_miss,
114 tsm_thr3_no_new_miss,
115 tsm_thr4_no_new_miss,
116 tsm_thr5_no_new_miss,
117 tsm_thr6_no_new_miss,
118 tsm_thr7_no_new_miss,
119 cmu_any_data_ready,
120 cmu_any_un_cacheable,
121 cmu_l2_err,
122 cmu_l2miss,
123 cmu_thr0_data_ready,
124 cmu_thr1_data_ready,
125 cmu_thr2_data_ready,
126 cmu_thr3_data_ready,
127 cmu_thr4_data_ready,
128 cmu_thr5_data_ready,
129 cmu_thr6_data_ready,
130 cmu_thr7_data_ready,
131 cmu_fill_wrway,
132 cmu_icache_invalidate,
133 cmu_evic_invalidate,
134 cmu_icache_invalidate_way,
135 cmu_icache_inv_way1,
136 fill_paddr_bit_5,
137 inv_paddr_bit_5,
138 ftu_paddr_unq_39,
139 cmu_instr_v,
140 dec_br_taken_e,
141 dec_valid_e,
142 ftp_tid0_e,
143 ftp_tid1_e,
144 ftp_fetch_v_f,
145 itb_chit_c,
146 itb_cam_hit_c,
147 itb_tte_p_c,
148 itb_itb_mhit_c,
149 itb_tte_tag_parity,
150 itb_tte_data_parity,
151 itb_icd_waysel_c,
152 lsu_ifu_tid_w,
153 lsu_ifu_wr_p0ctxt,
154 lsu_ifu_wr_p1ctxt,
155 lsu_ifu_no_miss,
156 lsu_ic_enable,
157 cmu_inval_ack,
158 ftp_asi_mbist_access_bf,
159 itd_prty_256m,
160 itd_prty_4m,
161 itd_prty_64k,
162 itd_prty_8k,
163 itd_prty_ctxt0,
164 itd_prty_ctxt1,
165 tlb_pgsize,
166 tlb_context0_hit,
167 ftu_buffer_wr_en_f,
168 agc_itb_tag_perr_c,
169 agc_vl_data_c,
170 agc_asi_sel_word_c,
171 agc_sel_tg_data_f,
172 agc_word_en_bf,
173 agc_by_pass_update_lru_bf,
174 agc_invalidation_req_ff,
175 agc_any_invalidation_req_f,
176 agc_thr0_sf_valid_f,
177 agc_thr1_sf_valid_f,
178 agc_thr2_sf_valid_f,
179 agc_thr3_sf_valid_f,
180 agc_thr4_sf_valid_f,
181 agc_thr5_sf_valid_f,
182 agc_thr6_sf_valid_f,
183 agc_thr7_sf_valid_f,
184 agc_thr0_micro_flush_unq_c,
185 agc_thr1_micro_flush_unq_c,
186 agc_thr2_micro_flush_unq_c,
187 agc_thr3_micro_flush_unq_c,
188 agc_thr4_micro_flush_unq_c,
189 agc_thr5_micro_flush_unq_c,
190 agc_thr6_micro_flush_unq_c,
191 agc_thr7_micro_flush_unq_c,
192 agc_thr0_err_detect_c,
193 agc_thr1_err_detect_c,
194 agc_thr2_err_detect_c,
195 agc_thr3_err_detect_c,
196 agc_thr4_err_detect_c,
197 agc_thr5_err_detect_c,
198 agc_thr6_err_detect_c,
199 agc_thr7_err_detect_c,
200 agc_thr0_cmiss_stm_c,
201 agc_thr1_cmiss_stm_c,
202 agc_thr2_cmiss_stm_c,
203 agc_thr3_cmiss_stm_c,
204 agc_thr4_cmiss_stm_c,
205 agc_thr5_cmiss_stm_c,
206 agc_thr6_cmiss_stm_c,
207 agc_thr7_cmiss_stm_c,
208 ftu_agc_thr0_cmiss_c,
209 ftu_agc_thr1_cmiss_c,
210 ftu_agc_thr2_cmiss_c,
211 ftu_agc_thr3_cmiss_c,
212 ftu_agc_thr4_cmiss_c,
213 ftu_agc_thr5_cmiss_c,
214 ftu_agc_thr6_cmiss_c,
215 ftu_agc_thr7_cmiss_c,
216 ftu_thr0_inv_req_c,
217 ftu_thr1_inv_req_c,
218 ftu_thr2_inv_req_c,
219 ftu_thr3_inv_req_c,
220 ftu_thr4_inv_req_c,
221 ftu_thr5_inv_req_c,
222 ftu_thr6_inv_req_c,
223 ftu_thr7_inv_req_c,
224 ifu_ibuffer_write_c,
225 ftu_fetch_thr_c,
226 ftu_instr_sf_valid_c,
227 ftu_excp_way_d,
228 ftu_excp_tid_d,
229 ftu_excp_way_valid_d,
230 agc_fill_wrway_bf,
231 agc_sel_inv_index,
232 agc_thr0_lsu_no_ic_miss,
233 agc_thr1_lsu_no_ic_miss,
234 agc_thr2_lsu_no_ic_miss,
235 agc_thr3_lsu_no_ic_miss,
236 agc_thr4_lsu_no_ic_miss,
237 agc_thr5_lsu_no_ic_miss,
238 agc_thr6_lsu_no_ic_miss,
239 agc_thr7_lsu_no_ic_miss,
240 agc_thr0_itb_miss_c,
241 agc_thr1_itb_miss_c,
242 agc_thr2_itb_miss_c,
243 agc_thr3_itb_miss_c,
244 agc_thr4_itb_miss_c,
245 agc_thr5_itb_miss_c,
246 agc_thr6_itb_miss_c,
247 agc_thr7_itb_miss_c,
248 ftu_ic_no_err_c,
249 ftu_bus_0_is_first,
250 ftu_bus_1_is_first,
251 ftu_bus_2_is_first,
252 ftu_bus_3_is_first,
253 ftu_instr_valid_c,
254 ftu_exception_valid_c,
255 ftu_instr_exceptions_c,
256 agc_thr0_pcf_sel_bf,
257 agc_thr1_pcf_sel_bf,
258 agc_thr2_pcf_sel_bf,
259 agc_thr3_pcf_sel_bf,
260 agc_thr4_pcf_sel_bf,
261 agc_thr5_pcf_sel_bf,
262 agc_thr6_pcf_sel_bf,
263 agc_thr7_pcf_sel_bf,
264 agc_thr0_pcf_sel_last_bf,
265 agc_thr1_pcf_sel_last_bf,
266 agc_thr2_pcf_sel_last_bf,
267 agc_thr3_pcf_sel_last_bf,
268 agc_thr4_pcf_sel_last_bf,
269 agc_thr5_pcf_sel_last_bf,
270 agc_thr6_pcf_sel_last_bf,
271 agc_thr7_pcf_sel_last_bf,
272 agc_icv_wr_req_bf,
273 agc_icv_wrdata_bf,
274 agc_icv_wren_bf,
275 ftu_thr0_redirect_bf,
276 ftu_thr1_redirect_bf,
277 ftu_thr2_redirect_bf,
278 ftu_thr3_redirect_bf,
279 ftu_thr4_redirect_bf,
280 ftu_thr5_redirect_bf,
281 ftu_thr6_redirect_bf,
282 ftu_thr7_redirect_bf,
283 ftu_ibu_redirect_bf,
284 agc_thr0_tlu_redirect_bf,
285 agc_thr1_tlu_redirect_bf,
286 agc_thr2_tlu_redirect_bf,
287 agc_thr3_tlu_redirect_bf,
288 agc_thr4_tlu_redirect_bf,
289 agc_thr5_tlu_redirect_bf,
290 agc_thr6_tlu_redirect_bf,
291 agc_thr7_tlu_redirect_bf,
292 agc_kill_fetch_cv_c,
293 agc_pc_sel_for_c,
294 agc_instr_bp_sel_c,
295 agc_thr0_byp_incr_bit5,
296 agc_thr1_byp_incr_bit5,
297 agc_thr2_byp_incr_bit5,
298 agc_thr3_byp_incr_bit5,
299 agc_thr4_byp_incr_bit5,
300 agc_thr5_byp_incr_bit5,
301 agc_thr6_byp_incr_bit5,
302 agc_thr7_byp_incr_bit5,
303 agc_thr0_byp_pc_update_bf,
304 agc_thr1_byp_pc_update_bf,
305 agc_thr2_byp_pc_update_bf,
306 agc_thr3_byp_pc_update_bf,
307 agc_thr4_byp_pc_update_bf,
308 agc_thr5_byp_pc_update_bf,
309 agc_thr6_byp_pc_update_bf,
310 agc_thr7_byp_pc_update_bf,
311 agc_thr0_cntx_0_sel,
312 agc_thr0_cntx_1_sel,
313 agc_thr1_cntx_0_sel,
314 agc_thr1_cntx_1_sel,
315 agc_thr2_cntx_0_sel,
316 agc_thr2_cntx_1_sel,
317 agc_thr3_cntx_0_sel,
318 agc_thr3_cntx_1_sel,
319 agc_thr4_cntx_0_sel,
320 agc_thr4_cntx_1_sel,
321 agc_thr5_cntx_0_sel,
322 agc_thr5_cntx_1_sel,
323 agc_thr6_cntx_0_sel,
324 agc_thr6_cntx_1_sel,
325 agc_thr7_cntx_0_sel,
326 agc_thr7_cntx_1_sel,
327 agc_thr0_cntx_0_sel_ff,
328 agc_thr0_cntx_1_sel_ff,
329 agc_thr1_cntx_0_sel_ff,
330 agc_thr1_cntx_1_sel_ff,
331 agc_thr2_cntx_0_sel_ff,
332 agc_thr2_cntx_1_sel_ff,
333 agc_thr3_cntx_0_sel_ff,
334 agc_thr3_cntx_1_sel_ff,
335 agc_thr4_cntx_0_sel_ff,
336 agc_thr4_cntx_1_sel_ff,
337 agc_thr5_cntx_0_sel_ff,
338 agc_thr5_cntx_1_sel_ff,
339 agc_thr6_cntx_0_sel_ff,
340 agc_thr6_cntx_1_sel_ff,
341 agc_thr7_cntx_0_sel_ff,
342 agc_thr7_cntx_1_sel_ff,
343 ftu_mbi_tlb_cam_hit,
344 ftu_mbi_tlb_ctxt0_hit,
345 ftu_mbi_tlb_cam_mhit,
346 scan_out);
347wire pce_ov;
348wire stop;
349wire siclk;
350wire soclk;
351wire l1clk;
352wire l1clk_pm1;
353wire l1clk_out;
354wire thr0_first_level_sel_bf;
355wire thr0_trap_pcaddr_is_valid_bf;
356wire thr0_lsu_sync_bf;
357wire thr0_replay_pc;
358wire last_fetch_was_thr0_bf;
359wire agc_by_pass_valid_bf;
360wire [7:0] agc_by_pass_sel_bf;
361wire thr0_br_misp_f;
362wire thr0_matches_curr_f;
363wire agc_thr0_br_misp_f;
364wire thr1_first_level_sel_bf;
365wire thr1_trap_pcaddr_is_valid_bf;
366wire thr1_lsu_sync_bf;
367wire thr1_replay_pc;
368wire last_fetch_was_thr1_bf;
369wire thr1_br_misp_f;
370wire thr1_matches_curr_f;
371wire agc_thr1_br_misp_f;
372wire thr2_first_level_sel_bf;
373wire thr2_trap_pcaddr_is_valid_bf;
374wire thr2_lsu_sync_bf;
375wire thr2_replay_pc;
376wire last_fetch_was_thr2_bf;
377wire thr2_br_misp_f;
378wire thr2_matches_curr_f;
379wire agc_thr2_br_misp_f;
380wire thr3_first_level_sel_bf;
381wire thr3_trap_pcaddr_is_valid_bf;
382wire thr3_lsu_sync_bf;
383wire thr3_replay_pc;
384wire last_fetch_was_thr3_bf;
385wire thr3_br_misp_f;
386wire thr3_matches_curr_f;
387wire agc_thr3_br_misp_f;
388wire thr4_first_level_sel_bf;
389wire thr4_trap_pcaddr_is_valid_bf;
390wire thr4_lsu_sync_bf;
391wire thr4_replay_pc;
392wire last_fetch_was_thr4_bf;
393wire thr4_br_misp_f;
394wire thr4_matches_curr_f;
395wire agc_thr4_br_misp_f;
396wire thr5_first_level_sel_bf;
397wire thr5_trap_pcaddr_is_valid_bf;
398wire thr5_lsu_sync_bf;
399wire thr5_replay_pc;
400wire last_fetch_was_thr5_bf;
401wire thr5_br_misp_f;
402wire thr5_matches_curr_f;
403wire agc_thr5_br_misp_f;
404wire thr6_first_level_sel_bf;
405wire thr6_trap_pcaddr_is_valid_bf;
406wire thr6_lsu_sync_bf;
407wire thr6_replay_pc;
408wire last_fetch_was_thr6_bf;
409wire thr6_br_misp_f;
410wire thr6_matches_curr_f;
411wire agc_thr6_br_misp_f;
412wire thr7_first_level_sel_bf;
413wire thr7_trap_pcaddr_is_valid_bf;
414wire thr7_lsu_sync_bf;
415wire thr7_replay_pc;
416wire last_fetch_was_thr7_bf;
417wire thr7_br_misp_f;
418wire thr7_matches_curr_f;
419wire agc_thr7_br_misp_f;
420wire [3:0] trap_thread_g0;
421wire [3:0] trap_thread_g1;
422wire thr0_sf_is_valid_bf;
423wire thr1_sf_is_valid_bf;
424wire thr2_sf_is_valid_bf;
425wire thr3_sf_is_valid_bf;
426wire thr4_sf_is_valid_bf;
427wire thr5_sf_is_valid_bf;
428wire thr6_sf_is_valid_bf;
429wire thr7_sf_is_valid_bf;
430wire [7:0] load_flush_w;
431wire [7:0] tid_dec_w;
432wire tlu_ceter_pscce_reg_scanin;
433wire tlu_ceter_pscce_reg_scanout;
434wire [7:0] ceter_pscce_ff;
435wire br_misp_data_reg_scanin;
436wire br_misp_data_reg_scanout;
437wire [1:0] tid1_m;
438wire [1:0] tid0_m;
439wire [1:0] agc_br_taken_m;
440wire [1:0] agc_valid_m;
441wire [1:0] br_taken_ff;
442wire [1:0] br_taken_dup_ff;
443wire [1:0] agc_br_taken_dup_m;
444wire [1:0] agc_valid_dup_m;
445wire br_misp_data_dup_reg_scanin;
446wire br_misp_data_dup_reg_scanout;
447wire [1:0] tid1_dup_m;
448wire [1:0] tid0_dup_m;
449wire [1:0] tid1_dup_b;
450wire [1:0] tid0_dup_b;
451wire [7:0] next_tid_dec_b;
452wire tid_dec_w_reg_scanin;
453wire tid_dec_w_reg_scanout;
454wire curr_fetch_thr_c_reg_scanin;
455wire curr_fetch_thr_c_reg_scanout;
456wire [7:0] curr_fetch_thr_c;
457wire cms_curr_fetch_thr_c_reg_scanin;
458wire cms_curr_fetch_thr_c_reg_scanout;
459wire [7:0] cms_curr_fetch_thr_c;
460wire thr0_matches_curr_c;
461wire thr1_matches_curr_c;
462wire thr2_matches_curr_c;
463wire thr3_matches_curr_c;
464wire thr4_matches_curr_c;
465wire thr5_matches_curr_c;
466wire thr6_matches_curr_c;
467wire thr7_matches_curr_c;
468wire set_thr0_sf_valid_bf;
469wire agc_thr0_reset_sf_c;
470wire sf_valid_c;
471wire reset_thr0_sf_valid_bf;
472wire invalidation_req_f;
473wire [7:0] agc_by_pass_sel_f;
474wire agc_by_pass_valid_f;
475wire [7:0] tlu_flush_ifu_f;
476wire hold_thr0_sf_valid_bf;
477wire next_thr0_sf_valid_bf;
478wire thr0_sf_valid_f;
479wire set_thr1_sf_valid_bf;
480wire agc_thr1_reset_sf_c;
481wire reset_thr1_sf_valid_bf;
482wire hold_thr1_sf_valid_bf;
483wire next_thr1_sf_valid_bf;
484wire thr1_sf_valid_f;
485wire set_thr2_sf_valid_bf;
486wire agc_thr2_reset_sf_c;
487wire reset_thr2_sf_valid_bf;
488wire hold_thr2_sf_valid_bf;
489wire next_thr2_sf_valid_bf;
490wire thr2_sf_valid_f;
491wire set_thr3_sf_valid_bf;
492wire agc_thr3_reset_sf_c;
493wire reset_thr3_sf_valid_bf;
494wire hold_thr3_sf_valid_bf;
495wire next_thr3_sf_valid_bf;
496wire thr3_sf_valid_f;
497wire set_thr4_sf_valid_bf;
498wire agc_thr4_reset_sf_c;
499wire reset_thr4_sf_valid_bf;
500wire hold_thr4_sf_valid_bf;
501wire next_thr4_sf_valid_bf;
502wire thr4_sf_valid_f;
503wire set_thr5_sf_valid_bf;
504wire agc_thr5_reset_sf_c;
505wire reset_thr5_sf_valid_bf;
506wire hold_thr5_sf_valid_bf;
507wire next_thr5_sf_valid_bf;
508wire thr5_sf_valid_f;
509wire set_thr6_sf_valid_bf;
510wire agc_thr6_reset_sf_c;
511wire reset_thr6_sf_valid_bf;
512wire hold_thr6_sf_valid_bf;
513wire next_thr6_sf_valid_bf;
514wire thr6_sf_valid_f;
515wire set_thr7_sf_valid_bf;
516wire agc_thr7_reset_sf_c;
517wire reset_thr7_sf_valid_bf;
518wire hold_thr7_sf_valid_bf;
519wire next_thr7_sf_valid_bf;
520wire thr7_sf_valid_f;
521wire sf_valid_reg_scanin;
522wire sf_valid_reg_scanout;
523wire sf_valid_dup_reg_scanin;
524wire sf_valid_dup_reg_scanout;
525wire instr_sf_valid_f;
526wire sf_valid_by_pass_bf;
527wire sf_valid_by_pass_f_reg_scanin;
528wire sf_valid_by_pass_f_reg_scanout;
529wire sf_valid_by_pass_f;
530wire sf_valid_by_pass_c_reg_scanin;
531wire sf_valid_by_pass_c_reg_scanout;
532wire sf_valid_by_pass_c;
533wire sf_v_c_scanin;
534wire sf_v_c_scanout;
535wire instr_sf_valid_c;
536wire set_thr0_unc_valid_bf;
537wire thr0_unc_is_valid;
538wire reset_thr0_unc_valid_bf;
539wire hold_thr0_unc_valid_bf;
540wire next_thr0_unc_valid_bf;
541wire thr0_unc_valid_f;
542wire set_thr1_unc_valid_bf;
543wire thr1_unc_is_valid;
544wire reset_thr1_unc_valid_bf;
545wire hold_thr1_unc_valid_bf;
546wire next_thr1_unc_valid_bf;
547wire thr1_unc_valid_f;
548wire set_thr2_unc_valid_bf;
549wire thr2_unc_is_valid;
550wire reset_thr2_unc_valid_bf;
551wire hold_thr2_unc_valid_bf;
552wire next_thr2_unc_valid_bf;
553wire thr2_unc_valid_f;
554wire set_thr3_unc_valid_bf;
555wire thr3_unc_is_valid;
556wire reset_thr3_unc_valid_bf;
557wire hold_thr3_unc_valid_bf;
558wire next_thr3_unc_valid_bf;
559wire thr3_unc_valid_f;
560wire set_thr4_unc_valid_bf;
561wire thr4_unc_is_valid;
562wire reset_thr4_unc_valid_bf;
563wire hold_thr4_unc_valid_bf;
564wire next_thr4_unc_valid_bf;
565wire thr4_unc_valid_f;
566wire set_thr5_unc_valid_bf;
567wire thr5_unc_is_valid;
568wire reset_thr5_unc_valid_bf;
569wire hold_thr5_unc_valid_bf;
570wire next_thr5_unc_valid_bf;
571wire thr5_unc_valid_f;
572wire set_thr6_unc_valid_bf;
573wire thr6_unc_is_valid;
574wire reset_thr6_unc_valid_bf;
575wire hold_thr6_unc_valid_bf;
576wire next_thr6_unc_valid_bf;
577wire thr6_unc_valid_f;
578wire set_thr7_unc_valid_bf;
579wire thr7_unc_is_valid;
580wire reset_thr7_unc_valid_bf;
581wire hold_thr7_unc_valid_bf;
582wire next_thr7_unc_valid_bf;
583wire thr7_unc_valid_f;
584wire unc_valid_reg_scanin;
585wire unc_valid_reg_scanout;
586wire thr0_by_pass_pc_incr_bit5;
587wire [4:2] thr0_by_pass_inc_pc_bf;
588wire thr0_pc_f_inc_reg_scanin;
589wire thr0_pc_f_inc_reg_scanout;
590wire thr1_by_pass_pc_incr_bit5;
591wire [4:2] thr1_by_pass_inc_pc_bf;
592wire thr1_pc_f_inc_reg_scanin;
593wire thr1_pc_f_inc_reg_scanout;
594wire thr2_by_pass_pc_incr_bit5;
595wire [4:2] thr2_by_pass_inc_pc_bf;
596wire thr2_pc_f_inc_reg_scanin;
597wire thr2_pc_f_inc_reg_scanout;
598wire thr3_by_pass_pc_incr_bit5;
599wire [4:2] thr3_by_pass_inc_pc_bf;
600wire thr3_pc_f_inc_reg_scanin;
601wire thr3_pc_f_inc_reg_scanout;
602wire thr4_by_pass_pc_incr_bit5;
603wire [4:2] thr4_by_pass_inc_pc_bf;
604wire thr4_pc_f_inc_reg_scanin;
605wire thr4_pc_f_inc_reg_scanout;
606wire thr5_by_pass_pc_incr_bit5;
607wire [4:2] thr5_by_pass_inc_pc_bf;
608wire thr5_pc_f_inc_reg_scanin;
609wire thr5_pc_f_inc_reg_scanout;
610wire thr6_by_pass_pc_incr_bit5;
611wire [4:2] thr6_by_pass_inc_pc_bf;
612wire thr6_pc_f_inc_reg_scanin;
613wire thr6_pc_f_inc_reg_scanout;
614wire thr7_by_pass_pc_incr_bit5;
615wire [4:2] thr7_by_pass_inc_pc_bf;
616wire thr7_pc_f_inc_reg_scanin;
617wire thr7_pc_f_inc_reg_scanout;
618wire tlu_flush_ifu_reg_scanin;
619wire tlu_flush_ifu_reg_scanout;
620wire tlu_flush_ifu_d_reg_scanin;
621wire tlu_flush_ifu_d_reg_scanout;
622wire [7:0] tlu_flush_ifu_f_d;
623wire [7:0] tlu_flush_ifu_f_dd;
624wire cms_tlu_flush_ifu_reg_scanin;
625wire cms_tlu_flush_ifu_reg_scanout;
626wire [7:0] cms_tlu_flush_f;
627wire load_flush_reg_scanin;
628wire load_flush_reg_scanout;
629wire [7:0] load_flush_f;
630wire agc_kill_fetch_cv_f;
631wire ftu_thr0_redirect_int_bf;
632wire thr0_sf_kill;
633wire thr0_sf_kill_d;
634wire thr0_br_misp_no_match_f;
635wire thr0_kill_after_invalidation;
636wire thr0_kill_after_invalidation_d;
637wire thr0_exception_valid_kill_c2;
638wire ftu_thr1_redirect_int_bf;
639wire thr1_sf_kill;
640wire thr1_sf_kill_d;
641wire thr1_br_misp_no_match_f;
642wire thr1_kill_after_invalidation;
643wire thr1_kill_after_invalidation_d;
644wire thr1_exception_valid_kill_c2;
645wire ftu_thr2_redirect_int_bf;
646wire thr2_sf_kill;
647wire thr2_sf_kill_d;
648wire thr2_br_misp_no_match_f;
649wire thr2_kill_after_invalidation;
650wire thr2_kill_after_invalidation_d;
651wire thr2_exception_valid_kill_c2;
652wire ftu_thr3_redirect_int_bf;
653wire thr3_sf_kill;
654wire thr3_sf_kill_d;
655wire thr3_br_misp_no_match_f;
656wire thr3_kill_after_invalidation;
657wire thr3_kill_after_invalidation_d;
658wire thr3_exception_valid_kill_c2;
659wire ftu_thr4_redirect_int_bf;
660wire thr4_sf_kill;
661wire thr4_sf_kill_d;
662wire thr4_br_misp_no_match_f;
663wire thr4_kill_after_invalidation;
664wire thr4_kill_after_invalidation_d;
665wire thr4_exception_valid_kill_c2;
666wire ftu_thr5_redirect_int_bf;
667wire thr5_sf_kill;
668wire thr5_sf_kill_d;
669wire thr5_br_misp_no_match_f;
670wire thr5_kill_after_invalidation;
671wire thr5_kill_after_invalidation_d;
672wire thr5_exception_valid_kill_c2;
673wire ftu_thr6_redirect_int_bf;
674wire thr6_sf_kill;
675wire thr6_sf_kill_d;
676wire thr6_br_misp_no_match_f;
677wire thr6_kill_after_invalidation;
678wire thr6_kill_after_invalidation_d;
679wire thr6_exception_valid_kill_c2;
680wire ftu_thr7_redirect_int_bf;
681wire thr7_sf_kill;
682wire thr7_sf_kill_d;
683wire thr7_br_misp_no_match_f;
684wire thr7_kill_after_invalidation;
685wire thr7_kill_after_invalidation_d;
686wire thr7_exception_valid_kill_c2;
687wire next_br_misp_match;
688wire next_br_misp_match_int;
689wire kill_fetch_vc_reg_scanin;
690wire kill_fetch_vc_reg_scanout;
691wire kill_fetch_cv_c_unq;
692wire kill_fetch_vc_2_reg_scanin;
693wire kill_fetch_vc_2_reg_scanout;
694wire kill_fetch_cv_c_unq2;
695wire exception_valid_kill_in;
696wire exception_valid_c;
697wire exception_valid_kill_reg_scanin;
698wire exception_valid_kill_reg_scanout;
699wire exception_valid_kill_c;
700wire exception_valid_kill1_reg_scanin;
701wire exception_valid_kill1_reg_scanout;
702wire exception_valid_kill_int_c;
703wire agc_kill_fetch_cv_int1_c;
704wire agc_kill_fetch_cv_int2_c;
705wire thr0_exception_valid_kill_in;
706wire thr1_exception_valid_kill_in;
707wire thr2_exception_valid_kill_in;
708wire thr3_exception_valid_kill_in;
709wire thr4_exception_valid_kill_in;
710wire thr5_exception_valid_kill_in;
711wire thr6_exception_valid_kill_in;
712wire thr7_exception_valid_kill_in;
713wire thrx_exception_valid_kill_reg_scanin;
714wire thrx_exception_valid_kill_reg_scanout;
715wire thr7_exception_valid_kill_c2_in;
716wire thr6_exception_valid_kill_c2_in;
717wire thr5_exception_valid_kill_c2_in;
718wire thr4_exception_valid_kill_c2_in;
719wire thr3_exception_valid_kill_c2_in;
720wire thr2_exception_valid_kill_c2_in;
721wire thr1_exception_valid_kill_c2_in;
722wire thr0_exception_valid_kill_c2_in;
723wire thr7_exception_valid_kill_c;
724wire thr6_exception_valid_kill_c;
725wire thr5_exception_valid_kill_c;
726wire thr4_exception_valid_kill_c;
727wire thr3_exception_valid_kill_c;
728wire thr2_exception_valid_kill_c;
729wire thr1_exception_valid_kill_c;
730wire thr0_exception_valid_kill_c;
731wire thrx_redirect_reg_scanin;
732wire thrx_redirect_reg_scanout;
733wire ftu_thr7_redirect_part_bf;
734wire ftu_thr6_redirect_part_bf;
735wire ftu_thr5_redirect_part_bf;
736wire ftu_thr4_redirect_part_bf;
737wire ftu_thr3_redirect_part_bf;
738wire ftu_thr2_redirect_part_bf;
739wire ftu_thr1_redirect_part_bf;
740wire ftu_thr0_redirect_part_bf;
741wire thrx_ibu_redirect_reg_scanin;
742wire thrx_ibu_redirect_reg_scanout;
743wire [7:0] to_ibu_redirect_part_bf;
744wire single_thread_active;
745wire [7:0] other_flushes_in;
746wire other_flushes_reg_scanin;
747wire other_flushes_reg_scanout;
748wire [7:0] other_flushes_del;
749wire [7:0] redirect_ibu_int_bf;
750wire [7:0] next_by_pass_sel_bbf;
751wire cmu_fill_byp_thread_reg_scanin;
752wire cmu_fill_byp_thread_reg_scanout;
753wire by_pass_thread_bf_reg_scanin;
754wire by_pass_thread_bf_reg_scanout;
755wire [7:0] by_pass_thread_bf;
756wire by_pass_sel_f_reg_scanin;
757wire by_pass_sel_f_reg_scanout;
758wire by_pass_sel_c_reg_scanin;
759wire by_pass_sel_c_reg_scanout;
760wire [7:0] by_pass_thread_c;
761wire by_pass_thread_f_reg_scanin;
762wire by_pass_thread_f_reg_scanout;
763wire [7:0] by_pass_thread_f;
764wire fetchalid_cnq_reg_scanin;
765wire fetchalid_cnq_reg_scanout;
766wire agc_fetch_v_c_unq;
767wire fetch_v_dup_c_reg_scanin;
768wire fetch_v_dup_c_reg_scanout;
769wire agc_fetch_v_c_dup_unq;
770wire prev_by_pass_at_cycle_1;
771wire agc_cycle_2_by_pass_ok_f;
772wire agc_cycle_3_by_pass_ok_c;
773wire prev_by_pass_at_cycle_2;
774wire agc_cycle_3_by_pass_ok_f;
775wire agc_fetch_v_int_c;
776wire agc_fetch_v_c;
777wire agc_cycle_2_by_pass_ok_bf;
778wire agc_cycle_3_by_pass_ok_bf;
779wire cycle_2_by_pass_f_reg_scanin;
780wire cycle_2_by_pass_f_reg_scanout;
781wire cycle_3_by_pass_f_reg_scanin;
782wire cycle_3_by_pass_f_reg_scanout;
783wire cycle_3_by_pass_c_reg_scanin;
784wire cycle_3_by_pass_c_reg_scanout;
785wire byp_valid_in;
786wire thr0_kill_by_pass_bbf;
787wire thr1_kill_by_pass_bbf;
788wire thr2_kill_by_pass_bbf;
789wire thr3_kill_by_pass_bbf;
790wire thr4_kill_by_pass_bbf;
791wire thr5_kill_by_pass_bbf;
792wire thr6_kill_by_pass_bbf;
793wire thr7_kill_by_pass_bbf;
794wire cmu_any_data_ready_reg_scanin;
795wire cmu_any_data_ready_reg_scanout;
796wire agc_byp_valid;
797wire tsm_thrx_kill_by_pass_reg_scanin;
798wire tsm_thrx_kill_by_pass_reg_scanout;
799wire thr7_kill_by_pass_bf;
800wire thr6_kill_by_pass_bf;
801wire thr5_kill_by_pass_bf;
802wire thr4_kill_by_pass_bf;
803wire thr3_kill_by_pass_bf;
804wire thr2_kill_by_pass_bf;
805wire thr1_kill_by_pass_bf;
806wire thr0_kill_by_pass_bf;
807wire kill2_by_pass_bf;
808wire bypass_thread_killed;
809wire next_by_pass_f_valid;
810wire by_pass_v_f_reg_scanin;
811wire by_pass_v_f_reg_scanout;
812wire agc_by_pass_valid_unq_f;
813wire bypass_thread_redirected_p_f;
814wire bypass_thread_redirected_f;
815wire agc_sel_by_pass_cycle_2_f;
816wire agc_sel_by_pass_cycle_3_c;
817wire agc_by_pass_valid_c;
818wire next_by_pass_c_valid;
819wire by_pass_v_c_reg_scanin;
820wire by_pass_v_c_reg_scanout;
821wire agc_sel_by_pass_cycle_2_int_f;
822wire agc_sel_by_pass_cycle_3_int_c;
823wire [2:0] agc_bypass_selects;
824wire [3:0] by_pass_valid_instr_bf;
825wire by_pass_instr_v_f_reg_scanin;
826wire by_pass_instr_v_f_reg_scanout;
827wire [3:0] by_pass_valid_instr_f;
828wire by_pass_instr_v_c_reg_scanin;
829wire by_pass_instr_v_c_reg_scanout;
830wire [3:0] by_pass_valid_instr_c;
831wire instr_0_v_q_c;
832wire instr_1_v_q_c;
833wire instr_2_v_q_c;
834wire instr_3_v_q_c;
835wire bus_3_is_first_in;
836wire bus_2_is_first_in;
837wire bus_1_is_first_in;
838wire bus_0_is_first_in;
839wire bus_first_reg_scanin;
840wire bus_first_reg_scanout;
841wire exception_valid_int_c;
842wire thr0_byp_bf_kill_sf;
843wire thr0_byp_f_kill_sf;
844wire thr0_byp_c_kill_sf;
845wire thr0_instr_kill_sf;
846wire thr1_byp_bf_kill_sf;
847wire thr1_byp_f_kill_sf;
848wire thr1_byp_c_kill_sf;
849wire thr1_instr_kill_sf;
850wire thr2_byp_bf_kill_sf;
851wire thr2_byp_f_kill_sf;
852wire thr2_byp_c_kill_sf;
853wire thr2_instr_kill_sf;
854wire thr3_byp_bf_kill_sf;
855wire thr3_byp_f_kill_sf;
856wire thr3_byp_c_kill_sf;
857wire thr3_instr_kill_sf;
858wire thr4_byp_bf_kill_sf;
859wire thr4_byp_f_kill_sf;
860wire thr4_byp_c_kill_sf;
861wire thr4_instr_kill_sf;
862wire thr5_byp_bf_kill_sf;
863wire thr5_byp_f_kill_sf;
864wire thr5_byp_c_kill_sf;
865wire thr5_instr_kill_sf;
866wire thr6_byp_bf_kill_sf;
867wire thr6_byp_f_kill_sf;
868wire thr6_byp_c_kill_sf;
869wire thr6_instr_kill_sf;
870wire thr7_byp_bf_kill_sf;
871wire thr7_byp_f_kill_sf;
872wire thr7_byp_c_kill_sf;
873wire thr7_instr_kill_sf;
874wire thrx_sf_kill_reg_scanin;
875wire thrx_sf_kill_reg_scanout;
876wire any_instr_v_q_c;
877wire mbist_data_in_reg_scanin;
878wire mbist_data_in_reg_scanout;
879wire [2:0] mbi_bist_way_bf;
880wire [2:0] mbi_bist_word_en_bf;
881wire mbi_run_bf;
882wire mbi_icv_write_en_bf;
883wire [7:0] mbi_wdata_bf;
884wire agc_data_ready_bf;
885wire [2:0] agc_cmu_fill_wrway_bf;
886wire cmu_fill_wrway_reg_scanin;
887wire cmu_fill_wrway_reg_scanout;
888wire asi_mbist_way_f_reg_scanin;
889wire asi_mbist_way_f_reg_scanout;
890wire [2:0] agc_asi_mbist_way_f;
891wire [7:0] next_wrway_bbf;
892wire [1:0] vl_data;
893wire vl_data_reg_scanin;
894wire vl_data_reg_scanout;
895wire itlb_valid_reg_scanin;
896wire itlb_valid_reg_scanout;
897wire [7:0] itlb_valid_c;
898wire itlb_valid_dupl_reg_scanin;
899wire itlb_valid_dupl_reg_scanout;
900wire [7:0] itlb_valid_dupl_c;
901wire va_hole_excp_extra;
902wire next_va_hole_excp;
903wire agc_itb_bypass_f;
904wire va_hole_excp_c_reg_scanin;
905wire va_hole_excp_c_reg_scanout;
906wire va_hole_excp_c;
907wire inv_ack;
908wire [7:0] next_inv_way_bbf;
909wire [7:0] next_inv_way1_bbf;
910wire [7:0] asi_way_dec_bf;
911wire addr_bit_5_bf_reg_scanin;
912wire addr_bit_5_bf_reg_scanout;
913wire phys_addr_bit_5_bf;
914wire inv_bit_5_bf_reg_scanin;
915wire inv_bit_5_bf_reg_scanout;
916wire inv_addr_bit_5_bf;
917wire inv_or_phys_addr_bit_5_bf;
918wire agc_inv_line_bf;
919wire wrway_bf_reg_scanin;
920wire wrway_bf_reg_scanout;
921wire [7:0] wrway_bf;
922wire inv_way_bf_reg_scanin;
923wire inv_way_bf_reg_scanout;
924wire [7:0] inv_way_bf;
925wire inv_way1_bf_reg_scanin;
926wire inv_way1_bf_reg_scanout;
927wire [7:0] inv_way1_bf;
928wire [7:0] inv_or_wrway_bf;
929wire [7:0] way1_inv;
930wire agc_evic_line_bf;
931wire next_inv_line;
932wire inv_line_bf_reg_scanin;
933wire inv_line_bf_reg_scanout;
934wire evic_line_bf_reg_scanin;
935wire evic_line_bf_reg_scanout;
936wire [1:0] icv_wrdata;
937wire next_data_ready_bbf;
938wire data_ready_bf_reg_scanin;
939wire data_ready_bf_reg_scanout;
940wire l2_cache_miss_in_reg_scanin;
941wire l2_cache_miss_in_reg_scanout;
942wire l1_miss_in;
943wire l2_miss_in;
944wire l2_err_corr_in;
945wire l2_err_ucorr_in;
946wire l2_err_ndata_in;
947wire l1_cache_1_miss;
948wire l2_cache_1_miss;
949wire l2_err_corr_1_ff;
950wire l2_err_ucorr_1_ff;
951wire l2_err_ndata_1_ff;
952wire l2_cache_miss_1_reg_scanin;
953wire l2_cache_miss_1_reg_scanout;
954wire l1_cache_2_miss;
955wire l2_cache_2_miss;
956wire l2_err_corr_2_ff;
957wire l2_err_ucorr_2_ff;
958wire l2_err_ndata_2_ff;
959wire l2_cache_miss_2_reg_scanin;
960wire l2_cache_miss_2_reg_scanout;
961wire l1_cache_3_miss;
962wire l2_cache_3_miss;
963wire l2_err_corr_3_ff;
964wire l2_err_ucorr_3_ff;
965wire l2_err_ndata_3_ff;
966wire precise_en_bp_in;
967wire cerer_icl2c_ff;
968wire cerer_icl2u_ff;
969wire cerer_icl2nd_ff;
970wire l2_ucorr_err_byp_1;
971wire l2_ucorr_err_byp_2;
972wire l2_ucorr_err_byp_3;
973wire l2_ucorr_err;
974wire l2_corr_err_byp_1;
975wire l2_corr_err_byp_2;
976wire l2_corr_err_byp_3;
977wire l2_corr_err;
978wire l2_ndata_err_byp_1;
979wire l2_ndata_err_byp_2;
980wire l2_ndata_err_byp_3;
981wire l2_ndata_err;
982wire l2_cache_miss_byp_1;
983wire l2_cache_miss_byp_2;
984wire l2_cache_miss_byp_3;
985wire l2_cache_miss;
986wire l1_cache_miss;
987wire itb_cmiss_c;
988wire agc_ic_disable_thr_c;
989wire itb_itb_miss_c;
990wire agc_itb_cmiss_c_q;
991wire ic_valid_err_no_priority;
992wire itb_itb_acc_viol_c;
993wire invalidation_req_c;
994wire itb_tag_perr;
995wire cerer_ittp_ff;
996wire cerer_itdp_ff;
997wire agc_tag_perror_c;
998wire cerer_ictp_ff;
999wire itb_mhit_en_c;
1000wire agc_qualify_cmiss;
1001wire agc_thrx_un_cacheable;
1002wire bus_0_valid_f;
1003wire bus_1_valid_f;
1004wire bus_2_valid_f;
1005wire bus_3_valid_f;
1006wire ic_instr_v_reg_scanin;
1007wire ic_instr_v_reg_scanout;
1008wire bus_3_valid_c;
1009wire bus_2_valid_c;
1010wire bus_1_valid_c;
1011wire bus_0_valid_c;
1012wire next_any_instr_v_c;
1013wire any_instr_v_c_reg_scanin;
1014wire any_instr_v_c_reg_scanout;
1015wire any_instr_v_c;
1016wire agc_itb_itb_miss_c_q;
1017wire agc_itb_itb_miss_c_int_q;
1018wire itb_itb_acc_viol_no_priority;
1019wire va_hole_exception_c;
1020wire nfo_tlb_exception_no_priority;
1021wire tag_perror_no_priority;
1022wire itb_mhit_no_priority;
1023wire tte_tag_parity_no_priority;
1024wire tag_multiple_hit_no_priority;
1025wire tte_data_parity_no_priority;
1026wire itb_itb_acc_viol_int_c;
1027wire va_hole_exception_int_c;
1028wire hpstate_reg_scanin;
1029wire hpstate_reg_scanout;
1030wire [7:0] hpstate_hpriv_ff;
1031wire [7:0] pstate_priv_ff;
1032wire next_priv_state;
1033wire priv_state_c_reg_scanin;
1034wire priv_state_c_reg_scanout;
1035wire agc_priv_state_c;
1036wire tlb_parity_reg_scanin;
1037wire tlb_parity_reg_scanout;
1038wire prty_256m_c;
1039wire prty_4m_c;
1040wire prty_64k_c;
1041wire prty_8k_c;
1042wire prty_ctxt0_c;
1043wire prty_ctxt1_c;
1044wire prty_ctxt;
1045wire tag_parity_gen;
1046wire agc_itc_real_c;
1047wire itlb_cam_vld_c_reg_scanin;
1048wire itlb_cam_vld_c_reg_scanout;
1049wire itlb_cam_vld_c;
1050wire cerer_en_reg_scanin;
1051wire cerer_en_reg_scanout;
1052wire cerer_ittm_ff;
1053wire cerer_icvp_ff;
1054wire cerer_ictm_ff;
1055wire tte_tag_parity_en_c;
1056wire tte_data_parity_en_c;
1057wire nfo_tlb_exception;
1058wire ic_valid_err_c_en;
1059wire ic_valid_err_c;
1060wire tag_perror_en_c;
1061wire tag_multiple_hit_en;
1062wire ic_tag_multiple_hit;
1063wire agc_ic_enable_thr_c;
1064wire l2_ucorr_err_en;
1065wire l2_corr_err_en;
1066wire l2_ndata_err_en;
1067wire l2_cache_miss_no_error;
1068wire l2_uncorr_err_en_no_l2_miss;
1069wire l2_cache_miss_n_corr;
1070wire l2_cache_miss_n_uncorr;
1071wire l2_cache_miss_n_ndata;
1072wire agc_itc_real_c_q;
1073wire va_hole_exception_c_r;
1074wire way_sel_all_but_0;
1075wire way_sel_all_but_1;
1076wire way_sel_all_but_2;
1077wire way_sel_all_but_3;
1078wire way_sel_all_but_4;
1079wire way_sel_all_but_5;
1080wire way_sel_all_but_6;
1081wire way_sel_all_but_7;
1082wire itc_real_f_reg_scanin;
1083wire itc_real_f_reg_scanout;
1084wire agc_itc_real_f;
1085wire itc_real_c_reg_scanin;
1086wire itc_real_c_reg_scanout;
1087wire cntx_sel_reg_scanin;
1088wire cntx_sel_reg_scanout;
1089wire lsu_no_icm_reg_scanin;
1090wire lsu_no_icm_reg_scanout;
1091wire ic_enable_reg_scanin;
1092wire ic_enable_reg_scanout;
1093wire [7:0] agc_icache_enable;
1094wire next_ic_enable_thr_c;
1095wire thr_c_ic_enable_reg_scanin;
1096wire thr_c_ic_enable_reg_scanout;
1097wire next_ic_enable_thr_c_l;
1098wire thr_c_ic_disable_reg_scanin;
1099wire thr_c_ic_disable_reg_scanout;
1100wire ic_valid_err_unq;
1101wire dff_8b_prty_7_scanin;
1102wire dff_8b_prty_7_scanout;
1103wire [3:0] w7_8b_parity_c;
1104wire [3:0] w6_8b_parity_c;
1105wire dff_8b_prty_5_scanin;
1106wire dff_8b_prty_5_scanout;
1107wire [3:0] w5_8b_parity_c;
1108wire [3:0] w4_8b_parity_c;
1109wire dff_8b_prty_3_scanin;
1110wire dff_8b_prty_3_scanout;
1111wire [3:0] w3_8b_parity_c;
1112wire [3:0] w2_8b_parity_c;
1113wire dff_8b_prty_1_scanin;
1114wire dff_8b_prty_1_scanout;
1115wire [3:0] w1_8b_parity_c;
1116wire [3:0] w0_8b_parity_c;
1117wire err_tag_w0_parity_c;
1118wire err_tag_w1_parity_c;
1119wire err_tag_w2_parity_c;
1120wire err_tag_w3_parity_c;
1121wire err_tag_w4_parity_c;
1122wire err_tag_w5_parity_c;
1123wire err_tag_w6_parity_c;
1124wire err_tag_w7_parity_c;
1125wire [7:0] agc_tag_pe_c;
1126wire err_excp_set;
1127wire [5:3] asi_mbist_addr_bf;
1128wire [7:0] word_en_asi;
1129wire asi_sel_word_reg_scanin;
1130wire asi_sel_word_reg_scanout;
1131wire [4:3] asi_mbist_addr_f;
1132wire [4:3] asi_mbist_addr_c;
1133wire thr0_valid_exception_p;
1134wire thr1_valid_exception_p;
1135wire thr2_valid_exception_p;
1136wire thr3_valid_exception_p;
1137wire thr4_valid_exception_p;
1138wire thr5_valid_exception_p;
1139wire thr6_valid_exception_p;
1140wire thr7_valid_exception_p;
1141wire thr0_way_write_en;
1142wire thr1_way_write_en;
1143wire thr2_way_write_en;
1144wire thr3_way_write_en;
1145wire thr4_way_write_en;
1146wire thr5_way_write_en;
1147wire thr6_way_write_en;
1148wire thr7_way_write_en;
1149wire [2:0] error_way_muxed_p;
1150wire ic_valid_err_p_en;
1151wire [2:0] valid_err_way_p;
1152wire tag_perror_en_p;
1153wire [2:0] perr_way_p;
1154wire tag_multiple_hit_en_p;
1155wire [2:0] fetch_way_p;
1156wire [2:0] thr0_excp_way_in;
1157wire [2:0] ftu_thr0_excp_way;
1158wire [2:0] thr1_excp_way_in;
1159wire [2:0] ftu_thr1_excp_way;
1160wire [2:0] thr2_excp_way_in;
1161wire [2:0] ftu_thr2_excp_way;
1162wire [2:0] thr3_excp_way_in;
1163wire [2:0] ftu_thr3_excp_way;
1164wire [2:0] thr4_excp_way_in;
1165wire [2:0] ftu_thr4_excp_way;
1166wire [2:0] thr5_excp_way_in;
1167wire [2:0] ftu_thr5_excp_way;
1168wire [2:0] thr6_excp_way_in;
1169wire [2:0] ftu_thr6_excp_way;
1170wire [2:0] thr7_excp_way_in;
1171wire [2:0] ftu_thr7_excp_way;
1172wire [2:0] fetch_way_p_in;
1173wire fetch_way_p_reg_scanin;
1174wire fetch_way_p_reg_scanout;
1175wire [7:0] valid_err_way;
1176wire [2:0] valid_err_way_p_in;
1177wire valid_err_way_p_reg_scanin;
1178wire valid_err_way_p_reg_scanout;
1179wire [2:0] perr_way_p_in;
1180wire tag_pe_way_scanin;
1181wire tag_pe_way_scanout;
1182wire tag_perror_en_reg_scanin;
1183wire tag_perror_en_reg_scanout;
1184wire way_thr0_keep_reg_scanin;
1185wire way_thr0_keep_reg_scanout;
1186wire way_thr1_keep_reg_scanin;
1187wire way_thr1_keep_reg_scanout;
1188wire way_thr2_keep_reg_scanin;
1189wire way_thr2_keep_reg_scanout;
1190wire way_thr3_keep_reg_scanin;
1191wire way_thr3_keep_reg_scanout;
1192wire way_thr4_keep_reg_scanin;
1193wire way_thr4_keep_reg_scanout;
1194wire way_thr5_keep_reg_scanin;
1195wire way_thr5_keep_reg_scanout;
1196wire way_thr6_keep_reg_scanin;
1197wire way_thr6_keep_reg_scanout;
1198wire way_thr7_keep_reg_scanin;
1199wire way_thr7_keep_reg_scanout;
1200wire excp_way_valid_in;
1201wire excp_way_d_reg_scanin;
1202wire excp_way_d_reg_scanout;
1203wire [2:0] excp_tid_d_in;
1204wire excp_tid_d_reg_scanin;
1205wire excp_tid_d_reg_scanout;
1206wire next_itlb_busy;
1207wire itlb_busy_reg_scanin;
1208wire itlb_busy_reg_scanout;
1209wire itlb_busy_bf;
1210wire itlb_busy_f_reg_scanin;
1211wire itlb_busy_f_reg_scanout;
1212wire itlb_busy_f;
1213wire ith_det_req_bbf;
1214wire ith_det_req_ff;
1215wire ith_det_req_ff_reg_scanin;
1216wire ith_det_req_ff_reg_scanout;
1217wire [7:0] next_enabled_thread;
1218wire enabled_thr_reg_dup_scanin;
1219wire enabled_thr_reg_dup_scanout;
1220wire [7:0] enabled_threads_dup;
1221wire next_single_thread_active;
1222wire single_thread_active_reg_scanin;
1223wire single_thread_active_reg_scanout;
1224wire [7:0] reset_invalidation_req;
1225wire [7:0] new_invalidation_req;
1226wire [7:0] set_invalidation_req;
1227wire [7:0] next_invalidation_req;
1228wire [7:0] invalidation_req_ff;
1229wire invalidation_req_reg_scanin;
1230wire invalidation_req_reg_scanout;
1231wire invalidation_req_dup_reg_scanin;
1232wire invalidation_req_dup_reg_scanout;
1233wire invalidation_req_c_reg_scanin;
1234wire invalidation_req_c_reg_scanout;
1235wire thrx_inv_kill_reg_scanin;
1236wire thrx_inv_kill_reg_scanout;
1237wire cms_itb_cmiss_c_q;
1238wire spares_scanin;
1239wire spares_scanout;
1240wire mbist_output_scanin;
1241wire mbist_output_scanout;
1242wire itb_cam_hit_c_1;
1243wire tlb_context0_hit_1;
1244wire itb_itb_mhit_c_1;
1245wire se;
1246
1247
1248input tcu_se_scancollar_out ;
1249input tcu_scan_en ;
1250input l2clk;
1251input scan_in;
1252input tcu_pce_ov; // scan signals
1253input spc_aclk;
1254input spc_bclk;
1255
1256input tlu_trap_pc_0_valid ;
1257input [1:0] tlu_retry ;
1258input [7:0] tlu_ceter_pscce ;
1259
1260input tlu_trap_pc_1_valid ;
1261input [1:0] tlu_ifu_invalidate ;
1262
1263input [1:0] tlu_trap_0_tid ;
1264input [1:0] tlu_trap_1_tid ;
1265
1266input [7:0] spc_core_running_status;
1267
1268input [7:0] mbi_wdata;
1269input [8:6] mbi_addr;
1270input [2:0] mbi_cmpsel;
1271input mbi_run;
1272input mbi_icv_write_en;
1273
1274
1275input [7:0] tlu_flush_ifu ;
1276input [7:0] tlu_ifu_hpstate_hpriv ;
1277input [7:0] tlu_ifu_pstate_priv ;
1278
1279input tlu_cerer_ittp ;
1280input tlu_cerer_itdp ;
1281input tlu_cerer_ittm ;
1282input tlu_cerer_icl2c ;
1283input tlu_cerer_icl2u ;
1284input tlu_cerer_icl2nd ;
1285input tlu_cerer_icvp ;
1286input tlu_cerer_ictp ;
1287input tlu_cerer_ictm ;
1288
1289input tlb_nfo ;
1290input agd_va_hole_excp_f;
1291input [7:0] agd_itlb_valid_f ;
1292input [7:0] agd_itlb_valid_dupl_f ;
1293
1294input asi_ith_det_req ;
1295input [1:0] asi_vl_arr_data ;
1296input ftp_asi_tg_wr_req_hold ;
1297input ftp_itlb_cam_vld_f ;
1298input [6:3] asi_addr_bf ;
1299input [2:0] asi_way_bf ;
1300input [47:2] ifu_agd_pc_f ;
1301input [4:2] agd_thr0_pc_4_2_f ;
1302input [4:2] agd_thr1_pc_4_2_f ;
1303input [4:2] agd_thr2_pc_4_2_f ;
1304input [4:2] agd_thr3_pc_4_2_f ;
1305input [4:2] agd_thr4_pc_4_2_f ;
1306input [4:2] agd_thr5_pc_4_2_f ;
1307input [4:2] agd_thr6_pc_4_2_f ;
1308input [4:2] agd_thr7_pc_4_2_f ;
1309
1310input [1:0] dec_load_flush_w;
1311
1312
1313input itc_bypass_bf ;
1314input itc_real_bf ;
1315input itc_demap_next ;
1316
1317input [7:0] ftp_curr_fetch_thr_f ;
1318input [7:0] ftp_fetch_thr_q_f ;
1319
1320
1321
1322input ftp_fill_req_q_bf ;
1323input ftp_any_thr_clken;
1324
1325input [3:0] err_w0_8b_parity_f;
1326input [3:0] err_w1_8b_parity_f;
1327input [3:0] err_w2_8b_parity_f;
1328input [3:0] err_w3_8b_parity_f;
1329input [3:0] err_w4_8b_parity_f;
1330input [3:0] err_w5_8b_parity_f;
1331input [3:0] err_w6_8b_parity_f;
1332input [3:0] err_w7_8b_parity_f;
1333
1334
1335input tsm_thr0_ignore_by_pass;
1336input tsm_thr1_ignore_by_pass;
1337input tsm_thr2_ignore_by_pass;
1338input tsm_thr3_ignore_by_pass;
1339input tsm_thr4_ignore_by_pass;
1340input tsm_thr5_ignore_by_pass;
1341input tsm_thr6_ignore_by_pass;
1342input tsm_thr7_ignore_by_pass;
1343
1344input tsm_thr0_no_new_miss;
1345input tsm_thr1_no_new_miss;
1346input tsm_thr2_no_new_miss;
1347input tsm_thr3_no_new_miss;
1348input tsm_thr4_no_new_miss;
1349input tsm_thr5_no_new_miss;
1350input tsm_thr6_no_new_miss;
1351input tsm_thr7_no_new_miss;
1352
1353input cmu_any_data_ready ;
1354input cmu_any_un_cacheable ;
1355
1356
1357
1358input [1:0] cmu_l2_err ;
1359input cmu_l2miss ;
1360
1361input cmu_thr0_data_ready;
1362input cmu_thr1_data_ready;
1363input cmu_thr2_data_ready;
1364input cmu_thr3_data_ready;
1365input cmu_thr4_data_ready;
1366input cmu_thr5_data_ready;
1367input cmu_thr6_data_ready;
1368input cmu_thr7_data_ready;
1369
1370
1371input [2:0] cmu_fill_wrway ;
1372input cmu_icache_invalidate;
1373input cmu_evic_invalidate;
1374input [2:0] cmu_icache_invalidate_way;
1375input [2:0] cmu_icache_inv_way1;
1376
1377input fill_paddr_bit_5 ;
1378input inv_paddr_bit_5 ;
1379input ftu_paddr_unq_39 ;
1380input [3:0] cmu_instr_v ;
1381
1382
1383
1384input [1:0] dec_br_taken_e ;
1385input [1:0] dec_valid_e;
1386input [1:0] ftp_tid0_e;
1387input [1:0] ftp_tid1_e;
1388
1389
1390input ftp_fetch_v_f;
1391input itb_chit_c;
1392input itb_cam_hit_c;
1393input itb_tte_p_c;
1394input itb_itb_mhit_c;
1395input itb_tte_tag_parity;
1396input itb_tte_data_parity;
1397input [7:0] itb_icd_waysel_c;
1398
1399
1400input [2:0] lsu_ifu_tid_w;
1401input lsu_ifu_wr_p0ctxt;
1402input lsu_ifu_wr_p1ctxt;
1403input [7:0] lsu_ifu_no_miss;
1404
1405input [7:0] lsu_ic_enable;
1406input [7:0] cmu_inval_ack;
1407input ftp_asi_mbist_access_bf;
1408
1409input itd_prty_256m;
1410input itd_prty_4m;
1411input itd_prty_64k;
1412input itd_prty_8k;
1413input itd_prty_ctxt0;
1414input itd_prty_ctxt1;
1415input [2:0] tlb_pgsize;
1416input tlb_context0_hit;
1417
1418
1419
1420
1421output [7:0] ftu_buffer_wr_en_f;
1422
1423
1424output agc_itb_tag_perr_c ;
1425
1426output [1:0] agc_vl_data_c;
1427
1428output [3:0] agc_asi_sel_word_c;
1429output [7:0] agc_sel_tg_data_f;
1430output [7:0] agc_word_en_bf;
1431output [7:0] agc_by_pass_update_lru_bf;
1432output [7:0] agc_invalidation_req_ff;
1433output agc_any_invalidation_req_f ;
1434output agc_thr0_sf_valid_f ;
1435output agc_thr1_sf_valid_f ;
1436output agc_thr2_sf_valid_f ;
1437output agc_thr3_sf_valid_f ;
1438output agc_thr4_sf_valid_f ;
1439output agc_thr5_sf_valid_f ;
1440output agc_thr6_sf_valid_f ;
1441output agc_thr7_sf_valid_f ;
1442
1443
1444output agc_thr0_micro_flush_unq_c ;
1445output agc_thr1_micro_flush_unq_c ;
1446output agc_thr2_micro_flush_unq_c ;
1447output agc_thr3_micro_flush_unq_c ;
1448output agc_thr4_micro_flush_unq_c ;
1449output agc_thr5_micro_flush_unq_c ;
1450output agc_thr6_micro_flush_unq_c ;
1451output agc_thr7_micro_flush_unq_c ;
1452
1453
1454
1455output agc_thr0_err_detect_c;
1456output agc_thr1_err_detect_c;
1457output agc_thr2_err_detect_c;
1458output agc_thr3_err_detect_c;
1459output agc_thr4_err_detect_c;
1460output agc_thr5_err_detect_c;
1461output agc_thr6_err_detect_c;
1462output agc_thr7_err_detect_c;
1463
1464output agc_thr0_cmiss_stm_c;
1465output agc_thr1_cmiss_stm_c;
1466output agc_thr2_cmiss_stm_c;
1467output agc_thr3_cmiss_stm_c;
1468output agc_thr4_cmiss_stm_c;
1469output agc_thr5_cmiss_stm_c;
1470output agc_thr6_cmiss_stm_c;
1471output agc_thr7_cmiss_stm_c;
1472
1473
1474output ftu_agc_thr0_cmiss_c;
1475output ftu_agc_thr1_cmiss_c;
1476output ftu_agc_thr2_cmiss_c;
1477output ftu_agc_thr3_cmiss_c;
1478output ftu_agc_thr4_cmiss_c;
1479output ftu_agc_thr5_cmiss_c;
1480output ftu_agc_thr6_cmiss_c;
1481output ftu_agc_thr7_cmiss_c;
1482
1483output ftu_thr0_inv_req_c ;
1484output ftu_thr1_inv_req_c ;
1485output ftu_thr2_inv_req_c ;
1486output ftu_thr3_inv_req_c ;
1487output ftu_thr4_inv_req_c ;
1488output ftu_thr5_inv_req_c ;
1489output ftu_thr6_inv_req_c ;
1490output ftu_thr7_inv_req_c ;
1491
1492output [7:0] ifu_ibuffer_write_c;
1493output [7:0] ftu_fetch_thr_c;
1494output ftu_instr_sf_valid_c;
1495
1496output [2:0] ftu_excp_way_d;
1497output [2:0] ftu_excp_tid_d;
1498output ftu_excp_way_valid_d;
1499
1500
1501output [2:0] agc_fill_wrway_bf;
1502output [3:0] agc_sel_inv_index ;
1503
1504output agc_thr0_lsu_no_ic_miss;
1505output agc_thr1_lsu_no_ic_miss;
1506output agc_thr2_lsu_no_ic_miss;
1507output agc_thr3_lsu_no_ic_miss;
1508output agc_thr4_lsu_no_ic_miss;
1509output agc_thr5_lsu_no_ic_miss;
1510output agc_thr6_lsu_no_ic_miss;
1511output agc_thr7_lsu_no_ic_miss;
1512
1513output agc_thr0_itb_miss_c;
1514output agc_thr1_itb_miss_c;
1515output agc_thr2_itb_miss_c;
1516output agc_thr3_itb_miss_c;
1517output agc_thr4_itb_miss_c;
1518output agc_thr5_itb_miss_c;
1519output agc_thr6_itb_miss_c;
1520output agc_thr7_itb_miss_c;
1521
1522output ftu_ic_no_err_c ; // Data being by_passed does not have an error
1523
1524output ftu_bus_0_is_first ; // bus 0 contains first instr
1525output ftu_bus_1_is_first ; // bus 1 contains first instr
1526output ftu_bus_2_is_first ; // bus 2 contains first instr
1527output ftu_bus_3_is_first ; // bus 3 contains first instr
1528
1529output [3:0] ftu_instr_valid_c;
1530output ftu_exception_valid_c ;
1531
1532output [4:0] ftu_instr_exceptions_c;
1533
1534
1535output [3:0] agc_thr0_pcf_sel_bf;
1536output [3:0] agc_thr1_pcf_sel_bf;
1537output [3:0] agc_thr2_pcf_sel_bf;
1538output [3:0] agc_thr3_pcf_sel_bf;
1539output [3:0] agc_thr4_pcf_sel_bf;
1540output [3:0] agc_thr5_pcf_sel_bf;
1541output [3:0] agc_thr6_pcf_sel_bf;
1542output [3:0] agc_thr7_pcf_sel_bf;
1543
1544output [1:0] agc_thr0_pcf_sel_last_bf;
1545output [1:0] agc_thr1_pcf_sel_last_bf;
1546output [1:0] agc_thr2_pcf_sel_last_bf;
1547output [1:0] agc_thr3_pcf_sel_last_bf;
1548output [1:0] agc_thr4_pcf_sel_last_bf;
1549output [1:0] agc_thr5_pcf_sel_last_bf;
1550output [1:0] agc_thr6_pcf_sel_last_bf;
1551output [1:0] agc_thr7_pcf_sel_last_bf;
1552
1553
1554output agc_icv_wr_req_bf;
1555output [31:0] agc_icv_wrdata_bf;
1556output [31:0] agc_icv_wren_bf;
1557
1558
1559
1560
1561
1562
1563
1564output ftu_thr0_redirect_bf;
1565output ftu_thr1_redirect_bf;
1566output ftu_thr2_redirect_bf;
1567output ftu_thr3_redirect_bf;
1568output ftu_thr4_redirect_bf;
1569output ftu_thr5_redirect_bf;
1570output ftu_thr6_redirect_bf;
1571output ftu_thr7_redirect_bf;
1572
1573output [7:0] ftu_ibu_redirect_bf ;
1574
1575output agc_thr0_tlu_redirect_bf;
1576output agc_thr1_tlu_redirect_bf;
1577output agc_thr2_tlu_redirect_bf;
1578output agc_thr3_tlu_redirect_bf;
1579output agc_thr4_tlu_redirect_bf;
1580output agc_thr5_tlu_redirect_bf;
1581output agc_thr6_tlu_redirect_bf;
1582output agc_thr7_tlu_redirect_bf;
1583
1584
1585
1586
1587
1588
1589output agc_kill_fetch_cv_c;
1590
1591output [3:0] agc_pc_sel_for_c ;
1592output [2:0] agc_instr_bp_sel_c ;
1593
1594output agc_thr0_byp_incr_bit5 ;
1595output agc_thr1_byp_incr_bit5 ;
1596output agc_thr2_byp_incr_bit5 ;
1597output agc_thr3_byp_incr_bit5 ;
1598output agc_thr4_byp_incr_bit5 ;
1599output agc_thr5_byp_incr_bit5 ;
1600output agc_thr6_byp_incr_bit5 ;
1601output agc_thr7_byp_incr_bit5 ;
1602
1603output [4:2] agc_thr0_byp_pc_update_bf ;
1604output [4:2] agc_thr1_byp_pc_update_bf ;
1605output [4:2] agc_thr2_byp_pc_update_bf ;
1606output [4:2] agc_thr3_byp_pc_update_bf ;
1607output [4:2] agc_thr4_byp_pc_update_bf ;
1608output [4:2] agc_thr5_byp_pc_update_bf ;
1609output [4:2] agc_thr6_byp_pc_update_bf ;
1610output [4:2] agc_thr7_byp_pc_update_bf ;
1611
1612output [1:0] agc_thr0_cntx_0_sel;
1613output [1:0] agc_thr0_cntx_1_sel;
1614output [1:0] agc_thr1_cntx_0_sel;
1615output [1:0] agc_thr1_cntx_1_sel;
1616output [1:0] agc_thr2_cntx_0_sel;
1617output [1:0] agc_thr2_cntx_1_sel;
1618output [1:0] agc_thr3_cntx_0_sel;
1619output [1:0] agc_thr3_cntx_1_sel;
1620output [1:0] agc_thr4_cntx_0_sel;
1621output [1:0] agc_thr4_cntx_1_sel;
1622output [1:0] agc_thr5_cntx_0_sel;
1623output [1:0] agc_thr5_cntx_1_sel;
1624output [1:0] agc_thr6_cntx_0_sel;
1625output [1:0] agc_thr6_cntx_1_sel;
1626output [1:0] agc_thr7_cntx_0_sel;
1627output [1:0] agc_thr7_cntx_1_sel;
1628
1629output agc_thr0_cntx_0_sel_ff;
1630output agc_thr0_cntx_1_sel_ff;
1631
1632output agc_thr1_cntx_0_sel_ff;
1633output agc_thr1_cntx_1_sel_ff;
1634
1635output agc_thr2_cntx_0_sel_ff;
1636output agc_thr2_cntx_1_sel_ff;
1637
1638output agc_thr3_cntx_0_sel_ff;
1639output agc_thr3_cntx_1_sel_ff;
1640
1641output agc_thr4_cntx_0_sel_ff;
1642output agc_thr4_cntx_1_sel_ff;
1643
1644output agc_thr5_cntx_0_sel_ff;
1645output agc_thr5_cntx_1_sel_ff;
1646
1647output agc_thr6_cntx_0_sel_ff;
1648output agc_thr6_cntx_1_sel_ff;
1649
1650output agc_thr7_cntx_0_sel_ff;
1651output agc_thr7_cntx_1_sel_ff;
1652
1653output ftu_mbi_tlb_cam_hit;
1654output ftu_mbi_tlb_ctxt0_hit;
1655output ftu_mbi_tlb_cam_mhit;
1656output scan_out;
1657
1658// renames
1659assign pce_ov = tcu_pce_ov;
1660assign stop = 1'b0 ;
1661assign siclk = spc_aclk;
1662assign soclk = spc_bclk;
1663
1664
1665ifu_ftu_agc_ctl_l1clkhdr_ctl_macro clkgen (
1666 .l2clk(l2clk),
1667 .l1en (1'b1 ),
1668 .l1clk(l1clk),
1669 .pce_ov(pce_ov),
1670 .stop(stop),
1671 .se(se));
1672
1673ifu_ftu_agc_ctl_l1clkhdr_ctl_macro clkgen_pm (
1674 .l2clk(l2clk),
1675 .l1en (ftp_any_thr_clken ),
1676 .l1clk(l1clk_pm1),
1677 .pce_ov(pce_ov),
1678 .stop(stop),
1679 .se(se));
1680
1681
1682ifu_ftu_agc_ctl_l1clkhdr_ctl_macro scancollar_out_clkgen (
1683 .l2clk (l2clk),
1684 .l1en (1'b1),
1685 .se (tcu_se_scancollar_out),
1686 .l1clk (l1clk_out),
1687 .pce_ov(pce_ov),
1688 .stop(stop)
1689);
1690
1691
1692
1693
1694
1695///////////////////////////////////////////////////////////////////////
1696// Generate selects for the second level of redirection muxing for //
1697// thread_0 to thread_7 //
1698///////////////////////////////////////////////////////////////////////
1699///////////////////////////////////////////////////////////////////////
1700// Second level of redirection muxing //
1701///////////////////////////////////////////////////////////////////////
1702assign thr0_first_level_sel_bf = thr0_trap_pcaddr_is_valid_bf | thr0_lsu_sync_bf |
1703 thr0_replay_pc ;
1704assign agc_thr0_pcf_sel_bf[0] = thr0_replay_pc | thr0_trap_pcaddr_is_valid_bf |
1705 thr0_lsu_sync_bf ;
1706assign agc_thr0_pcf_sel_bf[1] = ~thr0_first_level_sel_bf & last_fetch_was_thr0_bf ;
1707assign agc_thr0_pcf_sel_bf[2] = ~thr0_first_level_sel_bf & ~last_fetch_was_thr0_bf & (agc_by_pass_valid_bf & agc_by_pass_sel_bf[0]);
1708assign agc_thr0_pcf_sel_bf[3] = ~thr0_first_level_sel_bf & ~last_fetch_was_thr0_bf & ~(agc_by_pass_valid_bf & agc_by_pass_sel_bf[0]);
1709
1710assign agc_thr0_pcf_sel_last_bf[0] = thr0_br_misp_f & ~(thr0_matches_curr_f & ftp_fetch_v_f) &
1711 ~thr0_lsu_sync_bf & ~thr0_trap_pcaddr_is_valid_bf ;
1712assign agc_thr0_pcf_sel_last_bf[1] = ~agc_thr0_pcf_sel_last_bf[0] ;
1713
1714assign agc_thr0_br_misp_f = thr0_br_misp_f ;
1715
1716assign thr1_first_level_sel_bf = thr1_trap_pcaddr_is_valid_bf | thr1_lsu_sync_bf |
1717 thr1_replay_pc ;
1718assign agc_thr1_pcf_sel_bf[0] = thr1_replay_pc | thr1_trap_pcaddr_is_valid_bf |
1719 thr1_lsu_sync_bf ;
1720assign agc_thr1_pcf_sel_bf[1] = ~thr1_first_level_sel_bf & last_fetch_was_thr1_bf ;
1721assign agc_thr1_pcf_sel_bf[2] = ~thr1_first_level_sel_bf & ~last_fetch_was_thr1_bf & (agc_by_pass_valid_bf & agc_by_pass_sel_bf[1]);
1722assign agc_thr1_pcf_sel_bf[3] = ~thr1_first_level_sel_bf & ~last_fetch_was_thr1_bf & ~(agc_by_pass_valid_bf & agc_by_pass_sel_bf[1]);
1723
1724assign agc_thr1_pcf_sel_last_bf[0] = thr1_br_misp_f & ~(thr1_matches_curr_f & ftp_fetch_v_f) &
1725 ~thr1_lsu_sync_bf & ~thr1_trap_pcaddr_is_valid_bf ;
1726assign agc_thr1_pcf_sel_last_bf[1] = ~agc_thr1_pcf_sel_last_bf[0] ;
1727
1728assign agc_thr1_br_misp_f = thr1_br_misp_f ;
1729
1730assign thr2_first_level_sel_bf = thr2_trap_pcaddr_is_valid_bf | thr2_lsu_sync_bf |
1731 thr2_replay_pc ;
1732assign agc_thr2_pcf_sel_bf[0] = thr2_replay_pc | thr2_trap_pcaddr_is_valid_bf |
1733 thr2_lsu_sync_bf ;
1734assign agc_thr2_pcf_sel_bf[1] = ~thr2_first_level_sel_bf & last_fetch_was_thr2_bf ;
1735assign agc_thr2_pcf_sel_bf[2] = ~thr2_first_level_sel_bf & ~last_fetch_was_thr2_bf & (agc_by_pass_valid_bf & agc_by_pass_sel_bf[2]);
1736assign agc_thr2_pcf_sel_bf[3] = ~thr2_first_level_sel_bf & ~last_fetch_was_thr2_bf & ~(agc_by_pass_valid_bf & agc_by_pass_sel_bf[2]);
1737
1738assign agc_thr2_pcf_sel_last_bf[0] = thr2_br_misp_f & ~(thr2_matches_curr_f & ftp_fetch_v_f) &
1739 ~thr2_lsu_sync_bf & ~thr2_trap_pcaddr_is_valid_bf ;
1740assign agc_thr2_pcf_sel_last_bf[1] = ~agc_thr2_pcf_sel_last_bf[0] ;
1741
1742
1743
1744assign agc_thr2_br_misp_f = thr2_br_misp_f ;
1745
1746assign thr3_first_level_sel_bf = thr3_trap_pcaddr_is_valid_bf | thr3_lsu_sync_bf |
1747 thr3_replay_pc ;
1748assign agc_thr3_pcf_sel_bf[0] = thr3_replay_pc | thr3_trap_pcaddr_is_valid_bf |
1749 thr3_lsu_sync_bf ;
1750assign agc_thr3_pcf_sel_bf[1] = ~thr3_first_level_sel_bf & last_fetch_was_thr3_bf ;
1751assign agc_thr3_pcf_sel_bf[2] = ~thr3_first_level_sel_bf & ~last_fetch_was_thr3_bf & (agc_by_pass_valid_bf & agc_by_pass_sel_bf[3]);
1752assign agc_thr3_pcf_sel_bf[3] = ~thr3_first_level_sel_bf & ~last_fetch_was_thr3_bf & ~(agc_by_pass_valid_bf & agc_by_pass_sel_bf[3]);
1753
1754assign agc_thr3_pcf_sel_last_bf[0] = thr3_br_misp_f & ~(thr3_matches_curr_f & ftp_fetch_v_f) &
1755 ~thr3_lsu_sync_bf & ~thr3_trap_pcaddr_is_valid_bf ;
1756assign agc_thr3_pcf_sel_last_bf[1] = ~agc_thr3_pcf_sel_last_bf[0] ;
1757
1758assign agc_thr3_br_misp_f = thr3_br_misp_f ;
1759
1760assign thr4_first_level_sel_bf = thr4_trap_pcaddr_is_valid_bf | thr4_lsu_sync_bf |
1761 thr4_replay_pc ;
1762assign agc_thr4_pcf_sel_bf[0] = thr4_replay_pc | thr4_trap_pcaddr_is_valid_bf |
1763 thr4_lsu_sync_bf ;
1764assign agc_thr4_pcf_sel_bf[1] = ~thr4_first_level_sel_bf & last_fetch_was_thr4_bf ;
1765assign agc_thr4_pcf_sel_bf[2] = ~thr4_first_level_sel_bf & ~last_fetch_was_thr4_bf & (agc_by_pass_valid_bf & agc_by_pass_sel_bf[4]);
1766assign agc_thr4_pcf_sel_bf[3] = ~thr4_first_level_sel_bf & ~last_fetch_was_thr4_bf & ~(agc_by_pass_valid_bf & agc_by_pass_sel_bf[4]);
1767
1768assign agc_thr4_pcf_sel_last_bf[0] = thr4_br_misp_f & ~(thr4_matches_curr_f & ftp_fetch_v_f) &
1769 ~thr4_lsu_sync_bf & ~thr4_trap_pcaddr_is_valid_bf ;
1770assign agc_thr4_pcf_sel_last_bf[1] = ~agc_thr4_pcf_sel_last_bf[0] ;
1771
1772assign agc_thr4_br_misp_f = thr4_br_misp_f ;
1773
1774assign thr5_first_level_sel_bf = thr5_trap_pcaddr_is_valid_bf | thr5_lsu_sync_bf |
1775 thr5_replay_pc ;
1776assign agc_thr5_pcf_sel_bf[0] = thr5_replay_pc | thr5_trap_pcaddr_is_valid_bf |
1777 thr5_lsu_sync_bf ;
1778assign agc_thr5_pcf_sel_bf[1] = ~thr5_first_level_sel_bf & last_fetch_was_thr5_bf ;
1779assign agc_thr5_pcf_sel_bf[2] = ~thr5_first_level_sel_bf & ~last_fetch_was_thr5_bf & (agc_by_pass_valid_bf & agc_by_pass_sel_bf[5]);
1780assign agc_thr5_pcf_sel_bf[3] = ~thr5_first_level_sel_bf & ~last_fetch_was_thr5_bf & ~(agc_by_pass_valid_bf & agc_by_pass_sel_bf[5]);
1781
1782assign agc_thr5_pcf_sel_last_bf[0] = thr5_br_misp_f & ~(thr5_matches_curr_f & ftp_fetch_v_f) &
1783 ~thr5_lsu_sync_bf & ~thr5_trap_pcaddr_is_valid_bf ;
1784assign agc_thr5_pcf_sel_last_bf[1] = ~agc_thr5_pcf_sel_last_bf[0] ;
1785
1786assign agc_thr5_br_misp_f = thr5_br_misp_f ;
1787
1788assign thr6_first_level_sel_bf = thr6_trap_pcaddr_is_valid_bf | thr6_lsu_sync_bf |
1789 thr6_replay_pc ;
1790assign agc_thr6_pcf_sel_bf[0] = thr6_replay_pc | thr6_trap_pcaddr_is_valid_bf |
1791 thr6_lsu_sync_bf ;
1792assign agc_thr6_pcf_sel_bf[1] = ~thr6_first_level_sel_bf & last_fetch_was_thr6_bf ;
1793assign agc_thr6_pcf_sel_bf[2] = ~thr6_first_level_sel_bf & ~last_fetch_was_thr6_bf & (agc_by_pass_valid_bf & agc_by_pass_sel_bf[6]);
1794assign agc_thr6_pcf_sel_bf[3] = ~thr6_first_level_sel_bf & ~last_fetch_was_thr6_bf & ~(agc_by_pass_valid_bf & agc_by_pass_sel_bf[6]);
1795
1796assign agc_thr6_pcf_sel_last_bf[0] = thr6_br_misp_f & ~(thr6_matches_curr_f & ftp_fetch_v_f) &
1797 ~thr6_lsu_sync_bf & ~thr6_trap_pcaddr_is_valid_bf ;
1798assign agc_thr6_pcf_sel_last_bf[1] = ~agc_thr6_pcf_sel_last_bf[0] ;
1799
1800assign agc_thr6_br_misp_f = thr6_br_misp_f ;
1801
1802
1803assign thr7_first_level_sel_bf = thr7_trap_pcaddr_is_valid_bf | thr7_lsu_sync_bf |
1804 thr7_replay_pc ;
1805assign agc_thr7_pcf_sel_bf[0] = thr7_replay_pc | thr7_trap_pcaddr_is_valid_bf |
1806 thr7_lsu_sync_bf ;
1807assign agc_thr7_pcf_sel_bf[1] = ~thr7_first_level_sel_bf & last_fetch_was_thr7_bf ;
1808assign agc_thr7_pcf_sel_bf[2] = ~thr7_first_level_sel_bf & ~last_fetch_was_thr7_bf & (agc_by_pass_valid_bf & agc_by_pass_sel_bf[7]);
1809assign agc_thr7_pcf_sel_bf[3] = ~thr7_first_level_sel_bf & ~last_fetch_was_thr7_bf & ~(agc_by_pass_valid_bf & agc_by_pass_sel_bf[7]);
1810
1811assign agc_thr7_pcf_sel_last_bf[0] = thr7_br_misp_f & ~(thr7_matches_curr_f & ftp_fetch_v_f) &
1812 ~thr7_lsu_sync_bf & ~thr7_trap_pcaddr_is_valid_bf ;
1813assign agc_thr7_pcf_sel_last_bf[1] = ~agc_thr7_pcf_sel_last_bf[0] ;
1814
1815assign agc_thr7_br_misp_f = thr7_br_misp_f ;
1816
1817
1818///////////////////////////////////////////////////////////////////////
1819///////////////////////////////////////////////////////////////////////
1820///////////////////////////////////////////////////////////////////////
1821///////////////////////////////////////////////////////////////////////
1822///////////////////////////////////////////////////////////////////////
1823///////////////////////////////////////////////////////////////////////
1824///////////////////////////////////////////////////////////////////////
1825///////////////////////////////////////////////////////////////////////
1826///////////////////////////////////////////////////////////////////////
1827// Decode which thread is trapping //
1828// Note: two threads can be trapping at the same time; One from each //
1829// Thread group. //
1830///////////////////////////////////////////////////////////////////////
1831assign trap_thread_g0[0] = ~tlu_trap_0_tid[1] & ~tlu_trap_0_tid[0] ;
1832assign trap_thread_g0[1] = ~tlu_trap_0_tid[1] & tlu_trap_0_tid[0] ;
1833assign trap_thread_g0[2] = tlu_trap_0_tid[1] & ~tlu_trap_0_tid[0] ;
1834assign trap_thread_g0[3] = tlu_trap_0_tid[1] & tlu_trap_0_tid[0] ;
1835
1836assign trap_thread_g1[0] = ~tlu_trap_1_tid[1] & ~tlu_trap_1_tid[0] ;
1837assign trap_thread_g1[1] = ~tlu_trap_1_tid[1] & tlu_trap_1_tid[0] ;
1838assign trap_thread_g1[2] = tlu_trap_1_tid[1] & ~tlu_trap_1_tid[0] ;
1839assign trap_thread_g1[3] = tlu_trap_1_tid[1] & tlu_trap_1_tid[0] ;
1840
1841assign thr0_trap_pcaddr_is_valid_bf = tlu_trap_pc_0_valid & trap_thread_g0[0] ;
1842assign thr1_trap_pcaddr_is_valid_bf = tlu_trap_pc_0_valid & trap_thread_g0[1] ;
1843assign thr2_trap_pcaddr_is_valid_bf = tlu_trap_pc_0_valid & trap_thread_g0[2] ;
1844assign thr3_trap_pcaddr_is_valid_bf = tlu_trap_pc_0_valid & trap_thread_g0[3] ;
1845
1846assign thr4_trap_pcaddr_is_valid_bf = tlu_trap_pc_1_valid & trap_thread_g1[0] ;
1847assign thr5_trap_pcaddr_is_valid_bf = tlu_trap_pc_1_valid & trap_thread_g1[1] ;
1848assign thr6_trap_pcaddr_is_valid_bf = tlu_trap_pc_1_valid & trap_thread_g1[2] ;
1849assign thr7_trap_pcaddr_is_valid_bf = tlu_trap_pc_1_valid & trap_thread_g1[3] ;
1850
1851assign thr0_sf_is_valid_bf = tlu_retry[0] & trap_thread_g0[0] & tlu_trap_pc_0_valid;
1852assign thr1_sf_is_valid_bf = tlu_retry[0] & trap_thread_g0[1] & tlu_trap_pc_0_valid;
1853assign thr2_sf_is_valid_bf = tlu_retry[0] & trap_thread_g0[2] & tlu_trap_pc_0_valid;
1854assign thr3_sf_is_valid_bf = tlu_retry[0] & trap_thread_g0[3] & tlu_trap_pc_0_valid;
1855
1856assign thr4_sf_is_valid_bf = tlu_retry[1] & trap_thread_g1[0] & tlu_trap_pc_1_valid;
1857assign thr5_sf_is_valid_bf = tlu_retry[1] & trap_thread_g1[1] & tlu_trap_pc_1_valid;
1858assign thr6_sf_is_valid_bf = tlu_retry[1] & trap_thread_g1[2] & tlu_trap_pc_1_valid;
1859assign thr7_sf_is_valid_bf = tlu_retry[1] & trap_thread_g1[3] & tlu_trap_pc_1_valid;
1860///////////////////////////////////////////////////////////////////////
1861// Decode which thread has LSU sync //
1862// Note: two threads can be synced by LSU at the same time; //
1863// One from each thread group. //
1864///////////////////////////////////////////////////////////////////////
1865assign load_flush_w[0] = dec_load_flush_w[0] & tid_dec_w[0] ;
1866assign load_flush_w[1] = dec_load_flush_w[0] & tid_dec_w[1] ;
1867assign load_flush_w[2] = dec_load_flush_w[0] & tid_dec_w[2] ;
1868assign load_flush_w[3] = dec_load_flush_w[0] & tid_dec_w[3] ;
1869assign load_flush_w[4] = dec_load_flush_w[1] & tid_dec_w[4] ;
1870assign load_flush_w[5] = dec_load_flush_w[1] & tid_dec_w[5] ;
1871assign load_flush_w[6] = dec_load_flush_w[1] & tid_dec_w[6] ;
1872assign load_flush_w[7] = dec_load_flush_w[1] & tid_dec_w[7] ;
1873
1874assign thr0_lsu_sync_bf = load_flush_w[0] ;
1875assign thr1_lsu_sync_bf = load_flush_w[1] ;
1876assign thr2_lsu_sync_bf = load_flush_w[2] ;
1877assign thr3_lsu_sync_bf = load_flush_w[3] ;
1878
1879assign thr4_lsu_sync_bf = load_flush_w[4] ;
1880assign thr5_lsu_sync_bf = load_flush_w[5] ;
1881assign thr6_lsu_sync_bf = load_flush_w[6] ;
1882assign thr7_lsu_sync_bf = load_flush_w[7] ;
1883
1884///////////////////////////////////////////////////////////////////////
1885
1886
1887///////////////////////////////////////////////////////////////////////
1888
1889ifu_ftu_agc_ctl_msff_ctl_macro__width_8 tlu_ceter_pscce_reg (
1890 .scan_in(tlu_ceter_pscce_reg_scanin),
1891 .scan_out(tlu_ceter_pscce_reg_scanout),
1892 .l1clk( l1clk ),
1893 .din (tlu_ceter_pscce[7:0]),
1894 .dout (ceter_pscce_ff[7:0]),
1895 .siclk(siclk),
1896 .soclk(soclk));
1897
1898///////////////////////////////////////////////////////////////////////
1899// Decode which thread has a branch misprediction this cycle //
1900// Note two threads can have branch misprediction at the same time; //
1901// One from each thread group. //
1902///////////////////////////////////////////////////////////////////////
1903
1904
1905ifu_ftu_agc_ctl_msff_ctl_macro__width_8 br_misp_data_reg (
1906 .scan_in(br_misp_data_reg_scanin),
1907 .scan_out(br_misp_data_reg_scanout),
1908 .l1clk( l1clk ),
1909 .din ({ftp_tid1_e[1:0], ftp_tid0_e[1:0] , dec_br_taken_e[1:0],dec_valid_e[1:0]}),
1910 .dout ({tid1_m[1:0], tid0_m[1:0] , agc_br_taken_m[1:0],agc_valid_m[1:0]}),
1911 .siclk(siclk),
1912 .soclk(soclk));
1913
1914assign br_taken_ff[1:0] = agc_br_taken_m[1:0] & agc_valid_m[1:0] ;
1915assign br_taken_dup_ff[1:0] = agc_br_taken_dup_m[1:0] & agc_valid_dup_m[1:0] ;
1916
1917ifu_ftu_agc_ctl_msff_ctl_macro__width_12 br_misp_data_dup_reg (
1918 .scan_in(br_misp_data_dup_reg_scanin),
1919 .scan_out(br_misp_data_dup_reg_scanout),
1920 .l1clk( l1clk ),
1921 .din ({ftp_tid1_e[1:0], ftp_tid0_e[1:0], tid1_dup_m[1:0] , tid0_dup_m[1:0], dec_br_taken_e[1:0],dec_valid_e[1:0]}),
1922 .dout ({tid1_dup_m[1:0], tid0_dup_m[1:0], tid1_dup_b[1:0] , tid0_dup_b[1:0],agc_br_taken_dup_m[1:0], agc_valid_dup_m[1:0]}),
1923 .siclk(siclk),
1924 .soclk(soclk));
1925
1926assign next_tid_dec_b[0] = ~tid0_dup_b[1] & ~tid0_dup_b[0] ;
1927assign next_tid_dec_b[1] = ~tid0_dup_b[1] & tid0_dup_b[0] ;
1928assign next_tid_dec_b[2] = tid0_dup_b[1] & ~tid0_dup_b[0] ;
1929assign next_tid_dec_b[3] = tid0_dup_b[1] & tid0_dup_b[0] ;
1930assign next_tid_dec_b[4] = ~tid1_dup_b[1] & ~tid1_dup_b[0] ;
1931assign next_tid_dec_b[5] = ~tid1_dup_b[1] & tid1_dup_b[0] ;
1932assign next_tid_dec_b[6] = tid1_dup_b[1] & ~tid1_dup_b[0] ;
1933assign next_tid_dec_b[7] = tid1_dup_b[1] & tid1_dup_b[0] ;
1934
1935ifu_ftu_agc_ctl_msff_ctl_macro__width_8 tid_dec_w_reg (
1936 .scan_in(tid_dec_w_reg_scanin),
1937 .scan_out(tid_dec_w_reg_scanout),
1938 .l1clk(l1clk),
1939 .din (next_tid_dec_b[7:0]),
1940 .dout (tid_dec_w[7:0]),
1941 .siclk(siclk),
1942 .soclk(soclk)
1943);
1944
1945
1946ifu_ftu_agc_ctl_msff_ctl_macro__width_8 curr_fetch_thr_c_reg (
1947 .scan_in(curr_fetch_thr_c_reg_scanin),
1948 .scan_out(curr_fetch_thr_c_reg_scanout),
1949 .l1clk(l1clk),
1950 .din (ftp_curr_fetch_thr_f[7:0]),
1951 .dout (curr_fetch_thr_c[7:0]),
1952 .siclk(siclk),
1953 .soclk(soclk)
1954);
1955
1956
1957ifu_ftu_agc_ctl_msff_ctl_macro__width_8 cms_curr_fetch_thr_c_reg (
1958 .scan_in(cms_curr_fetch_thr_c_reg_scanin),
1959 .scan_out(cms_curr_fetch_thr_c_reg_scanout),
1960 .l1clk(l1clk),
1961 .din (ftp_curr_fetch_thr_f[7:0]),
1962 .dout (cms_curr_fetch_thr_c[7:0]),
1963 .siclk(siclk),
1964 .soclk(soclk)
1965);
1966
1967
1968assign thr0_matches_curr_f = (~tid0_m[1] & ~tid0_m[0] & ftp_curr_fetch_thr_f[0] ) ;
1969assign thr1_matches_curr_f = (~tid0_m[1] & tid0_m[0] & ftp_curr_fetch_thr_f[1] ) ;
1970assign thr2_matches_curr_f = ( tid0_m[1] & ~tid0_m[0] & ftp_curr_fetch_thr_f[2] ) ;
1971assign thr3_matches_curr_f = ( tid0_m[1] & tid0_m[0] & ftp_curr_fetch_thr_f[3] ) ;
1972assign thr4_matches_curr_f = (~tid1_m[1] & ~tid1_m[0] & ftp_curr_fetch_thr_f[4] ) ;
1973assign thr5_matches_curr_f = (~tid1_m[1] & tid1_m[0] & ftp_curr_fetch_thr_f[5] ) ;
1974assign thr6_matches_curr_f = ( tid1_m[1] & ~tid1_m[0] & ftp_curr_fetch_thr_f[6] ) ;
1975assign thr7_matches_curr_f = ( tid1_m[1] & tid1_m[0] & ftp_curr_fetch_thr_f[7] ) ;
1976
1977assign thr0_matches_curr_c = (~tid0_m[1] & ~tid0_m[0] & curr_fetch_thr_c[0] ) ;
1978assign thr1_matches_curr_c = (~tid0_m[1] & tid0_m[0] & curr_fetch_thr_c[1] ) ;
1979assign thr2_matches_curr_c = ( tid0_m[1] & ~tid0_m[0] & curr_fetch_thr_c[2] ) ;
1980assign thr3_matches_curr_c = ( tid0_m[1] & tid0_m[0] & curr_fetch_thr_c[3] ) ;
1981assign thr4_matches_curr_c = (~tid1_m[1] & ~tid1_m[0] & curr_fetch_thr_c[4] ) ;
1982assign thr5_matches_curr_c = (~tid1_m[1] & tid1_m[0] & curr_fetch_thr_c[5] ) ;
1983assign thr6_matches_curr_c = ( tid1_m[1] & ~tid1_m[0] & curr_fetch_thr_c[6] ) ;
1984assign thr7_matches_curr_c = ( tid1_m[1] & tid1_m[0] & curr_fetch_thr_c[7] ) ;
1985
1986
1987assign thr0_br_misp_f = ~tid0_dup_m[1] & ~tid0_dup_m[0] & br_taken_dup_ff[0];
1988assign thr1_br_misp_f = ~tid0_dup_m[1] & tid0_dup_m[0] & br_taken_dup_ff[0];
1989assign thr2_br_misp_f = tid0_dup_m[1] & ~tid0_dup_m[0] & br_taken_dup_ff[0];
1990assign thr3_br_misp_f = tid0_dup_m[1] & tid0_dup_m[0] & br_taken_dup_ff[0];
1991
1992assign thr4_br_misp_f = ~tid1_dup_m[1] & ~tid1_dup_m[0] & br_taken_dup_ff[1];
1993assign thr5_br_misp_f = ~tid1_dup_m[1] & tid1_dup_m[0] & br_taken_dup_ff[1];
1994assign thr6_br_misp_f = tid1_dup_m[1] & ~tid1_dup_m[0] & br_taken_dup_ff[1];
1995assign thr7_br_misp_f = tid1_dup_m[1] & tid1_dup_m[0] & br_taken_dup_ff[1];
1996
1997
1998
1999///////////////////////////////////////////////////////////////////////
2000///////////////////////////////////////////////////////////////////////
2001///////////////////////////////////////////////////////////////////////
2002///////////////////////////////////////////////////////////////////////
2003///////////////////////////////////////////////////////////////////////
2004///////////////////////////////////////////////////////////////////////
2005///////////////////////////////////////////////////////////////////////
2006///////////////////////////////////////////////////////////////////////
2007///////////////////////////////////////////////////////////////////////
2008// This is the scheme to take out NPCs //
2009// We need to main a signal which tells us to fetch only one //
2010// instruction. The source for this signal is the TLU or C stage //
2011// incase we have to replay from fetches in C stage. //
2012// There one bit per thread. //
2013///////////////////////////////////////////////////////////////////////
2014// Thread 0 single fetch bit //
2015///////////////////////////////////////////////////////////////////////
2016assign set_thr0_sf_valid_bf = thr0_sf_is_valid_bf | (agc_thr0_reset_sf_c & sf_valid_c) ;
2017assign reset_thr0_sf_valid_bf = (ftp_fetch_thr_q_f[0] & ~invalidation_req_f) |
2018 (agc_by_pass_sel_f[0] & agc_by_pass_valid_f ) | tlu_flush_ifu_f[0] ;
2019assign hold_thr0_sf_valid_bf = ~set_thr0_sf_valid_bf & ~reset_thr0_sf_valid_bf ;
2020assign next_thr0_sf_valid_bf = (set_thr0_sf_valid_bf ) | (hold_thr0_sf_valid_bf & thr0_sf_valid_f) ;
2021
2022///////////////////////////////////////////////////////////////////////
2023// Thread 1 single fetch bit //
2024///////////////////////////////////////////////////////////////////////
2025assign set_thr1_sf_valid_bf = thr1_sf_is_valid_bf | (agc_thr1_reset_sf_c & sf_valid_c) ;
2026assign reset_thr1_sf_valid_bf = (ftp_fetch_thr_q_f[1] & ~invalidation_req_f) |
2027 (agc_by_pass_sel_f[1] & agc_by_pass_valid_f ) | tlu_flush_ifu_f[1] ;
2028assign hold_thr1_sf_valid_bf = ~set_thr1_sf_valid_bf & ~reset_thr1_sf_valid_bf ;
2029assign next_thr1_sf_valid_bf = (set_thr1_sf_valid_bf ) | (hold_thr1_sf_valid_bf & thr1_sf_valid_f) ;
2030
2031///////////////////////////////////////////////////////////////////////
2032// Thread 2 single fetch bit //
2033///////////////////////////////////////////////////////////////////////
2034assign set_thr2_sf_valid_bf = thr2_sf_is_valid_bf | (agc_thr2_reset_sf_c & sf_valid_c) ;
2035assign reset_thr2_sf_valid_bf = (ftp_fetch_thr_q_f[2] & ~invalidation_req_f) |
2036 (agc_by_pass_sel_f[2] & agc_by_pass_valid_f ) | tlu_flush_ifu_f[2] ;
2037assign hold_thr2_sf_valid_bf = ~set_thr2_sf_valid_bf & ~reset_thr2_sf_valid_bf ;
2038assign next_thr2_sf_valid_bf = (set_thr2_sf_valid_bf ) | (hold_thr2_sf_valid_bf & thr2_sf_valid_f) ;
2039
2040///////////////////////////////////////////////////////////////////////
2041// Thread 3 single fetch bit //
2042///////////////////////////////////////////////////////////////////////
2043assign set_thr3_sf_valid_bf = thr3_sf_is_valid_bf | (agc_thr3_reset_sf_c & sf_valid_c) ;
2044assign reset_thr3_sf_valid_bf = (ftp_fetch_thr_q_f[3] & ~invalidation_req_f) |
2045 (agc_by_pass_sel_f[3] & agc_by_pass_valid_f ) | tlu_flush_ifu_f[3] ;
2046assign hold_thr3_sf_valid_bf = ~set_thr3_sf_valid_bf & ~reset_thr3_sf_valid_bf ;
2047assign next_thr3_sf_valid_bf = (set_thr3_sf_valid_bf ) | (hold_thr3_sf_valid_bf & thr3_sf_valid_f) ;
2048
2049///////////////////////////////////////////////////////////////////////
2050// Thread 4 single fetch bit //
2051///////////////////////////////////////////////////////////////////////
2052assign set_thr4_sf_valid_bf = thr4_sf_is_valid_bf | (agc_thr4_reset_sf_c & sf_valid_c) ;
2053assign reset_thr4_sf_valid_bf = (ftp_fetch_thr_q_f[4] & ~invalidation_req_f) |
2054 (agc_by_pass_sel_f[4] & agc_by_pass_valid_f ) | tlu_flush_ifu_f[4] ;
2055assign hold_thr4_sf_valid_bf = ~set_thr4_sf_valid_bf & ~reset_thr4_sf_valid_bf ;
2056assign next_thr4_sf_valid_bf = (set_thr4_sf_valid_bf ) | (hold_thr4_sf_valid_bf & thr4_sf_valid_f) ;
2057
2058///////////////////////////////////////////////////////////////////////
2059// Thread 5 single fetch bit //
2060///////////////////////////////////////////////////////////////////////
2061assign set_thr5_sf_valid_bf = thr5_sf_is_valid_bf | (agc_thr5_reset_sf_c & sf_valid_c) ;
2062assign reset_thr5_sf_valid_bf = (ftp_fetch_thr_q_f[5] & ~invalidation_req_f) |
2063 (agc_by_pass_sel_f[5] & agc_by_pass_valid_f ) | tlu_flush_ifu_f[5] ;
2064assign hold_thr5_sf_valid_bf = ~set_thr5_sf_valid_bf & ~reset_thr5_sf_valid_bf ;
2065assign next_thr5_sf_valid_bf = (set_thr5_sf_valid_bf ) | (hold_thr5_sf_valid_bf & thr5_sf_valid_f) ;
2066
2067///////////////////////////////////////////////////////////////////////
2068// Thread 6 single fetch bit //
2069///////////////////////////////////////////////////////////////////////
2070assign set_thr6_sf_valid_bf = thr6_sf_is_valid_bf | (agc_thr6_reset_sf_c & sf_valid_c) ;
2071assign reset_thr6_sf_valid_bf = (ftp_fetch_thr_q_f[6] & ~invalidation_req_f) |
2072 (agc_by_pass_sel_f[6] & agc_by_pass_valid_f ) | tlu_flush_ifu_f[6] ;
2073assign hold_thr6_sf_valid_bf = ~set_thr6_sf_valid_bf & ~reset_thr6_sf_valid_bf ;
2074assign next_thr6_sf_valid_bf = (set_thr6_sf_valid_bf ) | (hold_thr6_sf_valid_bf & thr6_sf_valid_f) ;
2075
2076///////////////////////////////////////////////////////////////////////
2077// Thread 7 single fetch bit //
2078///////////////////////////////////////////////////////////////////////
2079assign set_thr7_sf_valid_bf = thr7_sf_is_valid_bf | (agc_thr7_reset_sf_c & sf_valid_c) ;
2080assign reset_thr7_sf_valid_bf = (ftp_fetch_thr_q_f[7] & ~invalidation_req_f) |
2081 (agc_by_pass_sel_f[7] & agc_by_pass_valid_f ) | tlu_flush_ifu_f[7] ;
2082assign hold_thr7_sf_valid_bf = ~set_thr7_sf_valid_bf & ~reset_thr7_sf_valid_bf ;
2083assign next_thr7_sf_valid_bf = (set_thr7_sf_valid_bf ) | (hold_thr7_sf_valid_bf & thr7_sf_valid_f) ;
2084
2085///////////////////////////////////////////////////////////////////////
2086// Flop the single fetch bits //
2087///////////////////////////////////////////////////////////////////////
2088ifu_ftu_agc_ctl_msff_ctl_macro__width_8 sf_valid_reg (
2089 .scan_in(sf_valid_reg_scanin),
2090 .scan_out(sf_valid_reg_scanout),
2091 .l1clk( l1clk ),
2092 .din ({next_thr7_sf_valid_bf,next_thr6_sf_valid_bf,next_thr5_sf_valid_bf,
2093 next_thr4_sf_valid_bf,next_thr3_sf_valid_bf,next_thr2_sf_valid_bf,
2094 next_thr1_sf_valid_bf,next_thr0_sf_valid_bf}),
2095 .dout ({thr7_sf_valid_f,thr6_sf_valid_f,thr5_sf_valid_f,thr4_sf_valid_f,
2096 thr3_sf_valid_f,thr2_sf_valid_f,thr1_sf_valid_f,thr0_sf_valid_f}),
2097 .siclk(siclk),
2098 .soclk(soclk));
2099
2100ifu_ftu_agc_ctl_msff_ctl_macro__width_8 sf_valid_dup_reg (
2101 .scan_in(sf_valid_dup_reg_scanin),
2102 .scan_out(sf_valid_dup_reg_scanout),
2103 .l1clk( l1clk ),
2104 .din ({next_thr7_sf_valid_bf,next_thr6_sf_valid_bf,next_thr5_sf_valid_bf,
2105 next_thr4_sf_valid_bf,next_thr3_sf_valid_bf,next_thr2_sf_valid_bf,
2106 next_thr1_sf_valid_bf,next_thr0_sf_valid_bf}),
2107 .dout ({agc_thr7_sf_valid_f,agc_thr6_sf_valid_f,agc_thr5_sf_valid_f,agc_thr4_sf_valid_f,
2108 agc_thr3_sf_valid_f,agc_thr2_sf_valid_f,agc_thr1_sf_valid_f,agc_thr0_sf_valid_f}),
2109 .siclk(siclk),
2110 .soclk(soclk));
2111
2112
2113
2114////////////////////////////////////////////////////////////////////////////
2115// single fetch bit with out the by_pass case. //
2116////////////////////////////////////////////////////////////////////////////
2117assign instr_sf_valid_f = (ftp_fetch_thr_q_f[0] & thr0_sf_valid_f) |
2118 (ftp_fetch_thr_q_f[1] & thr1_sf_valid_f) |
2119 (ftp_fetch_thr_q_f[2] & thr2_sf_valid_f) |
2120 (ftp_fetch_thr_q_f[3] & thr3_sf_valid_f) |
2121 (ftp_fetch_thr_q_f[4] & thr4_sf_valid_f) |
2122 (ftp_fetch_thr_q_f[5] & thr5_sf_valid_f) |
2123 (ftp_fetch_thr_q_f[6] & thr6_sf_valid_f) |
2124 (ftp_fetch_thr_q_f[7] & thr7_sf_valid_f) ;
2125
2126
2127////////////////////////////////////////////////////////////////////////////
2128// Note the thrx_sf_valid_f has been set when the miss was detected. //
2129////////////////////////////////////////////////////////////////////////////
2130assign sf_valid_by_pass_bf = (thr0_sf_valid_f & agc_by_pass_sel_bf[0] ) |
2131 (thr1_sf_valid_f & agc_by_pass_sel_bf[1] ) |
2132 (thr2_sf_valid_f & agc_by_pass_sel_bf[2] ) |
2133 (thr3_sf_valid_f & agc_by_pass_sel_bf[3] ) |
2134 (thr4_sf_valid_f & agc_by_pass_sel_bf[4] ) |
2135 (thr5_sf_valid_f & agc_by_pass_sel_bf[5] ) |
2136 (thr6_sf_valid_f & agc_by_pass_sel_bf[6] ) |
2137 (thr7_sf_valid_f & agc_by_pass_sel_bf[7] ) ;
2138
2139 ifu_ftu_agc_ctl_msff_ctl_macro__width_1 sf_valid_by_pass_f_reg (
2140 .scan_in(sf_valid_by_pass_f_reg_scanin),
2141 .scan_out(sf_valid_by_pass_f_reg_scanout),
2142 .l1clk( l1clk_pm1 ),
2143 .din (sf_valid_by_pass_bf),
2144 .dout (sf_valid_by_pass_f),
2145 .siclk(siclk),
2146 .soclk(soclk));
2147
2148 ifu_ftu_agc_ctl_msff_ctl_macro__width_1 sf_valid_by_pass_c_reg (
2149 .scan_in(sf_valid_by_pass_c_reg_scanin),
2150 .scan_out(sf_valid_by_pass_c_reg_scanout),
2151 .l1clk( l1clk_pm1 ),
2152 .din (sf_valid_by_pass_f),
2153 .dout (sf_valid_by_pass_c),
2154 .siclk(siclk),
2155 .soclk(soclk));
2156
2157 ifu_ftu_agc_ctl_msff_ctl_macro__width_1 sf_v_c (
2158 .scan_in(sf_v_c_scanin),
2159 .scan_out(sf_v_c_scanout),
2160 .l1clk( l1clk_pm1),
2161 .din (instr_sf_valid_f),
2162 .dout (instr_sf_valid_c),
2163 .siclk(siclk),
2164 .soclk(soclk));
2165assign ftu_instr_sf_valid_c = instr_sf_valid_c ;
2166
2167///////////////////////////////////////////////////////////////////////
2168// Thread 0 uncacheable bit //
2169///////////////////////////////////////////////////////////////////////
2170assign set_thr0_unc_valid_bf = thr0_unc_is_valid ;
2171assign reset_thr0_unc_valid_bf = (ftp_fetch_thr_q_f[0] ) |
2172 (agc_by_pass_sel_f[0] & agc_by_pass_valid_f ) | tlu_flush_ifu_f[0] ;
2173assign hold_thr0_unc_valid_bf = ~set_thr0_unc_valid_bf & ~reset_thr0_unc_valid_bf ;
2174assign next_thr0_unc_valid_bf = (set_thr0_unc_valid_bf ) | (hold_thr0_unc_valid_bf & thr0_unc_valid_f) ;
2175
2176///////////////////////////////////////////////////////////////////////
2177// Thread 1 uncacheable bit //
2178///////////////////////////////////////////////////////////////////////
2179assign set_thr1_unc_valid_bf = thr1_unc_is_valid ;
2180assign reset_thr1_unc_valid_bf = (ftp_fetch_thr_q_f[1] ) |
2181 (agc_by_pass_sel_f[1] & agc_by_pass_valid_f ) | tlu_flush_ifu_f[1] ;
2182assign hold_thr1_unc_valid_bf = ~set_thr1_unc_valid_bf & ~reset_thr1_unc_valid_bf ;
2183assign next_thr1_unc_valid_bf = (set_thr1_unc_valid_bf ) | (hold_thr1_unc_valid_bf & thr1_unc_valid_f) ;
2184
2185///////////////////////////////////////////////////////////////////////
2186// Thread 2 uncacheable bit //
2187///////////////////////////////////////////////////////////////////////
2188assign set_thr2_unc_valid_bf = thr2_unc_is_valid ;
2189assign reset_thr2_unc_valid_bf = (ftp_fetch_thr_q_f[2] ) |
2190 (agc_by_pass_sel_f[2] & agc_by_pass_valid_f ) | tlu_flush_ifu_f[2] ;
2191assign hold_thr2_unc_valid_bf = ~set_thr2_unc_valid_bf & ~reset_thr2_unc_valid_bf ;
2192assign next_thr2_unc_valid_bf = (set_thr2_unc_valid_bf ) | (hold_thr2_unc_valid_bf & thr2_unc_valid_f) ;
2193
2194///////////////////////////////////////////////////////////////////////
2195// Thread 3 uncacheable bit //
2196///////////////////////////////////////////////////////////////////////
2197assign set_thr3_unc_valid_bf = thr3_unc_is_valid ;
2198assign reset_thr3_unc_valid_bf = (ftp_fetch_thr_q_f[3] ) |
2199 (agc_by_pass_sel_f[3] & agc_by_pass_valid_f ) | tlu_flush_ifu_f[3] ;
2200assign hold_thr3_unc_valid_bf = ~set_thr3_unc_valid_bf & ~reset_thr3_unc_valid_bf ;
2201assign next_thr3_unc_valid_bf = (set_thr3_unc_valid_bf ) | (hold_thr3_unc_valid_bf & thr3_unc_valid_f) ;
2202
2203///////////////////////////////////////////////////////////////////////
2204// Thread 4 uncacheable bit //
2205///////////////////////////////////////////////////////////////////////
2206assign set_thr4_unc_valid_bf = thr4_unc_is_valid ;
2207assign reset_thr4_unc_valid_bf = (ftp_fetch_thr_q_f[4] ) |
2208 (agc_by_pass_sel_f[4] & agc_by_pass_valid_f ) | tlu_flush_ifu_f[4] ;
2209assign hold_thr4_unc_valid_bf = ~set_thr4_unc_valid_bf & ~reset_thr4_unc_valid_bf ;
2210assign next_thr4_unc_valid_bf = (set_thr4_unc_valid_bf ) | (hold_thr4_unc_valid_bf & thr4_unc_valid_f) ;
2211
2212///////////////////////////////////////////////////////////////////////
2213// Thread 5 uncacheable bit //
2214///////////////////////////////////////////////////////////////////////
2215assign set_thr5_unc_valid_bf = thr5_unc_is_valid ;
2216assign reset_thr5_unc_valid_bf = (ftp_fetch_thr_q_f[5] ) |
2217 (agc_by_pass_sel_f[5] & agc_by_pass_valid_f ) | tlu_flush_ifu_f[5] ;
2218assign hold_thr5_unc_valid_bf = ~set_thr5_unc_valid_bf & ~reset_thr5_unc_valid_bf ;
2219assign next_thr5_unc_valid_bf = (set_thr5_unc_valid_bf ) | (hold_thr5_unc_valid_bf & thr5_unc_valid_f) ;
2220
2221///////////////////////////////////////////////////////////////////////
2222// Thread 6 uncacheable bit //
2223///////////////////////////////////////////////////////////////////////
2224assign set_thr6_unc_valid_bf = thr6_unc_is_valid ;
2225assign reset_thr6_unc_valid_bf = (ftp_fetch_thr_q_f[6] ) |
2226 (agc_by_pass_sel_f[6] & agc_by_pass_valid_f ) | tlu_flush_ifu_f[6] ;
2227assign hold_thr6_unc_valid_bf = ~set_thr6_unc_valid_bf & ~reset_thr6_unc_valid_bf ;
2228assign next_thr6_unc_valid_bf = (set_thr6_unc_valid_bf ) | (hold_thr6_unc_valid_bf & thr6_unc_valid_f) ;
2229
2230///////////////////////////////////////////////////////////////////////
2231// Thread 7 uncacheable bit //
2232///////////////////////////////////////////////////////////////////////
2233assign set_thr7_unc_valid_bf = thr7_unc_is_valid ;
2234assign reset_thr7_unc_valid_bf = (ftp_fetch_thr_q_f[7] ) |
2235 (agc_by_pass_sel_f[7] & agc_by_pass_valid_f ) | tlu_flush_ifu_f[7] ;
2236assign hold_thr7_unc_valid_bf = ~set_thr7_unc_valid_bf & ~reset_thr7_unc_valid_bf ;
2237assign next_thr7_unc_valid_bf = (set_thr7_unc_valid_bf ) | (hold_thr7_unc_valid_bf & thr7_unc_valid_f) ;
2238
2239///////////////////////////////////////////////////////////////////////
2240// Flop the uncacheable bits //
2241///////////////////////////////////////////////////////////////////////
2242ifu_ftu_agc_ctl_msff_ctl_macro__width_8 unc_valid_reg (
2243 .scan_in(unc_valid_reg_scanin),
2244 .scan_out(unc_valid_reg_scanout),
2245 .l1clk( l1clk ),
2246 .din ({next_thr7_unc_valid_bf,next_thr6_unc_valid_bf,next_thr5_unc_valid_bf,
2247 next_thr4_unc_valid_bf,next_thr3_unc_valid_bf,next_thr2_unc_valid_bf,
2248 next_thr1_unc_valid_bf,next_thr0_unc_valid_bf}),
2249 .dout ({thr7_unc_valid_f,thr6_unc_valid_f,thr5_unc_valid_f,thr4_unc_valid_f,
2250 thr3_unc_valid_f,thr2_unc_valid_f,thr1_unc_valid_f,thr0_unc_valid_f}),
2251 .siclk(siclk),
2252 .soclk(soclk));
2253
2254///////////////////////////////////////////////////////////////////////
2255// thr0 by_pass lower bits incrementining. This is done early and //
2256// flopped to fix timing problems. //
2257///////////////////////////////////////////////////////////////////////
2258
2259assign thr0_by_pass_pc_incr_bit5 = ( agd_thr0_pc_4_2_f[4] & agd_thr0_pc_4_2_f[3] & agd_thr0_pc_4_2_f[2]) |
2260 (!thr0_unc_valid_f & agd_thr0_pc_4_2_f[4]);
2261
2262assign thr0_by_pass_inc_pc_bf[4] = ( thr0_unc_valid_f & agd_thr0_pc_4_2_f[4] & !agd_thr0_pc_4_2_f[2]) |
2263 ( thr0_unc_valid_f & agd_thr0_pc_4_2_f[4] & !agd_thr0_pc_4_2_f[3]) |
2264 (!thr0_unc_valid_f & !agd_thr0_pc_4_2_f[4]) |
2265 (!agd_thr0_pc_4_2_f[4] & agd_thr0_pc_4_2_f[3] & agd_thr0_pc_4_2_f[2]);
2266
2267assign thr0_by_pass_inc_pc_bf[3] = ( thr0_unc_valid_f & !agd_thr0_pc_4_2_f[3] & agd_thr0_pc_4_2_f[2]) |
2268 (!thr0_unc_valid_f & !agd_thr0_pc_4_2_f[4] & agd_thr0_pc_4_2_f[3]) |
2269 ( thr0_unc_valid_f & agd_thr0_pc_4_2_f[3] & !agd_thr0_pc_4_2_f[2]);
2270
2271assign thr0_by_pass_inc_pc_bf[2] = (!thr0_unc_valid_f & !agd_thr0_pc_4_2_f[4] & agd_thr0_pc_4_2_f[2]) |
2272 ( thr0_unc_valid_f & !agd_thr0_pc_4_2_f[2]);
2273
2274
2275
2276ifu_ftu_agc_ctl_msff_ctl_macro__width_4 thr0_pc_f_inc_reg (
2277 .scan_in(thr0_pc_f_inc_reg_scanin),
2278 .scan_out(thr0_pc_f_inc_reg_scanout),
2279 .l1clk( l1clk_pm1 ),
2280 .din ( {thr0_by_pass_inc_pc_bf[4:2], thr0_by_pass_pc_incr_bit5}),
2281 .dout ( {agc_thr0_byp_pc_update_bf[4:2],agc_thr0_byp_incr_bit5}),
2282 .siclk(siclk),
2283 .soclk(soclk));
2284
2285///////////////////////////////////////////////////////////////////////
2286// thr1 by_pass lower bits incrementining. This is done early and //
2287// flopped to fix timing problems. //
2288///////////////////////////////////////////////////////////////////////
2289///////////////////////////////////////////////////////////////////////
2290assign thr1_by_pass_pc_incr_bit5 = ( agd_thr1_pc_4_2_f[4] & agd_thr1_pc_4_2_f[3] & agd_thr1_pc_4_2_f[2]) |
2291 (!thr1_unc_valid_f & agd_thr1_pc_4_2_f[4]);
2292
2293assign thr1_by_pass_inc_pc_bf[4] = ( thr1_unc_valid_f & agd_thr1_pc_4_2_f[4] & !agd_thr1_pc_4_2_f[2]) |
2294 ( thr1_unc_valid_f & agd_thr1_pc_4_2_f[4] & !agd_thr1_pc_4_2_f[3]) |
2295 (!thr1_unc_valid_f & !agd_thr1_pc_4_2_f[4]) |
2296 (!agd_thr1_pc_4_2_f[4] & agd_thr1_pc_4_2_f[3] & agd_thr1_pc_4_2_f[2]);
2297
2298assign thr1_by_pass_inc_pc_bf[3] = ( thr1_unc_valid_f & !agd_thr1_pc_4_2_f[3] & agd_thr1_pc_4_2_f[2]) |
2299 (!thr1_unc_valid_f & !agd_thr1_pc_4_2_f[4] & agd_thr1_pc_4_2_f[3]) |
2300 ( thr1_unc_valid_f & agd_thr1_pc_4_2_f[3] & !agd_thr1_pc_4_2_f[2]);
2301
2302assign thr1_by_pass_inc_pc_bf[2] = (!thr1_unc_valid_f & !agd_thr1_pc_4_2_f[4] & agd_thr1_pc_4_2_f[2]) |
2303 ( thr1_unc_valid_f & !agd_thr1_pc_4_2_f[2]);
2304
2305
2306ifu_ftu_agc_ctl_msff_ctl_macro__width_4 thr1_pc_f_inc_reg (
2307 .scan_in(thr1_pc_f_inc_reg_scanin),
2308 .scan_out(thr1_pc_f_inc_reg_scanout),
2309 .l1clk( l1clk_pm1 ),
2310 .din ( {thr1_by_pass_inc_pc_bf[4:2], thr1_by_pass_pc_incr_bit5}),
2311 .dout ( {agc_thr1_byp_pc_update_bf[4:2],agc_thr1_byp_incr_bit5}),
2312 .siclk(siclk),
2313 .soclk(soclk));
2314
2315///////////////////////////////////////////////////////////////////////
2316// thr2 by_pass lower bits incrementining. This is done early and //
2317// flopped to fix timing problems. //
2318///////////////////////////////////////////////////////////////////////
2319assign thr2_by_pass_pc_incr_bit5 = ( agd_thr2_pc_4_2_f[4] & agd_thr2_pc_4_2_f[3] & agd_thr2_pc_4_2_f[2]) |
2320 (!thr2_unc_valid_f & agd_thr2_pc_4_2_f[4]);
2321
2322assign thr2_by_pass_inc_pc_bf[4] = ( thr2_unc_valid_f & agd_thr2_pc_4_2_f[4] & !agd_thr2_pc_4_2_f[2]) |
2323 ( thr2_unc_valid_f & agd_thr2_pc_4_2_f[4] & !agd_thr2_pc_4_2_f[3]) |
2324 (!thr2_unc_valid_f & !agd_thr2_pc_4_2_f[4]) |
2325 (!agd_thr2_pc_4_2_f[4] & agd_thr2_pc_4_2_f[3] & agd_thr2_pc_4_2_f[2]);
2326
2327assign thr2_by_pass_inc_pc_bf[3] = ( thr2_unc_valid_f & !agd_thr2_pc_4_2_f[3] & agd_thr2_pc_4_2_f[2]) |
2328 (!thr2_unc_valid_f & !agd_thr2_pc_4_2_f[4] & agd_thr2_pc_4_2_f[3]) |
2329 ( thr2_unc_valid_f & agd_thr2_pc_4_2_f[3] & !agd_thr2_pc_4_2_f[2]);
2330
2331assign thr2_by_pass_inc_pc_bf[2] = (!thr2_unc_valid_f & !agd_thr2_pc_4_2_f[4] & agd_thr2_pc_4_2_f[2]) |
2332 ( thr2_unc_valid_f & !agd_thr2_pc_4_2_f[2]);
2333
2334
2335ifu_ftu_agc_ctl_msff_ctl_macro__width_4 thr2_pc_f_inc_reg (
2336 .scan_in(thr2_pc_f_inc_reg_scanin),
2337 .scan_out(thr2_pc_f_inc_reg_scanout),
2338 .l1clk( l1clk_pm1 ),
2339 .din ( {thr2_by_pass_inc_pc_bf[4:2], thr2_by_pass_pc_incr_bit5}),
2340 .dout ( {agc_thr2_byp_pc_update_bf[4:2],agc_thr2_byp_incr_bit5}),
2341 .siclk(siclk),
2342 .soclk(soclk));
2343
2344///////////////////////////////////////////////////////////////////////
2345// thr3 by_pass lower bits incrementining. This is done early and //
2346// flopped to fix timing problems. //
2347///////////////////////////////////////////////////////////////////////
2348assign thr3_by_pass_pc_incr_bit5 = ( agd_thr3_pc_4_2_f[4] & agd_thr3_pc_4_2_f[3] & agd_thr3_pc_4_2_f[2]) |
2349 (!thr3_unc_valid_f & agd_thr3_pc_4_2_f[4]);
2350
2351assign thr3_by_pass_inc_pc_bf[4] = ( thr3_unc_valid_f & agd_thr3_pc_4_2_f[4] & !agd_thr3_pc_4_2_f[2]) |
2352 ( thr3_unc_valid_f & agd_thr3_pc_4_2_f[4] & !agd_thr3_pc_4_2_f[3]) |
2353 (!thr3_unc_valid_f & !agd_thr3_pc_4_2_f[4]) |
2354 (!agd_thr3_pc_4_2_f[4] & agd_thr3_pc_4_2_f[3] & agd_thr3_pc_4_2_f[2]);
2355
2356assign thr3_by_pass_inc_pc_bf[3] = ( thr3_unc_valid_f & !agd_thr3_pc_4_2_f[3] & agd_thr3_pc_4_2_f[2]) |
2357 (!thr3_unc_valid_f & !agd_thr3_pc_4_2_f[4] & agd_thr3_pc_4_2_f[3]) |
2358 ( thr3_unc_valid_f & agd_thr3_pc_4_2_f[3] & !agd_thr3_pc_4_2_f[2]);
2359
2360assign thr3_by_pass_inc_pc_bf[2] = (!thr3_unc_valid_f & !agd_thr3_pc_4_2_f[4] & agd_thr3_pc_4_2_f[2]) |
2361 ( thr3_unc_valid_f & !agd_thr3_pc_4_2_f[2]);
2362
2363
2364ifu_ftu_agc_ctl_msff_ctl_macro__width_4 thr3_pc_f_inc_reg (
2365 .scan_in(thr3_pc_f_inc_reg_scanin),
2366 .scan_out(thr3_pc_f_inc_reg_scanout),
2367 .l1clk( l1clk_pm1 ),
2368 .din ( {thr3_by_pass_inc_pc_bf[4:2], thr3_by_pass_pc_incr_bit5}),
2369 .dout ( {agc_thr3_byp_pc_update_bf[4:2],agc_thr3_byp_incr_bit5}),
2370 .siclk(siclk),
2371 .soclk(soclk));
2372
2373///////////////////////////////////////////////////////////////////////
2374// thr4 by_pass lower bits incrementining. This is done early and //
2375// flopped to fix timing problems. //
2376///////////////////////////////////////////////////////////////////////
2377assign thr4_by_pass_pc_incr_bit5 = ( agd_thr4_pc_4_2_f[4] & agd_thr4_pc_4_2_f[3] & agd_thr4_pc_4_2_f[2]) |
2378 (!thr4_unc_valid_f & agd_thr4_pc_4_2_f[4]);
2379
2380assign thr4_by_pass_inc_pc_bf[4] = ( thr4_unc_valid_f & agd_thr4_pc_4_2_f[4] & !agd_thr4_pc_4_2_f[2]) |
2381 ( thr4_unc_valid_f & agd_thr4_pc_4_2_f[4] & !agd_thr4_pc_4_2_f[3]) |
2382 (!thr4_unc_valid_f & !agd_thr4_pc_4_2_f[4]) |
2383 (!agd_thr4_pc_4_2_f[4] & agd_thr4_pc_4_2_f[3] & agd_thr4_pc_4_2_f[2]);
2384
2385assign thr4_by_pass_inc_pc_bf[3] = ( thr4_unc_valid_f & !agd_thr4_pc_4_2_f[3] & agd_thr4_pc_4_2_f[2]) |
2386 (!thr4_unc_valid_f & !agd_thr4_pc_4_2_f[4] & agd_thr4_pc_4_2_f[3]) |
2387 ( thr4_unc_valid_f & agd_thr4_pc_4_2_f[3] & !agd_thr4_pc_4_2_f[2]);
2388
2389assign thr4_by_pass_inc_pc_bf[2] = (!thr4_unc_valid_f & !agd_thr4_pc_4_2_f[4] & agd_thr4_pc_4_2_f[2]) |
2390 ( thr4_unc_valid_f & !agd_thr4_pc_4_2_f[2]);
2391
2392
2393ifu_ftu_agc_ctl_msff_ctl_macro__width_4 thr4_pc_f_inc_reg (
2394 .scan_in(thr4_pc_f_inc_reg_scanin),
2395 .scan_out(thr4_pc_f_inc_reg_scanout),
2396 .l1clk( l1clk_pm1 ),
2397 .din ( {thr4_by_pass_inc_pc_bf[4:2], thr4_by_pass_pc_incr_bit5}),
2398 .dout ( {agc_thr4_byp_pc_update_bf[4:2],agc_thr4_byp_incr_bit5}),
2399 .siclk(siclk),
2400 .soclk(soclk));
2401
2402///////////////////////////////////////////////////////////////////////
2403// thr5 by_pass lower bits incrementining. This is done early and //
2404// flopped to fix timing problems. //
2405///////////////////////////////////////////////////////////////////////
2406assign thr5_by_pass_pc_incr_bit5 = ( agd_thr5_pc_4_2_f[4] & agd_thr5_pc_4_2_f[3] & agd_thr5_pc_4_2_f[2]) |
2407 (!thr5_unc_valid_f & agd_thr5_pc_4_2_f[4]);
2408
2409assign thr5_by_pass_inc_pc_bf[4] = ( thr5_unc_valid_f & agd_thr5_pc_4_2_f[4] & !agd_thr5_pc_4_2_f[2]) |
2410 ( thr5_unc_valid_f & agd_thr5_pc_4_2_f[4] & !agd_thr5_pc_4_2_f[3]) |
2411 (!thr5_unc_valid_f & !agd_thr5_pc_4_2_f[4]) |
2412 (!agd_thr5_pc_4_2_f[4] & agd_thr5_pc_4_2_f[3] & agd_thr5_pc_4_2_f[2]);
2413
2414assign thr5_by_pass_inc_pc_bf[3] = ( thr5_unc_valid_f & !agd_thr5_pc_4_2_f[3] & agd_thr5_pc_4_2_f[2]) |
2415 (!thr5_unc_valid_f & !agd_thr5_pc_4_2_f[4] & agd_thr5_pc_4_2_f[3]) |
2416 ( thr5_unc_valid_f & agd_thr5_pc_4_2_f[3] & !agd_thr5_pc_4_2_f[2]);
2417
2418assign thr5_by_pass_inc_pc_bf[2] = (!thr5_unc_valid_f & !agd_thr5_pc_4_2_f[4] & agd_thr5_pc_4_2_f[2]) |
2419 ( thr5_unc_valid_f & !agd_thr5_pc_4_2_f[2]);
2420
2421
2422ifu_ftu_agc_ctl_msff_ctl_macro__width_4 thr5_pc_f_inc_reg (
2423 .scan_in(thr5_pc_f_inc_reg_scanin),
2424 .scan_out(thr5_pc_f_inc_reg_scanout),
2425 .l1clk( l1clk_pm1 ),
2426 .din ( {thr5_by_pass_inc_pc_bf[4:2], thr5_by_pass_pc_incr_bit5}),
2427 .dout ( {agc_thr5_byp_pc_update_bf[4:2],agc_thr5_byp_incr_bit5}),
2428 .siclk(siclk),
2429 .soclk(soclk));
2430
2431///////////////////////////////////////////////////////////////////////
2432// thr6 by_pass lower bits incrementining. This is done early and //
2433// flopped to fix timing problems. //
2434///////////////////////////////////////////////////////////////////////
2435assign thr6_by_pass_pc_incr_bit5 = ( agd_thr6_pc_4_2_f[4] & agd_thr6_pc_4_2_f[3] & agd_thr6_pc_4_2_f[2]) |
2436 (!thr6_unc_valid_f & agd_thr6_pc_4_2_f[4]);
2437
2438assign thr6_by_pass_inc_pc_bf[4] = ( thr6_unc_valid_f & agd_thr6_pc_4_2_f[4] & !agd_thr6_pc_4_2_f[2]) |
2439 ( thr6_unc_valid_f & agd_thr6_pc_4_2_f[4] & !agd_thr6_pc_4_2_f[3]) |
2440 (!thr6_unc_valid_f & !agd_thr6_pc_4_2_f[4]) |
2441 (!agd_thr6_pc_4_2_f[4] & agd_thr6_pc_4_2_f[3] & agd_thr6_pc_4_2_f[2]);
2442
2443assign thr6_by_pass_inc_pc_bf[3] = ( thr6_unc_valid_f & !agd_thr6_pc_4_2_f[3] & agd_thr6_pc_4_2_f[2]) |
2444 (!thr6_unc_valid_f & !agd_thr6_pc_4_2_f[4] & agd_thr6_pc_4_2_f[3]) |
2445 ( thr6_unc_valid_f & agd_thr6_pc_4_2_f[3] & !agd_thr6_pc_4_2_f[2]);
2446
2447assign thr6_by_pass_inc_pc_bf[2] = (!thr6_unc_valid_f & !agd_thr6_pc_4_2_f[4] & agd_thr6_pc_4_2_f[2]) |
2448 ( thr6_unc_valid_f & !agd_thr6_pc_4_2_f[2]);
2449
2450
2451
2452ifu_ftu_agc_ctl_msff_ctl_macro__width_4 thr6_pc_f_inc_reg (
2453 .scan_in(thr6_pc_f_inc_reg_scanin),
2454 .scan_out(thr6_pc_f_inc_reg_scanout),
2455 .l1clk( l1clk_pm1 ),
2456 .din ( {thr6_by_pass_inc_pc_bf[4:2], thr6_by_pass_pc_incr_bit5}),
2457 .dout ( {agc_thr6_byp_pc_update_bf[4:2],agc_thr6_byp_incr_bit5}),
2458 .siclk(siclk),
2459 .soclk(soclk));
2460
2461///////////////////////////////////////////////////////////////////////
2462// thr7 by_pass lower bits incrementining. This is done early and //
2463// flopped to fix timing problems. //
2464///////////////////////////////////////////////////////////////////////
2465assign thr7_by_pass_pc_incr_bit5 = ( agd_thr7_pc_4_2_f[4] & agd_thr7_pc_4_2_f[3] & agd_thr7_pc_4_2_f[2]) |
2466 (!thr7_unc_valid_f & agd_thr7_pc_4_2_f[4]);
2467
2468assign thr7_by_pass_inc_pc_bf[4] = ( thr7_unc_valid_f & agd_thr7_pc_4_2_f[4] & !agd_thr7_pc_4_2_f[2]) |
2469 ( thr7_unc_valid_f & agd_thr7_pc_4_2_f[4] & !agd_thr7_pc_4_2_f[3]) |
2470 (!thr7_unc_valid_f & !agd_thr7_pc_4_2_f[4]) |
2471 (!agd_thr7_pc_4_2_f[4] & agd_thr7_pc_4_2_f[3] & agd_thr7_pc_4_2_f[2]);
2472
2473assign thr7_by_pass_inc_pc_bf[3] = ( thr7_unc_valid_f & !agd_thr7_pc_4_2_f[3] & agd_thr7_pc_4_2_f[2]) |
2474 (!thr7_unc_valid_f & !agd_thr7_pc_4_2_f[4] & agd_thr7_pc_4_2_f[3]) |
2475 ( thr7_unc_valid_f & agd_thr7_pc_4_2_f[3] & !agd_thr7_pc_4_2_f[2]);
2476
2477assign thr7_by_pass_inc_pc_bf[2] = (!thr7_unc_valid_f & !agd_thr7_pc_4_2_f[4] & agd_thr7_pc_4_2_f[2]) |
2478 ( thr7_unc_valid_f & !agd_thr7_pc_4_2_f[2]);
2479
2480
2481ifu_ftu_agc_ctl_msff_ctl_macro__width_4 thr7_pc_f_inc_reg (
2482 .scan_in(thr7_pc_f_inc_reg_scanin),
2483 .scan_out(thr7_pc_f_inc_reg_scanout),
2484 .l1clk( l1clk_pm1 ),
2485 .din ( {thr7_by_pass_inc_pc_bf[4:2], thr7_by_pass_pc_incr_bit5}),
2486 .dout ( {agc_thr7_byp_pc_update_bf[4:2],agc_thr7_byp_incr_bit5}),
2487 .siclk(siclk),
2488 .soclk(soclk));
2489
2490///////////////////////////////////////////////////////////////////////
2491///////////////////////////////////////////////////////////////////////
2492
2493assign last_fetch_was_thr0_bf = ftp_fetch_thr_q_f[0] & ~agc_by_pass_valid_f;
2494assign last_fetch_was_thr1_bf = ftp_fetch_thr_q_f[1] & ~agc_by_pass_valid_f;
2495assign last_fetch_was_thr2_bf = ftp_fetch_thr_q_f[2] & ~agc_by_pass_valid_f;
2496assign last_fetch_was_thr3_bf = ftp_fetch_thr_q_f[3] & ~agc_by_pass_valid_f;
2497assign last_fetch_was_thr4_bf = ftp_fetch_thr_q_f[4] & ~agc_by_pass_valid_f;
2498assign last_fetch_was_thr5_bf = ftp_fetch_thr_q_f[5] & ~agc_by_pass_valid_f;
2499assign last_fetch_was_thr6_bf = ftp_fetch_thr_q_f[6] & ~agc_by_pass_valid_f;
2500assign last_fetch_was_thr7_bf = ftp_fetch_thr_q_f[7] & ~agc_by_pass_valid_f;
2501
2502///////////////////////////////////////////////////////////////////////
2503///////////////////////////////////////////////////////////////////////
2504
2505ifu_ftu_agc_ctl_msff_ctl_macro__width_8 tlu_flush_ifu_reg (
2506 .scan_in(tlu_flush_ifu_reg_scanin),
2507 .scan_out(tlu_flush_ifu_reg_scanout),
2508 .l1clk( l1clk),
2509 .din (tlu_flush_ifu[7:0]),
2510 .dout (tlu_flush_ifu_f[7:0]),
2511 .siclk(siclk),
2512 .soclk(soclk));
2513
2514ifu_ftu_agc_ctl_msff_ctl_macro__width_16 tlu_flush_ifu_d_reg (
2515 .scan_in(tlu_flush_ifu_d_reg_scanin),
2516 .scan_out(tlu_flush_ifu_d_reg_scanout),
2517 .l1clk( l1clk),
2518 .din ({tlu_flush_ifu_f[7:0],tlu_flush_ifu_f_d[7:0]}),
2519 .dout ({tlu_flush_ifu_f_d[7:0],tlu_flush_ifu_f_dd[7:0]}),
2520 .siclk(siclk),
2521 .soclk(soclk));
2522
2523ifu_ftu_agc_ctl_msff_ctl_macro__width_8 cms_tlu_flush_ifu_reg (
2524 .scan_in(cms_tlu_flush_ifu_reg_scanin),
2525 .scan_out(cms_tlu_flush_ifu_reg_scanout),
2526 .l1clk( l1clk),
2527 .din (tlu_flush_ifu[7:0]),
2528 .dout (cms_tlu_flush_f[7:0]),
2529 .siclk(siclk),
2530 .soclk(soclk));
2531
2532
2533ifu_ftu_agc_ctl_msff_ctl_macro__width_8 load_flush_reg (
2534 .scan_in(load_flush_reg_scanin),
2535 .scan_out(load_flush_reg_scanout),
2536 .l1clk( l1clk_pm1),
2537 .din (load_flush_w[7:0]),
2538 .dout (load_flush_f[7:0]),
2539 .siclk(siclk),
2540 .soclk(soclk));
2541
2542
2543assign agc_kill_fetch_cv_f = (((ftu_thr0_redirect_int_bf | agc_thr0_micro_flush_unq_c | tlu_flush_ifu_f[0] | load_flush_f[0] |
2544 tlu_flush_ifu_f_d[0] | tlu_flush_ifu_f_dd[0] | thr0_sf_kill |
2545 thr0_sf_kill_d | thr0_br_misp_no_match_f | thr0_kill_after_invalidation |
2546 thr0_kill_after_invalidation_d | thr0_exception_valid_kill_c2) & ftp_curr_fetch_thr_f[0])|
2547 ((ftu_thr1_redirect_int_bf | agc_thr1_micro_flush_unq_c | tlu_flush_ifu_f[1] | load_flush_f[1] |
2548 tlu_flush_ifu_f_d[1] | tlu_flush_ifu_f_dd[1] | thr1_sf_kill |
2549 thr1_sf_kill_d | thr1_br_misp_no_match_f | thr1_kill_after_invalidation |
2550 thr1_kill_after_invalidation_d | thr1_exception_valid_kill_c2) & ftp_curr_fetch_thr_f[1])|
2551 ((ftu_thr2_redirect_int_bf | agc_thr2_micro_flush_unq_c | tlu_flush_ifu_f[2] | load_flush_f[2] |
2552 tlu_flush_ifu_f_d[2] | tlu_flush_ifu_f_dd[2] | thr2_sf_kill |
2553 thr2_sf_kill_d | thr2_br_misp_no_match_f | thr2_kill_after_invalidation |
2554 thr2_kill_after_invalidation_d | thr2_exception_valid_kill_c2) & ftp_curr_fetch_thr_f[2])|
2555 ((ftu_thr3_redirect_int_bf | agc_thr3_micro_flush_unq_c | tlu_flush_ifu_f[3] | load_flush_f[3] |
2556 tlu_flush_ifu_f_d[3] | tlu_flush_ifu_f_dd[3] | thr3_sf_kill |
2557 thr3_sf_kill_d | thr3_br_misp_no_match_f | thr3_kill_after_invalidation |
2558 thr3_kill_after_invalidation_d | thr3_exception_valid_kill_c2) & ftp_curr_fetch_thr_f[3])|
2559 ((ftu_thr4_redirect_int_bf | agc_thr4_micro_flush_unq_c | tlu_flush_ifu_f[4] | load_flush_f[4] |
2560 tlu_flush_ifu_f_d[4] | tlu_flush_ifu_f_dd[4] | thr4_sf_kill |
2561 thr4_sf_kill_d | thr4_br_misp_no_match_f | thr4_kill_after_invalidation |
2562 thr4_kill_after_invalidation_d | thr4_exception_valid_kill_c2) & ftp_curr_fetch_thr_f[4])|
2563 ((ftu_thr5_redirect_int_bf | agc_thr5_micro_flush_unq_c | tlu_flush_ifu_f[5] | load_flush_f[5] |
2564 tlu_flush_ifu_f_d[5] | tlu_flush_ifu_f_dd[5] | thr5_sf_kill |
2565 thr5_sf_kill_d | thr5_br_misp_no_match_f | thr5_kill_after_invalidation |
2566 thr5_kill_after_invalidation_d | thr5_exception_valid_kill_c2) & ftp_curr_fetch_thr_f[5])|
2567 ((ftu_thr6_redirect_int_bf | agc_thr6_micro_flush_unq_c | tlu_flush_ifu_f[6] | load_flush_f[6] |
2568 tlu_flush_ifu_f_d[6] | tlu_flush_ifu_f_dd[6] | thr6_sf_kill |
2569 thr6_sf_kill_d | thr6_br_misp_no_match_f | thr6_kill_after_invalidation |
2570 thr6_kill_after_invalidation_d | thr6_exception_valid_kill_c2) & ftp_curr_fetch_thr_f[6])|
2571 ((ftu_thr7_redirect_int_bf | agc_thr7_micro_flush_unq_c | tlu_flush_ifu_f[7] | load_flush_f[7] |
2572 tlu_flush_ifu_f_d[7] | tlu_flush_ifu_f_dd[7] | thr7_sf_kill |
2573 thr7_sf_kill_d | thr7_br_misp_no_match_f | thr7_kill_after_invalidation |
2574 thr7_kill_after_invalidation_d | thr7_exception_valid_kill_c2) & ftp_curr_fetch_thr_f[7])) ;
2575
2576
2577
2578
2579assign next_br_misp_match = (br_taken_ff[0] & ~tid0_m[1] & ~tid0_m[0] & thr0_matches_curr_c) |
2580 (br_taken_ff[0] & ~tid0_m[1] & tid0_m[0] & thr1_matches_curr_c) |
2581 (br_taken_ff[0] & tid0_m[1] & ~tid0_m[0] & thr2_matches_curr_c) |
2582 (br_taken_ff[0] & tid0_m[1] & tid0_m[0] & thr3_matches_curr_c) |
2583 (br_taken_ff[1] & ~tid1_m[1] & ~tid1_m[0] & thr4_matches_curr_c) |
2584 (br_taken_ff[1] & ~tid1_m[1] & tid1_m[0] & thr5_matches_curr_c) |
2585 (br_taken_ff[1] & tid1_m[1] & ~tid1_m[0] & thr6_matches_curr_c) |
2586 (br_taken_ff[1] & tid1_m[1] & tid1_m[0] & thr7_matches_curr_c) ;
2587
2588assign next_br_misp_match_int = (br_taken_ff[0] & ~tid0_m[1] & ~tid0_m[0] & thr0_matches_curr_c) |
2589 (br_taken_ff[0] & ~tid0_m[1] & tid0_m[0] & thr1_matches_curr_c) |
2590 (br_taken_ff[0] & tid0_m[1] & ~tid0_m[0] & thr2_matches_curr_c) |
2591 (br_taken_ff[0] & tid0_m[1] & tid0_m[0] & thr3_matches_curr_c) |
2592 (br_taken_ff[1] & ~tid1_m[1] & ~tid1_m[0] & thr4_matches_curr_c) |
2593 (br_taken_ff[1] & ~tid1_m[1] & tid1_m[0] & thr5_matches_curr_c) |
2594 (br_taken_ff[1] & tid1_m[1] & ~tid1_m[0] & thr6_matches_curr_c) |
2595 (br_taken_ff[1] & tid1_m[1] & tid1_m[0] & thr7_matches_curr_c) ;
2596
2597
2598ifu_ftu_agc_ctl_msff_ctl_macro__width_1 kill_fetch_vc_reg (
2599 .scan_in(kill_fetch_vc_reg_scanin),
2600 .scan_out(kill_fetch_vc_reg_scanout),
2601 .l1clk( l1clk_pm1),
2602 .din (agc_kill_fetch_cv_f),
2603 .dout (kill_fetch_cv_c_unq),
2604 .siclk(siclk),
2605 .soclk(soclk));
2606
2607ifu_ftu_agc_ctl_msff_ctl_macro__width_1 kill_fetch_vc_2_reg (
2608 .scan_in(kill_fetch_vc_2_reg_scanin),
2609 .scan_out(kill_fetch_vc_2_reg_scanout),
2610 .l1clk( l1clk_pm1),
2611 .din (agc_kill_fetch_cv_f),
2612 .dout (kill_fetch_cv_c_unq2),
2613 .siclk(siclk),
2614 .soclk(soclk));
2615
2616assign exception_valid_kill_in = exception_valid_c & (curr_fetch_thr_c[7:0] == ftp_curr_fetch_thr_f[7:0]) ;
2617ifu_ftu_agc_ctl_msff_ctl_macro__width_1 exception_valid_kill_reg (
2618 .scan_in(exception_valid_kill_reg_scanin),
2619 .scan_out(exception_valid_kill_reg_scanout),
2620 .l1clk( l1clk_pm1),
2621 .din (exception_valid_kill_in),
2622 .dout (exception_valid_kill_c),
2623 .siclk(siclk),
2624 .soclk(soclk));
2625
2626ifu_ftu_agc_ctl_msff_ctl_macro__width_1 exception_valid_kill1_reg (
2627 .scan_in(exception_valid_kill1_reg_scanin),
2628 .scan_out(exception_valid_kill1_reg_scanout),
2629 .l1clk( l1clk_pm1),
2630 .din (exception_valid_kill_in),
2631 .dout (exception_valid_kill_int_c),
2632 .siclk(siclk),
2633 .soclk(soclk));
2634
2635assign agc_kill_fetch_cv_c = kill_fetch_cv_c_unq | next_br_misp_match | exception_valid_kill_c;
2636assign agc_kill_fetch_cv_int1_c = kill_fetch_cv_c_unq2 | next_br_misp_match_int | exception_valid_kill_int_c;
2637assign agc_kill_fetch_cv_int2_c = kill_fetch_cv_c_unq2 | next_br_misp_match_int | exception_valid_kill_int_c;
2638
2639
2640
2641assign thr0_exception_valid_kill_in = exception_valid_c & curr_fetch_thr_c[0] & ~ftu_ibu_redirect_bf[0];
2642assign thr1_exception_valid_kill_in = exception_valid_c & curr_fetch_thr_c[1] & ~ftu_ibu_redirect_bf[1];
2643assign thr2_exception_valid_kill_in = exception_valid_c & curr_fetch_thr_c[2] & ~ftu_ibu_redirect_bf[2];
2644assign thr3_exception_valid_kill_in = exception_valid_c & curr_fetch_thr_c[3] & ~ftu_ibu_redirect_bf[3];
2645assign thr4_exception_valid_kill_in = exception_valid_c & curr_fetch_thr_c[4] & ~ftu_ibu_redirect_bf[4];
2646assign thr5_exception_valid_kill_in = exception_valid_c & curr_fetch_thr_c[5] & ~ftu_ibu_redirect_bf[5];
2647assign thr6_exception_valid_kill_in = exception_valid_c & curr_fetch_thr_c[6] & ~ftu_ibu_redirect_bf[6];
2648assign thr7_exception_valid_kill_in = exception_valid_c & curr_fetch_thr_c[7] & ~ftu_ibu_redirect_bf[7];
2649
2650ifu_ftu_agc_ctl_msff_ctl_macro__width_16 thrx_exception_valid_kill_reg (
2651 .scan_in(thrx_exception_valid_kill_reg_scanin),
2652 .scan_out(thrx_exception_valid_kill_reg_scanout),
2653 .l1clk( l1clk_pm1),
2654 .din ({thr7_exception_valid_kill_in,thr6_exception_valid_kill_in,
2655 thr5_exception_valid_kill_in,thr4_exception_valid_kill_in,
2656 thr3_exception_valid_kill_in,thr2_exception_valid_kill_in,
2657 thr1_exception_valid_kill_in,thr0_exception_valid_kill_in,
2658 thr7_exception_valid_kill_c2_in, thr6_exception_valid_kill_c2_in,
2659 thr5_exception_valid_kill_c2_in, thr4_exception_valid_kill_c2_in,
2660 thr3_exception_valid_kill_c2_in, thr2_exception_valid_kill_c2_in,
2661 thr1_exception_valid_kill_c2_in, thr0_exception_valid_kill_c2_in
2662 }),
2663 .dout ({thr7_exception_valid_kill_c,thr6_exception_valid_kill_c,
2664 thr5_exception_valid_kill_c,thr4_exception_valid_kill_c,
2665 thr3_exception_valid_kill_c,thr2_exception_valid_kill_c,
2666 thr1_exception_valid_kill_c,thr0_exception_valid_kill_c,
2667 thr7_exception_valid_kill_c2,thr6_exception_valid_kill_c2,
2668 thr5_exception_valid_kill_c2,thr4_exception_valid_kill_c2,
2669 thr3_exception_valid_kill_c2,thr2_exception_valid_kill_c2,
2670 thr1_exception_valid_kill_c2,thr0_exception_valid_kill_c2
2671 }),
2672 .siclk(siclk),
2673 .soclk(soclk));
2674
2675assign thr0_exception_valid_kill_c2_in = exception_valid_c & curr_fetch_thr_c[0] & ~ftu_thr0_redirect_bf;
2676assign thr1_exception_valid_kill_c2_in = exception_valid_c & curr_fetch_thr_c[1] & ~ftu_thr1_redirect_bf;
2677assign thr2_exception_valid_kill_c2_in = exception_valid_c & curr_fetch_thr_c[2] & ~ftu_thr2_redirect_bf;
2678assign thr3_exception_valid_kill_c2_in = exception_valid_c & curr_fetch_thr_c[3] & ~ftu_thr3_redirect_bf;
2679assign thr4_exception_valid_kill_c2_in = exception_valid_c & curr_fetch_thr_c[4] & ~ftu_thr4_redirect_bf;
2680assign thr5_exception_valid_kill_c2_in = exception_valid_c & curr_fetch_thr_c[5] & ~ftu_thr5_redirect_bf;
2681assign thr6_exception_valid_kill_c2_in = exception_valid_c & curr_fetch_thr_c[6] & ~ftu_thr6_redirect_bf;
2682assign thr7_exception_valid_kill_c2_in = exception_valid_c & curr_fetch_thr_c[7] & ~ftu_thr7_redirect_bf;
2683
2684//////////////////////////////////////////////////////////////////////////////
2685
2686
2687
2688
2689assign ftu_thr0_redirect_int_bf = thr0_trap_pcaddr_is_valid_bf | thr0_lsu_sync_bf ;
2690assign ftu_thr1_redirect_int_bf = thr1_trap_pcaddr_is_valid_bf | thr1_lsu_sync_bf ;
2691assign ftu_thr2_redirect_int_bf = thr2_trap_pcaddr_is_valid_bf | thr2_lsu_sync_bf ;
2692assign ftu_thr3_redirect_int_bf = thr3_trap_pcaddr_is_valid_bf | thr3_lsu_sync_bf ;
2693assign ftu_thr4_redirect_int_bf = thr4_trap_pcaddr_is_valid_bf | thr4_lsu_sync_bf ;
2694assign ftu_thr5_redirect_int_bf = thr5_trap_pcaddr_is_valid_bf | thr5_lsu_sync_bf ;
2695assign ftu_thr6_redirect_int_bf = thr6_trap_pcaddr_is_valid_bf | thr6_lsu_sync_bf ;
2696assign ftu_thr7_redirect_int_bf = thr7_trap_pcaddr_is_valid_bf | thr7_lsu_sync_bf ;
2697
2698assign agc_thr0_tlu_redirect_bf = thr0_trap_pcaddr_is_valid_bf ;
2699assign agc_thr1_tlu_redirect_bf = thr1_trap_pcaddr_is_valid_bf ;
2700assign agc_thr2_tlu_redirect_bf = thr2_trap_pcaddr_is_valid_bf ;
2701assign agc_thr3_tlu_redirect_bf = thr3_trap_pcaddr_is_valid_bf ;
2702assign agc_thr4_tlu_redirect_bf = thr4_trap_pcaddr_is_valid_bf ;
2703assign agc_thr5_tlu_redirect_bf = thr5_trap_pcaddr_is_valid_bf ;
2704assign agc_thr6_tlu_redirect_bf = thr6_trap_pcaddr_is_valid_bf ;
2705assign agc_thr7_tlu_redirect_bf = thr7_trap_pcaddr_is_valid_bf ;
2706
2707
2708ifu_ftu_agc_ctl_msff_ctl_macro__width_8 thrx_redirect_reg (
2709 .scan_in(thrx_redirect_reg_scanin),
2710 .scan_out(thrx_redirect_reg_scanout),
2711 .l1clk( l1clk ),
2712 .din ({ftu_thr7_redirect_int_bf,ftu_thr6_redirect_int_bf,ftu_thr5_redirect_int_bf,ftu_thr4_redirect_int_bf,
2713 ftu_thr3_redirect_int_bf,ftu_thr2_redirect_int_bf,ftu_thr1_redirect_int_bf,ftu_thr0_redirect_int_bf}),
2714 .dout ({ftu_thr7_redirect_part_bf,ftu_thr6_redirect_part_bf,ftu_thr5_redirect_part_bf,ftu_thr4_redirect_part_bf,
2715 ftu_thr3_redirect_part_bf,ftu_thr2_redirect_part_bf,ftu_thr1_redirect_part_bf,ftu_thr0_redirect_part_bf}),
2716 .siclk(siclk),
2717 .soclk(soclk));
2718
2719assign ftu_thr0_redirect_bf = ftu_thr0_redirect_part_bf | tlu_flush_ifu_f[0] | thr0_br_misp_f ;
2720assign ftu_thr1_redirect_bf = ftu_thr1_redirect_part_bf | tlu_flush_ifu_f[1] | thr1_br_misp_f ;
2721assign ftu_thr2_redirect_bf = ftu_thr2_redirect_part_bf | tlu_flush_ifu_f[2] | thr2_br_misp_f ;
2722assign ftu_thr3_redirect_bf = ftu_thr3_redirect_part_bf | tlu_flush_ifu_f[3] | thr3_br_misp_f ;
2723assign ftu_thr4_redirect_bf = ftu_thr4_redirect_part_bf | tlu_flush_ifu_f[4] | thr4_br_misp_f ;
2724assign ftu_thr5_redirect_bf = ftu_thr5_redirect_part_bf | tlu_flush_ifu_f[5] | thr5_br_misp_f ;
2725assign ftu_thr6_redirect_bf = ftu_thr6_redirect_part_bf | tlu_flush_ifu_f[6] | thr6_br_misp_f ;
2726assign ftu_thr7_redirect_bf = ftu_thr7_redirect_part_bf | tlu_flush_ifu_f[7] | thr7_br_misp_f ;
2727
2728
2729ifu_ftu_agc_ctl_msff_ctl_macro__width_8 thrx_ibu_redirect_reg (
2730 .scan_in(thrx_ibu_redirect_reg_scanin),
2731 .scan_out(thrx_ibu_redirect_reg_scanout),
2732 .l1clk( l1clk ),
2733 .din ({ftu_thr7_redirect_int_bf,ftu_thr6_redirect_int_bf,ftu_thr5_redirect_int_bf,ftu_thr4_redirect_int_bf,
2734 ftu_thr3_redirect_int_bf,ftu_thr2_redirect_int_bf,ftu_thr1_redirect_int_bf,ftu_thr0_redirect_int_bf}),
2735 .dout ( to_ibu_redirect_part_bf[7:0]),
2736 .siclk(siclk),
2737 .soclk(soclk));
2738
2739
2740assign thr0_br_misp_no_match_f = (thr0_br_misp_f & ~(thr0_matches_curr_f & ftp_fetch_v_f & single_thread_active));
2741assign thr1_br_misp_no_match_f = (thr1_br_misp_f & ~(thr1_matches_curr_f & ftp_fetch_v_f & single_thread_active));
2742assign thr2_br_misp_no_match_f = (thr2_br_misp_f & ~(thr2_matches_curr_f & ftp_fetch_v_f & single_thread_active));
2743assign thr3_br_misp_no_match_f = (thr3_br_misp_f & ~(thr3_matches_curr_f & ftp_fetch_v_f & single_thread_active));
2744assign thr4_br_misp_no_match_f = (thr4_br_misp_f & ~(thr4_matches_curr_f & ftp_fetch_v_f & single_thread_active));
2745assign thr5_br_misp_no_match_f = (thr5_br_misp_f & ~(thr5_matches_curr_f & ftp_fetch_v_f & single_thread_active));
2746assign thr6_br_misp_no_match_f = (thr6_br_misp_f & ~(thr6_matches_curr_f & ftp_fetch_v_f & single_thread_active));
2747assign thr7_br_misp_no_match_f = (thr7_br_misp_f & ~(thr7_matches_curr_f & ftp_fetch_v_f & single_thread_active));
2748
2749assign other_flushes_in[0] = agc_thr0_micro_flush_unq_c | load_flush_f[0] | thr0_sf_kill |
2750 thr0_sf_kill_d | tlu_flush_ifu_f[0] | tlu_flush_ifu_f_d[0] | tlu_flush_ifu_f_dd[0] |
2751 thr0_br_misp_no_match_f |
2752 thr0_kill_after_invalidation | thr0_kill_after_invalidation_d |
2753 thr0_exception_valid_kill_c;
2754assign other_flushes_in[1] = agc_thr1_micro_flush_unq_c | load_flush_f[1] | thr1_sf_kill |
2755 thr1_sf_kill_d | tlu_flush_ifu_f[1] | tlu_flush_ifu_f_d[1] | tlu_flush_ifu_f_dd[1] |
2756 thr1_br_misp_no_match_f |
2757 thr1_kill_after_invalidation | thr1_kill_after_invalidation_d |
2758 thr1_exception_valid_kill_c;
2759assign other_flushes_in[2] = agc_thr2_micro_flush_unq_c | load_flush_f[2] | thr2_sf_kill |
2760 thr2_sf_kill_d | tlu_flush_ifu_f[2] | tlu_flush_ifu_f_d[2] | tlu_flush_ifu_f_dd[2] |
2761 thr2_br_misp_no_match_f|
2762 thr2_kill_after_invalidation | thr2_kill_after_invalidation_d |
2763 thr2_exception_valid_kill_c ;
2764assign other_flushes_in[3] = agc_thr3_micro_flush_unq_c | load_flush_f[3] | thr3_sf_kill |
2765 thr3_sf_kill_d | tlu_flush_ifu_f[3] | tlu_flush_ifu_f_d[3] | tlu_flush_ifu_f_dd[3] |
2766 thr3_br_misp_no_match_f|
2767 thr3_kill_after_invalidation | thr3_kill_after_invalidation_d |
2768 thr3_exception_valid_kill_c ;
2769assign other_flushes_in[4] = agc_thr4_micro_flush_unq_c | load_flush_f[4] | thr4_sf_kill |
2770 thr4_sf_kill_d | tlu_flush_ifu_f[4] | tlu_flush_ifu_f_d[4] | tlu_flush_ifu_f_dd[4] |
2771 thr4_br_misp_no_match_f|
2772 thr4_kill_after_invalidation | thr4_kill_after_invalidation_d |
2773 thr4_exception_valid_kill_c ;
2774assign other_flushes_in[5] = agc_thr5_micro_flush_unq_c | load_flush_f[5] | thr5_sf_kill |
2775 thr5_sf_kill_d | tlu_flush_ifu_f[5] | tlu_flush_ifu_f_d[5] | tlu_flush_ifu_f_dd[5] |
2776 thr5_br_misp_no_match_f|
2777 thr5_kill_after_invalidation | thr5_kill_after_invalidation_d |
2778 thr5_exception_valid_kill_c ;
2779assign other_flushes_in[6] = agc_thr6_micro_flush_unq_c | load_flush_f[6] | thr6_sf_kill |
2780 thr6_sf_kill_d | tlu_flush_ifu_f[6] | tlu_flush_ifu_f_d[6] | tlu_flush_ifu_f_dd[6] |
2781 thr6_br_misp_no_match_f|
2782 thr6_kill_after_invalidation | thr6_kill_after_invalidation_d |
2783 thr6_exception_valid_kill_c ;
2784assign other_flushes_in[7] = agc_thr7_micro_flush_unq_c | load_flush_f[7] | thr7_sf_kill |
2785 thr7_sf_kill_d | tlu_flush_ifu_f[7] | tlu_flush_ifu_f_d[7] | tlu_flush_ifu_f_dd[7] |
2786 thr7_br_misp_no_match_f|
2787 thr7_kill_after_invalidation | thr7_kill_after_invalidation_d |
2788 thr7_exception_valid_kill_c;
2789
2790ifu_ftu_agc_ctl_msff_ctl_macro__width_8 other_flushes_reg (
2791 .scan_in(other_flushes_reg_scanin),
2792 .scan_out(other_flushes_reg_scanout),
2793 .l1clk( l1clk ),
2794 .din (other_flushes_in[7:0]),
2795 .dout (other_flushes_del[7:0]),
2796 .siclk(siclk),
2797 .soclk(soclk));
2798
2799assign ftu_ibu_redirect_bf[0] = to_ibu_redirect_part_bf[0] | tlu_flush_ifu_f[0] | other_flushes_del[0] | thr0_br_misp_f | thr0_exception_valid_kill_c ;
2800assign ftu_ibu_redirect_bf[1] = to_ibu_redirect_part_bf[1] | tlu_flush_ifu_f[1] | other_flushes_del[1] | thr1_br_misp_f | thr1_exception_valid_kill_c;
2801assign ftu_ibu_redirect_bf[2] = to_ibu_redirect_part_bf[2] | tlu_flush_ifu_f[2] | other_flushes_del[2] | thr2_br_misp_f | thr2_exception_valid_kill_c;
2802assign ftu_ibu_redirect_bf[3] = to_ibu_redirect_part_bf[3] | tlu_flush_ifu_f[3] | other_flushes_del[3] | thr3_br_misp_f | thr3_exception_valid_kill_c;
2803assign ftu_ibu_redirect_bf[4] = to_ibu_redirect_part_bf[4] | tlu_flush_ifu_f[4] | other_flushes_del[4] | thr4_br_misp_f | thr4_exception_valid_kill_c;
2804assign ftu_ibu_redirect_bf[5] = to_ibu_redirect_part_bf[5] | tlu_flush_ifu_f[5] | other_flushes_del[5] | thr5_br_misp_f | thr5_exception_valid_kill_c;
2805assign ftu_ibu_redirect_bf[6] = to_ibu_redirect_part_bf[6] | tlu_flush_ifu_f[6] | other_flushes_del[6] | thr6_br_misp_f | thr6_exception_valid_kill_c;
2806assign ftu_ibu_redirect_bf[7] = to_ibu_redirect_part_bf[7] | tlu_flush_ifu_f[7] | other_flushes_del[7] | thr7_br_misp_f | thr7_exception_valid_kill_c;
2807
2808assign redirect_ibu_int_bf[0] = to_ibu_redirect_part_bf[0] | tlu_flush_ifu_f[0] | other_flushes_del[0] | thr0_br_misp_f | thr0_exception_valid_kill_c;
2809assign redirect_ibu_int_bf[1] = to_ibu_redirect_part_bf[1] | tlu_flush_ifu_f[1] | other_flushes_del[1] | thr1_br_misp_f | thr1_exception_valid_kill_c;
2810assign redirect_ibu_int_bf[2] = to_ibu_redirect_part_bf[2] | tlu_flush_ifu_f[2] | other_flushes_del[2] | thr2_br_misp_f | thr2_exception_valid_kill_c;
2811assign redirect_ibu_int_bf[3] = to_ibu_redirect_part_bf[3] | tlu_flush_ifu_f[3] | other_flushes_del[3] | thr3_br_misp_f | thr3_exception_valid_kill_c;
2812assign redirect_ibu_int_bf[4] = to_ibu_redirect_part_bf[4] | tlu_flush_ifu_f[4] | other_flushes_del[4] | thr4_br_misp_f | thr4_exception_valid_kill_c;
2813assign redirect_ibu_int_bf[5] = to_ibu_redirect_part_bf[5] | tlu_flush_ifu_f[5] | other_flushes_del[5] | thr5_br_misp_f | thr5_exception_valid_kill_c;
2814assign redirect_ibu_int_bf[6] = to_ibu_redirect_part_bf[6] | tlu_flush_ifu_f[6] | other_flushes_del[6] | thr6_br_misp_f | thr6_exception_valid_kill_c;
2815assign redirect_ibu_int_bf[7] = to_ibu_redirect_part_bf[7] | tlu_flush_ifu_f[7] | other_flushes_del[7] | thr7_br_misp_f | thr7_exception_valid_kill_c;
2816
2817
2818
2819
2820assign next_by_pass_sel_bbf[0] = cmu_thr0_data_ready;
2821assign next_by_pass_sel_bbf[1] = cmu_thr1_data_ready;
2822assign next_by_pass_sel_bbf[2] = cmu_thr2_data_ready;
2823assign next_by_pass_sel_bbf[3] = cmu_thr3_data_ready;
2824assign next_by_pass_sel_bbf[4] = cmu_thr4_data_ready;
2825assign next_by_pass_sel_bbf[5] = cmu_thr5_data_ready;
2826assign next_by_pass_sel_bbf[6] = cmu_thr6_data_ready;
2827assign next_by_pass_sel_bbf[7] = cmu_thr7_data_ready;
2828
2829ifu_ftu_agc_ctl_msff_ctl_macro__width_8 cmu_fill_byp_thread_reg (
2830 .scan_in(cmu_fill_byp_thread_reg_scanin),
2831 .scan_out(cmu_fill_byp_thread_reg_scanout),
2832 .l1clk( l1clk_pm1 ),
2833 .din (next_by_pass_sel_bbf[7:0]),
2834 .dout (agc_by_pass_sel_bf[7:0]),
2835 .siclk(siclk),
2836 .soclk(soclk));
2837
2838ifu_ftu_agc_ctl_msff_ctl_macro__width_8 by_pass_thread_bf_reg (
2839 .scan_in(by_pass_thread_bf_reg_scanin),
2840 .scan_out(by_pass_thread_bf_reg_scanout),
2841 .l1clk( l1clk_pm1 ),
2842 .din (next_by_pass_sel_bbf[7:0]),
2843 .dout (by_pass_thread_bf[7:0]),
2844 .siclk(siclk),
2845 .soclk(soclk));
2846
2847
2848ifu_ftu_agc_ctl_msff_ctl_macro__width_8 by_pass_sel_f_reg (
2849 .scan_in(by_pass_sel_f_reg_scanin),
2850 .scan_out(by_pass_sel_f_reg_scanout),
2851 .l1clk( l1clk_pm1 ),
2852 .din (agc_by_pass_sel_bf[7:0]),
2853 .dout (agc_by_pass_sel_f[7:0]),
2854 .siclk(siclk),
2855 .soclk(soclk));
2856
2857ifu_ftu_agc_ctl_msff_ctl_macro__width_8 by_pass_sel_c_reg (
2858 .scan_in(by_pass_sel_c_reg_scanin),
2859 .scan_out(by_pass_sel_c_reg_scanout),
2860 .l1clk( l1clk_pm1 ),
2861 .din (agc_by_pass_sel_f[7:0]),
2862 .dout (by_pass_thread_c[7:0]),
2863 .siclk(siclk),
2864 .soclk(soclk));
2865
2866
2867ifu_ftu_agc_ctl_msff_ctl_macro__width_8 by_pass_thread_f_reg (
2868 .scan_in(by_pass_thread_f_reg_scanin),
2869 .scan_out(by_pass_thread_f_reg_scanout),
2870 .l1clk( l1clk_pm1 ),
2871 .din (agc_by_pass_sel_bf[7:0]),
2872 .dout (by_pass_thread_f[7:0]),
2873 .siclk(siclk),
2874 .soclk(soclk));
2875
2876
2877
2878
2879ifu_ftu_agc_ctl_msff_ctl_macro__width_1 fetchalid_cnq_reg (
2880 .scan_in(fetchalid_cnq_reg_scanin),
2881 .scan_out(fetchalid_cnq_reg_scanout),
2882 .l1clk( l1clk_pm1 ),
2883 .din (ftp_fetch_v_f),
2884 .dout (agc_fetch_v_c_unq),
2885 .siclk(siclk),
2886 .soclk(soclk));
2887
2888ifu_ftu_agc_ctl_msff_ctl_macro__width_1 fetch_v_dup_c_reg (
2889 .scan_in(fetch_v_dup_c_reg_scanin),
2890 .scan_out(fetch_v_dup_c_reg_scanout),
2891 .l1clk( l1clk_pm1 ),
2892 .din (ftp_fetch_v_f),
2893 .dout (agc_fetch_v_c_dup_unq),
2894 .siclk(siclk),
2895 .soclk(soclk));
2896
2897///////////////////////////////////////////////////////////////////////
2898///////////////////////////////////////////////////////////////////////
2899///////////////////////////////////////////////////////////////////////
2900///////////////////////////////////////////////////////////////////////
2901// Generate instruction bypass mux selects
2902///////////////////////////////////////////////////////////////////////
2903
2904/////////////////////////////////////////////////////////////////////////////////////
2905// Create signals that show which cycle the by_pass is possible. //
2906// NOTE: If previous by_pass occupies the slot which the new by_pass may take, it //
2907// has to be scheduled for the next available cycle (slot). //
2908/////////////////////////////////////////////////////////////////////////////////////
2909assign prev_by_pass_at_cycle_1 = agc_cycle_2_by_pass_ok_f | agc_cycle_3_by_pass_ok_c ;
2910assign prev_by_pass_at_cycle_2 = agc_cycle_3_by_pass_ok_f ;
2911
2912assign agc_fetch_v_int_c = agc_fetch_v_c_unq & ~agc_kill_fetch_cv_int1_c ;
2913assign agc_fetch_v_c = agc_fetch_v_c_unq ; // & ~agc_kill_fetch_cv_c ;
2914
2915assign agc_cycle_2_by_pass_ok_bf= ((agc_fetch_v_c | prev_by_pass_at_cycle_1) & ~(ftp_fetch_v_f | prev_by_pass_at_cycle_2) & agc_by_pass_valid_bf);
2916assign agc_cycle_3_by_pass_ok_bf= ((agc_fetch_v_c | prev_by_pass_at_cycle_1) & (ftp_fetch_v_f | prev_by_pass_at_cycle_2) & agc_by_pass_valid_bf) ;
2917
2918
2919// Cycle_2
2920 ifu_ftu_agc_ctl_msff_ctl_macro__width_1 cycle_2_by_pass_f_reg (
2921 .scan_in(cycle_2_by_pass_f_reg_scanin),
2922 .scan_out(cycle_2_by_pass_f_reg_scanout),
2923 .l1clk( l1clk_pm1 ),
2924 .din (agc_cycle_2_by_pass_ok_bf),
2925 .dout (agc_cycle_2_by_pass_ok_f),
2926 .siclk(siclk),
2927 .soclk(soclk));
2928
2929// Cycle_3
2930 ifu_ftu_agc_ctl_msff_ctl_macro__width_1 cycle_3_by_pass_f_reg (
2931 .scan_in(cycle_3_by_pass_f_reg_scanin),
2932 .scan_out(cycle_3_by_pass_f_reg_scanout),
2933 .l1clk( l1clk_pm1 ),
2934 .din (agc_cycle_3_by_pass_ok_bf),
2935 .dout (agc_cycle_3_by_pass_ok_f),
2936 .siclk(siclk),
2937 .soclk(soclk));
2938
2939 ifu_ftu_agc_ctl_msff_ctl_macro__width_1 cycle_3_by_pass_c_reg (
2940 .scan_in(cycle_3_by_pass_c_reg_scanin),
2941 .scan_out(cycle_3_by_pass_c_reg_scanout),
2942 .l1clk( l1clk_pm1 ),
2943 .din (agc_cycle_3_by_pass_ok_f),
2944 .dout (agc_cycle_3_by_pass_ok_c),
2945 .siclk(siclk),
2946 .soclk(soclk));
2947
2948
2949
2950assign byp_valid_in = cmu_any_data_ready & ~( thr0_kill_by_pass_bbf |
2951 thr1_kill_by_pass_bbf |
2952 thr2_kill_by_pass_bbf |
2953 thr3_kill_by_pass_bbf |
2954 thr4_kill_by_pass_bbf |
2955 thr5_kill_by_pass_bbf |
2956 thr6_kill_by_pass_bbf |
2957 thr7_kill_by_pass_bbf ) ;
2958
2959ifu_ftu_agc_ctl_msff_ctl_macro__width_1 cmu_any_data_ready_reg (
2960 .scan_in(cmu_any_data_ready_reg_scanin),
2961 .scan_out(cmu_any_data_ready_reg_scanout),
2962 .l1clk( l1clk_pm1 ),
2963 .din (byp_valid_in),
2964 .dout (agc_byp_valid),
2965 .siclk(siclk),
2966 .soclk(soclk));
2967
2968assign thr0_kill_by_pass_bbf = next_by_pass_sel_bbf[0] & (tsm_thr0_ignore_by_pass | ftu_thr0_redirect_bf) ;
2969assign thr1_kill_by_pass_bbf = next_by_pass_sel_bbf[1] & (tsm_thr1_ignore_by_pass | ftu_thr1_redirect_bf) ;
2970assign thr2_kill_by_pass_bbf = next_by_pass_sel_bbf[2] & (tsm_thr2_ignore_by_pass | ftu_thr2_redirect_bf) ;
2971assign thr3_kill_by_pass_bbf = next_by_pass_sel_bbf[3] & (tsm_thr3_ignore_by_pass | ftu_thr3_redirect_bf) ;
2972assign thr4_kill_by_pass_bbf = next_by_pass_sel_bbf[4] & (tsm_thr4_ignore_by_pass | ftu_thr4_redirect_bf) ;
2973assign thr5_kill_by_pass_bbf = next_by_pass_sel_bbf[5] & (tsm_thr5_ignore_by_pass | ftu_thr5_redirect_bf) ;
2974assign thr6_kill_by_pass_bbf = next_by_pass_sel_bbf[6] & (tsm_thr6_ignore_by_pass | ftu_thr6_redirect_bf) ;
2975assign thr7_kill_by_pass_bbf = next_by_pass_sel_bbf[7] & (tsm_thr7_ignore_by_pass | ftu_thr7_redirect_bf) ;
2976
2977 ifu_ftu_agc_ctl_msff_ctl_macro__width_8 tsm_thrx_kill_by_pass_reg (
2978 .scan_in(tsm_thrx_kill_by_pass_reg_scanin),
2979 .scan_out(tsm_thrx_kill_by_pass_reg_scanout),
2980 .l1clk( l1clk ),
2981 .din ({thr7_kill_by_pass_bbf,thr6_kill_by_pass_bbf,thr5_kill_by_pass_bbf,thr4_kill_by_pass_bbf,
2982 thr3_kill_by_pass_bbf,thr2_kill_by_pass_bbf,thr1_kill_by_pass_bbf,thr0_kill_by_pass_bbf}),
2983 .dout ({thr7_kill_by_pass_bf,thr6_kill_by_pass_bf,thr5_kill_by_pass_bf,thr4_kill_by_pass_bf,
2984 thr3_kill_by_pass_bf,thr2_kill_by_pass_bf,thr1_kill_by_pass_bf,thr0_kill_by_pass_bf}),
2985 .siclk(siclk),
2986 .soclk(soclk));
2987
2988assign kill2_by_pass_bf = (agc_by_pass_sel_bf[0] & ftu_thr0_redirect_bf) |
2989 (agc_by_pass_sel_bf[1] & ftu_thr1_redirect_bf) |
2990 (agc_by_pass_sel_bf[2] & ftu_thr2_redirect_bf) |
2991 (agc_by_pass_sel_bf[3] & ftu_thr3_redirect_bf) |
2992 (agc_by_pass_sel_bf[4] & ftu_thr4_redirect_bf) |
2993 (agc_by_pass_sel_bf[5] & ftu_thr5_redirect_bf) |
2994 (agc_by_pass_sel_bf[6] & ftu_thr6_redirect_bf) |
2995 (agc_by_pass_sel_bf[7] & ftu_thr7_redirect_bf) ;
2996
2997assign bypass_thread_killed = thr7_kill_by_pass_bf | thr6_kill_by_pass_bf | thr5_kill_by_pass_bf |
2998 thr4_kill_by_pass_bf | thr3_kill_by_pass_bf | thr2_kill_by_pass_bf |
2999 thr1_kill_by_pass_bf | thr0_kill_by_pass_bf | kill2_by_pass_bf ;
3000
3001assign agc_by_pass_valid_bf = agc_byp_valid & ~bypass_thread_killed ;
3002
3003
3004assign next_by_pass_f_valid = agc_by_pass_valid_bf ;
3005
3006ifu_ftu_agc_ctl_msff_ctl_macro__width_1 by_pass_v_f_reg (
3007 .scan_in(by_pass_v_f_reg_scanin),
3008 .scan_out(by_pass_v_f_reg_scanout),
3009 .l1clk( l1clk_pm1 ),
3010 .din (next_by_pass_f_valid),
3011 .dout (agc_by_pass_valid_unq_f),
3012 .siclk(siclk),
3013 .soclk(soclk));
3014
3015assign agc_by_pass_valid_f = agc_by_pass_valid_unq_f & ~bypass_thread_redirected_p_f ;
3016assign bypass_thread_redirected_p_f = ((ftu_thr0_redirect_bf) & agc_by_pass_sel_f[0]) |
3017 ((ftu_thr1_redirect_bf) & agc_by_pass_sel_f[1]) |
3018 ((ftu_thr2_redirect_bf) & agc_by_pass_sel_f[2]) |
3019 ((ftu_thr3_redirect_bf) & agc_by_pass_sel_f[3]) |
3020 ((ftu_thr4_redirect_bf) & agc_by_pass_sel_f[4]) |
3021 ((ftu_thr5_redirect_bf) & agc_by_pass_sel_f[5]) |
3022 ((ftu_thr6_redirect_bf) & agc_by_pass_sel_f[6]) |
3023 ((ftu_thr7_redirect_bf) & agc_by_pass_sel_f[7]) ;
3024
3025
3026assign bypass_thread_redirected_f = ((ftu_thr0_redirect_int_bf | ftu_thr0_redirect_bf) & agc_by_pass_sel_f[0]) |
3027 ((ftu_thr1_redirect_int_bf | ftu_thr1_redirect_bf) & agc_by_pass_sel_f[1]) |
3028 ((ftu_thr2_redirect_int_bf | ftu_thr2_redirect_bf) & agc_by_pass_sel_f[2]) |
3029 ((ftu_thr3_redirect_int_bf | ftu_thr3_redirect_bf) & agc_by_pass_sel_f[3]) |
3030 ((ftu_thr4_redirect_int_bf | ftu_thr4_redirect_bf) & agc_by_pass_sel_f[4]) |
3031 ((ftu_thr5_redirect_int_bf | ftu_thr5_redirect_bf) & agc_by_pass_sel_f[5]) |
3032 ((ftu_thr6_redirect_int_bf | ftu_thr6_redirect_bf) & agc_by_pass_sel_f[6]) |
3033 ((ftu_thr7_redirect_int_bf | ftu_thr7_redirect_bf) & agc_by_pass_sel_f[7]) ;
3034
3035/////////////////////////////////////////////////////////////////////////////////////////////////////////
3036// Update the LRU for the fetching mechanism if by_pass is valid. //
3037/////////////////////////////////////////////////////////////////////////////////////////////////////////
3038assign agc_by_pass_update_lru_bf[0] = agc_by_pass_sel_bf[0] & agc_byp_valid & ~thr0_kill_by_pass_bf ;
3039assign agc_by_pass_update_lru_bf[1] = agc_by_pass_sel_bf[1] & agc_byp_valid & ~thr1_kill_by_pass_bf ;
3040assign agc_by_pass_update_lru_bf[2] = agc_by_pass_sel_bf[2] & agc_byp_valid & ~thr2_kill_by_pass_bf ;
3041assign agc_by_pass_update_lru_bf[3] = agc_by_pass_sel_bf[3] & agc_byp_valid & ~thr3_kill_by_pass_bf ;
3042assign agc_by_pass_update_lru_bf[4] = agc_by_pass_sel_bf[4] & agc_byp_valid & ~thr4_kill_by_pass_bf ;
3043assign agc_by_pass_update_lru_bf[5] = agc_by_pass_sel_bf[5] & agc_byp_valid & ~thr5_kill_by_pass_bf ;
3044assign agc_by_pass_update_lru_bf[6] = agc_by_pass_sel_bf[6] & agc_byp_valid & ~thr6_kill_by_pass_bf ;
3045assign agc_by_pass_update_lru_bf[7] = agc_by_pass_sel_bf[7] & agc_byp_valid & ~thr7_kill_by_pass_bf ;
3046
3047
3048
3049assign agc_sel_by_pass_cycle_2_f = (agc_cycle_2_by_pass_ok_f & agc_by_pass_valid_unq_f) ;
3050assign agc_sel_by_pass_cycle_3_c = (agc_cycle_3_by_pass_ok_c & agc_by_pass_valid_c) ;
3051
3052 assign next_by_pass_c_valid = agc_by_pass_valid_f & ~bypass_thread_redirected_f ;
3053 ifu_ftu_agc_ctl_msff_ctl_macro__width_1 by_pass_v_c_reg (
3054 .scan_in(by_pass_v_c_reg_scanin),
3055 .scan_out(by_pass_v_c_reg_scanout),
3056 .l1clk( l1clk_pm1 ),
3057 .din (next_by_pass_c_valid),
3058 .dout (agc_by_pass_valid_c),
3059 .siclk(siclk),
3060 .soclk(soclk));
3061
3062assign agc_sel_by_pass_cycle_2_int_f = (agc_cycle_2_by_pass_ok_f & agc_by_pass_valid_unq_f) ;
3063assign agc_sel_by_pass_cycle_3_int_c = (agc_cycle_3_by_pass_ok_c & agc_by_pass_valid_c) ;
3064
3065
3066assign agc_pc_sel_for_c[0] = agc_fetch_v_c ;
3067assign agc_pc_sel_for_c[1] = ~agc_pc_sel_for_c[0] & ~agc_pc_sel_for_c[2] & ~agc_pc_sel_for_c[3] ;
3068assign agc_pc_sel_for_c[2] = agc_sel_by_pass_cycle_2_int_f ;
3069assign agc_pc_sel_for_c[3] = agc_sel_by_pass_cycle_3_int_c ;
3070
3071
3072///////////////////////////////////////////////////////////////////////////////
3073// NOTE:
3074// Exceptions can happen during by_pass too (L2ECC errors) //
3075///////////////////////////////////////////////////////////////////////////////
3076
3077assign agc_instr_bp_sel_c[0] = agc_fetch_v_c_dup_unq ; // & ~io_is_not_boot_rom_c;
3078assign agc_instr_bp_sel_c[1] = (!agc_fetch_v_c_dup_unq & agc_sel_by_pass_cycle_2_f ) ;
3079assign agc_instr_bp_sel_c[2] = (!agc_fetch_v_c_dup_unq & agc_sel_by_pass_cycle_3_c ) ;
3080
3081assign agc_bypass_selects[0] = (!agc_fetch_v_c_dup_unq & agc_byp_valid & !prev_by_pass_at_cycle_1 ) ;
3082assign agc_bypass_selects[1] = (!agc_fetch_v_c_dup_unq & agc_sel_by_pass_cycle_2_f ) ;
3083assign agc_bypass_selects[2] = (!agc_fetch_v_c_dup_unq & agc_sel_by_pass_cycle_3_c ) ;
3084
3085
3086///////////////////////////////////////////////////////////////////////////////
3087// Generate the instruction valid signal for C stage. //
3088///////////////////////////////////////////////////////////////////////////////
3089
3090assign by_pass_valid_instr_bf[3] = cmu_instr_v[3] & ~sf_valid_by_pass_bf ;
3091assign by_pass_valid_instr_bf[2] = cmu_instr_v[2] & ~sf_valid_by_pass_bf ;
3092assign by_pass_valid_instr_bf[1] = cmu_instr_v[1] & ~sf_valid_by_pass_bf ;
3093assign by_pass_valid_instr_bf[0] = cmu_instr_v[0] ;
3094
3095
3096ifu_ftu_agc_ctl_msff_ctl_macro__width_4 by_pass_instr_v_f_reg (
3097 .scan_in(by_pass_instr_v_f_reg_scanin),
3098 .scan_out(by_pass_instr_v_f_reg_scanout),
3099 .l1clk( l1clk_pm1 ),
3100 .din (by_pass_valid_instr_bf[3:0]),
3101 .dout (by_pass_valid_instr_f[3:0]),
3102 .siclk(siclk),
3103 .soclk(soclk));
3104
3105
3106ifu_ftu_agc_ctl_msff_ctl_macro__width_4 by_pass_instr_v_c_reg (
3107 .scan_in(by_pass_instr_v_c_reg_scanin),
3108 .scan_out(by_pass_instr_v_c_reg_scanout),
3109 .l1clk( l1clk_pm1 ),
3110 .din (by_pass_valid_instr_f[3:0]),
3111 .dout (by_pass_valid_instr_c[3:0]),
3112 .siclk(siclk),
3113 .soclk(soclk));
3114
3115//////////////////////////////////////////////////////////
3116// Number of instructions valid can come from one of //
3117// four source: //
3118// 1- Normal fetching //
3119// 2- By_pass in the first cycle when C stage is //
3120// empty when the data is recieved. //
3121// 3- By_pass in the second cycle when C stage is not //
3122// empty but the F stage is. //
3123// 4- By_pass in the third cycle when C and F stages //
3124// are not empty when the bypass data arrives. //
3125//////////////////////////////////////////////////////////
3126
3127assign ftu_instr_valid_c[0] = (!agc_fetch_v_c & agc_byp_valid &
3128 !prev_by_pass_at_cycle_1 & by_pass_valid_instr_bf[0]) |
3129 ( agc_sel_by_pass_cycle_2_f & by_pass_valid_instr_f[0]) |
3130 ( agc_sel_by_pass_cycle_3_c & by_pass_valid_instr_c[0]) |
3131 ( agc_fetch_v_c & instr_0_v_q_c) ;
3132
3133assign ftu_instr_valid_c[1] = (!agc_fetch_v_c & agc_byp_valid &
3134 !prev_by_pass_at_cycle_1 & by_pass_valid_instr_bf[1]) |
3135 ( agc_sel_by_pass_cycle_2_f & by_pass_valid_instr_f[1]) |
3136 ( agc_sel_by_pass_cycle_3_c & by_pass_valid_instr_c[1]) |
3137 ( agc_fetch_v_c & instr_1_v_q_c) ;
3138
3139assign ftu_instr_valid_c[2] = (!agc_fetch_v_c & agc_byp_valid &
3140 !prev_by_pass_at_cycle_1 & by_pass_valid_instr_bf[2]) |
3141 ( agc_sel_by_pass_cycle_2_f & by_pass_valid_instr_f[2]) |
3142 ( agc_sel_by_pass_cycle_3_c & by_pass_valid_instr_c[2]) |
3143 ( agc_fetch_v_c & instr_2_v_q_c) ;
3144
3145assign ftu_instr_valid_c[3] = (!agc_fetch_v_c & agc_byp_valid &
3146 !prev_by_pass_at_cycle_1 & by_pass_valid_instr_bf[3]) |
3147 ( agc_sel_by_pass_cycle_2_f & by_pass_valid_instr_f[3]) |
3148 ( agc_sel_by_pass_cycle_3_c & by_pass_valid_instr_c[3]) |
3149 ( agc_fetch_v_c & instr_3_v_q_c) ;
3150
3151
3152assign bus_3_is_first_in = ( ifu_agd_pc_f[3] & ifu_agd_pc_f[2]) & ftp_fetch_v_f;
3153assign bus_2_is_first_in = ( ifu_agd_pc_f[3] & !ifu_agd_pc_f[2]) & ftp_fetch_v_f;
3154assign bus_1_is_first_in = (!ifu_agd_pc_f[3] & ifu_agd_pc_f[2]) & ftp_fetch_v_f;
3155assign bus_0_is_first_in = (!ifu_agd_pc_f[3] & !ifu_agd_pc_f[2]) | ~ftp_fetch_v_f;
3156
3157ifu_ftu_agc_ctl_msff_ctl_macro__width_4 bus_first_reg (
3158 .scan_in(bus_first_reg_scanin),
3159 .scan_out(bus_first_reg_scanout),
3160 .l1clk( l1clk_pm1 ),
3161 .din ({bus_3_is_first_in,bus_2_is_first_in,bus_1_is_first_in,bus_0_is_first_in}),
3162 .dout ({ftu_bus_3_is_first,ftu_bus_2_is_first,ftu_bus_1_is_first,ftu_bus_0_is_first}),
3163 .siclk(siclk),
3164 .soclk(soclk));
3165
3166assign ftu_fetch_thr_c[0] = (!agc_fetch_v_c & agc_byp_valid &
3167 !prev_by_pass_at_cycle_1 & by_pass_thread_bf[0]) |
3168 ( agc_sel_by_pass_cycle_2_f & by_pass_thread_f[0]) |
3169 ( agc_sel_by_pass_cycle_3_c & by_pass_thread_c[0]) |
3170 ( agc_fetch_v_c & curr_fetch_thr_c[0]) ;
3171
3172assign ftu_fetch_thr_c[1] = (!agc_fetch_v_c & agc_byp_valid &
3173 !prev_by_pass_at_cycle_1 & by_pass_thread_bf[1]) |
3174 ( agc_sel_by_pass_cycle_2_f & by_pass_thread_f[1]) |
3175 ( agc_sel_by_pass_cycle_3_c & by_pass_thread_c[1]) |
3176 ( agc_fetch_v_c & curr_fetch_thr_c[1]) ;
3177
3178assign ftu_fetch_thr_c[2] = (!agc_fetch_v_c & agc_byp_valid &
3179 !prev_by_pass_at_cycle_1 & by_pass_thread_bf[2]) |
3180 ( agc_sel_by_pass_cycle_2_f & by_pass_thread_f[2]) |
3181 ( agc_sel_by_pass_cycle_3_c & by_pass_thread_c[2]) |
3182 ( agc_fetch_v_c & curr_fetch_thr_c[2]) ;
3183
3184assign ftu_fetch_thr_c[3] = (!agc_fetch_v_c & agc_byp_valid &
3185 !prev_by_pass_at_cycle_1 & by_pass_thread_bf[3]) |
3186 ( agc_sel_by_pass_cycle_2_f & by_pass_thread_f[3]) |
3187 ( agc_sel_by_pass_cycle_3_c & by_pass_thread_c[3]) |
3188 ( agc_fetch_v_c & curr_fetch_thr_c[3]) ;
3189
3190assign ftu_fetch_thr_c[4] = (!agc_fetch_v_c & agc_byp_valid &
3191 !prev_by_pass_at_cycle_1 & by_pass_thread_bf[4]) |
3192 ( agc_sel_by_pass_cycle_2_f & by_pass_thread_f[4]) |
3193 ( agc_sel_by_pass_cycle_3_c & by_pass_thread_c[4]) |
3194 ( agc_fetch_v_c & curr_fetch_thr_c[4]) ;
3195
3196assign ftu_fetch_thr_c[5] = (!agc_fetch_v_c & agc_byp_valid &
3197 !prev_by_pass_at_cycle_1 & by_pass_thread_bf[5]) |
3198 ( agc_sel_by_pass_cycle_2_f & by_pass_thread_f[5]) |
3199 ( agc_sel_by_pass_cycle_3_c & by_pass_thread_c[5]) |
3200 ( agc_fetch_v_c & curr_fetch_thr_c[5]) ;
3201
3202assign ftu_fetch_thr_c[6] = (!agc_fetch_v_c & agc_byp_valid &
3203 !prev_by_pass_at_cycle_1 & by_pass_thread_bf[6]) |
3204 ( agc_sel_by_pass_cycle_2_f & by_pass_thread_f[6]) |
3205 ( agc_sel_by_pass_cycle_3_c & by_pass_thread_c[6]) |
3206 ( agc_fetch_v_c & curr_fetch_thr_c[6]) ;
3207
3208assign ftu_fetch_thr_c[7] = (!agc_fetch_v_c & agc_byp_valid &
3209 !prev_by_pass_at_cycle_1 & by_pass_thread_bf[7]) |
3210 ( agc_sel_by_pass_cycle_2_f & by_pass_thread_f[7]) |
3211 ( agc_sel_by_pass_cycle_3_c & by_pass_thread_c[7]) |
3212 ( agc_fetch_v_c & curr_fetch_thr_c[7]) ;
3213
3214
3215assign sf_valid_c = (!exception_valid_int_c & !agc_fetch_v_c & agc_byp_valid &!bypass_thread_killed &
3216 !prev_by_pass_at_cycle_1 & sf_valid_by_pass_bf) |
3217 (!exception_valid_int_c & agc_sel_by_pass_cycle_2_int_f & sf_valid_by_pass_f) |
3218 (!exception_valid_int_c & agc_sel_by_pass_cycle_3_int_c & sf_valid_by_pass_c) |
3219 ( agc_fetch_v_int_c & instr_sf_valid_c) |
3220 ( exception_valid_int_c & instr_sf_valid_c);
3221
3222assign thr0_sf_kill = (!exception_valid_int_c & !agc_fetch_v_c & agc_byp_valid &!bypass_thread_killed &
3223 !prev_by_pass_at_cycle_1 & thr0_byp_bf_kill_sf) |
3224 (!exception_valid_int_c & agc_sel_by_pass_cycle_2_int_f & thr0_byp_f_kill_sf) |
3225 (!exception_valid_int_c & agc_sel_by_pass_cycle_3_int_c & thr0_byp_c_kill_sf) |
3226 ( agc_fetch_v_int_c & thr0_instr_kill_sf) |
3227 ( exception_valid_int_c & thr0_instr_kill_sf);
3228
3229assign thr1_sf_kill = (!exception_valid_int_c & !agc_fetch_v_c & agc_byp_valid &!bypass_thread_killed &
3230 !prev_by_pass_at_cycle_1 & thr1_byp_bf_kill_sf) |
3231 (!exception_valid_int_c & agc_sel_by_pass_cycle_2_int_f & thr1_byp_f_kill_sf) |
3232 (!exception_valid_int_c & agc_sel_by_pass_cycle_3_int_c & thr1_byp_c_kill_sf) |
3233 ( agc_fetch_v_int_c & thr1_instr_kill_sf) |
3234 ( exception_valid_int_c & thr1_instr_kill_sf);
3235
3236assign thr2_sf_kill = (!exception_valid_int_c & !agc_fetch_v_c & agc_byp_valid &!bypass_thread_killed &
3237 !prev_by_pass_at_cycle_1 & thr2_byp_bf_kill_sf) |
3238 (!exception_valid_int_c & agc_sel_by_pass_cycle_2_int_f & thr2_byp_f_kill_sf) |
3239 (!exception_valid_int_c & agc_sel_by_pass_cycle_3_int_c & thr2_byp_c_kill_sf) |
3240 ( agc_fetch_v_int_c & thr2_instr_kill_sf) |
3241 ( exception_valid_int_c & thr2_instr_kill_sf);
3242
3243assign thr3_sf_kill = (!exception_valid_int_c & !agc_fetch_v_c & agc_byp_valid &!bypass_thread_killed &
3244 !prev_by_pass_at_cycle_1 & thr3_byp_bf_kill_sf) |
3245 (!exception_valid_int_c & agc_sel_by_pass_cycle_2_int_f & thr3_byp_f_kill_sf) |
3246 (!exception_valid_int_c & agc_sel_by_pass_cycle_3_int_c & thr3_byp_c_kill_sf) |
3247 ( agc_fetch_v_int_c & thr3_instr_kill_sf) |
3248 ( exception_valid_int_c & thr3_instr_kill_sf);
3249
3250assign thr4_sf_kill = (!exception_valid_int_c & !agc_fetch_v_c & agc_byp_valid &!bypass_thread_killed &
3251 !prev_by_pass_at_cycle_1 & thr4_byp_bf_kill_sf) |
3252 (!exception_valid_int_c & agc_sel_by_pass_cycle_2_int_f & thr4_byp_f_kill_sf) |
3253 (!exception_valid_int_c & agc_sel_by_pass_cycle_3_int_c & thr4_byp_c_kill_sf) |
3254 ( agc_fetch_v_int_c & thr4_instr_kill_sf) |
3255 ( exception_valid_int_c & thr4_instr_kill_sf);
3256
3257assign thr5_sf_kill = (!exception_valid_int_c & !agc_fetch_v_c & agc_byp_valid &!bypass_thread_killed &
3258 !prev_by_pass_at_cycle_1 & thr5_byp_bf_kill_sf) |
3259 (!exception_valid_int_c & agc_sel_by_pass_cycle_2_int_f & thr5_byp_f_kill_sf) |
3260 (!exception_valid_int_c & agc_sel_by_pass_cycle_3_int_c & thr5_byp_c_kill_sf) |
3261 ( agc_fetch_v_int_c & thr5_instr_kill_sf) |
3262 ( exception_valid_int_c & thr5_instr_kill_sf);
3263
3264assign thr6_sf_kill = (!exception_valid_int_c & !agc_fetch_v_c & agc_byp_valid &!bypass_thread_killed &
3265 !prev_by_pass_at_cycle_1 & thr6_byp_bf_kill_sf) |
3266 (!exception_valid_int_c & agc_sel_by_pass_cycle_2_int_f & thr6_byp_f_kill_sf) |
3267 (!exception_valid_int_c & agc_sel_by_pass_cycle_3_int_c & thr6_byp_c_kill_sf) |
3268 ( agc_fetch_v_int_c & thr6_instr_kill_sf) |
3269 ( exception_valid_int_c & thr6_instr_kill_sf);
3270
3271assign thr7_sf_kill = (!exception_valid_int_c & !agc_fetch_v_c & agc_byp_valid &!bypass_thread_killed &
3272 !prev_by_pass_at_cycle_1 & thr7_byp_bf_kill_sf) |
3273 (!exception_valid_int_c & agc_sel_by_pass_cycle_2_int_f & thr7_byp_f_kill_sf) |
3274 (!exception_valid_int_c & agc_sel_by_pass_cycle_3_int_c & thr7_byp_c_kill_sf) |
3275 ( agc_fetch_v_int_c & thr7_instr_kill_sf) |
3276 ( exception_valid_int_c & thr7_instr_kill_sf);
3277
3278 ifu_ftu_agc_ctl_msff_ctl_macro__width_8 thrx_sf_kill_reg (
3279 .scan_in(thrx_sf_kill_reg_scanin),
3280 .scan_out(thrx_sf_kill_reg_scanout),
3281 .l1clk( l1clk ),
3282 .din ({thr7_sf_kill,thr6_sf_kill,thr5_sf_kill,thr4_sf_kill,
3283 thr3_sf_kill,thr2_sf_kill,thr1_sf_kill,thr0_sf_kill}),
3284 .dout ({thr7_sf_kill_d,thr6_sf_kill_d,thr5_sf_kill_d,thr4_sf_kill_d,
3285 thr3_sf_kill_d,thr2_sf_kill_d,thr1_sf_kill_d,thr0_sf_kill_d}),
3286 .siclk(siclk),
3287 .soclk(soclk)) ;
3288
3289assign thr0_instr_kill_sf = instr_sf_valid_c & curr_fetch_thr_c[0] & any_instr_v_q_c ;
3290assign thr0_byp_bf_kill_sf = sf_valid_by_pass_bf & by_pass_thread_bf[0] & by_pass_valid_instr_bf[0] ;
3291assign thr0_byp_f_kill_sf = sf_valid_by_pass_f & by_pass_thread_f[0] & by_pass_valid_instr_f[0] ;
3292assign thr0_byp_c_kill_sf = sf_valid_by_pass_c & by_pass_thread_c[0] & by_pass_valid_instr_c[0] ;
3293
3294
3295assign thr1_instr_kill_sf = instr_sf_valid_c & curr_fetch_thr_c[1] & any_instr_v_q_c ;
3296assign thr1_byp_bf_kill_sf = sf_valid_by_pass_bf & by_pass_thread_bf[1] & by_pass_valid_instr_bf[0] ;
3297assign thr1_byp_f_kill_sf = sf_valid_by_pass_f & by_pass_thread_f[1] & by_pass_valid_instr_f[0] ;
3298assign thr1_byp_c_kill_sf = sf_valid_by_pass_c & by_pass_thread_c[1] & by_pass_valid_instr_c[0] ;
3299
3300assign thr2_instr_kill_sf = instr_sf_valid_c & curr_fetch_thr_c[2] & any_instr_v_q_c ;
3301assign thr2_byp_bf_kill_sf = sf_valid_by_pass_bf & by_pass_thread_bf[2] & by_pass_valid_instr_bf[0] ;
3302assign thr2_byp_f_kill_sf = sf_valid_by_pass_f & by_pass_thread_f[2] & by_pass_valid_instr_f[0] ;
3303assign thr2_byp_c_kill_sf = sf_valid_by_pass_c & by_pass_thread_c[2] & by_pass_valid_instr_c[0] ;
3304
3305assign thr3_instr_kill_sf = instr_sf_valid_c & curr_fetch_thr_c[3] & any_instr_v_q_c ;
3306assign thr3_byp_bf_kill_sf = sf_valid_by_pass_bf & by_pass_thread_bf[3] & by_pass_valid_instr_bf[0] ;
3307assign thr3_byp_f_kill_sf = sf_valid_by_pass_f & by_pass_thread_f[3] & by_pass_valid_instr_f[0] ;
3308assign thr3_byp_c_kill_sf = sf_valid_by_pass_c & by_pass_thread_c[3] & by_pass_valid_instr_c[0] ;
3309
3310assign thr4_instr_kill_sf = instr_sf_valid_c & curr_fetch_thr_c[4] & any_instr_v_q_c ;
3311assign thr4_byp_bf_kill_sf = sf_valid_by_pass_bf & by_pass_thread_bf[4] & by_pass_valid_instr_bf[0] ;
3312assign thr4_byp_f_kill_sf = sf_valid_by_pass_f & by_pass_thread_f[4] & by_pass_valid_instr_f[0] ;
3313assign thr4_byp_c_kill_sf = sf_valid_by_pass_c & by_pass_thread_c[4] & by_pass_valid_instr_c[0] ;
3314
3315
3316assign thr5_instr_kill_sf = instr_sf_valid_c & curr_fetch_thr_c[5] & any_instr_v_q_c ;
3317assign thr5_byp_bf_kill_sf = sf_valid_by_pass_bf & by_pass_thread_bf[5] & by_pass_valid_instr_bf[0] ;
3318assign thr5_byp_f_kill_sf = sf_valid_by_pass_f & by_pass_thread_f[5] & by_pass_valid_instr_f[0] ;
3319assign thr5_byp_c_kill_sf = sf_valid_by_pass_c & by_pass_thread_c[5] & by_pass_valid_instr_c[0] ;
3320
3321assign thr6_instr_kill_sf = instr_sf_valid_c & curr_fetch_thr_c[6] & any_instr_v_q_c ;
3322assign thr6_byp_bf_kill_sf = sf_valid_by_pass_bf & by_pass_thread_bf[6] & by_pass_valid_instr_bf[0] ;
3323assign thr6_byp_f_kill_sf = sf_valid_by_pass_f & by_pass_thread_f[6] & by_pass_valid_instr_f[0] ;
3324assign thr6_byp_c_kill_sf = sf_valid_by_pass_c & by_pass_thread_c[6] & by_pass_valid_instr_c[0] ;
3325
3326assign thr7_instr_kill_sf = instr_sf_valid_c & curr_fetch_thr_c[7] & any_instr_v_q_c ;
3327assign thr7_byp_bf_kill_sf = sf_valid_by_pass_bf & by_pass_thread_bf[7] & by_pass_valid_instr_bf[0] ;
3328assign thr7_byp_f_kill_sf = sf_valid_by_pass_f & by_pass_thread_f[7] & by_pass_valid_instr_f[0] ;
3329assign thr7_byp_c_kill_sf = sf_valid_by_pass_c & by_pass_thread_c[7] & by_pass_valid_instr_c[0] ;
3330
3331
3332
3333///////////////////////////////////////////////////////////
3334// Generate the write enable for the V bits. //
3335///////////////////////////////////////////////////////////
3336 ifu_ftu_agc_ctl_msff_ctl_macro__width_16 mbist_data_in_reg (
3337 .scan_in(mbist_data_in_reg_scanin),
3338 .scan_out(mbist_data_in_reg_scanout),
3339 .l1clk( l1clk ),
3340 .din ({mbi_addr[8:6], mbi_cmpsel[2:0], mbi_run, mbi_icv_write_en,mbi_wdata[7:0]}),
3341 .dout ({mbi_bist_way_bf[2:0], mbi_bist_word_en_bf[2:0], mbi_run_bf, mbi_icv_write_en_bf, mbi_wdata_bf[7:0]}),
3342 .siclk(siclk),
3343 .soclk(soclk));
3344
3345 assign agc_fill_wrway_bf[2:0] = ({3{agc_data_ready_bf & !mbi_run_bf}} & agc_cmu_fill_wrway_bf[2:0] ) |
3346 ({3{mbi_run_bf}} & mbi_bist_way_bf[2:0]) |
3347 ({3{(!agc_data_ready_bf & !mbi_run_bf)}} & asi_way_bf[2:0] ) ;
3348
3349 ifu_ftu_agc_ctl_msff_ctl_macro__width_3 cmu_fill_wrway_reg (
3350 .scan_in(cmu_fill_wrway_reg_scanin),
3351 .scan_out(cmu_fill_wrway_reg_scanout),
3352 .l1clk( l1clk ),
3353 .din (cmu_fill_wrway[2:0]),
3354 .dout (agc_cmu_fill_wrway_bf[2:0]),
3355 .siclk(siclk),
3356 .soclk(soclk));
3357
3358 ifu_ftu_agc_ctl_msff_ctl_macro__width_3 asi_mbist_way_f_reg (
3359 .scan_in(asi_mbist_way_f_reg_scanin),
3360 .scan_out(asi_mbist_way_f_reg_scanout),
3361 .l1clk( l1clk_pm1 ),
3362 .din (agc_fill_wrway_bf[2:0]),
3363 .dout (agc_asi_mbist_way_f[2:0]),
3364 .siclk(siclk),
3365 .soclk(soclk));
3366
3367
3368assign agc_sel_tg_data_f[0] = ~agc_asi_mbist_way_f[2] & ~agc_asi_mbist_way_f[1] & ~agc_asi_mbist_way_f[0] ;
3369assign agc_sel_tg_data_f[1] = ~agc_asi_mbist_way_f[2] & ~agc_asi_mbist_way_f[1] & agc_asi_mbist_way_f[0] ;
3370assign agc_sel_tg_data_f[2] = ~agc_asi_mbist_way_f[2] & agc_asi_mbist_way_f[1] & ~agc_asi_mbist_way_f[0] ;
3371assign agc_sel_tg_data_f[3] = ~agc_asi_mbist_way_f[2] & agc_asi_mbist_way_f[1] & agc_asi_mbist_way_f[0] ;
3372assign agc_sel_tg_data_f[4] = agc_asi_mbist_way_f[2] & ~agc_asi_mbist_way_f[1] & ~agc_asi_mbist_way_f[0] ;
3373assign agc_sel_tg_data_f[5] = agc_asi_mbist_way_f[2] & ~agc_asi_mbist_way_f[1] & agc_asi_mbist_way_f[0] ;
3374assign agc_sel_tg_data_f[6] = agc_asi_mbist_way_f[2] & agc_asi_mbist_way_f[1] & ~agc_asi_mbist_way_f[0] ;
3375assign agc_sel_tg_data_f[7] = agc_asi_mbist_way_f[2] & agc_asi_mbist_way_f[1] & agc_asi_mbist_way_f[0] ;
3376
3377assign next_wrway_bbf[0] = ~cmu_fill_wrway[2] & ~cmu_fill_wrway[1] & ~cmu_fill_wrway[0] ;
3378assign next_wrway_bbf[1] = ~cmu_fill_wrway[2] & ~cmu_fill_wrway[1] & cmu_fill_wrway[0] ;
3379assign next_wrway_bbf[2] = ~cmu_fill_wrway[2] & cmu_fill_wrway[1] & ~cmu_fill_wrway[0] ;
3380assign next_wrway_bbf[3] = ~cmu_fill_wrway[2] & cmu_fill_wrway[1] & cmu_fill_wrway[0] ;
3381assign next_wrway_bbf[4] = cmu_fill_wrway[2] & ~cmu_fill_wrway[1] & ~cmu_fill_wrway[0] ;
3382assign next_wrway_bbf[5] = cmu_fill_wrway[2] & ~cmu_fill_wrway[1] & cmu_fill_wrway[0] ;
3383assign next_wrway_bbf[6] = cmu_fill_wrway[2] & cmu_fill_wrway[1] & ~cmu_fill_wrway[0] ;
3384assign next_wrway_bbf[7] = cmu_fill_wrway[2] & cmu_fill_wrway[1] & cmu_fill_wrway[0] ;
3385
3386assign vl_data[1] = (agc_sel_tg_data_f[0] & agd_itlb_valid_f[0] ) |
3387 (agc_sel_tg_data_f[1] & agd_itlb_valid_f[1] ) |
3388 (agc_sel_tg_data_f[2] & agd_itlb_valid_f[2] ) |
3389 (agc_sel_tg_data_f[3] & agd_itlb_valid_f[3] ) |
3390 (agc_sel_tg_data_f[4] & agd_itlb_valid_f[4] ) |
3391 (agc_sel_tg_data_f[5] & agd_itlb_valid_f[5] ) |
3392 (agc_sel_tg_data_f[6] & agd_itlb_valid_f[6] ) |
3393 (agc_sel_tg_data_f[7] & agd_itlb_valid_f[7] ) ;
3394
3395assign vl_data[0] = (agc_sel_tg_data_f[0] & agd_itlb_valid_dupl_f[0] ) |
3396 (agc_sel_tg_data_f[1] & agd_itlb_valid_dupl_f[1] ) |
3397 (agc_sel_tg_data_f[2] & agd_itlb_valid_dupl_f[2] ) |
3398 (agc_sel_tg_data_f[3] & agd_itlb_valid_dupl_f[3] ) |
3399 (agc_sel_tg_data_f[4] & agd_itlb_valid_dupl_f[4] ) |
3400 (agc_sel_tg_data_f[5] & agd_itlb_valid_dupl_f[5] ) |
3401 (agc_sel_tg_data_f[6] & agd_itlb_valid_dupl_f[6] ) |
3402 (agc_sel_tg_data_f[7] & agd_itlb_valid_dupl_f[7] ) ;
3403
3404 ifu_ftu_agc_ctl_msff_ctl_macro__width_2 vl_data_reg (
3405 .scan_in(vl_data_reg_scanin),
3406 .scan_out(vl_data_reg_scanout),
3407 .l1clk( l1clk_pm1 ),
3408 .din (vl_data[1:0]),
3409 .dout (agc_vl_data_c[1:0]),
3410 .siclk(siclk),
3411 .soclk(soclk));
3412
3413ifu_ftu_agc_ctl_msff_ctl_macro__width_8 itlb_valid_reg (
3414 .scan_in(itlb_valid_reg_scanin),
3415 .scan_out(itlb_valid_reg_scanout),
3416 .l1clk( l1clk ),
3417 .din (agd_itlb_valid_f[7:0]),
3418 .dout (itlb_valid_c[7:0]),
3419 .siclk(siclk),
3420 .soclk(soclk));
3421
3422
3423ifu_ftu_agc_ctl_msff_ctl_macro__width_8 itlb_valid_dupl_reg (
3424 .scan_in(itlb_valid_dupl_reg_scanin),
3425 .scan_out(itlb_valid_dupl_reg_scanout),
3426 .l1clk( l1clk ),
3427 .din (agd_itlb_valid_dupl_f[7:0]),
3428 .dout (itlb_valid_dupl_c[7:0]),
3429 .siclk(siclk),
3430 .soclk(soclk));
3431
3432assign va_hole_excp_extra = ~ifu_agd_pc_f[47] & (&ifu_agd_pc_f[46:5]) ;
3433assign next_va_hole_excp = (agd_va_hole_excp_f | va_hole_excp_extra) & ~agc_itb_bypass_f ;
3434 ifu_ftu_agc_ctl_msff_ctl_macro__width_1 va_hole_excp_c_reg (
3435 .scan_in(va_hole_excp_c_reg_scanin),
3436 .scan_out(va_hole_excp_c_reg_scanout),
3437 .l1clk( l1clk_pm1 ),
3438 .din (next_va_hole_excp),
3439 .dout (va_hole_excp_c),
3440 .siclk(siclk),
3441 .soclk(soclk));
3442
3443
3444assign inv_ack = |cmu_inval_ack[7:0] ;
3445assign next_inv_way_bbf[0] = (~cmu_icache_invalidate_way[2] & ~cmu_icache_invalidate_way[1] & ~cmu_icache_invalidate_way[0]) | inv_ack ;
3446assign next_inv_way_bbf[1] = (~cmu_icache_invalidate_way[2] & ~cmu_icache_invalidate_way[1] & cmu_icache_invalidate_way[0]) | inv_ack ;
3447assign next_inv_way_bbf[2] = (~cmu_icache_invalidate_way[2] & cmu_icache_invalidate_way[1] & ~cmu_icache_invalidate_way[0]) | inv_ack ;
3448assign next_inv_way_bbf[3] = (~cmu_icache_invalidate_way[2] & cmu_icache_invalidate_way[1] & cmu_icache_invalidate_way[0]) | inv_ack ;
3449assign next_inv_way_bbf[4] = ( cmu_icache_invalidate_way[2] & ~cmu_icache_invalidate_way[1] & ~cmu_icache_invalidate_way[0]) | inv_ack ;
3450assign next_inv_way_bbf[5] = ( cmu_icache_invalidate_way[2] & ~cmu_icache_invalidate_way[1] & cmu_icache_invalidate_way[0]) | inv_ack ;
3451assign next_inv_way_bbf[6] = ( cmu_icache_invalidate_way[2] & cmu_icache_invalidate_way[1] & ~cmu_icache_invalidate_way[0]) | inv_ack ;
3452assign next_inv_way_bbf[7] = ( cmu_icache_invalidate_way[2] & cmu_icache_invalidate_way[1] & cmu_icache_invalidate_way[0]) | inv_ack ;
3453
3454assign next_inv_way1_bbf[0] = (~cmu_icache_inv_way1[2] & ~cmu_icache_inv_way1[1] & ~cmu_icache_inv_way1[0]) | inv_ack ;
3455assign next_inv_way1_bbf[1] = (~cmu_icache_inv_way1[2] & ~cmu_icache_inv_way1[1] & cmu_icache_inv_way1[0]) | inv_ack ;
3456assign next_inv_way1_bbf[2] = (~cmu_icache_inv_way1[2] & cmu_icache_inv_way1[1] & ~cmu_icache_inv_way1[0]) | inv_ack ;
3457assign next_inv_way1_bbf[3] = (~cmu_icache_inv_way1[2] & cmu_icache_inv_way1[1] & cmu_icache_inv_way1[0]) | inv_ack ;
3458assign next_inv_way1_bbf[4] = ( cmu_icache_inv_way1[2] & ~cmu_icache_inv_way1[1] & ~cmu_icache_inv_way1[0]) | inv_ack ;
3459assign next_inv_way1_bbf[5] = ( cmu_icache_inv_way1[2] & ~cmu_icache_inv_way1[1] & cmu_icache_inv_way1[0]) | inv_ack ;
3460assign next_inv_way1_bbf[6] = ( cmu_icache_inv_way1[2] & cmu_icache_inv_way1[1] & ~cmu_icache_inv_way1[0]) | inv_ack ;
3461assign next_inv_way1_bbf[7] = ( cmu_icache_inv_way1[2] & cmu_icache_inv_way1[1] & cmu_icache_inv_way1[0]) | inv_ack ;
3462
3463assign asi_way_dec_bf[0] = ~asi_way_bf[2] & ~asi_way_bf[1] & ~asi_way_bf[0] ;
3464assign asi_way_dec_bf[1] = ~asi_way_bf[2] & ~asi_way_bf[1] & asi_way_bf[0] ;
3465assign asi_way_dec_bf[2] = ~asi_way_bf[2] & asi_way_bf[1] & ~asi_way_bf[0] ;
3466assign asi_way_dec_bf[3] = ~asi_way_bf[2] & asi_way_bf[1] & asi_way_bf[0] ;
3467assign asi_way_dec_bf[4] = asi_way_bf[2] & ~asi_way_bf[1] & ~asi_way_bf[0] ;
3468assign asi_way_dec_bf[5] = asi_way_bf[2] & ~asi_way_bf[1] & asi_way_bf[0] ;
3469assign asi_way_dec_bf[6] = asi_way_bf[2] & asi_way_bf[1] & ~asi_way_bf[0] ;
3470assign asi_way_dec_bf[7] = asi_way_bf[2] & asi_way_bf[1] & asi_way_bf[0] ;
3471
3472//////////////// Address staging /////////////////////////////////////////
3473ifu_ftu_agc_ctl_msff_ctl_macro__width_1 addr_bit_5_bf_reg (
3474 .scan_in(addr_bit_5_bf_reg_scanin),
3475 .scan_out(addr_bit_5_bf_reg_scanout),
3476 .l1clk( l1clk ),
3477 .din (fill_paddr_bit_5),
3478 .dout (phys_addr_bit_5_bf),
3479 .siclk(siclk),
3480 .soclk(soclk));
3481
3482ifu_ftu_agc_ctl_msff_ctl_macro__width_1 inv_bit_5_bf_reg (
3483 .scan_in(inv_bit_5_bf_reg_scanin),
3484 .scan_out(inv_bit_5_bf_reg_scanout),
3485 .l1clk( l1clk ),
3486 .din (inv_paddr_bit_5),
3487 .dout (inv_addr_bit_5_bf),
3488 .siclk(siclk),
3489 .soclk(soclk));
3490
3491assign inv_or_phys_addr_bit_5_bf = ( agc_inv_line_bf & inv_addr_bit_5_bf) |
3492 (~agc_inv_line_bf & ftp_fill_req_q_bf & phys_addr_bit_5_bf) |
3493 (~agc_inv_line_bf & ftp_asi_tg_wr_req_hold & asi_addr_bf[6] & ~ftp_fill_req_q_bf) ;
3494
3495//////////////// Write way staging /////////////////////////////////////////
3496ifu_ftu_agc_ctl_msff_ctl_macro__width_8 wrway_bf_reg (
3497 .scan_in(wrway_bf_reg_scanin),
3498 .scan_out(wrway_bf_reg_scanout),
3499 .l1clk( l1clk_pm1 ),
3500 .din (next_wrway_bbf[7:0]),
3501 .dout (wrway_bf[7:0]),
3502 .siclk(siclk),
3503 .soclk(soclk));
3504
3505ifu_ftu_agc_ctl_msff_ctl_macro__width_8 inv_way_bf_reg (
3506 .scan_in(inv_way_bf_reg_scanin),
3507 .scan_out(inv_way_bf_reg_scanout),
3508 .l1clk( l1clk ),
3509 .din (next_inv_way_bbf[7:0]),
3510 .dout (inv_way_bf[7:0]),
3511 .siclk(siclk),
3512 .soclk(soclk));
3513
3514ifu_ftu_agc_ctl_msff_ctl_macro__width_8 inv_way1_bf_reg (
3515 .scan_in(inv_way1_bf_reg_scanin),
3516 .scan_out(inv_way1_bf_reg_scanout),
3517 .l1clk( l1clk ),
3518 .din (next_inv_way1_bbf[7:0]),
3519 .dout (inv_way1_bf[7:0]),
3520 .siclk(siclk),
3521 .soclk(soclk));
3522
3523assign inv_or_wrway_bf[7:0] = ({8{ agc_inv_line_bf & ~ftp_fill_req_q_bf }} & inv_way_bf[7:0]) |
3524 ({8{~agc_inv_line_bf & ftp_fill_req_q_bf }} & wrway_bf[7:0]) |
3525 ({8{~agc_inv_line_bf & ~ftp_fill_req_q_bf & ftp_asi_tg_wr_req_hold}} & asi_way_dec_bf[7:0]) ;
3526
3527assign way1_inv[7:0] = agc_evic_line_bf ? inv_way1_bf[7:0] : 8'b0 ;
3528
3529assign agc_icv_wren_bf[31:0] = ({32{ inv_or_phys_addr_bit_5_bf & !mbi_run_bf}} & {inv_or_wrway_bf[7:0],8'b0,inv_or_wrway_bf[7:0],8'b0}) |
3530 ({32{~inv_or_phys_addr_bit_5_bf & !mbi_run_bf}} & {way1_inv[7:0], inv_or_wrway_bf[7:0],way1_inv[7:0],inv_or_wrway_bf[7:0] }) |
3531 ({32{ mbi_run_bf}} & 32'hFFFFFFFF) ;
3532//////////////// Invalidate staging /////////////////////////////////////////
3533assign next_inv_line = cmu_icache_invalidate | inv_ack ;
3534ifu_ftu_agc_ctl_msff_ctl_macro__width_1 inv_line_bf_reg (
3535 .scan_in(inv_line_bf_reg_scanin),
3536 .scan_out(inv_line_bf_reg_scanout),
3537 .l1clk( l1clk ),
3538 .din (next_inv_line),
3539 .dout (agc_inv_line_bf),
3540 .siclk(siclk),
3541 .soclk(soclk));
3542
3543ifu_ftu_agc_ctl_msff_ctl_macro__width_1 evic_line_bf_reg (
3544 .scan_in(evic_line_bf_reg_scanin),
3545 .scan_out(evic_line_bf_reg_scanout),
3546 .l1clk( l1clk ),
3547 .din (cmu_evic_invalidate),
3548 .dout (agc_evic_line_bf),
3549 .siclk(siclk),
3550 .soclk(soclk));
3551
3552assign icv_wrdata[1] = ftp_fill_req_q_bf |
3553 (asi_vl_arr_data[1] & ~agc_inv_line_bf & ftp_asi_tg_wr_req_hold ) ;
3554
3555assign icv_wrdata[0] = ftp_fill_req_q_bf |
3556 (asi_vl_arr_data[0] & ~agc_inv_line_bf & ftp_asi_tg_wr_req_hold) ;
3557
3558assign agc_icv_wrdata_bf[31:0] = mbi_run_bf ? {mbi_wdata_bf[7:0],mbi_wdata_bf[7:0],mbi_wdata_bf[7:0],mbi_wdata_bf[7:0]} :
3559 {{8{icv_wrdata[0]}},{8{icv_wrdata[0]}},{8{icv_wrdata[1]}},{8{icv_wrdata[1]}}} ;
3560assign agc_icv_wr_req_bf = (~mbi_run_bf & (ftp_fill_req_q_bf | agc_inv_line_bf | ftp_asi_tg_wr_req_hold)) |
3561 ( mbi_run_bf & mbi_icv_write_en_bf) ;
3562///////////////////////////////////////////////////////////
3563// Generate duplicate miss reset signal from WOB bits. //
3564///////////////////////////////////////////////////////////
3565assign next_data_ready_bbf = cmu_any_data_ready & ~cmu_any_un_cacheable ;
3566
3567ifu_ftu_agc_ctl_msff_ctl_macro__width_1 data_ready_bf_reg (
3568 .scan_in(data_ready_bf_reg_scanin),
3569 .scan_out(data_ready_bf_reg_scanout),
3570 .l1clk( l1clk_pm1 ),
3571 .din (next_data_ready_bbf),
3572 .dout (agc_data_ready_bf),
3573 .siclk(siclk),
3574 .soclk(soclk));
3575
3576
3577
3578ifu_ftu_agc_ctl_msff_ctl_macro__width_5 l2_cache_miss_in_reg (
3579 .scan_in(l2_cache_miss_in_reg_scanin),
3580 .scan_out(l2_cache_miss_in_reg_scanout),
3581 .l1clk( l1clk_pm1 ),
3582 .din ({l1_miss_in,l2_miss_in,l2_err_corr_in,l2_err_ucorr_in,l2_err_ndata_in}),
3583 .dout ({l1_cache_1_miss,l2_cache_1_miss,l2_err_corr_1_ff,l2_err_ucorr_1_ff,l2_err_ndata_1_ff}),
3584 .siclk(siclk),
3585 .soclk(soclk));
3586
3587ifu_ftu_agc_ctl_msff_ctl_macro__width_5 l2_cache_miss_1_reg (
3588 .scan_in(l2_cache_miss_1_reg_scanin),
3589 .scan_out(l2_cache_miss_1_reg_scanout),
3590 .l1clk( l1clk_pm1 ),
3591 .din ({l1_cache_1_miss,l2_cache_1_miss,l2_err_corr_1_ff,l2_err_ucorr_1_ff,l2_err_ndata_1_ff}),
3592 .dout ({l1_cache_2_miss,l2_cache_2_miss,l2_err_corr_2_ff,l2_err_ucorr_2_ff,l2_err_ndata_2_ff}),
3593 .siclk(siclk),
3594 .soclk(soclk));
3595
3596ifu_ftu_agc_ctl_msff_ctl_macro__width_5 l2_cache_miss_2_reg (
3597 .scan_in(l2_cache_miss_2_reg_scanin),
3598 .scan_out(l2_cache_miss_2_reg_scanout),
3599 .l1clk( l1clk_pm1 ),
3600 .din ({l1_cache_2_miss,l2_cache_2_miss,l2_err_corr_2_ff,l2_err_ucorr_2_ff,l2_err_ndata_2_ff}),
3601 .dout ({l1_cache_3_miss,l2_cache_3_miss,l2_err_corr_3_ff,l2_err_ucorr_3_ff,l2_err_ndata_3_ff}),
3602 .siclk(siclk),
3603 .soclk(soclk));
3604
3605assign precise_en_bp_in = (ceter_pscce_ff[0] & next_by_pass_sel_bbf[0]) |
3606 (ceter_pscce_ff[1] & next_by_pass_sel_bbf[1]) |
3607 (ceter_pscce_ff[2] & next_by_pass_sel_bbf[2]) |
3608 (ceter_pscce_ff[3] & next_by_pass_sel_bbf[3]) |
3609 (ceter_pscce_ff[4] & next_by_pass_sel_bbf[4]) |
3610 (ceter_pscce_ff[5] & next_by_pass_sel_bbf[5]) |
3611 (ceter_pscce_ff[6] & next_by_pass_sel_bbf[6]) |
3612 (ceter_pscce_ff[7] & next_by_pass_sel_bbf[7]) ;
3613
3614assign l2_err_corr_in = ~cmu_l2_err[1] & cmu_l2_err[0] & cerer_icl2c_ff;
3615assign l2_err_ucorr_in = cmu_l2_err[1] & ~cmu_l2_err[0] & precise_en_bp_in & cerer_icl2u_ff;
3616assign l2_err_ndata_in = cmu_l2_err[1] & cmu_l2_err[0] & precise_en_bp_in & cerer_icl2nd_ff;
3617assign l2_miss_in = cmu_l2miss & ~l2_err_corr_in & ~l2_err_ucorr_in & ~l2_err_ndata_in ;
3618assign l1_miss_in = ~cmu_l2miss & ~l2_err_corr_in & ~l2_err_ucorr_in & ~l2_err_ndata_in ;
3619
3620assign l2_ucorr_err_byp_1 = agc_bypass_selects[0] & l2_err_ucorr_1_ff;
3621assign l2_ucorr_err_byp_2 = agc_bypass_selects[1] & l2_err_ucorr_2_ff;
3622assign l2_ucorr_err_byp_3 = agc_bypass_selects[2] & l2_err_ucorr_3_ff;
3623assign l2_ucorr_err = l2_ucorr_err_byp_1 | l2_ucorr_err_byp_2 | l2_ucorr_err_byp_3 ;
3624
3625assign l2_corr_err_byp_1 = agc_bypass_selects[0] & l2_err_corr_1_ff;
3626assign l2_corr_err_byp_2 = agc_bypass_selects[1] & l2_err_corr_2_ff;
3627assign l2_corr_err_byp_3 = agc_bypass_selects[2] & l2_err_corr_3_ff;
3628assign l2_corr_err = l2_corr_err_byp_1 | l2_corr_err_byp_2 | l2_corr_err_byp_3 ;
3629
3630assign l2_ndata_err_byp_1 = agc_bypass_selects[0] & l2_err_ndata_1_ff;
3631assign l2_ndata_err_byp_2 = agc_bypass_selects[1] & l2_err_ndata_2_ff;
3632assign l2_ndata_err_byp_3 = agc_bypass_selects[2] & l2_err_ndata_3_ff;
3633assign l2_ndata_err = l2_ndata_err_byp_1 | l2_ndata_err_byp_2 | l2_ndata_err_byp_3 ;
3634
3635assign l2_cache_miss_byp_1 = agc_bypass_selects[0] & l2_cache_1_miss;
3636assign l2_cache_miss_byp_2 = agc_bypass_selects[1] & l2_cache_2_miss ;
3637assign l2_cache_miss_byp_3 = agc_bypass_selects[2] & l2_cache_3_miss ;
3638
3639assign l2_cache_miss = l2_cache_miss_byp_1 | l2_cache_miss_byp_2 | l2_cache_miss_byp_3 ;
3640assign l1_cache_miss = (agc_bypass_selects[0] & l1_cache_1_miss) |
3641 (agc_bypass_selects[1] & l1_cache_2_miss) |
3642 (agc_bypass_selects[2] & l1_cache_3_miss) ;
3643
3644
3645
3646
3647
3648/////////////////////////////////////////////////////////////////////////////
3649// Cache miss signals. //
3650///////////////////////////////////////////////////////////////////////////
3651
3652assign itb_cmiss_c = ~itb_chit_c | agc_ic_disable_thr_c;
3653assign itb_itb_miss_c = ~itb_cam_hit_c;
3654
3655
3656assign agc_itb_cmiss_c_q = itb_cmiss_c & agc_fetch_v_c & ~itb_itb_miss_c & ~ic_valid_err_no_priority &
3657 ~va_hole_excp_c & ~itb_itb_acc_viol_c & ~invalidation_req_c &
3658 ~(itb_tag_perr & cerer_ittp_ff) & ~(itb_tte_data_parity & agc_fetch_v_c_unq & cerer_itdp_ff) &
3659 ~(agc_tag_perror_c & cerer_ictp_ff) & ~(tlb_nfo & itb_cam_hit_c) & ~itb_mhit_en_c;
3660
3661assign agc_qualify_cmiss = ~itb_itb_miss_c & ~ic_valid_err_no_priority & ~va_hole_excp_c & ~itb_itb_acc_viol_c & ~invalidation_req_c &
3662 ~(itb_tag_perr & cerer_ittp_ff) &
3663 ~(itb_tte_data_parity & agc_fetch_v_c_unq & cerer_itdp_ff) &
3664 ~(agc_tag_perror_c & cerer_ictp_ff) & ~(tlb_nfo & itb_cam_hit_c) & ~itb_mhit_en_c;
3665
3666
3667
3668
3669assign agc_thr0_micro_flush_unq_c = (itb_cmiss_c | invalidation_req_c) &
3670 curr_fetch_thr_c[0] & agc_fetch_v_int_c ;
3671assign agc_thr1_micro_flush_unq_c = (itb_cmiss_c | invalidation_req_c) &
3672 curr_fetch_thr_c[1] & agc_fetch_v_int_c;
3673assign agc_thr2_micro_flush_unq_c = (itb_cmiss_c | invalidation_req_c) &
3674 curr_fetch_thr_c[2] & agc_fetch_v_int_c;
3675assign agc_thr3_micro_flush_unq_c = (itb_cmiss_c | invalidation_req_c) &
3676 curr_fetch_thr_c[3] & agc_fetch_v_int_c;
3677assign agc_thr4_micro_flush_unq_c = (itb_cmiss_c | invalidation_req_c) &
3678 curr_fetch_thr_c[4] & agc_fetch_v_int_c;
3679assign agc_thr5_micro_flush_unq_c = (itb_cmiss_c | invalidation_req_c) &
3680 curr_fetch_thr_c[5] & agc_fetch_v_int_c;
3681assign agc_thr6_micro_flush_unq_c = (itb_cmiss_c | invalidation_req_c) &
3682 curr_fetch_thr_c[6] & agc_fetch_v_int_c;
3683assign agc_thr7_micro_flush_unq_c = (itb_cmiss_c | invalidation_req_c) &
3684 curr_fetch_thr_c[7] & agc_fetch_v_int_c;
3685
3686assign thr0_replay_pc = (itb_cmiss_c | invalidation_req_c) & curr_fetch_thr_c[0] & agc_fetch_v_int_c ;
3687assign thr1_replay_pc = (itb_cmiss_c | invalidation_req_c) & curr_fetch_thr_c[1] & agc_fetch_v_int_c ;
3688assign thr2_replay_pc = (itb_cmiss_c | invalidation_req_c) & curr_fetch_thr_c[2] & agc_fetch_v_int_c ;
3689assign thr3_replay_pc = (itb_cmiss_c | invalidation_req_c) & curr_fetch_thr_c[3] & agc_fetch_v_int_c ;
3690assign thr4_replay_pc = (itb_cmiss_c | invalidation_req_c) & curr_fetch_thr_c[4] & agc_fetch_v_int_c ;
3691assign thr5_replay_pc = (itb_cmiss_c | invalidation_req_c) & curr_fetch_thr_c[5] & agc_fetch_v_int_c ;
3692assign thr6_replay_pc = (itb_cmiss_c | invalidation_req_c) & curr_fetch_thr_c[6] & agc_fetch_v_int_c ;
3693assign thr7_replay_pc = (itb_cmiss_c | invalidation_req_c) & curr_fetch_thr_c[7] & agc_fetch_v_int_c ;
3694
3695assign agc_thr0_reset_sf_c = agc_thr0_micro_flush_unq_c ;
3696assign agc_thr1_reset_sf_c = agc_thr1_micro_flush_unq_c ;
3697assign agc_thr2_reset_sf_c = agc_thr2_micro_flush_unq_c ;
3698assign agc_thr3_reset_sf_c = agc_thr3_micro_flush_unq_c ;
3699assign agc_thr4_reset_sf_c = agc_thr4_micro_flush_unq_c ;
3700assign agc_thr5_reset_sf_c = agc_thr5_micro_flush_unq_c ;
3701assign agc_thr6_reset_sf_c = agc_thr6_micro_flush_unq_c ;
3702assign agc_thr7_reset_sf_c = agc_thr7_micro_flush_unq_c ;
3703
3704
3705assign agc_thr0_cmiss_stm_c = agc_itb_cmiss_c_q & curr_fetch_thr_c[0] & ~redirect_ibu_int_bf[0];
3706assign agc_thr1_cmiss_stm_c = agc_itb_cmiss_c_q & curr_fetch_thr_c[1] & ~redirect_ibu_int_bf[1];
3707assign agc_thr2_cmiss_stm_c = agc_itb_cmiss_c_q & curr_fetch_thr_c[2] & ~redirect_ibu_int_bf[2];
3708assign agc_thr3_cmiss_stm_c = agc_itb_cmiss_c_q & curr_fetch_thr_c[3] & ~redirect_ibu_int_bf[3];
3709assign agc_thr4_cmiss_stm_c = agc_itb_cmiss_c_q & curr_fetch_thr_c[4] & ~redirect_ibu_int_bf[4];
3710assign agc_thr5_cmiss_stm_c = agc_itb_cmiss_c_q & curr_fetch_thr_c[5] & ~redirect_ibu_int_bf[5];
3711assign agc_thr6_cmiss_stm_c = agc_itb_cmiss_c_q & curr_fetch_thr_c[6] & ~redirect_ibu_int_bf[6];
3712assign agc_thr7_cmiss_stm_c = agc_itb_cmiss_c_q & curr_fetch_thr_c[7] & ~redirect_ibu_int_bf[7];
3713
3714assign thr0_unc_is_valid = agc_thr0_cmiss_stm_c & agc_thrx_un_cacheable ;
3715assign thr1_unc_is_valid = agc_thr1_cmiss_stm_c & agc_thrx_un_cacheable ;
3716assign thr2_unc_is_valid = agc_thr2_cmiss_stm_c & agc_thrx_un_cacheable ;
3717assign thr3_unc_is_valid = agc_thr3_cmiss_stm_c & agc_thrx_un_cacheable ;
3718assign thr4_unc_is_valid = agc_thr4_cmiss_stm_c & agc_thrx_un_cacheable ;
3719assign thr5_unc_is_valid = agc_thr5_cmiss_stm_c & agc_thrx_un_cacheable ;
3720assign thr6_unc_is_valid = agc_thr6_cmiss_stm_c & agc_thrx_un_cacheable ;
3721assign thr7_unc_is_valid = agc_thr7_cmiss_stm_c & agc_thrx_un_cacheable ;
3722
3723
3724///////////////////////////////////////////////////////////////////////
3725// Generate which instructions are valid and to be sent to the IB. //
3726///////////////////////////////////////////////////////////////////////
3727assign bus_0_valid_f = (~ifu_agd_pc_f[4] & ifu_agd_pc_f[3] & ~instr_sf_valid_f & ~invalidation_req_f) |
3728 (~ifu_agd_pc_f[4] & ~ifu_agd_pc_f[3] & ifu_agd_pc_f[2] & ~instr_sf_valid_f & ~invalidation_req_f) |
3729 (~ifu_agd_pc_f[3] & ~ifu_agd_pc_f[2] & ~invalidation_req_f) ;
3730
3731assign bus_1_valid_f = (~ifu_agd_pc_f[3] & ifu_agd_pc_f[2] & ~invalidation_req_f) |
3732 (~ifu_agd_pc_f[3] & ~ifu_agd_pc_f[2] & ~instr_sf_valid_f & ~invalidation_req_f) |
3733 (~ifu_agd_pc_f[4] & ifu_agd_pc_f[3] & ~instr_sf_valid_f & ~invalidation_req_f) ;
3734
3735assign bus_2_valid_f = ( ifu_agd_pc_f[3] & ~ifu_agd_pc_f[2] & ~invalidation_req_f) |
3736 (~ifu_agd_pc_f[3] & ifu_agd_pc_f[2] & ~instr_sf_valid_f & ~invalidation_req_f) |
3737 (~ifu_agd_pc_f[3] & ~ifu_agd_pc_f[2] & ~instr_sf_valid_f & ~invalidation_req_f) |
3738 (~ifu_agd_pc_f[4] & ifu_agd_pc_f[2] & ~instr_sf_valid_f & ~invalidation_req_f) ;
3739
3740assign bus_3_valid_f = ( ifu_agd_pc_f[3] & ifu_agd_pc_f[2] & ~invalidation_req_f) |
3741 ( ifu_agd_pc_f[3] & ~ifu_agd_pc_f[2] & ~instr_sf_valid_f & ~invalidation_req_f) |
3742 (~ifu_agd_pc_f[3] & ifu_agd_pc_f[2] & ~instr_sf_valid_f & ~invalidation_req_f) |
3743 (~ifu_agd_pc_f[3] & ~ifu_agd_pc_f[2] & ~instr_sf_valid_f & ~invalidation_req_f) ;
3744
3745
3746ifu_ftu_agc_ctl_msff_ctl_macro__width_4 ic_instr_v_reg (
3747 .scan_in(ic_instr_v_reg_scanin),
3748 .scan_out(ic_instr_v_reg_scanout),
3749 .l1clk( l1clk_pm1 ),
3750 .din ({bus_3_valid_f,bus_2_valid_f,bus_1_valid_f,bus_0_valid_f}),
3751 .dout ({bus_3_valid_c,bus_2_valid_c,bus_1_valid_c,bus_0_valid_c}),
3752 .siclk(siclk),
3753 .soclk(soclk));
3754
3755assign next_any_instr_v_c = bus_3_valid_f | bus_2_valid_f | bus_1_valid_f | bus_0_valid_f ;
3756
3757ifu_ftu_agc_ctl_msff_ctl_macro__width_1 any_instr_v_c_reg (
3758 .scan_in(any_instr_v_c_reg_scanin),
3759 .scan_out(any_instr_v_c_reg_scanout),
3760 .l1clk( l1clk_pm1 ),
3761 .din (next_any_instr_v_c),
3762 .dout (any_instr_v_c),
3763 .siclk(siclk),
3764 .soclk(soclk));
3765
3766assign any_instr_v_q_c = any_instr_v_c & ~itb_cmiss_c & agc_fetch_v_c ;
3767
3768assign agc_itb_itb_miss_c_q = itb_itb_miss_c & agc_fetch_v_c_dup_unq & ~va_hole_excp_c & ~invalidation_req_c;
3769assign agc_itb_itb_miss_c_int_q = itb_itb_miss_c & agc_fetch_v_int_c & ~va_hole_excp_c & ~invalidation_req_c;
3770
3771assign exception_valid_c = agc_itb_itb_miss_c_q | ((itb_itb_acc_viol_no_priority | va_hole_exception_c |
3772 nfo_tlb_exception_no_priority | tag_perror_no_priority | itb_mhit_no_priority |
3773 tte_tag_parity_no_priority | ic_valid_err_no_priority | tag_multiple_hit_no_priority |
3774 tte_data_parity_no_priority ) & agc_fetch_v_c_dup_unq );
3775
3776assign ftu_exception_valid_c = agc_itb_itb_miss_c_q | ((itb_itb_acc_viol_no_priority | va_hole_exception_c |
3777 nfo_tlb_exception_no_priority | tag_perror_no_priority | itb_mhit_no_priority |
3778 tte_tag_parity_no_priority | ic_valid_err_no_priority | tag_multiple_hit_no_priority |
3779 tte_data_parity_no_priority ) & agc_fetch_v_c_dup_unq );
3780assign exception_valid_int_c = agc_itb_itb_miss_c_int_q | itb_itb_acc_viol_int_c | va_hole_exception_int_c;
3781
3782assign instr_3_v_q_c = (bus_3_valid_c & ~itb_cmiss_c & agc_fetch_v_c) ;
3783assign instr_2_v_q_c = (bus_2_valid_c & ~itb_cmiss_c & agc_fetch_v_c) ;
3784assign instr_1_v_q_c = (bus_1_valid_c & ~itb_cmiss_c & agc_fetch_v_c) ;
3785assign instr_0_v_q_c = (bus_0_valid_c & ~itb_cmiss_c & agc_fetch_v_c) ;
3786
3787ifu_ftu_agc_ctl_msff_ctl_macro__width_16 hpstate_reg (
3788 .scan_in(hpstate_reg_scanin),
3789 .scan_out(hpstate_reg_scanout),
3790 .l1clk( l1clk ),
3791 .din ({tlu_ifu_hpstate_hpriv[7:0], tlu_ifu_pstate_priv[7:0]}),
3792 .dout ({hpstate_hpriv_ff[7:0], pstate_priv_ff[7:0]}),
3793 .siclk(siclk),
3794 .soclk(soclk));
3795
3796assign next_priv_state = ftp_fetch_v_f & (
3797 (ftp_curr_fetch_thr_f[0] & (hpstate_hpriv_ff[0] | pstate_priv_ff[0])) |
3798 (ftp_curr_fetch_thr_f[1] & (hpstate_hpriv_ff[1] | pstate_priv_ff[1])) |
3799 (ftp_curr_fetch_thr_f[2] & (hpstate_hpriv_ff[2] | pstate_priv_ff[2])) |
3800 (ftp_curr_fetch_thr_f[3] & (hpstate_hpriv_ff[3] | pstate_priv_ff[3])) |
3801 (ftp_curr_fetch_thr_f[4] & (hpstate_hpriv_ff[4] | pstate_priv_ff[4])) |
3802 (ftp_curr_fetch_thr_f[5] & (hpstate_hpriv_ff[5] | pstate_priv_ff[5])) |
3803 (ftp_curr_fetch_thr_f[6] & (hpstate_hpriv_ff[6] | pstate_priv_ff[6])) |
3804 (ftp_curr_fetch_thr_f[7] & (hpstate_hpriv_ff[7] | pstate_priv_ff[7])) ) ;
3805
3806ifu_ftu_agc_ctl_msff_ctl_macro__width_1 priv_state_c_reg (
3807 .scan_in(priv_state_c_reg_scanin),
3808 .scan_out(priv_state_c_reg_scanout),
3809 .l1clk( l1clk_pm1 ),
3810 .din (next_priv_state),
3811 .dout (agc_priv_state_c),
3812 .siclk(siclk),
3813 .soclk(soclk));
3814
3815
3816
3817///////////////////////////////////////////////////////////////////////
3818ifu_ftu_agc_ctl_msff_ctl_macro__width_6 tlb_parity_reg (
3819 .scan_in(tlb_parity_reg_scanin),
3820 .scan_out(tlb_parity_reg_scanout),
3821 .l1clk( l1clk ),
3822 .din ({itd_prty_256m,itd_prty_4m,itd_prty_64k,itd_prty_8k, itd_prty_ctxt0,itd_prty_ctxt1}),
3823 .dout ({prty_256m_c,prty_4m_c,prty_64k_c,prty_8k_c, prty_ctxt0_c,prty_ctxt1_c}),
3824 .siclk(siclk),
3825 .soclk(soclk)) ;
3826
3827
3828///////////////////////
3829// TLB errors
3830// Code from LSU
3831//
3832// Resolve TLB tag parity error here. Select the proper parity bit based
3833// on the page size and compare it to the stored parity.
3834//
3835 assign prty_ctxt = tlb_context0_hit ? prty_ctxt0_c : prty_ctxt1_c;
3836
3837 assign tag_parity_gen = (( tlb_pgsize[2] & prty_256m_c) |
3838 (~tlb_pgsize[2] & tlb_pgsize[1] & prty_4m_c) |
3839 (~tlb_pgsize[2] & ~tlb_pgsize[1] & tlb_pgsize[0] & prty_64k_c) |
3840 (~tlb_pgsize[2] & ~tlb_pgsize[1] & ~tlb_pgsize[0] & prty_8k_c)) ^
3841 ( prty_ctxt & ~agc_itc_real_c);
3842
3843
3844ifu_ftu_agc_ctl_msff_ctl_macro__width_1 itlb_cam_vld_c_reg (
3845 .scan_in(itlb_cam_vld_c_reg_scanin),
3846 .scan_out(itlb_cam_vld_c_reg_scanout),
3847 .l1clk( l1clk_pm1 ),
3848 .din (ftp_itlb_cam_vld_f),
3849 .dout (itlb_cam_vld_c),
3850 .siclk(siclk),
3851 .soclk(soclk));
3852
3853
3854
3855
3856
3857
3858/////////////////////////////////////////////////////////////////
3859// no exception = 00000 //
3860// tlb_miss (non-real) = 00001 //
3861// tlb_access_violation = 00010 //
3862// VA hole exception = 00011 //
3863// tlb real miss = 00100 //
3864// L2 MISS (for PMU) = 00101 //
3865// IC MISS (for PMU) = 00110 //
3866// ITLB tag parity error = 00111 //
3867// ITLB data parity error = 11111 //
3868// ITLB multiple hit = 01001 //
3869// icache valid (parity error) = 01010 //
3870// icache tag parity error = 01011 //
3871// icache tag multiple hit = 01100 //
3872// icache L2 correctable error = 01110 //
3873// icache L2 uncorrectable error = 01111 //
3874// icache L2 NotData error = 10000 //
3875// ITLB NFO excp = 10001 //
3876// Real VA hole exception = 10011 //
3877/////////////////////////////////////////////////////////////////
3878// New codes added for fetching from I/O space that is not //
3879// boot-rom area. Also added code points for l2_miss and errors//
3880// together to more accurately count l2_miss in PMU. //
3881// The new codes were chosen in such a way to minimize //
3882// changes to existing testbenches and testcases. //
3883// not boot rom fetch = 10100 (Not-taken) //
3884// L2 miss and correctable error = 11110 //
3885// L2 miss and uncorrectable err = 10111 //
3886// L2 miss and Notdata error = 11000 //
3887/////////////////////////////////////////////////////////////////
3888
3889/////////////////////////////////////////////////////////////////
3890ifu_ftu_agc_ctl_msff_ctl_macro__width_9 cerer_en_reg (
3891 .scan_in(cerer_en_reg_scanin),
3892 .scan_out(cerer_en_reg_scanout),
3893 .l1clk( l1clk ),
3894 .din ({tlu_cerer_ittp ,tlu_cerer_itdp,tlu_cerer_ittm,tlu_cerer_icl2c,tlu_cerer_icl2u,
3895 tlu_cerer_icl2nd,tlu_cerer_icvp,tlu_cerer_ictp,tlu_cerer_ictm }),
3896 .dout ({cerer_ittp_ff ,cerer_itdp_ff,cerer_ittm_ff,cerer_icl2c_ff,cerer_icl2u_ff,
3897 cerer_icl2nd_ff,cerer_icvp_ff,cerer_ictp_ff,cerer_ictm_ff }),
3898 .siclk(siclk),
3899 .soclk(soclk));
3900
3901assign agc_itb_tag_perr_c = itlb_cam_vld_c & (tag_parity_gen ^ itb_tte_tag_parity) & agc_fetch_v_c_unq;
3902assign itb_tag_perr = itlb_cam_vld_c & (tag_parity_gen ^ itb_tte_tag_parity) & agc_fetch_v_c_unq;
3903
3904/// Exception generation ////////////////////////////////////////////////////////
3905assign itb_mhit_en_c = itb_itb_mhit_c & cerer_ittm_ff & ~va_hole_exception_c & agc_fetch_v_c_dup_unq &
3906 ~invalidation_req_c ;
3907assign tte_tag_parity_en_c = itb_tag_perr & cerer_ittp_ff & ~itb_itb_miss_c & ~itb_mhit_en_c &
3908 ~va_hole_exception_c & agc_fetch_v_c_dup_unq & ~invalidation_req_c ;
3909assign tte_data_parity_en_c = itb_tte_data_parity & cerer_itdp_ff & ~tte_tag_parity_en_c & ~itb_mhit_en_c &
3910 agc_fetch_v_c_unq & itb_cam_hit_c & ~va_hole_exception_c & ~invalidation_req_c ;
3911assign itb_itb_acc_viol_c = itb_tte_p_c & agc_fetch_v_c_dup_unq & ~agc_priv_state_c & ~itb_itb_miss_c &
3912 ~invalidation_req_c & ~va_hole_excp_c & ~itb_mhit_en_c & ~tte_tag_parity_en_c ;
3913assign itb_itb_acc_viol_int_c = itb_tte_p_c & agc_fetch_v_int_c & ~agc_priv_state_c & ~itb_itb_miss_c &
3914 ~invalidation_req_c & ~va_hole_excp_c & ~itb_mhit_en_c & ~tte_tag_parity_en_c ;
3915assign nfo_tlb_exception = tlb_nfo & itb_cam_hit_c & agc_fetch_v_c_dup_unq &
3916 ~invalidation_req_c & ~va_hole_excp_c & ~(itb_tte_p_c & ~agc_priv_state_c) &
3917 ~itb_mhit_en_c & ~tte_tag_parity_en_c ;
3918assign ic_valid_err_c_en = ic_valid_err_c & cerer_icvp_ff & ~invalidation_req_c & agc_fetch_v_c_unq & ~va_hole_exception_c &
3919 ~itb_mhit_en_c & ~tte_tag_parity_en_c & ~itb_itb_acc_viol_c &
3920 ~nfo_tlb_exception & itb_cam_hit_c ;
3921assign tag_perror_en_c = agc_tag_perror_c & cerer_ictp_ff & ~invalidation_req_c & agc_fetch_v_c_unq &
3922 ~va_hole_exception_c & ~ic_valid_err_c_en & ~itb_mhit_en_c & ~tte_tag_parity_en_c &
3923 ~itb_itb_acc_viol_c & ~nfo_tlb_exception & itb_cam_hit_c ;
3924assign tag_multiple_hit_en = ic_tag_multiple_hit & cerer_ictm_ff & ~invalidation_req_c & agc_fetch_v_c_unq &
3925 ~ic_valid_err_c_en & ~va_hole_exception_c & ~tag_perror_en_c & agc_ic_enable_thr_c &
3926 ~itb_mhit_en_c & ~tte_tag_parity_en_c & ~itb_itb_acc_viol_c & ~nfo_tlb_exception & itb_cam_hit_c ;
3927assign l2_ucorr_err_en = l2_ucorr_err & cerer_icl2u_ff ;
3928assign l2_corr_err_en = l2_corr_err & cerer_icl2c_ff ;
3929assign l2_ndata_err_en = l2_ndata_err & cerer_icl2nd_ff ;
3930
3931assign ftu_ic_no_err_c = l2_ucorr_err_en | l2_ndata_err_en | agc_fetch_v_c_dup_unq;
3932
3933assign l2_cache_miss_no_error = l2_cache_miss & ~l2_ucorr_err_en & ~l2_corr_err_en & ~l2_ndata_err_en ;
3934assign l2_uncorr_err_en_no_l2_miss = l2_ucorr_err & cerer_icl2u_ff & ~l2_cache_miss ;
3935
3936assign l2_cache_miss_n_corr = l2_cache_miss & l2_corr_err_en ;
3937assign l2_cache_miss_n_uncorr = l2_cache_miss & l2_ucorr_err_en ;
3938assign l2_cache_miss_n_ndata = l2_cache_miss & l2_ndata_err_en ;
3939
3940// NFO is lower priority than access (privilege violation)
3941
3942assign ftu_instr_exceptions_c[0] = (agc_itb_itb_miss_c_q & ~agc_itc_real_c_q) | va_hole_exception_c | l2_cache_miss_no_error | tte_tag_parity_en_c |
3943 itb_mhit_en_c | tag_perror_en_c | l2_ucorr_err_en | nfo_tlb_exception |
3944 tte_data_parity_en_c ;
3945
3946assign ftu_instr_exceptions_c[1] = itb_itb_acc_viol_c | va_hole_exception_c | l1_cache_miss | tte_tag_parity_en_c |
3947 ic_valid_err_c_en | tag_perror_en_c | l2_corr_err_en | l2_ucorr_err_en |
3948 tte_data_parity_en_c ;
3949
3950assign ftu_instr_exceptions_c[2] = agc_itc_real_c_q | l2_cache_miss_no_error | l1_cache_miss | tte_tag_parity_en_c |
3951 tag_multiple_hit_en | l2_corr_err_en | l2_ucorr_err_en |
3952 tte_data_parity_en_c ;
3953
3954assign ftu_instr_exceptions_c[3] = tte_data_parity_en_c | itb_mhit_en_c | ic_valid_err_c_en | tag_perror_en_c |
3955 tag_multiple_hit_en | l2_corr_err_en | l2_uncorr_err_en_no_l2_miss |
3956 tag_perror_en_c | l2_cache_miss_n_ndata ;
3957
3958assign ftu_instr_exceptions_c[4] = tte_data_parity_en_c | l2_ndata_err_en | nfo_tlb_exception | va_hole_exception_c_r |
3959 l2_cache_miss_n_uncorr | l2_cache_miss_n_corr ;
3960
3961
3962//////////////////////////////////////////////////////////////////////////
3963//////////////////////////////////////////////////////////////////////////
3964
3965assign way_sel_all_but_0 = |itb_icd_waysel_c[7:1] ;
3966assign way_sel_all_but_1 = (|itb_icd_waysel_c[7:2]) | itb_icd_waysel_c[0] ;
3967assign way_sel_all_but_2 = (|itb_icd_waysel_c[7:3]) | (|itb_icd_waysel_c[1:0]) ;
3968assign way_sel_all_but_3 = (|itb_icd_waysel_c[7:4]) | (|itb_icd_waysel_c[2:0]) ;
3969assign way_sel_all_but_4 = (|itb_icd_waysel_c[7:5]) | (|itb_icd_waysel_c[3:0]) ;
3970assign way_sel_all_but_5 = (|itb_icd_waysel_c[7:6]) | (|itb_icd_waysel_c[4:0]) ;
3971assign way_sel_all_but_6 = itb_icd_waysel_c[7] | (|itb_icd_waysel_c[5:0]) ;
3972assign way_sel_all_but_7 = |itb_icd_waysel_c[6:0] ;
3973
3974assign ic_tag_multiple_hit = (itb_icd_waysel_c[0] & way_sel_all_but_0) |
3975 (itb_icd_waysel_c[1] & way_sel_all_but_1) |
3976 (itb_icd_waysel_c[2] & way_sel_all_but_2) |
3977 (itb_icd_waysel_c[3] & way_sel_all_but_3) |
3978 (itb_icd_waysel_c[4] & way_sel_all_but_4) |
3979 (itb_icd_waysel_c[5] & way_sel_all_but_5) |
3980 (itb_icd_waysel_c[6] & way_sel_all_but_6) |
3981 (itb_icd_waysel_c[7] & way_sel_all_but_7) ;
3982
3983assign va_hole_exception_c = va_hole_excp_c & agc_fetch_v_c_dup_unq & ~invalidation_req_c ;
3984assign va_hole_exception_int_c = va_hole_excp_c & agc_fetch_v_int_c & ~invalidation_req_c;
3985
3986/////////////////////////////////////////////////////////////////
3987// TLB_MISS per thread
3988/////////////////////////////////////////////////////////////////
3989assign agc_thr0_itb_miss_c = agc_itb_itb_miss_c_q & curr_fetch_thr_c[0] & ~redirect_ibu_int_bf[0] ;
3990assign agc_thr1_itb_miss_c = agc_itb_itb_miss_c_q & curr_fetch_thr_c[1] & ~redirect_ibu_int_bf[1] ;
3991assign agc_thr2_itb_miss_c = agc_itb_itb_miss_c_q & curr_fetch_thr_c[2] & ~redirect_ibu_int_bf[2] ;
3992assign agc_thr3_itb_miss_c = agc_itb_itb_miss_c_q & curr_fetch_thr_c[3] & ~redirect_ibu_int_bf[3] ;
3993assign agc_thr4_itb_miss_c = agc_itb_itb_miss_c_q & curr_fetch_thr_c[4] & ~redirect_ibu_int_bf[4] ;
3994assign agc_thr5_itb_miss_c = agc_itb_itb_miss_c_q & curr_fetch_thr_c[5] & ~redirect_ibu_int_bf[5] ;
3995assign agc_thr6_itb_miss_c = agc_itb_itb_miss_c_q & curr_fetch_thr_c[6] & ~redirect_ibu_int_bf[6] ;
3996assign agc_thr7_itb_miss_c = agc_itb_itb_miss_c_q & curr_fetch_thr_c[7] & ~redirect_ibu_int_bf[7] ;
3997
3998ifu_ftu_agc_ctl_msff_ctl_macro__width_2 itc_real_f_reg (
3999 .scan_in(itc_real_f_reg_scanin),
4000 .scan_out(itc_real_f_reg_scanout),
4001 .l1clk( l1clk_pm1 ),
4002 .din ({itc_real_bf,itc_bypass_bf}),
4003 .dout ({agc_itc_real_f,agc_itb_bypass_f}),
4004 .siclk(siclk),
4005 .soclk(soclk));
4006
4007ifu_ftu_agc_ctl_msff_ctl_macro__width_1 itc_real_c_reg (
4008 .scan_in(itc_real_c_reg_scanin),
4009 .scan_out(itc_real_c_reg_scanout),
4010 .l1clk( l1clk_pm1 ),
4011 .din (agc_itc_real_f),
4012 .dout (agc_itc_real_c),
4013 .siclk(siclk),
4014 .soclk(soclk));
4015
4016assign agc_itc_real_c_q = agc_itc_real_c & agc_fetch_v_c & agc_itb_itb_miss_c_q ;
4017assign va_hole_exception_c_r = va_hole_exception_c & agc_itc_real_c ;
4018
4019
4020assign agc_sel_inv_index[0] = ~agc_inv_line_bf & ftp_fill_req_q_bf & ~mbi_run_bf;
4021assign agc_sel_inv_index[1] = agc_inv_line_bf & ~mbi_run_bf & ~ftp_fill_req_q_bf;
4022assign agc_sel_inv_index[2] = ~agc_inv_line_bf & ftp_asi_tg_wr_req_hold & ~mbi_run_bf & ~ftp_fill_req_q_bf;
4023assign agc_sel_inv_index[3] = mbi_run_bf ;
4024
4025assign agc_thr0_cntx_0_sel[0] = lsu_ifu_wr_p0ctxt & (lsu_ifu_tid_w[2:0] == 3'b000);
4026assign agc_thr0_cntx_0_sel[1] = ~agc_thr0_cntx_0_sel[0] ;
4027assign agc_thr1_cntx_0_sel[0] = lsu_ifu_wr_p0ctxt & (lsu_ifu_tid_w[2:0] == 3'b001);
4028assign agc_thr1_cntx_0_sel[1] = ~agc_thr1_cntx_0_sel[0] ;
4029assign agc_thr2_cntx_0_sel[0] = lsu_ifu_wr_p0ctxt & (lsu_ifu_tid_w[2:0] == 3'b010);
4030assign agc_thr2_cntx_0_sel[1] = ~agc_thr2_cntx_0_sel[0] ;
4031assign agc_thr3_cntx_0_sel[0] = lsu_ifu_wr_p0ctxt & (lsu_ifu_tid_w[2:0] == 3'b011);
4032assign agc_thr3_cntx_0_sel[1] = ~agc_thr3_cntx_0_sel[0] ;
4033assign agc_thr4_cntx_0_sel[0] = lsu_ifu_wr_p0ctxt & (lsu_ifu_tid_w[2:0] == 3'b100);
4034assign agc_thr4_cntx_0_sel[1] = ~agc_thr4_cntx_0_sel[0] ;
4035assign agc_thr5_cntx_0_sel[0] = lsu_ifu_wr_p0ctxt & (lsu_ifu_tid_w[2:0] == 3'b101);
4036assign agc_thr5_cntx_0_sel[1] = ~agc_thr5_cntx_0_sel[0] ;
4037assign agc_thr6_cntx_0_sel[0] = lsu_ifu_wr_p0ctxt & (lsu_ifu_tid_w[2:0] == 3'b110);
4038assign agc_thr6_cntx_0_sel[1] = ~agc_thr6_cntx_0_sel[0] ;
4039assign agc_thr7_cntx_0_sel[0] = lsu_ifu_wr_p0ctxt & (lsu_ifu_tid_w[2:0] == 3'b111);
4040assign agc_thr7_cntx_0_sel[1] = ~agc_thr7_cntx_0_sel[0] ;
4041
4042assign agc_thr0_cntx_1_sel[0] = lsu_ifu_wr_p1ctxt & (lsu_ifu_tid_w[2:0] == 3'b000);
4043assign agc_thr0_cntx_1_sel[1] = ~agc_thr0_cntx_1_sel[0] ;
4044assign agc_thr1_cntx_1_sel[0] = lsu_ifu_wr_p1ctxt & (lsu_ifu_tid_w[2:0] == 3'b001);
4045assign agc_thr1_cntx_1_sel[1] = ~agc_thr1_cntx_1_sel[0] ;
4046assign agc_thr2_cntx_1_sel[0] = lsu_ifu_wr_p1ctxt & (lsu_ifu_tid_w[2:0] == 3'b010);
4047assign agc_thr2_cntx_1_sel[1] = ~agc_thr2_cntx_1_sel[0] ;
4048assign agc_thr3_cntx_1_sel[0] = lsu_ifu_wr_p1ctxt & (lsu_ifu_tid_w[2:0] == 3'b011);
4049assign agc_thr3_cntx_1_sel[1] = ~agc_thr3_cntx_1_sel[0] ;
4050assign agc_thr4_cntx_1_sel[0] = lsu_ifu_wr_p1ctxt & (lsu_ifu_tid_w[2:0] == 3'b100);
4051assign agc_thr4_cntx_1_sel[1] = ~agc_thr4_cntx_1_sel[0] ;
4052assign agc_thr5_cntx_1_sel[0] = lsu_ifu_wr_p1ctxt & (lsu_ifu_tid_w[2:0] == 3'b101);
4053assign agc_thr5_cntx_1_sel[1] = ~agc_thr5_cntx_1_sel[0] ;
4054assign agc_thr6_cntx_1_sel[0] = lsu_ifu_wr_p1ctxt & (lsu_ifu_tid_w[2:0] == 3'b110);
4055assign agc_thr6_cntx_1_sel[1] = ~agc_thr6_cntx_1_sel[0] ;
4056assign agc_thr7_cntx_1_sel[0] = lsu_ifu_wr_p1ctxt & (lsu_ifu_tid_w[2:0] == 3'b111);
4057assign agc_thr7_cntx_1_sel[1] = ~agc_thr7_cntx_1_sel[0] ;
4058
4059ifu_ftu_agc_ctl_msff_ctl_macro__width_16 cntx_sel_reg (
4060 .scan_in(cntx_sel_reg_scanin),
4061 .scan_out(cntx_sel_reg_scanout),
4062 .l1clk( l1clk ),
4063 .din ({agc_thr0_cntx_0_sel[0], agc_thr0_cntx_1_sel[0],
4064 agc_thr1_cntx_0_sel[0], agc_thr1_cntx_1_sel[0],
4065 agc_thr2_cntx_0_sel[0], agc_thr2_cntx_1_sel[0],
4066 agc_thr3_cntx_0_sel[0], agc_thr3_cntx_1_sel[0],
4067 agc_thr4_cntx_0_sel[0], agc_thr4_cntx_1_sel[0],
4068 agc_thr5_cntx_0_sel[0], agc_thr5_cntx_1_sel[0],
4069 agc_thr6_cntx_0_sel[0], agc_thr6_cntx_1_sel[0],
4070 agc_thr7_cntx_0_sel[0], agc_thr7_cntx_1_sel[0]}),
4071
4072 .dout ({agc_thr0_cntx_0_sel_ff, agc_thr0_cntx_1_sel_ff,
4073 agc_thr1_cntx_0_sel_ff, agc_thr1_cntx_1_sel_ff,
4074 agc_thr2_cntx_0_sel_ff, agc_thr2_cntx_1_sel_ff,
4075 agc_thr3_cntx_0_sel_ff, agc_thr3_cntx_1_sel_ff,
4076 agc_thr4_cntx_0_sel_ff, agc_thr4_cntx_1_sel_ff,
4077 agc_thr5_cntx_0_sel_ff, agc_thr5_cntx_1_sel_ff,
4078 agc_thr6_cntx_0_sel_ff, agc_thr6_cntx_1_sel_ff,
4079 agc_thr7_cntx_0_sel_ff, agc_thr7_cntx_1_sel_ff}),
4080 .siclk(siclk),
4081 .soclk(soclk));
4082
4083
4084assign agc_thrx_un_cacheable = ftu_paddr_unq_39 ;
4085
4086ifu_ftu_agc_ctl_msff_ctl_macro__width_8 lsu_no_icm_reg (
4087 .scan_in(lsu_no_icm_reg_scanin),
4088 .scan_out(lsu_no_icm_reg_scanout),
4089 .l1clk( l1clk ),
4090 .din (lsu_ifu_no_miss[7:0]),
4091 .dout ({agc_thr7_lsu_no_ic_miss,agc_thr6_lsu_no_ic_miss,agc_thr5_lsu_no_ic_miss,agc_thr4_lsu_no_ic_miss,
4092 agc_thr3_lsu_no_ic_miss,agc_thr2_lsu_no_ic_miss,agc_thr1_lsu_no_ic_miss,agc_thr0_lsu_no_ic_miss}),
4093 .siclk(siclk),
4094 .soclk(soclk));
4095
4096
4097
4098
4099
4100ifu_ftu_agc_ctl_msff_ctl_macro__width_8 ic_enable_reg (
4101 .scan_in(ic_enable_reg_scanin),
4102 .scan_out(ic_enable_reg_scanout),
4103 .l1clk( l1clk ),
4104 .din (lsu_ic_enable[7:0]),
4105 .dout (agc_icache_enable[7:0]),
4106 .siclk(siclk),
4107 .soclk(soclk)) ;
4108
4109assign next_ic_enable_thr_c = |(agc_icache_enable[7:0] & ftp_curr_fetch_thr_f[7:0] ) ;
4110
4111ifu_ftu_agc_ctl_msff_ctl_macro__width_1 thr_c_ic_enable_reg (
4112 .scan_in(thr_c_ic_enable_reg_scanin),
4113 .scan_out(thr_c_ic_enable_reg_scanout),
4114 .l1clk( l1clk_pm1 ),
4115 .din (next_ic_enable_thr_c),
4116 .dout (agc_ic_enable_thr_c),
4117 .siclk(siclk),
4118 .soclk(soclk)) ;
4119
4120assign next_ic_enable_thr_c_l = ~next_ic_enable_thr_c;
4121ifu_ftu_agc_ctl_msff_ctl_macro__width_1 thr_c_ic_disable_reg (
4122 .scan_in(thr_c_ic_disable_reg_scanin),
4123 .scan_out(thr_c_ic_disable_reg_scanout),
4124 .l1clk( l1clk_pm1 ),
4125 .din (next_ic_enable_thr_c_l),
4126 .dout (agc_ic_disable_thr_c),
4127 .siclk(siclk),
4128 .soclk(soclk)) ;
4129
4130
4131
4132
4133
4134assign ic_valid_err_unq = (itlb_valid_dupl_c[7:0] != itlb_valid_c[7:0] ) ;
4135assign ic_valid_err_c = ic_valid_err_unq & ~agc_ic_disable_thr_c ;
4136
4137
4138ifu_ftu_agc_ctl_msff_ctl_macro__width_8 dff_8b_prty_7 (
4139 .scan_in(dff_8b_prty_7_scanin),
4140 .scan_out(dff_8b_prty_7_scanout),
4141 .l1clk(l1clk_out ),
4142 .din ({err_w7_8b_parity_f[3:0],err_w6_8b_parity_f[3:0]}),
4143 .dout ({w7_8b_parity_c[3:0],w6_8b_parity_c[3:0]}),
4144 .siclk(siclk),
4145 .soclk(soclk)
4146);
4147
4148ifu_ftu_agc_ctl_msff_ctl_macro__width_8 dff_8b_prty_5 (
4149 .scan_in(dff_8b_prty_5_scanin),
4150 .scan_out(dff_8b_prty_5_scanout),
4151 .l1clk(l1clk_out ),
4152 .din ({err_w5_8b_parity_f[3:0],err_w4_8b_parity_f[3:0]}),
4153 .dout ({w5_8b_parity_c[3:0],w4_8b_parity_c[3:0]}),
4154 .siclk(siclk),
4155 .soclk(soclk)
4156);
4157
4158ifu_ftu_agc_ctl_msff_ctl_macro__width_8 dff_8b_prty_3 (
4159 .scan_in(dff_8b_prty_3_scanin),
4160 .scan_out(dff_8b_prty_3_scanout),
4161 .l1clk(l1clk_out ),
4162 .din ({err_w3_8b_parity_f[3:0],err_w2_8b_parity_f[3:0]}),
4163 .dout ({w3_8b_parity_c[3:0],w2_8b_parity_c[3:0]}),
4164 .siclk(siclk),
4165 .soclk(soclk)
4166);
4167
4168ifu_ftu_agc_ctl_msff_ctl_macro__width_8 dff_8b_prty_1 (
4169 .scan_in(dff_8b_prty_1_scanin),
4170 .scan_out(dff_8b_prty_1_scanout),
4171 .l1clk(l1clk_out ),
4172 .din ({err_w1_8b_parity_f[3:0],err_w0_8b_parity_f[3:0]}),
4173 .dout ({w1_8b_parity_c[3:0],w0_8b_parity_c[3:0]}),
4174 .siclk(siclk),
4175 .soclk(soclk)
4176);
4177
4178
4179assign err_tag_w0_parity_c = ^(w0_8b_parity_c[3:0]);
4180assign err_tag_w1_parity_c = ^(w1_8b_parity_c[3:0]);
4181assign err_tag_w2_parity_c = ^(w2_8b_parity_c[3:0]);
4182assign err_tag_w3_parity_c = ^(w3_8b_parity_c[3:0]);
4183assign err_tag_w4_parity_c = ^(w4_8b_parity_c[3:0]);
4184assign err_tag_w5_parity_c = ^(w5_8b_parity_c[3:0]);
4185assign err_tag_w6_parity_c = ^(w6_8b_parity_c[3:0]);
4186assign err_tag_w7_parity_c = ^(w7_8b_parity_c[3:0]);
4187
4188
4189assign agc_tag_pe_c[0] = err_tag_w0_parity_c & agc_ic_enable_thr_c & agc_fetch_v_c & itlb_valid_c[0];
4190assign agc_tag_pe_c[1] = err_tag_w1_parity_c & agc_ic_enable_thr_c & agc_fetch_v_c & itlb_valid_c[1];
4191assign agc_tag_pe_c[2] = err_tag_w2_parity_c & agc_ic_enable_thr_c & agc_fetch_v_c & itlb_valid_c[2];
4192assign agc_tag_pe_c[3] = err_tag_w3_parity_c & agc_ic_enable_thr_c & agc_fetch_v_c & itlb_valid_c[3];
4193assign agc_tag_pe_c[4] = err_tag_w4_parity_c & agc_ic_enable_thr_c & agc_fetch_v_c & itlb_valid_c[4];
4194assign agc_tag_pe_c[5] = err_tag_w5_parity_c & agc_ic_enable_thr_c & agc_fetch_v_c & itlb_valid_c[5];
4195assign agc_tag_pe_c[6] = err_tag_w6_parity_c & agc_ic_enable_thr_c & agc_fetch_v_c & itlb_valid_c[6];
4196assign agc_tag_pe_c[7] = err_tag_w7_parity_c & agc_ic_enable_thr_c & agc_fetch_v_c & itlb_valid_c[7];
4197
4198
4199
4200assign ftu_thr0_inv_req_c = invalidation_req_c & curr_fetch_thr_c[0] & ~tsm_thr0_no_new_miss & agc_fetch_v_int_c;
4201assign ftu_thr1_inv_req_c = invalidation_req_c & curr_fetch_thr_c[1] & ~tsm_thr1_no_new_miss & agc_fetch_v_int_c;
4202assign ftu_thr2_inv_req_c = invalidation_req_c & curr_fetch_thr_c[2] & ~tsm_thr2_no_new_miss & agc_fetch_v_int_c;
4203assign ftu_thr3_inv_req_c = invalidation_req_c & curr_fetch_thr_c[3] & ~tsm_thr3_no_new_miss & agc_fetch_v_int_c;
4204assign ftu_thr4_inv_req_c = invalidation_req_c & curr_fetch_thr_c[4] & ~tsm_thr4_no_new_miss & agc_fetch_v_int_c;
4205assign ftu_thr5_inv_req_c = invalidation_req_c & curr_fetch_thr_c[5] & ~tsm_thr5_no_new_miss & agc_fetch_v_int_c;
4206assign ftu_thr6_inv_req_c = invalidation_req_c & curr_fetch_thr_c[6] & ~tsm_thr6_no_new_miss & agc_fetch_v_int_c;
4207assign ftu_thr7_inv_req_c = invalidation_req_c & curr_fetch_thr_c[7] & ~tsm_thr7_no_new_miss & agc_fetch_v_int_c;
4208
4209assign agc_tag_perror_c = |agc_tag_pe_c[7:0] ;
4210
4211
4212
4213assign itb_mhit_no_priority = itb_itb_mhit_c & cerer_ittm_ff & ~invalidation_req_c ;
4214assign tte_tag_parity_no_priority = itb_tag_perr & cerer_ittp_ff & itb_cam_hit_c & ~itb_itb_mhit_c & ~invalidation_req_c ;
4215assign tte_data_parity_no_priority = itb_tte_data_parity & cerer_itdp_ff & itb_cam_hit_c & ~itb_itb_mhit_c & ~invalidation_req_c ;
4216assign itb_itb_acc_viol_no_priority = itb_tte_p_c & ~agc_priv_state_c & ~itb_itb_miss_c & ~invalidation_req_c & ~itb_itb_mhit_c;
4217assign nfo_tlb_exception_no_priority = tlb_nfo & itb_cam_hit_c & ~invalidation_req_c & ~itb_itb_mhit_c;
4218assign ic_valid_err_no_priority = ic_valid_err_c & cerer_icvp_ff & ~invalidation_req_c & ~itb_itb_mhit_c & itb_cam_hit_c;
4219assign tag_perror_no_priority = agc_tag_perror_c & cerer_ictp_ff & ~invalidation_req_c & itb_cam_hit_c ;
4220assign tag_multiple_hit_no_priority = ic_tag_multiple_hit & cerer_ictm_ff & ~invalidation_req_c & agc_ic_enable_thr_c & itb_cam_hit_c ;
4221
4222
4223
4224assign err_excp_set = itb_mhit_no_priority | va_hole_exception_c | nfo_tlb_exception_no_priority |
4225 tag_perror_no_priority | itb_itb_acc_viol_no_priority | tte_tag_parity_no_priority |
4226 ic_valid_err_no_priority | tag_multiple_hit_no_priority | tte_data_parity_no_priority ;
4227
4228assign agc_thr0_err_detect_c = err_excp_set & curr_fetch_thr_c[0] & agc_fetch_v_int_c;
4229assign agc_thr1_err_detect_c = err_excp_set & curr_fetch_thr_c[1] & agc_fetch_v_int_c;
4230assign agc_thr2_err_detect_c = err_excp_set & curr_fetch_thr_c[2] & agc_fetch_v_int_c;
4231assign agc_thr3_err_detect_c = err_excp_set & curr_fetch_thr_c[3] & agc_fetch_v_int_c;
4232assign agc_thr4_err_detect_c = err_excp_set & curr_fetch_thr_c[4] & agc_fetch_v_int_c;
4233assign agc_thr5_err_detect_c = err_excp_set & curr_fetch_thr_c[5] & agc_fetch_v_int_c;
4234assign agc_thr6_err_detect_c = err_excp_set & curr_fetch_thr_c[6] & agc_fetch_v_int_c;
4235assign agc_thr7_err_detect_c = err_excp_set & curr_fetch_thr_c[7] & agc_fetch_v_int_c;
4236
4237assign asi_mbist_addr_bf[5:3] = mbi_run_bf ? mbi_bist_word_en_bf[2:0] : asi_addr_bf[5:3] ;
4238
4239assign word_en_asi[0] = ~asi_addr_bf[5] & ~asi_addr_bf[4] & ~asi_addr_bf[3] ;
4240assign word_en_asi[1] = ~asi_addr_bf[5] & ~asi_addr_bf[4] & asi_addr_bf[3] ;
4241assign word_en_asi[2] = ~asi_addr_bf[5] & asi_addr_bf[4] & ~asi_addr_bf[3] ;
4242assign word_en_asi[3] = ~asi_addr_bf[5] & asi_addr_bf[4] & asi_addr_bf[3] ;
4243assign word_en_asi[4] = asi_addr_bf[5] & ~asi_addr_bf[4] & ~asi_addr_bf[3] ;
4244assign word_en_asi[5] = asi_addr_bf[5] & ~asi_addr_bf[4] & asi_addr_bf[3] ;
4245assign word_en_asi[6] = asi_addr_bf[5] & asi_addr_bf[4] & ~asi_addr_bf[3] ;
4246assign word_en_asi[7] = asi_addr_bf[5] & asi_addr_bf[4] & asi_addr_bf[3] ;
4247
4248ifu_ftu_agc_ctl_msff_ctl_macro__width_4 asi_sel_word_reg (
4249 .scan_in(asi_sel_word_reg_scanin),
4250 .scan_out(asi_sel_word_reg_scanout),
4251 .l1clk( l1clk ),
4252 .din ({asi_mbist_addr_bf[4:3],asi_mbist_addr_f[4:3]}),
4253 .dout ({asi_mbist_addr_f[4:3], asi_mbist_addr_c[4:3]}),
4254 .siclk(siclk),
4255 .soclk(soclk)) ;
4256
4257assign agc_asi_sel_word_c[0] = ~asi_mbist_addr_c[4] & ~asi_mbist_addr_c[3] ;
4258assign agc_asi_sel_word_c[1] = ~asi_mbist_addr_c[4] & asi_mbist_addr_c[3] ;
4259assign agc_asi_sel_word_c[2] = asi_mbist_addr_c[4] & ~asi_mbist_addr_c[3] ;
4260assign agc_asi_sel_word_c[3] = asi_mbist_addr_c[4] & asi_mbist_addr_c[3] ;
4261
4262assign agc_word_en_bf[7:0] = (ftp_asi_mbist_access_bf & ~mbi_run_bf) ? word_en_asi[7:0] : 8'hFF;
4263
4264
4265
4266///////////////////////////////////////////////////////////////////////////////////////////////////////////////
4267// NOTE: Qualify the bypass more with the Thread ID. //
4268///////////////////////////////////////////////////////////////////////////////////////////////////////////////
4269assign ftu_buffer_wr_en_f[0] = ftp_fetch_thr_q_f[0] | agc_byp_valid | agc_by_pass_valid_unq_f;
4270assign ftu_buffer_wr_en_f[1] = ftp_fetch_thr_q_f[1] | agc_byp_valid | agc_by_pass_valid_unq_f;
4271assign ftu_buffer_wr_en_f[2] = ftp_fetch_thr_q_f[2] | agc_byp_valid | agc_by_pass_valid_unq_f;
4272assign ftu_buffer_wr_en_f[3] = ftp_fetch_thr_q_f[3] | agc_byp_valid | agc_by_pass_valid_unq_f;
4273assign ftu_buffer_wr_en_f[4] = ftp_fetch_thr_q_f[4] | agc_byp_valid | agc_by_pass_valid_unq_f;
4274assign ftu_buffer_wr_en_f[5] = ftp_fetch_thr_q_f[5] | agc_byp_valid | agc_by_pass_valid_unq_f;
4275assign ftu_buffer_wr_en_f[6] = ftp_fetch_thr_q_f[6] | agc_byp_valid | agc_by_pass_valid_unq_f;
4276assign ftu_buffer_wr_en_f[7] = ftp_fetch_thr_q_f[7] | agc_byp_valid | agc_by_pass_valid_unq_f;
4277
4278////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4279// Add logic to keep track of which has the ERROR condition //
4280////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4281assign thr0_valid_exception_p = thr0_exception_valid_kill_c ;
4282assign thr1_valid_exception_p = thr1_exception_valid_kill_c ;
4283assign thr2_valid_exception_p = thr2_exception_valid_kill_c ;
4284assign thr3_valid_exception_p = thr3_exception_valid_kill_c ;
4285assign thr4_valid_exception_p = thr4_exception_valid_kill_c ;
4286assign thr5_valid_exception_p = thr5_exception_valid_kill_c ;
4287assign thr6_valid_exception_p = thr6_exception_valid_kill_c ;
4288assign thr7_valid_exception_p = thr7_exception_valid_kill_c ;
4289
4290assign thr0_way_write_en = (thr0_valid_exception_p ) ;
4291assign thr1_way_write_en = (thr1_valid_exception_p ) ;
4292assign thr2_way_write_en = (thr2_valid_exception_p ) ;
4293assign thr3_way_write_en = (thr3_valid_exception_p ) ;
4294assign thr4_way_write_en = (thr4_valid_exception_p ) ;
4295assign thr5_way_write_en = (thr5_valid_exception_p ) ;
4296assign thr6_way_write_en = (thr6_valid_exception_p ) ;
4297assign thr7_way_write_en = (thr7_valid_exception_p ) ;
4298
4299assign error_way_muxed_p[2:0] = ({3{ic_valid_err_p_en}} & valid_err_way_p[2:0]) |
4300 ({3{tag_perror_en_p}} & perr_way_p[2:0] ) |
4301 ({3{tag_multiple_hit_en_p}} & fetch_way_p[2:0] ) ;
4302
4303assign thr0_excp_way_in[2:0] = thr0_way_write_en ? error_way_muxed_p[2:0] : ftu_thr0_excp_way[2:0] ;
4304assign thr1_excp_way_in[2:0] = thr1_way_write_en ? error_way_muxed_p[2:0] : ftu_thr1_excp_way[2:0] ;
4305assign thr2_excp_way_in[2:0] = thr2_way_write_en ? error_way_muxed_p[2:0] : ftu_thr2_excp_way[2:0] ;
4306assign thr3_excp_way_in[2:0] = thr3_way_write_en ? error_way_muxed_p[2:0] : ftu_thr3_excp_way[2:0] ;
4307assign thr4_excp_way_in[2:0] = thr4_way_write_en ? error_way_muxed_p[2:0] : ftu_thr4_excp_way[2:0] ;
4308assign thr5_excp_way_in[2:0] = thr5_way_write_en ? error_way_muxed_p[2:0] : ftu_thr5_excp_way[2:0] ;
4309assign thr6_excp_way_in[2:0] = thr6_way_write_en ? error_way_muxed_p[2:0] : ftu_thr6_excp_way[2:0] ;
4310assign thr7_excp_way_in[2:0] = thr7_way_write_en ? error_way_muxed_p[2:0] : ftu_thr7_excp_way[2:0] ;
4311
4312/////////////////////////////////////////////////////////////////////////////////////////////////////
4313// If multiple errors report the LEAST way. //
4314/////////////////////////////////////////////////////////////////////////////////////////////////////
4315assign fetch_way_p_in[0] = (itb_icd_waysel_c[7] & ~itb_icd_waysel_c[6] & ~itb_icd_waysel_c[4] & ~itb_icd_waysel_c[2] & ~itb_icd_waysel_c[0]) |
4316 (itb_icd_waysel_c[5] & ~itb_icd_waysel_c[4] & ~itb_icd_waysel_c[2] & ~itb_icd_waysel_c[0] ) |
4317 (itb_icd_waysel_c[3] & ~itb_icd_waysel_c[2] & ~itb_icd_waysel_c[0] ) |
4318 (itb_icd_waysel_c[1] & ~itb_icd_waysel_c[0]) ;
4319assign fetch_way_p_in[1] = (itb_icd_waysel_c[7] & ~itb_icd_waysel_c[5] & ~itb_icd_waysel_c[4] & ~itb_icd_waysel_c[1] & ~itb_icd_waysel_c[0]) |
4320 (itb_icd_waysel_c[6] & ~itb_icd_waysel_c[5] & ~itb_icd_waysel_c[4] & ~itb_icd_waysel_c[1] & ~itb_icd_waysel_c[0]) |
4321 (itb_icd_waysel_c[3] & ~itb_icd_waysel_c[1] & ~itb_icd_waysel_c[0]) |
4322 (itb_icd_waysel_c[2] & ~itb_icd_waysel_c[1] & ~itb_icd_waysel_c[0]) ;
4323assign fetch_way_p_in[2] = (itb_icd_waysel_c[7] & ~itb_icd_waysel_c[3] & ~itb_icd_waysel_c[2] & ~itb_icd_waysel_c[1] & ~itb_icd_waysel_c[0]) |
4324 (itb_icd_waysel_c[6] & ~itb_icd_waysel_c[3] & ~itb_icd_waysel_c[2] & ~itb_icd_waysel_c[1] & ~itb_icd_waysel_c[0]) |
4325 (itb_icd_waysel_c[5] & ~itb_icd_waysel_c[3] & ~itb_icd_waysel_c[2] & ~itb_icd_waysel_c[1] & ~itb_icd_waysel_c[0]) |
4326 (itb_icd_waysel_c[4] & ~itb_icd_waysel_c[3] & ~itb_icd_waysel_c[2] & ~itb_icd_waysel_c[1] & ~itb_icd_waysel_c[0]) ;
4327
4328ifu_ftu_agc_ctl_msff_ctl_macro__width_3 fetch_way_p_reg (
4329 .scan_in(fetch_way_p_reg_scanin),
4330 .scan_out(fetch_way_p_reg_scanout),
4331 .l1clk( l1clk_pm1 ),
4332 .din (fetch_way_p_in[2:0]),
4333 .dout (fetch_way_p[2:0]),
4334 .siclk(siclk),
4335 .soclk(soclk)) ;
4336
4337assign valid_err_way[0] = itlb_valid_c[0] ^ itlb_valid_dupl_c[0] ;
4338assign valid_err_way[1] = itlb_valid_c[1] ^ itlb_valid_dupl_c[1] ;
4339assign valid_err_way[2] = itlb_valid_c[2] ^ itlb_valid_dupl_c[2] ;
4340assign valid_err_way[3] = itlb_valid_c[3] ^ itlb_valid_dupl_c[3] ;
4341assign valid_err_way[4] = itlb_valid_c[4] ^ itlb_valid_dupl_c[4] ;
4342assign valid_err_way[5] = itlb_valid_c[5] ^ itlb_valid_dupl_c[5] ;
4343assign valid_err_way[6] = itlb_valid_c[6] ^ itlb_valid_dupl_c[6] ;
4344assign valid_err_way[7] = itlb_valid_c[7] ^ itlb_valid_dupl_c[7] ;
4345
4346assign valid_err_way_p_in[0] = (valid_err_way[7] & ~valid_err_way[6] & ~valid_err_way[4] & ~valid_err_way[2] & ~valid_err_way[0]) |
4347 (valid_err_way[5] & ~valid_err_way[4] & ~valid_err_way[2] & ~valid_err_way[0] ) |
4348 (valid_err_way[3] & ~valid_err_way[2] & ~valid_err_way[0] ) |
4349 (valid_err_way[1] & ~valid_err_way[0]) ;
4350assign valid_err_way_p_in[1] = (valid_err_way[7] & ~valid_err_way[5] & ~valid_err_way[4] & ~valid_err_way[1] & ~valid_err_way[0]) |
4351 (valid_err_way[6] & ~valid_err_way[5] & ~valid_err_way[4] & ~valid_err_way[1] & ~valid_err_way[0]) |
4352 (valid_err_way[3] & ~valid_err_way[1] & ~valid_err_way[0]) |
4353 (valid_err_way[2] & ~valid_err_way[1] & ~valid_err_way[0]) ;
4354assign valid_err_way_p_in[2] = (valid_err_way[7] & ~valid_err_way[3] & ~valid_err_way[2] & ~valid_err_way[1] & ~valid_err_way[0]) |
4355 (valid_err_way[6] & ~valid_err_way[3] & ~valid_err_way[2] & ~valid_err_way[1] & ~valid_err_way[0]) |
4356 (valid_err_way[5] & ~valid_err_way[3] & ~valid_err_way[2] & ~valid_err_way[1] & ~valid_err_way[0]) |
4357 (valid_err_way[4] & ~valid_err_way[3] & ~valid_err_way[2] & ~valid_err_way[1] & ~valid_err_way[0]) ;
4358
4359ifu_ftu_agc_ctl_msff_ctl_macro__width_3 valid_err_way_p_reg (
4360 .scan_in(valid_err_way_p_reg_scanin),
4361 .scan_out(valid_err_way_p_reg_scanout),
4362 .l1clk( l1clk_pm1 ),
4363 .din (valid_err_way_p_in[2:0]),
4364 .dout (valid_err_way_p[2:0]),
4365 .siclk(siclk),
4366 .soclk(soclk)) ;
4367
4368
4369assign perr_way_p_in[0] = (agc_tag_pe_c[7] & ~agc_tag_pe_c[6] & ~agc_tag_pe_c[4] & ~agc_tag_pe_c[2] & ~agc_tag_pe_c[0]) |
4370 (agc_tag_pe_c[5] & ~agc_tag_pe_c[4] & ~agc_tag_pe_c[2] & ~agc_tag_pe_c[0] ) |
4371 (agc_tag_pe_c[3] & ~agc_tag_pe_c[2] & ~agc_tag_pe_c[0] ) |
4372 (agc_tag_pe_c[1] & ~agc_tag_pe_c[0]) ;
4373assign perr_way_p_in[1] = (agc_tag_pe_c[7] & ~agc_tag_pe_c[5] & ~agc_tag_pe_c[4] & ~agc_tag_pe_c[1] & ~agc_tag_pe_c[0]) |
4374 (agc_tag_pe_c[6] & ~agc_tag_pe_c[5] & ~agc_tag_pe_c[4] & ~agc_tag_pe_c[1] & ~agc_tag_pe_c[0]) |
4375 (agc_tag_pe_c[3] & ~agc_tag_pe_c[1] & ~agc_tag_pe_c[0]) |
4376 (agc_tag_pe_c[2] & ~agc_tag_pe_c[1] & ~agc_tag_pe_c[0]) ;
4377assign perr_way_p_in[2] = (agc_tag_pe_c[7] & ~agc_tag_pe_c[3] & ~agc_tag_pe_c[2] & ~agc_tag_pe_c[1] & ~agc_tag_pe_c[0]) |
4378 (agc_tag_pe_c[6] & ~agc_tag_pe_c[3] & ~agc_tag_pe_c[2] & ~agc_tag_pe_c[1] & ~agc_tag_pe_c[0]) |
4379 (agc_tag_pe_c[5] & ~agc_tag_pe_c[3] & ~agc_tag_pe_c[2] & ~agc_tag_pe_c[1] & ~agc_tag_pe_c[0]) |
4380 (agc_tag_pe_c[4] & ~agc_tag_pe_c[3] & ~agc_tag_pe_c[2] & ~agc_tag_pe_c[1] & ~agc_tag_pe_c[0]) ;
4381
4382ifu_ftu_agc_ctl_msff_ctl_macro__width_3 tag_pe_way (
4383 .scan_in(tag_pe_way_scanin),
4384 .scan_out(tag_pe_way_scanout),
4385 .l1clk( l1clk_pm1 ),
4386 .din (perr_way_p_in[2:0]),
4387 .dout (perr_way_p[2:0]),
4388 .siclk(siclk),
4389 .soclk(soclk)) ;
4390
4391/////////////////////////////////////////////////////////////////////////////////////////////////////
4392
4393ifu_ftu_agc_ctl_msff_ctl_macro__width_3 tag_perror_en_reg (
4394 .scan_in(tag_perror_en_reg_scanin),
4395 .scan_out(tag_perror_en_reg_scanout),
4396 .l1clk( l1clk_pm1 ),
4397 .din ({tag_perror_en_c , ic_valid_err_c_en , tag_multiple_hit_en}),
4398 .dout ({tag_perror_en_p , ic_valid_err_p_en , tag_multiple_hit_en_p}),
4399 .siclk(siclk),
4400 .soclk(soclk)) ;
4401
4402
4403ifu_ftu_agc_ctl_msff_ctl_macro__width_3 way_thr0_keep_reg (
4404 .scan_in(way_thr0_keep_reg_scanin),
4405 .scan_out(way_thr0_keep_reg_scanout),
4406 .l1clk( l1clk_pm1 ),
4407 .din (thr0_excp_way_in[2:0]),
4408 .dout (ftu_thr0_excp_way[2:0]),
4409 .siclk(siclk),
4410 .soclk(soclk)) ;
4411
4412
4413ifu_ftu_agc_ctl_msff_ctl_macro__width_3 way_thr1_keep_reg (
4414 .scan_in(way_thr1_keep_reg_scanin),
4415 .scan_out(way_thr1_keep_reg_scanout),
4416 .l1clk( l1clk_pm1 ),
4417 .din (thr1_excp_way_in[2:0]),
4418 .dout (ftu_thr1_excp_way[2:0]),
4419 .siclk(siclk),
4420 .soclk(soclk)) ;
4421
4422
4423ifu_ftu_agc_ctl_msff_ctl_macro__width_3 way_thr2_keep_reg (
4424 .scan_in(way_thr2_keep_reg_scanin),
4425 .scan_out(way_thr2_keep_reg_scanout),
4426 .l1clk( l1clk_pm1 ),
4427 .din (thr2_excp_way_in[2:0]),
4428 .dout (ftu_thr2_excp_way[2:0]),
4429 .siclk(siclk),
4430 .soclk(soclk)) ;
4431
4432
4433ifu_ftu_agc_ctl_msff_ctl_macro__width_3 way_thr3_keep_reg (
4434 .scan_in(way_thr3_keep_reg_scanin),
4435 .scan_out(way_thr3_keep_reg_scanout),
4436 .l1clk( l1clk_pm1 ),
4437 .din (thr3_excp_way_in[2:0]),
4438 .dout (ftu_thr3_excp_way[2:0]),
4439 .siclk(siclk),
4440 .soclk(soclk)) ;
4441
4442
4443ifu_ftu_agc_ctl_msff_ctl_macro__width_3 way_thr4_keep_reg (
4444 .scan_in(way_thr4_keep_reg_scanin),
4445 .scan_out(way_thr4_keep_reg_scanout),
4446 .l1clk( l1clk_pm1 ),
4447 .din (thr4_excp_way_in[2:0]),
4448 .dout (ftu_thr4_excp_way[2:0]),
4449 .siclk(siclk),
4450 .soclk(soclk)) ;
4451
4452
4453ifu_ftu_agc_ctl_msff_ctl_macro__width_3 way_thr5_keep_reg (
4454 .scan_in(way_thr5_keep_reg_scanin),
4455 .scan_out(way_thr5_keep_reg_scanout),
4456 .l1clk( l1clk_pm1 ),
4457 .din (thr5_excp_way_in[2:0]),
4458 .dout (ftu_thr5_excp_way[2:0]),
4459 .siclk(siclk),
4460 .soclk(soclk)) ;
4461
4462
4463ifu_ftu_agc_ctl_msff_ctl_macro__width_3 way_thr6_keep_reg (
4464 .scan_in(way_thr6_keep_reg_scanin),
4465 .scan_out(way_thr6_keep_reg_scanout),
4466 .l1clk( l1clk_pm1 ),
4467 .din (thr6_excp_way_in[2:0]),
4468 .dout (ftu_thr6_excp_way[2:0]),
4469 .siclk(siclk),
4470 .soclk(soclk)) ;
4471
4472
4473ifu_ftu_agc_ctl_msff_ctl_macro__width_3 way_thr7_keep_reg (
4474 .scan_in(way_thr7_keep_reg_scanin),
4475 .scan_out(way_thr7_keep_reg_scanout),
4476 .l1clk( l1clk_pm1 ),
4477 .din (thr7_excp_way_in[2:0]),
4478 .dout (ftu_thr7_excp_way[2:0]),
4479 .siclk(siclk),
4480 .soclk(soclk)) ;
4481
4482////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4483assign excp_way_valid_in = thr7_way_write_en | thr6_way_write_en | thr5_way_write_en | thr4_way_write_en |
4484 thr3_way_write_en | thr2_way_write_en | thr1_way_write_en | thr0_way_write_en ;
4485
4486
4487ifu_ftu_agc_ctl_msff_ctl_macro__width_4 excp_way_d_reg (
4488 .scan_in(excp_way_d_reg_scanin),
4489 .scan_out(excp_way_d_reg_scanout),
4490 .l1clk( l1clk_pm1 ),
4491 .din ({error_way_muxed_p[2:0],excp_way_valid_in}),
4492 .dout ({ftu_excp_way_d[2:0],ftu_excp_way_valid_d}),
4493 .siclk(siclk),
4494 .soclk(soclk)) ;
4495
4496
4497assign excp_tid_d_in[0] = thr1_way_write_en | thr3_way_write_en | thr5_way_write_en | thr7_way_write_en ;
4498assign excp_tid_d_in[1] = thr2_way_write_en | thr3_way_write_en | thr6_way_write_en | thr7_way_write_en ;
4499assign excp_tid_d_in[2] = thr4_way_write_en | thr5_way_write_en | thr6_way_write_en | thr7_way_write_en ;
4500
4501ifu_ftu_agc_ctl_msff_ctl_macro__width_3 excp_tid_d_reg (
4502 .scan_in(excp_tid_d_reg_scanin),
4503 .scan_out(excp_tid_d_reg_scanout),
4504 .l1clk( l1clk_pm1 ),
4505 .din (excp_tid_d_in[2:0]),
4506 .dout (ftu_excp_tid_d[2:0]),
4507 .siclk(siclk),
4508 .soclk(soclk)) ;
4509
4510////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4511assign next_itlb_busy = itc_demap_next ;
4512
4513ifu_ftu_agc_ctl_msff_ctl_macro__width_1 itlb_busy_reg (
4514 .scan_in(itlb_busy_reg_scanin),
4515 .scan_out(itlb_busy_reg_scanout),
4516 .l1clk(l1clk_pm1),
4517 .din (next_itlb_busy),
4518 .dout (itlb_busy_bf),
4519 .siclk(siclk),
4520 .soclk(soclk)
4521);
4522
4523ifu_ftu_agc_ctl_msff_ctl_macro__width_1 itlb_busy_f_reg (
4524 .scan_in(itlb_busy_f_reg_scanin),
4525 .scan_out(itlb_busy_f_reg_scanout),
4526 .l1clk(l1clk_pm1),
4527 .din (itlb_busy_bf),
4528 .dout (itlb_busy_f),
4529 .siclk(siclk),
4530 .soclk(soclk)
4531);
4532
4533assign ith_det_req_bbf = asi_ith_det_req | (ith_det_req_ff & (itlb_busy_bf | itlb_busy_f)) ;
4534
4535ifu_ftu_agc_ctl_msff_ctl_macro__width_1 ith_det_req_ff_reg (
4536 .scan_in(ith_det_req_ff_reg_scanin),
4537 .scan_out(ith_det_req_ff_reg_scanout),
4538 .l1clk(l1clk_pm1),
4539 .din (ith_det_req_bbf),
4540 .dout (ith_det_req_ff),
4541 .siclk(siclk),
4542 .soclk(soclk)
4543 );
4544
4545
4546
4547
4548
4549
4550assign next_enabled_thread[7:0] = spc_core_running_status[7:0] ;
4551
4552ifu_ftu_agc_ctl_msff_ctl_macro__width_8 enabled_thr_reg_dup (
4553 .scan_in(enabled_thr_reg_dup_scanin),
4554 .scan_out(enabled_thr_reg_dup_scanout),
4555 .l1clk(l1clk),
4556 .din (next_enabled_thread[7:0]),
4557 .dout (enabled_threads_dup[7:0]),
4558 .siclk(siclk),
4559 .soclk(soclk)
4560);
4561
4562assign next_single_thread_active = (enabled_threads_dup[0] & ~(|enabled_threads_dup[7:1])) |
4563 (enabled_threads_dup[1] & ~(|enabled_threads_dup[7:2]) & ~(enabled_threads_dup[0])) |
4564 (enabled_threads_dup[2] & ~(|enabled_threads_dup[7:3]) & ~(|enabled_threads_dup[1:0])) |
4565 (enabled_threads_dup[3] & ~(|enabled_threads_dup[7:4]) & ~(|enabled_threads_dup[2:0])) |
4566 (enabled_threads_dup[4] & ~(|enabled_threads_dup[7:5]) & ~(|enabled_threads_dup[3:0])) |
4567 (enabled_threads_dup[5] & ~(|enabled_threads_dup[7:6]) & ~(|enabled_threads_dup[4:0])) |
4568 (enabled_threads_dup[6] & ~( enabled_threads_dup[7]) & ~(|enabled_threads_dup[5:0])) |
4569 (enabled_threads_dup[7] & ~(|enabled_threads_dup[6:0])) ;
4570
4571
4572ifu_ftu_agc_ctl_msff_ctl_macro__width_1 single_thread_active_reg (
4573 .scan_in(single_thread_active_reg_scanin),
4574 .scan_out(single_thread_active_reg_scanout),
4575 .l1clk(l1clk),
4576 .din (next_single_thread_active),
4577 .dout (single_thread_active),
4578 .siclk(siclk),
4579 .soclk(soclk));
4580
4581
4582
4583////////////////////////////////////////////////////////////////////////////////////////
4584// Invalidation request from TLU //
4585////////////////////////////////////////////////////////////////////////////////////////
4586assign reset_invalidation_req[0] = (agc_fetch_v_int_c & curr_fetch_thr_c[0] & ~tsm_thr0_no_new_miss) | tlu_flush_ifu_f[0] ;
4587assign reset_invalidation_req[1] = (agc_fetch_v_int_c & curr_fetch_thr_c[1] & ~tsm_thr1_no_new_miss) | tlu_flush_ifu_f[1] ;
4588assign reset_invalidation_req[2] = (agc_fetch_v_int_c & curr_fetch_thr_c[2] & ~tsm_thr2_no_new_miss) | tlu_flush_ifu_f[2] ;
4589assign reset_invalidation_req[3] = (agc_fetch_v_int_c & curr_fetch_thr_c[3] & ~tsm_thr3_no_new_miss) | tlu_flush_ifu_f[3] ;
4590assign reset_invalidation_req[4] = (agc_fetch_v_int_c & curr_fetch_thr_c[4] & ~tsm_thr4_no_new_miss) | tlu_flush_ifu_f[4] ;
4591assign reset_invalidation_req[5] = (agc_fetch_v_int_c & curr_fetch_thr_c[5] & ~tsm_thr5_no_new_miss) | tlu_flush_ifu_f[5] ;
4592assign reset_invalidation_req[6] = (agc_fetch_v_int_c & curr_fetch_thr_c[6] & ~tsm_thr6_no_new_miss) | tlu_flush_ifu_f[6] ;
4593assign reset_invalidation_req[7] = (agc_fetch_v_int_c & curr_fetch_thr_c[7] & ~tsm_thr7_no_new_miss) | tlu_flush_ifu_f[7] ;
4594
4595assign new_invalidation_req[0] = tlu_ifu_invalidate[0] & trap_thread_g0[0] ;
4596assign new_invalidation_req[1] = tlu_ifu_invalidate[0] & trap_thread_g0[1] ;
4597assign new_invalidation_req[2] = tlu_ifu_invalidate[0] & trap_thread_g0[2] ;
4598assign new_invalidation_req[3] = tlu_ifu_invalidate[0] & trap_thread_g0[3] ;
4599assign new_invalidation_req[4] = tlu_ifu_invalidate[1] & trap_thread_g1[0] ;
4600assign new_invalidation_req[5] = tlu_ifu_invalidate[1] & trap_thread_g1[1] ;
4601assign new_invalidation_req[6] = tlu_ifu_invalidate[1] & trap_thread_g1[2] ;
4602assign new_invalidation_req[7] = tlu_ifu_invalidate[1] & trap_thread_g1[3] ;
4603
4604assign set_invalidation_req[0] = new_invalidation_req[0] | (invalidation_req_c & curr_fetch_thr_c[0] & tsm_thr0_no_new_miss) ;
4605assign set_invalidation_req[1] = new_invalidation_req[1] | (invalidation_req_c & curr_fetch_thr_c[1] & tsm_thr1_no_new_miss) ;
4606assign set_invalidation_req[2] = new_invalidation_req[2] | (invalidation_req_c & curr_fetch_thr_c[2] & tsm_thr2_no_new_miss) ;
4607assign set_invalidation_req[3] = new_invalidation_req[3] | (invalidation_req_c & curr_fetch_thr_c[3] & tsm_thr3_no_new_miss) ;
4608assign set_invalidation_req[4] = new_invalidation_req[4] | (invalidation_req_c & curr_fetch_thr_c[4] & tsm_thr4_no_new_miss) ;
4609assign set_invalidation_req[5] = new_invalidation_req[5] | (invalidation_req_c & curr_fetch_thr_c[5] & tsm_thr5_no_new_miss) ;
4610assign set_invalidation_req[6] = new_invalidation_req[6] | (invalidation_req_c & curr_fetch_thr_c[6] & tsm_thr6_no_new_miss) ;
4611assign set_invalidation_req[7] = new_invalidation_req[7] | (invalidation_req_c & curr_fetch_thr_c[7] & tsm_thr7_no_new_miss) ;
4612
4613assign next_invalidation_req[0] = set_invalidation_req[0] | (invalidation_req_ff[0] & ~reset_invalidation_req[0]) ;
4614assign next_invalidation_req[1] = set_invalidation_req[1] | (invalidation_req_ff[1] & ~reset_invalidation_req[1]) ;
4615assign next_invalidation_req[2] = set_invalidation_req[2] | (invalidation_req_ff[2] & ~reset_invalidation_req[2]) ;
4616assign next_invalidation_req[3] = set_invalidation_req[3] | (invalidation_req_ff[3] & ~reset_invalidation_req[3]) ;
4617assign next_invalidation_req[4] = set_invalidation_req[4] | (invalidation_req_ff[4] & ~reset_invalidation_req[4]) ;
4618assign next_invalidation_req[5] = set_invalidation_req[5] | (invalidation_req_ff[5] & ~reset_invalidation_req[5]) ;
4619assign next_invalidation_req[6] = set_invalidation_req[6] | (invalidation_req_ff[6] & ~reset_invalidation_req[6]) ;
4620assign next_invalidation_req[7] = set_invalidation_req[7] | (invalidation_req_ff[7] & ~reset_invalidation_req[7]) ;
4621
4622ifu_ftu_agc_ctl_msff_ctl_macro__width_8 invalidation_req_reg (
4623 .scan_in(invalidation_req_reg_scanin),
4624 .scan_out(invalidation_req_reg_scanout),
4625 .l1clk(l1clk),
4626 .din (next_invalidation_req[7:0]),
4627 .dout (invalidation_req_ff[7:0]),
4628 .siclk(siclk),
4629 .soclk(soclk));
4630
4631ifu_ftu_agc_ctl_msff_ctl_macro__width_8 invalidation_req_dup_reg (
4632 .scan_in(invalidation_req_dup_reg_scanin),
4633 .scan_out(invalidation_req_dup_reg_scanout),
4634 .l1clk(l1clk),
4635 .din (next_invalidation_req[7:0]),
4636 .dout (agc_invalidation_req_ff[7:0]),
4637 .siclk(siclk),
4638 .soclk(soclk));
4639
4640
4641assign invalidation_req_f = (ftp_fetch_thr_q_f[0] & invalidation_req_ff[0]) |
4642 (ftp_fetch_thr_q_f[1] & invalidation_req_ff[1]) |
4643 (ftp_fetch_thr_q_f[2] & invalidation_req_ff[2]) |
4644 (ftp_fetch_thr_q_f[3] & invalidation_req_ff[3]) |
4645 (ftp_fetch_thr_q_f[4] & invalidation_req_ff[4]) |
4646 (ftp_fetch_thr_q_f[5] & invalidation_req_ff[5]) |
4647 (ftp_fetch_thr_q_f[6] & invalidation_req_ff[6]) |
4648 (ftp_fetch_thr_q_f[7] & invalidation_req_ff[7]) ;
4649
4650
4651
4652
4653 ifu_ftu_agc_ctl_msff_ctl_macro__width_1 invalidation_req_c_reg (
4654 .scan_in(invalidation_req_c_reg_scanin),
4655 .scan_out(invalidation_req_c_reg_scanout),
4656 .l1clk( l1clk),
4657 .din (invalidation_req_f),
4658 .dout (invalidation_req_c),
4659 .siclk(siclk),
4660 .soclk(soclk));
4661
4662assign agc_any_invalidation_req_f = invalidation_req_f ;
4663
4664assign thr0_kill_after_invalidation = invalidation_req_c & curr_fetch_thr_c[0] ;
4665assign thr1_kill_after_invalidation = invalidation_req_c & curr_fetch_thr_c[1] ;
4666assign thr2_kill_after_invalidation = invalidation_req_c & curr_fetch_thr_c[2] ;
4667assign thr3_kill_after_invalidation = invalidation_req_c & curr_fetch_thr_c[3] ;
4668assign thr4_kill_after_invalidation = invalidation_req_c & curr_fetch_thr_c[4] ;
4669assign thr5_kill_after_invalidation = invalidation_req_c & curr_fetch_thr_c[5] ;
4670assign thr6_kill_after_invalidation = invalidation_req_c & curr_fetch_thr_c[6] ;
4671assign thr7_kill_after_invalidation = invalidation_req_c & curr_fetch_thr_c[7] ;
4672
4673 ifu_ftu_agc_ctl_msff_ctl_macro__width_8 thrx_inv_kill_reg (
4674 .scan_in(thrx_inv_kill_reg_scanin),
4675 .scan_out(thrx_inv_kill_reg_scanout),
4676 .l1clk( l1clk ),
4677 .din ({thr7_kill_after_invalidation,thr6_kill_after_invalidation,
4678 thr5_kill_after_invalidation,thr4_kill_after_invalidation,
4679 thr3_kill_after_invalidation,thr2_kill_after_invalidation,
4680 thr1_kill_after_invalidation,thr0_kill_after_invalidation}),
4681 .dout ({thr7_kill_after_invalidation_d,thr6_kill_after_invalidation_d,
4682 thr5_kill_after_invalidation_d,thr4_kill_after_invalidation_d,
4683 thr3_kill_after_invalidation_d,thr2_kill_after_invalidation_d,
4684 thr1_kill_after_invalidation_d,thr0_kill_after_invalidation_d}),
4685 .siclk(siclk),
4686 .soclk(soclk)) ;
4687
4688
4689///////////////////////////////////////////////////////////////////////////
4690// Cache miss signals. //
4691///////////////////////////////////////////////////////////////////////////
4692
4693
4694
4695assign cms_itb_cmiss_c_q = itb_cmiss_c & agc_fetch_v_c_unq & ~itb_itb_miss_c & ~agc_kill_fetch_cv_int2_c & agc_qualify_cmiss;
4696
4697
4698assign ftu_agc_thr0_cmiss_c = cms_itb_cmiss_c_q & cms_curr_fetch_thr_c[0] & ~tsm_thr0_no_new_miss & ~cms_tlu_flush_f[0] & ~agc_thr0_br_misp_f;
4699assign ftu_agc_thr1_cmiss_c = cms_itb_cmiss_c_q & cms_curr_fetch_thr_c[1] & ~tsm_thr1_no_new_miss & ~cms_tlu_flush_f[1] & ~agc_thr1_br_misp_f;
4700assign ftu_agc_thr2_cmiss_c = cms_itb_cmiss_c_q & cms_curr_fetch_thr_c[2] & ~tsm_thr2_no_new_miss & ~cms_tlu_flush_f[2] & ~agc_thr2_br_misp_f;
4701assign ftu_agc_thr3_cmiss_c = cms_itb_cmiss_c_q & cms_curr_fetch_thr_c[3] & ~tsm_thr3_no_new_miss & ~cms_tlu_flush_f[3] & ~agc_thr3_br_misp_f;
4702assign ftu_agc_thr4_cmiss_c = cms_itb_cmiss_c_q & cms_curr_fetch_thr_c[4] & ~tsm_thr4_no_new_miss & ~cms_tlu_flush_f[4] & ~agc_thr4_br_misp_f;
4703assign ftu_agc_thr5_cmiss_c = cms_itb_cmiss_c_q & cms_curr_fetch_thr_c[5] & ~tsm_thr5_no_new_miss & ~cms_tlu_flush_f[5] & ~agc_thr5_br_misp_f;
4704assign ftu_agc_thr6_cmiss_c = cms_itb_cmiss_c_q & cms_curr_fetch_thr_c[6] & ~tsm_thr6_no_new_miss & ~cms_tlu_flush_f[6] & ~agc_thr6_br_misp_f;
4705assign ftu_agc_thr7_cmiss_c = cms_itb_cmiss_c_q & cms_curr_fetch_thr_c[7] & ~tsm_thr7_no_new_miss & ~cms_tlu_flush_f[7] & ~agc_thr7_br_misp_f;
4706
4707///////////////////////////////////////////////////////////////////////
4708// Spare circuits //
4709///////////////////////////////////////////////////////////////////////
4710ifu_ftu_agc_ctl_spare_ctl_macro__num_8 spares (
4711 .scan_in(spares_scanin),
4712 .scan_out(spares_scanout),
4713 .l1clk (l1clk),
4714 .siclk(siclk),
4715 .soclk(soclk)
4716);
4717
4718
4719///////////////////////////////////////////////////////////////////////
4720// Cambist outputs for the ITLB
4721///////////////////////////////////////////////////////////////////////
4722
4723
4724ifu_ftu_agc_ctl_msff_ctl_macro__width_6 mbist_output (
4725 .scan_in(mbist_output_scanin),
4726 .scan_out(mbist_output_scanout),
4727 .l1clk( l1clk ),
4728 .din ({itb_cam_hit_c, tlb_context0_hit, itb_itb_mhit_c,
4729 itb_cam_hit_c_1, tlb_context0_hit_1, itb_itb_mhit_c_1}),
4730 .dout ({itb_cam_hit_c_1, tlb_context0_hit_1, itb_itb_mhit_c_1,
4731 ftu_mbi_tlb_cam_hit,ftu_mbi_tlb_ctxt0_hit,ftu_mbi_tlb_cam_mhit}),
4732 .siclk(siclk),
4733 .soclk(soclk));
4734
4735
4736
4737assign ifu_ibuffer_write_c[0] = ftu_fetch_thr_c[0] & (ftu_instr_valid_c[0] | ftu_instr_valid_c[1] | ftu_instr_valid_c[2] |
4738 ftu_instr_valid_c[3] | ftu_exception_valid_c) & ~ftu_ibu_redirect_bf[0];
4739
4740assign ifu_ibuffer_write_c[1] = ftu_fetch_thr_c[1] & (ftu_instr_valid_c[0] | ftu_instr_valid_c[1] | ftu_instr_valid_c[2] |
4741 ftu_instr_valid_c[3] | ftu_exception_valid_c) & ~ftu_ibu_redirect_bf[1];
4742
4743assign ifu_ibuffer_write_c[2] = ftu_fetch_thr_c[2] & (ftu_instr_valid_c[0] | ftu_instr_valid_c[1] | ftu_instr_valid_c[2] |
4744 ftu_instr_valid_c[3] | ftu_exception_valid_c) & ~ftu_ibu_redirect_bf[2];
4745
4746assign ifu_ibuffer_write_c[3] = ftu_fetch_thr_c[3] & (ftu_instr_valid_c[0] | ftu_instr_valid_c[1] | ftu_instr_valid_c[2] |
4747 ftu_instr_valid_c[3] | ftu_exception_valid_c) & ~ftu_ibu_redirect_bf[3];
4748
4749
4750assign ifu_ibuffer_write_c[4] = ftu_fetch_thr_c[4] & (ftu_instr_valid_c[0] | ftu_instr_valid_c[1] | ftu_instr_valid_c[2] |
4751 ftu_instr_valid_c[3] | ftu_exception_valid_c) & ~ftu_ibu_redirect_bf[4];
4752
4753assign ifu_ibuffer_write_c[5] = ftu_fetch_thr_c[5] & (ftu_instr_valid_c[0] | ftu_instr_valid_c[1] | ftu_instr_valid_c[2] |
4754 ftu_instr_valid_c[3] | ftu_exception_valid_c) & ~ftu_ibu_redirect_bf[5];
4755
4756assign ifu_ibuffer_write_c[6] = ftu_fetch_thr_c[6] & (ftu_instr_valid_c[0] | ftu_instr_valid_c[1] | ftu_instr_valid_c[2] |
4757 ftu_instr_valid_c[3] | ftu_exception_valid_c) & ~ftu_ibu_redirect_bf[6];
4758
4759assign ifu_ibuffer_write_c[7] = ftu_fetch_thr_c[7] & (ftu_instr_valid_c[0] | ftu_instr_valid_c[1] | ftu_instr_valid_c[2] |
4760 ftu_instr_valid_c[3] | ftu_exception_valid_c) & ~ftu_ibu_redirect_bf[7];
4761
4762
4763supply0 vss;
4764supply1 vdd;
4765assign se = tcu_scan_en ;
4766// fixscan start:
4767assign tlu_ceter_pscce_reg_scanin = scan_in ;
4768assign br_misp_data_reg_scanin = tlu_ceter_pscce_reg_scanout;
4769assign br_misp_data_dup_reg_scanin = br_misp_data_reg_scanout ;
4770assign tid_dec_w_reg_scanin = br_misp_data_dup_reg_scanout;
4771assign curr_fetch_thr_c_reg_scanin = tid_dec_w_reg_scanout ;
4772assign cms_curr_fetch_thr_c_reg_scanin = curr_fetch_thr_c_reg_scanout;
4773assign sf_valid_reg_scanin = cms_curr_fetch_thr_c_reg_scanout;
4774assign sf_valid_dup_reg_scanin = sf_valid_reg_scanout ;
4775assign sf_valid_by_pass_f_reg_scanin = sf_valid_dup_reg_scanout ;
4776assign sf_valid_by_pass_c_reg_scanin = sf_valid_by_pass_f_reg_scanout;
4777assign sf_v_c_scanin = sf_valid_by_pass_c_reg_scanout;
4778assign unc_valid_reg_scanin = sf_v_c_scanout ;
4779assign thr0_pc_f_inc_reg_scanin = unc_valid_reg_scanout ;
4780assign thr1_pc_f_inc_reg_scanin = thr0_pc_f_inc_reg_scanout;
4781assign thr2_pc_f_inc_reg_scanin = thr1_pc_f_inc_reg_scanout;
4782assign thr3_pc_f_inc_reg_scanin = thr2_pc_f_inc_reg_scanout;
4783assign thr4_pc_f_inc_reg_scanin = thr3_pc_f_inc_reg_scanout;
4784assign thr5_pc_f_inc_reg_scanin = thr4_pc_f_inc_reg_scanout;
4785assign thr6_pc_f_inc_reg_scanin = thr5_pc_f_inc_reg_scanout;
4786assign thr7_pc_f_inc_reg_scanin = thr6_pc_f_inc_reg_scanout;
4787assign tlu_flush_ifu_reg_scanin = thr7_pc_f_inc_reg_scanout;
4788assign tlu_flush_ifu_d_reg_scanin = tlu_flush_ifu_reg_scanout;
4789assign cms_tlu_flush_ifu_reg_scanin = tlu_flush_ifu_d_reg_scanout;
4790assign load_flush_reg_scanin = cms_tlu_flush_ifu_reg_scanout;
4791assign kill_fetch_vc_reg_scanin = load_flush_reg_scanout ;
4792assign kill_fetch_vc_2_reg_scanin = kill_fetch_vc_reg_scanout;
4793assign exception_valid_kill_reg_scanin = kill_fetch_vc_2_reg_scanout;
4794assign exception_valid_kill1_reg_scanin = exception_valid_kill_reg_scanout;
4795assign thrx_exception_valid_kill_reg_scanin = exception_valid_kill1_reg_scanout;
4796assign thrx_redirect_reg_scanin = thrx_exception_valid_kill_reg_scanout;
4797assign thrx_ibu_redirect_reg_scanin = thrx_redirect_reg_scanout;
4798assign other_flushes_reg_scanin = thrx_ibu_redirect_reg_scanout;
4799assign cmu_fill_byp_thread_reg_scanin = other_flushes_reg_scanout;
4800assign by_pass_thread_bf_reg_scanin = cmu_fill_byp_thread_reg_scanout;
4801assign by_pass_sel_f_reg_scanin = by_pass_thread_bf_reg_scanout;
4802assign by_pass_sel_c_reg_scanin = by_pass_sel_f_reg_scanout;
4803assign by_pass_thread_f_reg_scanin = by_pass_sel_c_reg_scanout;
4804assign fetchalid_cnq_reg_scanin = by_pass_thread_f_reg_scanout;
4805assign fetch_v_dup_c_reg_scanin = fetchalid_cnq_reg_scanout;
4806assign cycle_2_by_pass_f_reg_scanin = fetch_v_dup_c_reg_scanout;
4807assign cycle_3_by_pass_f_reg_scanin = cycle_2_by_pass_f_reg_scanout;
4808assign cycle_3_by_pass_c_reg_scanin = cycle_3_by_pass_f_reg_scanout;
4809assign cmu_any_data_ready_reg_scanin = cycle_3_by_pass_c_reg_scanout;
4810assign tsm_thrx_kill_by_pass_reg_scanin = cmu_any_data_ready_reg_scanout;
4811assign by_pass_v_f_reg_scanin = tsm_thrx_kill_by_pass_reg_scanout;
4812assign by_pass_v_c_reg_scanin = by_pass_v_f_reg_scanout ;
4813assign by_pass_instr_v_f_reg_scanin = by_pass_v_c_reg_scanout ;
4814assign by_pass_instr_v_c_reg_scanin = by_pass_instr_v_f_reg_scanout;
4815assign bus_first_reg_scanin = by_pass_instr_v_c_reg_scanout;
4816assign thrx_sf_kill_reg_scanin = bus_first_reg_scanout ;
4817assign mbist_data_in_reg_scanin = thrx_sf_kill_reg_scanout ;
4818assign cmu_fill_wrway_reg_scanin = mbist_data_in_reg_scanout;
4819assign asi_mbist_way_f_reg_scanin = cmu_fill_wrway_reg_scanout;
4820assign vl_data_reg_scanin = asi_mbist_way_f_reg_scanout;
4821assign itlb_valid_reg_scanin = vl_data_reg_scanout ;
4822assign itlb_valid_dupl_reg_scanin = itlb_valid_reg_scanout ;
4823assign va_hole_excp_c_reg_scanin = itlb_valid_dupl_reg_scanout;
4824assign addr_bit_5_bf_reg_scanin = va_hole_excp_c_reg_scanout;
4825assign inv_bit_5_bf_reg_scanin = addr_bit_5_bf_reg_scanout;
4826assign wrway_bf_reg_scanin = inv_bit_5_bf_reg_scanout ;
4827assign inv_way_bf_reg_scanin = wrway_bf_reg_scanout ;
4828assign inv_way1_bf_reg_scanin = inv_way_bf_reg_scanout ;
4829assign inv_line_bf_reg_scanin = inv_way1_bf_reg_scanout ;
4830assign evic_line_bf_reg_scanin = inv_line_bf_reg_scanout ;
4831assign data_ready_bf_reg_scanin = evic_line_bf_reg_scanout ;
4832assign l2_cache_miss_in_reg_scanin = data_ready_bf_reg_scanout;
4833assign l2_cache_miss_1_reg_scanin = l2_cache_miss_in_reg_scanout;
4834assign l2_cache_miss_2_reg_scanin = l2_cache_miss_1_reg_scanout;
4835assign ic_instr_v_reg_scanin = l2_cache_miss_2_reg_scanout;
4836assign any_instr_v_c_reg_scanin = ic_instr_v_reg_scanout ;
4837assign hpstate_reg_scanin = any_instr_v_c_reg_scanout;
4838assign priv_state_c_reg_scanin = hpstate_reg_scanout ;
4839assign tlb_parity_reg_scanin = priv_state_c_reg_scanout ;
4840assign itlb_cam_vld_c_reg_scanin = tlb_parity_reg_scanout ;
4841assign cerer_en_reg_scanin = itlb_cam_vld_c_reg_scanout;
4842assign itc_real_f_reg_scanin = cerer_en_reg_scanout ;
4843assign itc_real_c_reg_scanin = itc_real_f_reg_scanout ;
4844assign cntx_sel_reg_scanin = itc_real_c_reg_scanout ;
4845assign lsu_no_icm_reg_scanin = cntx_sel_reg_scanout ;
4846assign ic_enable_reg_scanin = lsu_no_icm_reg_scanout ;
4847assign thr_c_ic_enable_reg_scanin = ic_enable_reg_scanout ;
4848assign thr_c_ic_disable_reg_scanin = thr_c_ic_enable_reg_scanout;
4849assign dff_8b_prty_7_scanin = thr_c_ic_disable_reg_scanout;
4850assign dff_8b_prty_5_scanin = dff_8b_prty_7_scanout ;
4851assign dff_8b_prty_3_scanin = dff_8b_prty_5_scanout ;
4852assign dff_8b_prty_1_scanin = dff_8b_prty_3_scanout ;
4853assign asi_sel_word_reg_scanin = dff_8b_prty_1_scanout ;
4854assign fetch_way_p_reg_scanin = asi_sel_word_reg_scanout ;
4855assign valid_err_way_p_reg_scanin = fetch_way_p_reg_scanout ;
4856assign tag_pe_way_scanin = valid_err_way_p_reg_scanout;
4857assign tag_perror_en_reg_scanin = tag_pe_way_scanout ;
4858assign way_thr0_keep_reg_scanin = tag_perror_en_reg_scanout;
4859assign way_thr1_keep_reg_scanin = way_thr0_keep_reg_scanout;
4860assign way_thr2_keep_reg_scanin = way_thr1_keep_reg_scanout;
4861assign way_thr3_keep_reg_scanin = way_thr2_keep_reg_scanout;
4862assign way_thr4_keep_reg_scanin = way_thr3_keep_reg_scanout;
4863assign way_thr5_keep_reg_scanin = way_thr4_keep_reg_scanout;
4864assign way_thr6_keep_reg_scanin = way_thr5_keep_reg_scanout;
4865assign way_thr7_keep_reg_scanin = way_thr6_keep_reg_scanout;
4866assign excp_way_d_reg_scanin = way_thr7_keep_reg_scanout;
4867assign excp_tid_d_reg_scanin = excp_way_d_reg_scanout ;
4868assign itlb_busy_reg_scanin = excp_tid_d_reg_scanout ;
4869assign itlb_busy_f_reg_scanin = itlb_busy_reg_scanout ;
4870assign ith_det_req_ff_reg_scanin = itlb_busy_f_reg_scanout ;
4871assign enabled_thr_reg_dup_scanin = ith_det_req_ff_reg_scanout;
4872assign single_thread_active_reg_scanin = enabled_thr_reg_dup_scanout;
4873assign invalidation_req_reg_scanin = single_thread_active_reg_scanout;
4874assign invalidation_req_dup_reg_scanin = invalidation_req_reg_scanout;
4875assign invalidation_req_c_reg_scanin = invalidation_req_dup_reg_scanout;
4876assign thrx_inv_kill_reg_scanin = invalidation_req_c_reg_scanout;
4877assign spares_scanin = thrx_inv_kill_reg_scanout;
4878assign mbist_output_scanin = spares_scanout ;
4879assign scan_out = mbist_output_scanout ;
4880// fixscan end:
4881endmodule
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892// any PARAMS parms go into naming of macro
4893
4894module ifu_ftu_agc_ctl_l1clkhdr_ctl_macro (
4895 l2clk,
4896 l1en,
4897 pce_ov,
4898 stop,
4899 se,
4900 l1clk);
4901
4902
4903 input l2clk;
4904 input l1en;
4905 input pce_ov;
4906 input stop;
4907 input se;
4908 output l1clk;
4909
4910
4911
4912
4913
4914cl_sc1_l1hdr_8x c_0 (
4915
4916
4917 .l2clk(l2clk),
4918 .pce(l1en),
4919 .l1clk(l1clk),
4920 .se(se),
4921 .pce_ov(pce_ov),
4922 .stop(stop)
4923);
4924
4925
4926
4927endmodule
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941// any PARAMS parms go into naming of macro
4942
4943module ifu_ftu_agc_ctl_msff_ctl_macro__width_8 (
4944 din,
4945 l1clk,
4946 scan_in,
4947 siclk,
4948 soclk,
4949 dout,
4950 scan_out);
4951wire [7:0] fdin;
4952wire [6:0] so;
4953
4954 input [7:0] din;
4955 input l1clk;
4956 input scan_in;
4957
4958
4959 input siclk;
4960 input soclk;
4961
4962 output [7:0] dout;
4963 output scan_out;
4964assign fdin[7:0] = din[7:0];
4965
4966
4967
4968
4969
4970
4971dff #(8) d0_0 (
4972.l1clk(l1clk),
4973.siclk(siclk),
4974.soclk(soclk),
4975.d(fdin[7:0]),
4976.si({scan_in,so[6:0]}),
4977.so({so[6:0],scan_out}),
4978.q(dout[7:0])
4979);
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992endmodule
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006// any PARAMS parms go into naming of macro
5007
5008module ifu_ftu_agc_ctl_msff_ctl_macro__width_12 (
5009 din,
5010 l1clk,
5011 scan_in,
5012 siclk,
5013 soclk,
5014 dout,
5015 scan_out);
5016wire [11:0] fdin;
5017wire [10:0] so;
5018
5019 input [11:0] din;
5020 input l1clk;
5021 input scan_in;
5022
5023
5024 input siclk;
5025 input soclk;
5026
5027 output [11:0] dout;
5028 output scan_out;
5029assign fdin[11:0] = din[11:0];
5030
5031
5032
5033
5034
5035
5036dff #(12) d0_0 (
5037.l1clk(l1clk),
5038.siclk(siclk),
5039.soclk(soclk),
5040.d(fdin[11:0]),
5041.si({scan_in,so[10:0]}),
5042.so({so[10:0],scan_out}),
5043.q(dout[11:0])
5044);
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057endmodule
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071// any PARAMS parms go into naming of macro
5072
5073module ifu_ftu_agc_ctl_msff_ctl_macro__width_1 (
5074 din,
5075 l1clk,
5076 scan_in,
5077 siclk,
5078 soclk,
5079 dout,
5080 scan_out);
5081wire [0:0] fdin;
5082
5083 input [0:0] din;
5084 input l1clk;
5085 input scan_in;
5086
5087
5088 input siclk;
5089 input soclk;
5090
5091 output [0:0] dout;
5092 output scan_out;
5093assign fdin[0:0] = din[0:0];
5094
5095
5096
5097
5098
5099
5100dff #(1) d0_0 (
5101.l1clk(l1clk),
5102.siclk(siclk),
5103.soclk(soclk),
5104.d(fdin[0:0]),
5105.si(scan_in),
5106.so(scan_out),
5107.q(dout[0:0])
5108);
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121endmodule
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135// any PARAMS parms go into naming of macro
5136
5137module ifu_ftu_agc_ctl_msff_ctl_macro__width_4 (
5138 din,
5139 l1clk,
5140 scan_in,
5141 siclk,
5142 soclk,
5143 dout,
5144 scan_out);
5145wire [3:0] fdin;
5146wire [2:0] so;
5147
5148 input [3:0] din;
5149 input l1clk;
5150 input scan_in;
5151
5152
5153 input siclk;
5154 input soclk;
5155
5156 output [3:0] dout;
5157 output scan_out;
5158assign fdin[3:0] = din[3:0];
5159
5160
5161
5162
5163
5164
5165dff #(4) d0_0 (
5166.l1clk(l1clk),
5167.siclk(siclk),
5168.soclk(soclk),
5169.d(fdin[3:0]),
5170.si({scan_in,so[2:0]}),
5171.so({so[2:0],scan_out}),
5172.q(dout[3:0])
5173);
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186endmodule
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200// any PARAMS parms go into naming of macro
5201
5202module ifu_ftu_agc_ctl_msff_ctl_macro__width_16 (
5203 din,
5204 l1clk,
5205 scan_in,
5206 siclk,
5207 soclk,
5208 dout,
5209 scan_out);
5210wire [15:0] fdin;
5211wire [14:0] so;
5212
5213 input [15:0] din;
5214 input l1clk;
5215 input scan_in;
5216
5217
5218 input siclk;
5219 input soclk;
5220
5221 output [15:0] dout;
5222 output scan_out;
5223assign fdin[15:0] = din[15:0];
5224
5225
5226
5227
5228
5229
5230dff #(16) d0_0 (
5231.l1clk(l1clk),
5232.siclk(siclk),
5233.soclk(soclk),
5234.d(fdin[15:0]),
5235.si({scan_in,so[14:0]}),
5236.so({so[14:0],scan_out}),
5237.q(dout[15:0])
5238);
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251endmodule
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265// any PARAMS parms go into naming of macro
5266
5267module ifu_ftu_agc_ctl_msff_ctl_macro__width_3 (
5268 din,
5269 l1clk,
5270 scan_in,
5271 siclk,
5272 soclk,
5273 dout,
5274 scan_out);
5275wire [2:0] fdin;
5276wire [1:0] so;
5277
5278 input [2:0] din;
5279 input l1clk;
5280 input scan_in;
5281
5282
5283 input siclk;
5284 input soclk;
5285
5286 output [2:0] dout;
5287 output scan_out;
5288assign fdin[2:0] = din[2:0];
5289
5290
5291
5292
5293
5294
5295dff #(3) d0_0 (
5296.l1clk(l1clk),
5297.siclk(siclk),
5298.soclk(soclk),
5299.d(fdin[2:0]),
5300.si({scan_in,so[1:0]}),
5301.so({so[1:0],scan_out}),
5302.q(dout[2:0])
5303);
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316endmodule
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330// any PARAMS parms go into naming of macro
5331
5332module ifu_ftu_agc_ctl_msff_ctl_macro__width_2 (
5333 din,
5334 l1clk,
5335 scan_in,
5336 siclk,
5337 soclk,
5338 dout,
5339 scan_out);
5340wire [1:0] fdin;
5341wire [0:0] so;
5342
5343 input [1:0] din;
5344 input l1clk;
5345 input scan_in;
5346
5347
5348 input siclk;
5349 input soclk;
5350
5351 output [1:0] dout;
5352 output scan_out;
5353assign fdin[1:0] = din[1:0];
5354
5355
5356
5357
5358
5359
5360dff #(2) d0_0 (
5361.l1clk(l1clk),
5362.siclk(siclk),
5363.soclk(soclk),
5364.d(fdin[1:0]),
5365.si({scan_in,so[0:0]}),
5366.so({so[0:0],scan_out}),
5367.q(dout[1:0])
5368);
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381endmodule
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395// any PARAMS parms go into naming of macro
5396
5397module ifu_ftu_agc_ctl_msff_ctl_macro__width_5 (
5398 din,
5399 l1clk,
5400 scan_in,
5401 siclk,
5402 soclk,
5403 dout,
5404 scan_out);
5405wire [4:0] fdin;
5406wire [3:0] so;
5407
5408 input [4:0] din;
5409 input l1clk;
5410 input scan_in;
5411
5412
5413 input siclk;
5414 input soclk;
5415
5416 output [4:0] dout;
5417 output scan_out;
5418assign fdin[4:0] = din[4:0];
5419
5420
5421
5422
5423
5424
5425dff #(5) d0_0 (
5426.l1clk(l1clk),
5427.siclk(siclk),
5428.soclk(soclk),
5429.d(fdin[4:0]),
5430.si({scan_in,so[3:0]}),
5431.so({so[3:0],scan_out}),
5432.q(dout[4:0])
5433);
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446endmodule
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460// any PARAMS parms go into naming of macro
5461
5462module ifu_ftu_agc_ctl_msff_ctl_macro__width_6 (
5463 din,
5464 l1clk,
5465 scan_in,
5466 siclk,
5467 soclk,
5468 dout,
5469 scan_out);
5470wire [5:0] fdin;
5471wire [4:0] so;
5472
5473 input [5:0] din;
5474 input l1clk;
5475 input scan_in;
5476
5477
5478 input siclk;
5479 input soclk;
5480
5481 output [5:0] dout;
5482 output scan_out;
5483assign fdin[5:0] = din[5:0];
5484
5485
5486
5487
5488
5489
5490dff #(6) d0_0 (
5491.l1clk(l1clk),
5492.siclk(siclk),
5493.soclk(soclk),
5494.d(fdin[5:0]),
5495.si({scan_in,so[4:0]}),
5496.so({so[4:0],scan_out}),
5497.q(dout[5:0])
5498);
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511endmodule
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525// any PARAMS parms go into naming of macro
5526
5527module ifu_ftu_agc_ctl_msff_ctl_macro__width_9 (
5528 din,
5529 l1clk,
5530 scan_in,
5531 siclk,
5532 soclk,
5533 dout,
5534 scan_out);
5535wire [8:0] fdin;
5536wire [7:0] so;
5537
5538 input [8:0] din;
5539 input l1clk;
5540 input scan_in;
5541
5542
5543 input siclk;
5544 input soclk;
5545
5546 output [8:0] dout;
5547 output scan_out;
5548assign fdin[8:0] = din[8:0];
5549
5550
5551
5552
5553
5554
5555dff #(9) d0_0 (
5556.l1clk(l1clk),
5557.siclk(siclk),
5558.soclk(soclk),
5559.d(fdin[8:0]),
5560.si({scan_in,so[7:0]}),
5561.so({so[7:0],scan_out}),
5562.q(dout[8:0])
5563);
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576endmodule
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586// Description: Spare gate macro for control blocks
5587//
5588// Param num controls the number of times the macro is added
5589// flops=0 can be used to use only combination spare logic
5590
5591
5592module ifu_ftu_agc_ctl_spare_ctl_macro__num_8 (
5593 l1clk,
5594 scan_in,
5595 siclk,
5596 soclk,
5597 scan_out);
5598wire si_0;
5599wire so_0;
5600wire spare0_flop_unused;
5601wire spare0_buf_32x_unused;
5602wire spare0_nand3_8x_unused;
5603wire spare0_inv_8x_unused;
5604wire spare0_aoi22_4x_unused;
5605wire spare0_buf_8x_unused;
5606wire spare0_oai22_4x_unused;
5607wire spare0_inv_16x_unused;
5608wire spare0_nand2_16x_unused;
5609wire spare0_nor3_4x_unused;
5610wire spare0_nand2_8x_unused;
5611wire spare0_buf_16x_unused;
5612wire spare0_nor2_16x_unused;
5613wire spare0_inv_32x_unused;
5614wire si_1;
5615wire so_1;
5616wire spare1_flop_unused;
5617wire spare1_buf_32x_unused;
5618wire spare1_nand3_8x_unused;
5619wire spare1_inv_8x_unused;
5620wire spare1_aoi22_4x_unused;
5621wire spare1_buf_8x_unused;
5622wire spare1_oai22_4x_unused;
5623wire spare1_inv_16x_unused;
5624wire spare1_nand2_16x_unused;
5625wire spare1_nor3_4x_unused;
5626wire spare1_nand2_8x_unused;
5627wire spare1_buf_16x_unused;
5628wire spare1_nor2_16x_unused;
5629wire spare1_inv_32x_unused;
5630wire si_2;
5631wire so_2;
5632wire spare2_flop_unused;
5633wire spare2_buf_32x_unused;
5634wire spare2_nand3_8x_unused;
5635wire spare2_inv_8x_unused;
5636wire spare2_aoi22_4x_unused;
5637wire spare2_buf_8x_unused;
5638wire spare2_oai22_4x_unused;
5639wire spare2_inv_16x_unused;
5640wire spare2_nand2_16x_unused;
5641wire spare2_nor3_4x_unused;
5642wire spare2_nand2_8x_unused;
5643wire spare2_buf_16x_unused;
5644wire spare2_nor2_16x_unused;
5645wire spare2_inv_32x_unused;
5646wire si_3;
5647wire so_3;
5648wire spare3_flop_unused;
5649wire spare3_buf_32x_unused;
5650wire spare3_nand3_8x_unused;
5651wire spare3_inv_8x_unused;
5652wire spare3_aoi22_4x_unused;
5653wire spare3_buf_8x_unused;
5654wire spare3_oai22_4x_unused;
5655wire spare3_inv_16x_unused;
5656wire spare3_nand2_16x_unused;
5657wire spare3_nor3_4x_unused;
5658wire spare3_nand2_8x_unused;
5659wire spare3_buf_16x_unused;
5660wire spare3_nor2_16x_unused;
5661wire spare3_inv_32x_unused;
5662wire si_4;
5663wire so_4;
5664wire spare4_flop_unused;
5665wire spare4_buf_32x_unused;
5666wire spare4_nand3_8x_unused;
5667wire spare4_inv_8x_unused;
5668wire spare4_aoi22_4x_unused;
5669wire spare4_buf_8x_unused;
5670wire spare4_oai22_4x_unused;
5671wire spare4_inv_16x_unused;
5672wire spare4_nand2_16x_unused;
5673wire spare4_nor3_4x_unused;
5674wire spare4_nand2_8x_unused;
5675wire spare4_buf_16x_unused;
5676wire spare4_nor2_16x_unused;
5677wire spare4_inv_32x_unused;
5678wire si_5;
5679wire so_5;
5680wire spare5_flop_unused;
5681wire spare5_buf_32x_unused;
5682wire spare5_nand3_8x_unused;
5683wire spare5_inv_8x_unused;
5684wire spare5_aoi22_4x_unused;
5685wire spare5_buf_8x_unused;
5686wire spare5_oai22_4x_unused;
5687wire spare5_inv_16x_unused;
5688wire spare5_nand2_16x_unused;
5689wire spare5_nor3_4x_unused;
5690wire spare5_nand2_8x_unused;
5691wire spare5_buf_16x_unused;
5692wire spare5_nor2_16x_unused;
5693wire spare5_inv_32x_unused;
5694wire si_6;
5695wire so_6;
5696wire spare6_flop_unused;
5697wire spare6_buf_32x_unused;
5698wire spare6_nand3_8x_unused;
5699wire spare6_inv_8x_unused;
5700wire spare6_aoi22_4x_unused;
5701wire spare6_buf_8x_unused;
5702wire spare6_oai22_4x_unused;
5703wire spare6_inv_16x_unused;
5704wire spare6_nand2_16x_unused;
5705wire spare6_nor3_4x_unused;
5706wire spare6_nand2_8x_unused;
5707wire spare6_buf_16x_unused;
5708wire spare6_nor2_16x_unused;
5709wire spare6_inv_32x_unused;
5710wire si_7;
5711wire so_7;
5712wire spare7_flop_unused;
5713wire spare7_buf_32x_unused;
5714wire spare7_nand3_8x_unused;
5715wire spare7_inv_8x_unused;
5716wire spare7_aoi22_4x_unused;
5717wire spare7_buf_8x_unused;
5718wire spare7_oai22_4x_unused;
5719wire spare7_inv_16x_unused;
5720wire spare7_nand2_16x_unused;
5721wire spare7_nor3_4x_unused;
5722wire spare7_nand2_8x_unused;
5723wire spare7_buf_16x_unused;
5724wire spare7_nor2_16x_unused;
5725wire spare7_inv_32x_unused;
5726
5727
5728input l1clk;
5729input scan_in;
5730input siclk;
5731input soclk;
5732output scan_out;
5733
5734cl_sc1_msff_8x spare0_flop (.l1clk(l1clk),
5735 .siclk(siclk),
5736 .soclk(soclk),
5737 .si(si_0),
5738 .so(so_0),
5739 .d(1'b0),
5740 .q(spare0_flop_unused));
5741assign si_0 = scan_in;
5742
5743cl_u1_buf_32x spare0_buf_32x (.in(1'b1),
5744 .out(spare0_buf_32x_unused));
5745cl_u1_nand3_8x spare0_nand3_8x (.in0(1'b1),
5746 .in1(1'b1),
5747 .in2(1'b1),
5748 .out(spare0_nand3_8x_unused));
5749cl_u1_inv_8x spare0_inv_8x (.in(1'b1),
5750 .out(spare0_inv_8x_unused));
5751cl_u1_aoi22_4x spare0_aoi22_4x (.in00(1'b1),
5752 .in01(1'b1),
5753 .in10(1'b1),
5754 .in11(1'b1),
5755 .out(spare0_aoi22_4x_unused));
5756cl_u1_buf_8x spare0_buf_8x (.in(1'b1),
5757 .out(spare0_buf_8x_unused));
5758cl_u1_oai22_4x spare0_oai22_4x (.in00(1'b1),
5759 .in01(1'b1),
5760 .in10(1'b1),
5761 .in11(1'b1),
5762 .out(spare0_oai22_4x_unused));
5763cl_u1_inv_16x spare0_inv_16x (.in(1'b1),
5764 .out(spare0_inv_16x_unused));
5765cl_u1_nand2_16x spare0_nand2_16x (.in0(1'b1),
5766 .in1(1'b1),
5767 .out(spare0_nand2_16x_unused));
5768cl_u1_nor3_4x spare0_nor3_4x (.in0(1'b0),
5769 .in1(1'b0),
5770 .in2(1'b0),
5771 .out(spare0_nor3_4x_unused));
5772cl_u1_nand2_8x spare0_nand2_8x (.in0(1'b1),
5773 .in1(1'b1),
5774 .out(spare0_nand2_8x_unused));
5775cl_u1_buf_16x spare0_buf_16x (.in(1'b1),
5776 .out(spare0_buf_16x_unused));
5777cl_u1_nor2_16x spare0_nor2_16x (.in0(1'b0),
5778 .in1(1'b0),
5779 .out(spare0_nor2_16x_unused));
5780cl_u1_inv_32x spare0_inv_32x (.in(1'b1),
5781 .out(spare0_inv_32x_unused));
5782
5783cl_sc1_msff_8x spare1_flop (.l1clk(l1clk),
5784 .siclk(siclk),
5785 .soclk(soclk),
5786 .si(si_1),
5787 .so(so_1),
5788 .d(1'b0),
5789 .q(spare1_flop_unused));
5790assign si_1 = so_0;
5791
5792cl_u1_buf_32x spare1_buf_32x (.in(1'b1),
5793 .out(spare1_buf_32x_unused));
5794cl_u1_nand3_8x spare1_nand3_8x (.in0(1'b1),
5795 .in1(1'b1),
5796 .in2(1'b1),
5797 .out(spare1_nand3_8x_unused));
5798cl_u1_inv_8x spare1_inv_8x (.in(1'b1),
5799 .out(spare1_inv_8x_unused));
5800cl_u1_aoi22_4x spare1_aoi22_4x (.in00(1'b1),
5801 .in01(1'b1),
5802 .in10(1'b1),
5803 .in11(1'b1),
5804 .out(spare1_aoi22_4x_unused));
5805cl_u1_buf_8x spare1_buf_8x (.in(1'b1),
5806 .out(spare1_buf_8x_unused));
5807cl_u1_oai22_4x spare1_oai22_4x (.in00(1'b1),
5808 .in01(1'b1),
5809 .in10(1'b1),
5810 .in11(1'b1),
5811 .out(spare1_oai22_4x_unused));
5812cl_u1_inv_16x spare1_inv_16x (.in(1'b1),
5813 .out(spare1_inv_16x_unused));
5814cl_u1_nand2_16x spare1_nand2_16x (.in0(1'b1),
5815 .in1(1'b1),
5816 .out(spare1_nand2_16x_unused));
5817cl_u1_nor3_4x spare1_nor3_4x (.in0(1'b0),
5818 .in1(1'b0),
5819 .in2(1'b0),
5820 .out(spare1_nor3_4x_unused));
5821cl_u1_nand2_8x spare1_nand2_8x (.in0(1'b1),
5822 .in1(1'b1),
5823 .out(spare1_nand2_8x_unused));
5824cl_u1_buf_16x spare1_buf_16x (.in(1'b1),
5825 .out(spare1_buf_16x_unused));
5826cl_u1_nor2_16x spare1_nor2_16x (.in0(1'b0),
5827 .in1(1'b0),
5828 .out(spare1_nor2_16x_unused));
5829cl_u1_inv_32x spare1_inv_32x (.in(1'b1),
5830 .out(spare1_inv_32x_unused));
5831
5832cl_sc1_msff_8x spare2_flop (.l1clk(l1clk),
5833 .siclk(siclk),
5834 .soclk(soclk),
5835 .si(si_2),
5836 .so(so_2),
5837 .d(1'b0),
5838 .q(spare2_flop_unused));
5839assign si_2 = so_1;
5840
5841cl_u1_buf_32x spare2_buf_32x (.in(1'b1),
5842 .out(spare2_buf_32x_unused));
5843cl_u1_nand3_8x spare2_nand3_8x (.in0(1'b1),
5844 .in1(1'b1),
5845 .in2(1'b1),
5846 .out(spare2_nand3_8x_unused));
5847cl_u1_inv_8x spare2_inv_8x (.in(1'b1),
5848 .out(spare2_inv_8x_unused));
5849cl_u1_aoi22_4x spare2_aoi22_4x (.in00(1'b1),
5850 .in01(1'b1),
5851 .in10(1'b1),
5852 .in11(1'b1),
5853 .out(spare2_aoi22_4x_unused));
5854cl_u1_buf_8x spare2_buf_8x (.in(1'b1),
5855 .out(spare2_buf_8x_unused));
5856cl_u1_oai22_4x spare2_oai22_4x (.in00(1'b1),
5857 .in01(1'b1),
5858 .in10(1'b1),
5859 .in11(1'b1),
5860 .out(spare2_oai22_4x_unused));
5861cl_u1_inv_16x spare2_inv_16x (.in(1'b1),
5862 .out(spare2_inv_16x_unused));
5863cl_u1_nand2_16x spare2_nand2_16x (.in0(1'b1),
5864 .in1(1'b1),
5865 .out(spare2_nand2_16x_unused));
5866cl_u1_nor3_4x spare2_nor3_4x (.in0(1'b0),
5867 .in1(1'b0),
5868 .in2(1'b0),
5869 .out(spare2_nor3_4x_unused));
5870cl_u1_nand2_8x spare2_nand2_8x (.in0(1'b1),
5871 .in1(1'b1),
5872 .out(spare2_nand2_8x_unused));
5873cl_u1_buf_16x spare2_buf_16x (.in(1'b1),
5874 .out(spare2_buf_16x_unused));
5875cl_u1_nor2_16x spare2_nor2_16x (.in0(1'b0),
5876 .in1(1'b0),
5877 .out(spare2_nor2_16x_unused));
5878cl_u1_inv_32x spare2_inv_32x (.in(1'b1),
5879 .out(spare2_inv_32x_unused));
5880
5881cl_sc1_msff_8x spare3_flop (.l1clk(l1clk),
5882 .siclk(siclk),
5883 .soclk(soclk),
5884 .si(si_3),
5885 .so(so_3),
5886 .d(1'b0),
5887 .q(spare3_flop_unused));
5888assign si_3 = so_2;
5889
5890cl_u1_buf_32x spare3_buf_32x (.in(1'b1),
5891 .out(spare3_buf_32x_unused));
5892cl_u1_nand3_8x spare3_nand3_8x (.in0(1'b1),
5893 .in1(1'b1),
5894 .in2(1'b1),
5895 .out(spare3_nand3_8x_unused));
5896cl_u1_inv_8x spare3_inv_8x (.in(1'b1),
5897 .out(spare3_inv_8x_unused));
5898cl_u1_aoi22_4x spare3_aoi22_4x (.in00(1'b1),
5899 .in01(1'b1),
5900 .in10(1'b1),
5901 .in11(1'b1),
5902 .out(spare3_aoi22_4x_unused));
5903cl_u1_buf_8x spare3_buf_8x (.in(1'b1),
5904 .out(spare3_buf_8x_unused));
5905cl_u1_oai22_4x spare3_oai22_4x (.in00(1'b1),
5906 .in01(1'b1),
5907 .in10(1'b1),
5908 .in11(1'b1),
5909 .out(spare3_oai22_4x_unused));
5910cl_u1_inv_16x spare3_inv_16x (.in(1'b1),
5911 .out(spare3_inv_16x_unused));
5912cl_u1_nand2_16x spare3_nand2_16x (.in0(1'b1),
5913 .in1(1'b1),
5914 .out(spare3_nand2_16x_unused));
5915cl_u1_nor3_4x spare3_nor3_4x (.in0(1'b0),
5916 .in1(1'b0),
5917 .in2(1'b0),
5918 .out(spare3_nor3_4x_unused));
5919cl_u1_nand2_8x spare3_nand2_8x (.in0(1'b1),
5920 .in1(1'b1),
5921 .out(spare3_nand2_8x_unused));
5922cl_u1_buf_16x spare3_buf_16x (.in(1'b1),
5923 .out(spare3_buf_16x_unused));
5924cl_u1_nor2_16x spare3_nor2_16x (.in0(1'b0),
5925 .in1(1'b0),
5926 .out(spare3_nor2_16x_unused));
5927cl_u1_inv_32x spare3_inv_32x (.in(1'b1),
5928 .out(spare3_inv_32x_unused));
5929
5930cl_sc1_msff_8x spare4_flop (.l1clk(l1clk),
5931 .siclk(siclk),
5932 .soclk(soclk),
5933 .si(si_4),
5934 .so(so_4),
5935 .d(1'b0),
5936 .q(spare4_flop_unused));
5937assign si_4 = so_3;
5938
5939cl_u1_buf_32x spare4_buf_32x (.in(1'b1),
5940 .out(spare4_buf_32x_unused));
5941cl_u1_nand3_8x spare4_nand3_8x (.in0(1'b1),
5942 .in1(1'b1),
5943 .in2(1'b1),
5944 .out(spare4_nand3_8x_unused));
5945cl_u1_inv_8x spare4_inv_8x (.in(1'b1),
5946 .out(spare4_inv_8x_unused));
5947cl_u1_aoi22_4x spare4_aoi22_4x (.in00(1'b1),
5948 .in01(1'b1),
5949 .in10(1'b1),
5950 .in11(1'b1),
5951 .out(spare4_aoi22_4x_unused));
5952cl_u1_buf_8x spare4_buf_8x (.in(1'b1),
5953 .out(spare4_buf_8x_unused));
5954cl_u1_oai22_4x spare4_oai22_4x (.in00(1'b1),
5955 .in01(1'b1),
5956 .in10(1'b1),
5957 .in11(1'b1),
5958 .out(spare4_oai22_4x_unused));
5959cl_u1_inv_16x spare4_inv_16x (.in(1'b1),
5960 .out(spare4_inv_16x_unused));
5961cl_u1_nand2_16x spare4_nand2_16x (.in0(1'b1),
5962 .in1(1'b1),
5963 .out(spare4_nand2_16x_unused));
5964cl_u1_nor3_4x spare4_nor3_4x (.in0(1'b0),
5965 .in1(1'b0),
5966 .in2(1'b0),
5967 .out(spare4_nor3_4x_unused));
5968cl_u1_nand2_8x spare4_nand2_8x (.in0(1'b1),
5969 .in1(1'b1),
5970 .out(spare4_nand2_8x_unused));
5971cl_u1_buf_16x spare4_buf_16x (.in(1'b1),
5972 .out(spare4_buf_16x_unused));
5973cl_u1_nor2_16x spare4_nor2_16x (.in0(1'b0),
5974 .in1(1'b0),
5975 .out(spare4_nor2_16x_unused));
5976cl_u1_inv_32x spare4_inv_32x (.in(1'b1),
5977 .out(spare4_inv_32x_unused));
5978
5979cl_sc1_msff_8x spare5_flop (.l1clk(l1clk),
5980 .siclk(siclk),
5981 .soclk(soclk),
5982 .si(si_5),
5983 .so(so_5),
5984 .d(1'b0),
5985 .q(spare5_flop_unused));
5986assign si_5 = so_4;
5987
5988cl_u1_buf_32x spare5_buf_32x (.in(1'b1),
5989 .out(spare5_buf_32x_unused));
5990cl_u1_nand3_8x spare5_nand3_8x (.in0(1'b1),
5991 .in1(1'b1),
5992 .in2(1'b1),
5993 .out(spare5_nand3_8x_unused));
5994cl_u1_inv_8x spare5_inv_8x (.in(1'b1),
5995 .out(spare5_inv_8x_unused));
5996cl_u1_aoi22_4x spare5_aoi22_4x (.in00(1'b1),
5997 .in01(1'b1),
5998 .in10(1'b1),
5999 .in11(1'b1),
6000 .out(spare5_aoi22_4x_unused));
6001cl_u1_buf_8x spare5_buf_8x (.in(1'b1),
6002 .out(spare5_buf_8x_unused));
6003cl_u1_oai22_4x spare5_oai22_4x (.in00(1'b1),
6004 .in01(1'b1),
6005 .in10(1'b1),
6006 .in11(1'b1),
6007 .out(spare5_oai22_4x_unused));
6008cl_u1_inv_16x spare5_inv_16x (.in(1'b1),
6009 .out(spare5_inv_16x_unused));
6010cl_u1_nand2_16x spare5_nand2_16x (.in0(1'b1),
6011 .in1(1'b1),
6012 .out(spare5_nand2_16x_unused));
6013cl_u1_nor3_4x spare5_nor3_4x (.in0(1'b0),
6014 .in1(1'b0),
6015 .in2(1'b0),
6016 .out(spare5_nor3_4x_unused));
6017cl_u1_nand2_8x spare5_nand2_8x (.in0(1'b1),
6018 .in1(1'b1),
6019 .out(spare5_nand2_8x_unused));
6020cl_u1_buf_16x spare5_buf_16x (.in(1'b1),
6021 .out(spare5_buf_16x_unused));
6022cl_u1_nor2_16x spare5_nor2_16x (.in0(1'b0),
6023 .in1(1'b0),
6024 .out(spare5_nor2_16x_unused));
6025cl_u1_inv_32x spare5_inv_32x (.in(1'b1),
6026 .out(spare5_inv_32x_unused));
6027
6028cl_sc1_msff_8x spare6_flop (.l1clk(l1clk),
6029 .siclk(siclk),
6030 .soclk(soclk),
6031 .si(si_6),
6032 .so(so_6),
6033 .d(1'b0),
6034 .q(spare6_flop_unused));
6035assign si_6 = so_5;
6036
6037cl_u1_buf_32x spare6_buf_32x (.in(1'b1),
6038 .out(spare6_buf_32x_unused));
6039cl_u1_nand3_8x spare6_nand3_8x (.in0(1'b1),
6040 .in1(1'b1),
6041 .in2(1'b1),
6042 .out(spare6_nand3_8x_unused));
6043cl_u1_inv_8x spare6_inv_8x (.in(1'b1),
6044 .out(spare6_inv_8x_unused));
6045cl_u1_aoi22_4x spare6_aoi22_4x (.in00(1'b1),
6046 .in01(1'b1),
6047 .in10(1'b1),
6048 .in11(1'b1),
6049 .out(spare6_aoi22_4x_unused));
6050cl_u1_buf_8x spare6_buf_8x (.in(1'b1),
6051 .out(spare6_buf_8x_unused));
6052cl_u1_oai22_4x spare6_oai22_4x (.in00(1'b1),
6053 .in01(1'b1),
6054 .in10(1'b1),
6055 .in11(1'b1),
6056 .out(spare6_oai22_4x_unused));
6057cl_u1_inv_16x spare6_inv_16x (.in(1'b1),
6058 .out(spare6_inv_16x_unused));
6059cl_u1_nand2_16x spare6_nand2_16x (.in0(1'b1),
6060 .in1(1'b1),
6061 .out(spare6_nand2_16x_unused));
6062cl_u1_nor3_4x spare6_nor3_4x (.in0(1'b0),
6063 .in1(1'b0),
6064 .in2(1'b0),
6065 .out(spare6_nor3_4x_unused));
6066cl_u1_nand2_8x spare6_nand2_8x (.in0(1'b1),
6067 .in1(1'b1),
6068 .out(spare6_nand2_8x_unused));
6069cl_u1_buf_16x spare6_buf_16x (.in(1'b1),
6070 .out(spare6_buf_16x_unused));
6071cl_u1_nor2_16x spare6_nor2_16x (.in0(1'b0),
6072 .in1(1'b0),
6073 .out(spare6_nor2_16x_unused));
6074cl_u1_inv_32x spare6_inv_32x (.in(1'b1),
6075 .out(spare6_inv_32x_unused));
6076
6077cl_sc1_msff_8x spare7_flop (.l1clk(l1clk),
6078 .siclk(siclk),
6079 .soclk(soclk),
6080 .si(si_7),
6081 .so(so_7),
6082 .d(1'b0),
6083 .q(spare7_flop_unused));
6084assign si_7 = so_6;
6085
6086cl_u1_buf_32x spare7_buf_32x (.in(1'b1),
6087 .out(spare7_buf_32x_unused));
6088cl_u1_nand3_8x spare7_nand3_8x (.in0(1'b1),
6089 .in1(1'b1),
6090 .in2(1'b1),
6091 .out(spare7_nand3_8x_unused));
6092cl_u1_inv_8x spare7_inv_8x (.in(1'b1),
6093 .out(spare7_inv_8x_unused));
6094cl_u1_aoi22_4x spare7_aoi22_4x (.in00(1'b1),
6095 .in01(1'b1),
6096 .in10(1'b1),
6097 .in11(1'b1),
6098 .out(spare7_aoi22_4x_unused));
6099cl_u1_buf_8x spare7_buf_8x (.in(1'b1),
6100 .out(spare7_buf_8x_unused));
6101cl_u1_oai22_4x spare7_oai22_4x (.in00(1'b1),
6102 .in01(1'b1),
6103 .in10(1'b1),
6104 .in11(1'b1),
6105 .out(spare7_oai22_4x_unused));
6106cl_u1_inv_16x spare7_inv_16x (.in(1'b1),
6107 .out(spare7_inv_16x_unused));
6108cl_u1_nand2_16x spare7_nand2_16x (.in0(1'b1),
6109 .in1(1'b1),
6110 .out(spare7_nand2_16x_unused));
6111cl_u1_nor3_4x spare7_nor3_4x (.in0(1'b0),
6112 .in1(1'b0),
6113 .in2(1'b0),
6114 .out(spare7_nor3_4x_unused));
6115cl_u1_nand2_8x spare7_nand2_8x (.in0(1'b1),
6116 .in1(1'b1),
6117 .out(spare7_nand2_8x_unused));
6118cl_u1_buf_16x spare7_buf_16x (.in(1'b1),
6119 .out(spare7_buf_16x_unused));
6120cl_u1_nor2_16x spare7_nor2_16x (.in0(1'b0),
6121 .in1(1'b0),
6122 .out(spare7_nor2_16x_unused));
6123cl_u1_inv_32x spare7_inv_32x (.in(1'b1),
6124 .out(spare7_inv_32x_unused));
6125assign scan_out = so_7;
6126
6127
6128
6129endmodule
6130