You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4126 lines
218 KiB
Verilog

// © IBM Corp. 2020
// Licensed under the Apache License, Version 2.0 (the "License"), as modified by
// the terms below; you may not use the files in this repository except in
// compliance with the License as modified.
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
//
// Modified Terms:
//
// 1) For the purpose of the patent license granted to you in Section 3 of the
// License, the "Work" hereby includes implementations of the work of authorship
// in physical form.
//
// 2) Notwithstanding any terms to the contrary in the License, any licenses
// necessary for implementation of the Work that are available from OpenPOWER
// via the Power ISA End User License Agreement (EULA) are explicitly excluded
// hereunder, and may be obtained from OpenPOWER under the terms and conditions
// of the EULA.
//
// Unless required by applicable law or agreed to in writing, the reference design
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
// for the specific language governing permissions and limitations under the License.
//
// Additional rights, including the ability to physically implement a softcore that
// is compliant with the required sections of the Power ISA Specification, are
// available at no cost under the terms of the OpenPOWER Power ISA EULA, which can be
// obtained (along with the Power ISA) here: https://openpowerfoundation.org.
`timescale 1 ns / 1 ns
//********************************************************************
//*
//* TITLE:
//*
//* NAME: iuq_dispatch.vhdl
//*
`include "tri_a2o.vh"
module iuq_dispatch(
inout vdd,
inout gnd,
input [0:`NCLK_WIDTH-1] nclk,
input pc_iu_sg_2,
input pc_iu_func_sl_thold_2,
input pc_iu_func_slp_sl_thold_2,
input clkoff_b,
input act_dis,
input tc_ac_ccflush_dc,
input d_mode,
input delay_lclkr,
input mpw1_b,
input mpw2_b,
input scan_in,
output scan_out,
//-----------------------------
// SPR connections
//-----------------------------
input [0:`THREADS-1] spr_cpcr_we,
input [0:4] spr_t0_cpcr2_fx0_cnt,
input [0:4] spr_t0_cpcr2_fx1_cnt,
input [0:4] spr_t0_cpcr2_lq_cnt,
input [0:4] spr_t0_cpcr2_sq_cnt,
input [0:4] spr_t0_cpcr3_fu0_cnt,
input [0:4] spr_t0_cpcr3_fu1_cnt,
input [0:4] spr_t0_cpcr4_fx0_cnt,
input [0:4] spr_t0_cpcr4_fx1_cnt,
input [0:4] spr_t0_cpcr4_lq_cnt,
input [0:4] spr_t0_cpcr4_sq_cnt,
input [0:4] spr_t0_cpcr5_fu0_cnt,
input [0:4] spr_t0_cpcr5_fu1_cnt,
`ifndef THREADS1
input [0:4] spr_t1_cpcr2_fx0_cnt,
input [0:4] spr_t1_cpcr2_fx1_cnt,
input [0:4] spr_t1_cpcr2_lq_cnt,
input [0:4] spr_t1_cpcr2_sq_cnt,
input [0:4] spr_t1_cpcr3_fu0_cnt,
input [0:4] spr_t1_cpcr3_fu1_cnt,
input [0:4] spr_t1_cpcr4_fx0_cnt,
input [0:4] spr_t1_cpcr4_fx1_cnt,
input [0:4] spr_t1_cpcr4_lq_cnt,
input [0:4] spr_t1_cpcr4_sq_cnt,
input [0:4] spr_t1_cpcr5_fu0_cnt,
input [0:4] spr_t1_cpcr5_fu1_cnt,
`endif
input [0:4] spr_cpcr0_fx0_cnt,
input [0:4] spr_cpcr0_fx1_cnt,
input [0:4] spr_cpcr0_lq_cnt,
input [0:4] spr_cpcr0_sq_cnt,
input [0:4] spr_cpcr1_fu0_cnt,
input [0:4] spr_cpcr1_fu1_cnt,
input [0:`THREADS-1] spr_high_pri_mask,
input [0:`THREADS-1] spr_med_pri_mask,
input [0:5] spr_t0_low_pri_count,
`ifndef THREADS1
input [0:5] spr_t1_low_pri_count,
`endif
//-------------------------------
// Performance interface with I$
//-------------------------------
input pc_iu_event_bus_enable,
output [0:`THREADS-1] perf_iu6_stall,
output [0:`THREADS-1] perf_iu6_dispatch_fx0,
output [0:`THREADS-1] perf_iu6_dispatch_fx1,
output [0:`THREADS-1] perf_iu6_dispatch_lq,
output [0:`THREADS-1] perf_iu6_dispatch_axu0,
output [0:`THREADS-1] perf_iu6_dispatch_axu1,
output [0:`THREADS-1] perf_iu6_fx0_credit_stall,
output [0:`THREADS-1] perf_iu6_fx1_credit_stall,
output [0:`THREADS-1] perf_iu6_lq_credit_stall,
output [0:`THREADS-1] perf_iu6_sq_credit_stall,
output [0:`THREADS-1] perf_iu6_axu0_credit_stall,
output [0:`THREADS-1] perf_iu6_axu1_credit_stall,
//----------------------------
// SCOM signals
//----------------------------
output [0:`THREADS-1] iu_pc_fx0_credit_ok,
output [0:`THREADS-1] iu_pc_fx1_credit_ok,
output [0:`THREADS-1] iu_pc_axu0_credit_ok,
output [0:`THREADS-1] iu_pc_axu1_credit_ok,
output [0:`THREADS-1] iu_pc_lq_credit_ok,
output [0:`THREADS-1] iu_pc_sq_credit_ok,
//----------------------------
// Credit Interface with IU
//----------------------------
input [0:`THREADS-1] rv_iu_fx0_credit_free,
input [0:`THREADS-1] rv_iu_fx1_credit_free, // Need to add 2nd unit someday
input [0:`THREADS-1] lq_iu_credit_free,
input [0:`THREADS-1] sq_iu_credit_free,
input [0:`THREADS-1] axu0_iu_credit_free, // credit free from axu reservation station
input [0:`THREADS-1] axu1_iu_credit_free, // credit free from axu reservation station
input [0:`THREADS-1] cp_flush,
input [0:`THREADS-1] xu_iu_run_thread,
output iu_xu_credits_returned,
//----------------------------------------------------------------
// Interface with rename
//----------------------------------------------------------------
input frn_fdis_iu6_t0_i0_vld,
input [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_t0_i0_itag,
input [0:2] frn_fdis_iu6_t0_i0_ucode,
input [0:`UCODE_ENTRIES_ENC-1] frn_fdis_iu6_t0_i0_ucode_cnt,
input frn_fdis_iu6_t0_i0_2ucode,
input frn_fdis_iu6_t0_i0_fuse_nop,
input frn_fdis_iu6_t0_i0_rte_lq,
input frn_fdis_iu6_t0_i0_rte_sq,
input frn_fdis_iu6_t0_i0_rte_fx0,
input frn_fdis_iu6_t0_i0_rte_fx1,
input frn_fdis_iu6_t0_i0_rte_axu0,
input frn_fdis_iu6_t0_i0_rte_axu1,
input frn_fdis_iu6_t0_i0_valop,
input frn_fdis_iu6_t0_i0_ord,
input frn_fdis_iu6_t0_i0_cord,
input [0:2] frn_fdis_iu6_t0_i0_error,
input frn_fdis_iu6_t0_i0_btb_entry,
input [0:1] frn_fdis_iu6_t0_i0_btb_hist,
input frn_fdis_iu6_t0_i0_bta_val,
input [0:19] frn_fdis_iu6_t0_i0_fusion,
input frn_fdis_iu6_t0_i0_spec,
input frn_fdis_iu6_t0_i0_type_fp,
input frn_fdis_iu6_t0_i0_type_ap,
input frn_fdis_iu6_t0_i0_type_spv,
input frn_fdis_iu6_t0_i0_type_st,
input frn_fdis_iu6_t0_i0_async_block,
input frn_fdis_iu6_t0_i0_np1_flush,
input frn_fdis_iu6_t0_i0_core_block,
input frn_fdis_iu6_t0_i0_isram,
input frn_fdis_iu6_t0_i0_isload,
input frn_fdis_iu6_t0_i0_isstore,
input [0:31] frn_fdis_iu6_t0_i0_instr,
input [62-`EFF_IFAR_WIDTH:61] frn_fdis_iu6_t0_i0_ifar,
input [62-`EFF_IFAR_WIDTH:61] frn_fdis_iu6_t0_i0_bta,
input frn_fdis_iu6_t0_i0_br_pred,
input frn_fdis_iu6_t0_i0_bh_update,
input [0:1] frn_fdis_iu6_t0_i0_bh0_hist,
input [0:1] frn_fdis_iu6_t0_i0_bh1_hist,
input [0:1] frn_fdis_iu6_t0_i0_bh2_hist,
input [0:17] frn_fdis_iu6_t0_i0_gshare,
input [0:2] frn_fdis_iu6_t0_i0_ls_ptr,
input frn_fdis_iu6_t0_i0_match,
input [0:3] frn_fdis_iu6_t0_i0_ilat,
input frn_fdis_iu6_t0_i0_t1_v,
input [0:2] frn_fdis_iu6_t0_i0_t1_t,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i0_t1_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i0_t1_p,
input frn_fdis_iu6_t0_i0_t2_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i0_t2_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i0_t2_p,
input [0:2] frn_fdis_iu6_t0_i0_t2_t,
input frn_fdis_iu6_t0_i0_t3_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i0_t3_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i0_t3_p,
input [0:2] frn_fdis_iu6_t0_i0_t3_t,
input frn_fdis_iu6_t0_i0_s1_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i0_s1_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i0_s1_p,
input [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_t0_i0_s1_itag,
input [0:2] frn_fdis_iu6_t0_i0_s1_t,
input frn_fdis_iu6_t0_i0_s2_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i0_s2_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i0_s2_p,
input [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_t0_i0_s2_itag,
input [0:2] frn_fdis_iu6_t0_i0_s2_t,
input frn_fdis_iu6_t0_i0_s3_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i0_s3_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i0_s3_p,
input [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_t0_i0_s3_itag,
input [0:2] frn_fdis_iu6_t0_i0_s3_t,
input frn_fdis_iu6_t0_i1_vld,
input [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_t0_i1_itag,
input [0:2] frn_fdis_iu6_t0_i1_ucode,
input [0:`UCODE_ENTRIES_ENC-1] frn_fdis_iu6_t0_i1_ucode_cnt,
input frn_fdis_iu6_t0_i1_fuse_nop,
input frn_fdis_iu6_t0_i1_rte_lq,
input frn_fdis_iu6_t0_i1_rte_sq,
input frn_fdis_iu6_t0_i1_rte_fx0,
input frn_fdis_iu6_t0_i1_rte_fx1,
input frn_fdis_iu6_t0_i1_rte_axu0,
input frn_fdis_iu6_t0_i1_rte_axu1,
input frn_fdis_iu6_t0_i1_valop,
input frn_fdis_iu6_t0_i1_ord,
input frn_fdis_iu6_t0_i1_cord,
input [0:2] frn_fdis_iu6_t0_i1_error,
input frn_fdis_iu6_t0_i1_btb_entry,
input [0:1] frn_fdis_iu6_t0_i1_btb_hist,
input frn_fdis_iu6_t0_i1_bta_val,
input [0:19] frn_fdis_iu6_t0_i1_fusion,
input frn_fdis_iu6_t0_i1_spec,
input frn_fdis_iu6_t0_i1_type_fp,
input frn_fdis_iu6_t0_i1_type_ap,
input frn_fdis_iu6_t0_i1_type_spv,
input frn_fdis_iu6_t0_i1_type_st,
input frn_fdis_iu6_t0_i1_async_block,
input frn_fdis_iu6_t0_i1_np1_flush,
input frn_fdis_iu6_t0_i1_core_block,
input frn_fdis_iu6_t0_i1_isram,
input frn_fdis_iu6_t0_i1_isload,
input frn_fdis_iu6_t0_i1_isstore,
input [0:31] frn_fdis_iu6_t0_i1_instr,
input [62-`EFF_IFAR_WIDTH:61] frn_fdis_iu6_t0_i1_ifar,
input [62-`EFF_IFAR_WIDTH:61] frn_fdis_iu6_t0_i1_bta,
input frn_fdis_iu6_t0_i1_br_pred,
input frn_fdis_iu6_t0_i1_bh_update,
input [0:1] frn_fdis_iu6_t0_i1_bh0_hist,
input [0:1] frn_fdis_iu6_t0_i1_bh1_hist,
input [0:1] frn_fdis_iu6_t0_i1_bh2_hist,
input [0:17] frn_fdis_iu6_t0_i1_gshare,
input [0:2] frn_fdis_iu6_t0_i1_ls_ptr,
input frn_fdis_iu6_t0_i1_match,
input [0:3] frn_fdis_iu6_t0_i1_ilat,
input frn_fdis_iu6_t0_i1_t1_v,
input [0:2] frn_fdis_iu6_t0_i1_t1_t,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i1_t1_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i1_t1_p,
input frn_fdis_iu6_t0_i1_t2_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i1_t2_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i1_t2_p,
input [0:2] frn_fdis_iu6_t0_i1_t2_t,
input frn_fdis_iu6_t0_i1_t3_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i1_t3_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i1_t3_p,
input [0:2] frn_fdis_iu6_t0_i1_t3_t,
input frn_fdis_iu6_t0_i1_s1_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i1_s1_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i1_s1_p,
input [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_t0_i1_s1_itag,
input [0:2] frn_fdis_iu6_t0_i1_s1_t,
input frn_fdis_iu6_t0_i1_s1_dep_hit,
input frn_fdis_iu6_t0_i1_s2_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i1_s2_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i1_s2_p,
input [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_t0_i1_s2_itag,
input [0:2] frn_fdis_iu6_t0_i1_s2_t,
input frn_fdis_iu6_t0_i1_s2_dep_hit,
input frn_fdis_iu6_t0_i1_s3_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i1_s3_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t0_i1_s3_p,
input [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_t0_i1_s3_itag,
input [0:2] frn_fdis_iu6_t0_i1_s3_t,
input frn_fdis_iu6_t0_i1_s3_dep_hit,
`ifndef THREADS1
//----------------------------------------------------------------
// Interface with rename
//----------------------------------------------------------------
input frn_fdis_iu6_t1_i0_vld,
input [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_t1_i0_itag,
input [0:2] frn_fdis_iu6_t1_i0_ucode,
input [0:`UCODE_ENTRIES_ENC-1] frn_fdis_iu6_t1_i0_ucode_cnt,
input frn_fdis_iu6_t1_i0_2ucode,
input frn_fdis_iu6_t1_i0_fuse_nop,
input frn_fdis_iu6_t1_i0_rte_lq,
input frn_fdis_iu6_t1_i0_rte_sq,
input frn_fdis_iu6_t1_i0_rte_fx0,
input frn_fdis_iu6_t1_i0_rte_fx1,
input frn_fdis_iu6_t1_i0_rte_axu0,
input frn_fdis_iu6_t1_i0_rte_axu1,
input frn_fdis_iu6_t1_i0_valop,
input frn_fdis_iu6_t1_i0_ord,
input frn_fdis_iu6_t1_i0_cord,
input [0:2] frn_fdis_iu6_t1_i0_error,
input frn_fdis_iu6_t1_i0_btb_entry,
input [0:1] frn_fdis_iu6_t1_i0_btb_hist,
input frn_fdis_iu6_t1_i0_bta_val,
input [0:19] frn_fdis_iu6_t1_i0_fusion,
input frn_fdis_iu6_t1_i0_spec,
input frn_fdis_iu6_t1_i0_type_fp,
input frn_fdis_iu6_t1_i0_type_ap,
input frn_fdis_iu6_t1_i0_type_spv,
input frn_fdis_iu6_t1_i0_type_st,
input frn_fdis_iu6_t1_i0_async_block,
input frn_fdis_iu6_t1_i0_np1_flush,
input frn_fdis_iu6_t1_i0_core_block,
input frn_fdis_iu6_t1_i0_isram,
input frn_fdis_iu6_t1_i0_isload,
input frn_fdis_iu6_t1_i0_isstore,
input [0:31] frn_fdis_iu6_t1_i0_instr,
input [62-`EFF_IFAR_WIDTH:61] frn_fdis_iu6_t1_i0_ifar,
input [62-`EFF_IFAR_WIDTH:61] frn_fdis_iu6_t1_i0_bta,
input frn_fdis_iu6_t1_i0_br_pred,
input frn_fdis_iu6_t1_i0_bh_update,
input [0:1] frn_fdis_iu6_t1_i0_bh0_hist,
input [0:1] frn_fdis_iu6_t1_i0_bh1_hist,
input [0:1] frn_fdis_iu6_t1_i0_bh2_hist,
input [0:17] frn_fdis_iu6_t1_i0_gshare,
input [0:2] frn_fdis_iu6_t1_i0_ls_ptr,
input frn_fdis_iu6_t1_i0_match,
input [0:3] frn_fdis_iu6_t1_i0_ilat,
input frn_fdis_iu6_t1_i0_t1_v,
input [0:2] frn_fdis_iu6_t1_i0_t1_t,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i0_t1_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i0_t1_p,
input frn_fdis_iu6_t1_i0_t2_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i0_t2_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i0_t2_p,
input [0:2] frn_fdis_iu6_t1_i0_t2_t,
input frn_fdis_iu6_t1_i0_t3_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i0_t3_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i0_t3_p,
input [0:2] frn_fdis_iu6_t1_i0_t3_t,
input frn_fdis_iu6_t1_i0_s1_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i0_s1_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i0_s1_p,
input [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_t1_i0_s1_itag,
input [0:2] frn_fdis_iu6_t1_i0_s1_t,
input frn_fdis_iu6_t1_i0_s2_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i0_s2_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i0_s2_p,
input [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_t1_i0_s2_itag,
input [0:2] frn_fdis_iu6_t1_i0_s2_t,
input frn_fdis_iu6_t1_i0_s3_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i0_s3_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i0_s3_p,
input [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_t1_i0_s3_itag,
input [0:2] frn_fdis_iu6_t1_i0_s3_t,
input frn_fdis_iu6_t1_i1_vld,
input [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_t1_i1_itag,
input [0:2] frn_fdis_iu6_t1_i1_ucode,
input [0:`UCODE_ENTRIES_ENC-1] frn_fdis_iu6_t1_i1_ucode_cnt,
input frn_fdis_iu6_t1_i1_fuse_nop,
input frn_fdis_iu6_t1_i1_rte_lq,
input frn_fdis_iu6_t1_i1_rte_sq,
input frn_fdis_iu6_t1_i1_rte_fx0,
input frn_fdis_iu6_t1_i1_rte_fx1,
input frn_fdis_iu6_t1_i1_rte_axu0,
input frn_fdis_iu6_t1_i1_rte_axu1,
input frn_fdis_iu6_t1_i1_valop,
input frn_fdis_iu6_t1_i1_ord,
input frn_fdis_iu6_t1_i1_cord,
input [0:2] frn_fdis_iu6_t1_i1_error,
input frn_fdis_iu6_t1_i1_btb_entry,
input [0:1] frn_fdis_iu6_t1_i1_btb_hist,
input frn_fdis_iu6_t1_i1_bta_val,
input [0:19] frn_fdis_iu6_t1_i1_fusion,
input frn_fdis_iu6_t1_i1_spec,
input frn_fdis_iu6_t1_i1_type_fp,
input frn_fdis_iu6_t1_i1_type_ap,
input frn_fdis_iu6_t1_i1_type_spv,
input frn_fdis_iu6_t1_i1_type_st,
input frn_fdis_iu6_t1_i1_async_block,
input frn_fdis_iu6_t1_i1_np1_flush,
input frn_fdis_iu6_t1_i1_core_block,
input frn_fdis_iu6_t1_i1_isram,
input frn_fdis_iu6_t1_i1_isload,
input frn_fdis_iu6_t1_i1_isstore,
input [0:31] frn_fdis_iu6_t1_i1_instr,
input [62-`EFF_IFAR_WIDTH:61] frn_fdis_iu6_t1_i1_ifar,
input [62-`EFF_IFAR_WIDTH:61] frn_fdis_iu6_t1_i1_bta,
input frn_fdis_iu6_t1_i1_br_pred,
input frn_fdis_iu6_t1_i1_bh_update,
input [0:1] frn_fdis_iu6_t1_i1_bh0_hist,
input [0:1] frn_fdis_iu6_t1_i1_bh1_hist,
input [0:1] frn_fdis_iu6_t1_i1_bh2_hist,
input [0:17] frn_fdis_iu6_t1_i1_gshare,
input [0:2] frn_fdis_iu6_t1_i1_ls_ptr,
input frn_fdis_iu6_t1_i1_match,
input [0:3] frn_fdis_iu6_t1_i1_ilat,
input frn_fdis_iu6_t1_i1_t1_v,
input [0:2] frn_fdis_iu6_t1_i1_t1_t,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i1_t1_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i1_t1_p,
input frn_fdis_iu6_t1_i1_t2_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i1_t2_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i1_t2_p,
input [0:2] frn_fdis_iu6_t1_i1_t2_t,
input frn_fdis_iu6_t1_i1_t3_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i1_t3_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i1_t3_p,
input [0:2] frn_fdis_iu6_t1_i1_t3_t,
input frn_fdis_iu6_t1_i1_s1_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i1_s1_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i1_s1_p,
input [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_t1_i1_s1_itag,
input [0:2] frn_fdis_iu6_t1_i1_s1_t,
input frn_fdis_iu6_t1_i1_s1_dep_hit,
input frn_fdis_iu6_t1_i1_s2_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i1_s2_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i1_s2_p,
input [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_t1_i1_s2_itag,
input [0:2] frn_fdis_iu6_t1_i1_s2_t,
input frn_fdis_iu6_t1_i1_s2_dep_hit,
input frn_fdis_iu6_t1_i1_s3_v,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i1_s3_a,
input [0:`GPR_POOL_ENC-1] frn_fdis_iu6_t1_i1_s3_p,
input [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_t1_i1_s3_itag,
input [0:2] frn_fdis_iu6_t1_i1_s3_t,
input frn_fdis_iu6_t1_i1_s3_dep_hit,
`endif
// Input to dispatch to block due to ivax
input [0:`THREADS-1] cp_dis_ivax,
//-----------------------------
// Stall from MMU
//-----------------------------
input [0:`THREADS-1] mm_iu_flush_req,
output [0:`THREADS-1] dp_cp_hold_req,
input [0:`THREADS-1] mm_iu_hold_done,
input [0:`THREADS-1] mm_iu_bus_snoop_hold_req,
output [0:`THREADS-1] dp_cp_bus_snoop_hold_req,
input [0:`THREADS-1] mm_iu_bus_snoop_hold_done,
input [0:`THREADS-1] mm_iu_tlbi_complete,
//-----------------------------
// Stall from dispatch
//-----------------------------
output [0:`THREADS-1] fdis_frn_iu6_stall,
//----------------------------------------------------------------
// Interface to reservation station - Completion is snooping also
//----------------------------------------------------------------
output iu_rv_iu6_t0_i0_vld,
output iu_rv_iu6_t0_i0_act,
output [0:`ITAG_SIZE_ENC-1] iu_rv_iu6_t0_i0_itag,
output [0:2] iu_rv_iu6_t0_i0_ucode,
output [0:`UCODE_ENTRIES_ENC-1] iu_rv_iu6_t0_i0_ucode_cnt,
output iu_rv_iu6_t0_i0_2ucode,
output iu_rv_iu6_t0_i0_fuse_nop,
output iu_rv_iu6_t0_i0_rte_lq,
output iu_rv_iu6_t0_i0_rte_sq,
output iu_rv_iu6_t0_i0_rte_fx0,
output iu_rv_iu6_t0_i0_rte_fx1,
output iu_rv_iu6_t0_i0_rte_axu0,
output iu_rv_iu6_t0_i0_rte_axu1,
output iu_rv_iu6_t0_i0_valop,
output iu_rv_iu6_t0_i0_ord,
output iu_rv_iu6_t0_i0_cord,
output [0:2] iu_rv_iu6_t0_i0_error,
output iu_rv_iu6_t0_i0_btb_entry,
output [0:1] iu_rv_iu6_t0_i0_btb_hist,
output iu_rv_iu6_t0_i0_bta_val,
output [0:19] iu_rv_iu6_t0_i0_fusion,
output iu_rv_iu6_t0_i0_spec,
output iu_rv_iu6_t0_i0_type_fp,
output iu_rv_iu6_t0_i0_type_ap,
output iu_rv_iu6_t0_i0_type_spv,
output iu_rv_iu6_t0_i0_type_st,
output iu_rv_iu6_t0_i0_async_block,
output iu_rv_iu6_t0_i0_np1_flush,
output iu_rv_iu6_t0_i0_isram,
output iu_rv_iu6_t0_i0_isload,
output iu_rv_iu6_t0_i0_isstore,
output [0:31] iu_rv_iu6_t0_i0_instr,
output [62-`EFF_IFAR_WIDTH:61] iu_rv_iu6_t0_i0_ifar,
output [62-`EFF_IFAR_WIDTH:61] iu_rv_iu6_t0_i0_bta,
output iu_rv_iu6_t0_i0_br_pred,
output iu_rv_iu6_t0_i0_bh_update,
output [0:1] iu_rv_iu6_t0_i0_bh0_hist,
output [0:1] iu_rv_iu6_t0_i0_bh1_hist,
output [0:1] iu_rv_iu6_t0_i0_bh2_hist,
output [0:17] iu_rv_iu6_t0_i0_gshare,
output [0:2] iu_rv_iu6_t0_i0_ls_ptr,
output iu_rv_iu6_t0_i0_match,
output [0:3] iu_rv_iu6_t0_i0_ilat,
output iu_rv_iu6_t0_i0_t1_v,
output [0:2] iu_rv_iu6_t0_i0_t1_t,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i0_t1_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i0_t1_p,
output iu_rv_iu6_t0_i0_t2_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i0_t2_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i0_t2_p,
output [0:2] iu_rv_iu6_t0_i0_t2_t,
output iu_rv_iu6_t0_i0_t3_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i0_t3_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i0_t3_p,
output [0:2] iu_rv_iu6_t0_i0_t3_t,
output iu_rv_iu6_t0_i0_s1_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i0_s1_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i0_s1_p,
output [0:`ITAG_SIZE_ENC-1] iu_rv_iu6_t0_i0_s1_itag,
output [0:2] iu_rv_iu6_t0_i0_s1_t,
output iu_rv_iu6_t0_i0_s2_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i0_s2_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i0_s2_p,
output [0:`ITAG_SIZE_ENC-1] iu_rv_iu6_t0_i0_s2_itag,
output [0:2] iu_rv_iu6_t0_i0_s2_t,
output iu_rv_iu6_t0_i0_s3_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i0_s3_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i0_s3_p,
output [0:`ITAG_SIZE_ENC-1] iu_rv_iu6_t0_i0_s3_itag,
output [0:2] iu_rv_iu6_t0_i0_s3_t,
output iu_rv_iu6_t0_i1_vld,
output iu_rv_iu6_t0_i1_act,
output [0:`ITAG_SIZE_ENC-1] iu_rv_iu6_t0_i1_itag,
output [0:2] iu_rv_iu6_t0_i1_ucode,
output [0:`UCODE_ENTRIES_ENC-1] iu_rv_iu6_t0_i1_ucode_cnt,
output iu_rv_iu6_t0_i1_fuse_nop,
output iu_rv_iu6_t0_i1_rte_lq,
output iu_rv_iu6_t0_i1_rte_sq,
output iu_rv_iu6_t0_i1_rte_fx0,
output iu_rv_iu6_t0_i1_rte_fx1,
output iu_rv_iu6_t0_i1_rte_axu0,
output iu_rv_iu6_t0_i1_rte_axu1,
output iu_rv_iu6_t0_i1_valop,
output iu_rv_iu6_t0_i1_ord,
output iu_rv_iu6_t0_i1_cord,
output [0:2] iu_rv_iu6_t0_i1_error,
output iu_rv_iu6_t0_i1_btb_entry,
output [0:1] iu_rv_iu6_t0_i1_btb_hist,
output iu_rv_iu6_t0_i1_bta_val,
output [0:19] iu_rv_iu6_t0_i1_fusion,
output iu_rv_iu6_t0_i1_spec,
output iu_rv_iu6_t0_i1_type_fp,
output iu_rv_iu6_t0_i1_type_ap,
output iu_rv_iu6_t0_i1_type_spv,
output iu_rv_iu6_t0_i1_type_st,
output iu_rv_iu6_t0_i1_async_block,
output iu_rv_iu6_t0_i1_np1_flush,
output iu_rv_iu6_t0_i1_isram,
output iu_rv_iu6_t0_i1_isload,
output iu_rv_iu6_t0_i1_isstore,
output [0:31] iu_rv_iu6_t0_i1_instr,
output [62-`EFF_IFAR_WIDTH:61] iu_rv_iu6_t0_i1_ifar,
output [62-`EFF_IFAR_WIDTH:61] iu_rv_iu6_t0_i1_bta,
output iu_rv_iu6_t0_i1_br_pred,
output iu_rv_iu6_t0_i1_bh_update,
output [0:1] iu_rv_iu6_t0_i1_bh0_hist,
output [0:1] iu_rv_iu6_t0_i1_bh1_hist,
output [0:1] iu_rv_iu6_t0_i1_bh2_hist,
output [0:17] iu_rv_iu6_t0_i1_gshare,
output [0:2] iu_rv_iu6_t0_i1_ls_ptr,
output iu_rv_iu6_t0_i1_match,
output [0:3] iu_rv_iu6_t0_i1_ilat,
output iu_rv_iu6_t0_i1_t1_v,
output [0:2] iu_rv_iu6_t0_i1_t1_t,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i1_t1_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i1_t1_p,
output iu_rv_iu6_t0_i1_t2_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i1_t2_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i1_t2_p,
output [0:2] iu_rv_iu6_t0_i1_t2_t,
output iu_rv_iu6_t0_i1_t3_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i1_t3_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i1_t3_p,
output [0:2] iu_rv_iu6_t0_i1_t3_t,
output iu_rv_iu6_t0_i1_s1_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i1_s1_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i1_s1_p,
output [0:`ITAG_SIZE_ENC-1] iu_rv_iu6_t0_i1_s1_itag,
output [0:2] iu_rv_iu6_t0_i1_s1_t,
output iu_rv_iu6_t0_i1_s1_dep_hit,
output iu_rv_iu6_t0_i1_s2_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i1_s2_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i1_s2_p,
output [0:`ITAG_SIZE_ENC-1] iu_rv_iu6_t0_i1_s2_itag,
output [0:2] iu_rv_iu6_t0_i1_s2_t,
output iu_rv_iu6_t0_i1_s2_dep_hit,
output iu_rv_iu6_t0_i1_s3_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i1_s3_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t0_i1_s3_p,
output [0:`ITAG_SIZE_ENC-1] iu_rv_iu6_t0_i1_s3_itag,
output [0:2] iu_rv_iu6_t0_i1_s3_t,
output iu_rv_iu6_t0_i1_s3_dep_hit,
`ifndef THREADS1
//----------------------------------------------------------------
// Interface with rename
//----------------------------------------------------------------
output iu_rv_iu6_t1_i0_vld,
output iu_rv_iu6_t1_i0_act,
output [0:`ITAG_SIZE_ENC-1] iu_rv_iu6_t1_i0_itag,
output [0:2] iu_rv_iu6_t1_i0_ucode,
output [0:`UCODE_ENTRIES_ENC-1] iu_rv_iu6_t1_i0_ucode_cnt,
output iu_rv_iu6_t1_i0_2ucode,
output iu_rv_iu6_t1_i0_fuse_nop,
output iu_rv_iu6_t1_i0_rte_lq,
output iu_rv_iu6_t1_i0_rte_sq,
output iu_rv_iu6_t1_i0_rte_fx0,
output iu_rv_iu6_t1_i0_rte_fx1,
output iu_rv_iu6_t1_i0_rte_axu0,
output iu_rv_iu6_t1_i0_rte_axu1,
output iu_rv_iu6_t1_i0_valop,
output iu_rv_iu6_t1_i0_ord,
output iu_rv_iu6_t1_i0_cord,
output [0:2] iu_rv_iu6_t1_i0_error,
output iu_rv_iu6_t1_i0_btb_entry,
output [0:1] iu_rv_iu6_t1_i0_btb_hist,
output iu_rv_iu6_t1_i0_bta_val,
output [0:19] iu_rv_iu6_t1_i0_fusion,
output iu_rv_iu6_t1_i0_spec,
output iu_rv_iu6_t1_i0_type_fp,
output iu_rv_iu6_t1_i0_type_ap,
output iu_rv_iu6_t1_i0_type_spv,
output iu_rv_iu6_t1_i0_type_st,
output iu_rv_iu6_t1_i0_async_block,
output iu_rv_iu6_t1_i0_np1_flush,
output iu_rv_iu6_t1_i0_isram,
output iu_rv_iu6_t1_i0_isload,
output iu_rv_iu6_t1_i0_isstore,
output [0:31] iu_rv_iu6_t1_i0_instr,
output [62-`EFF_IFAR_WIDTH:61] iu_rv_iu6_t1_i0_ifar,
output [62-`EFF_IFAR_WIDTH:61] iu_rv_iu6_t1_i0_bta,
output iu_rv_iu6_t1_i0_br_pred,
output iu_rv_iu6_t1_i0_bh_update,
output [0:1] iu_rv_iu6_t1_i0_bh0_hist,
output [0:1] iu_rv_iu6_t1_i0_bh1_hist,
output [0:1] iu_rv_iu6_t1_i0_bh2_hist,
output [0:17] iu_rv_iu6_t1_i0_gshare,
output [0:2] iu_rv_iu6_t1_i0_ls_ptr,
output iu_rv_iu6_t1_i0_match,
output [0:3] iu_rv_iu6_t1_i0_ilat,
output iu_rv_iu6_t1_i0_t1_v,
output [0:2] iu_rv_iu6_t1_i0_t1_t,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i0_t1_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i0_t1_p,
output iu_rv_iu6_t1_i0_t2_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i0_t2_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i0_t2_p,
output [0:2] iu_rv_iu6_t1_i0_t2_t,
output iu_rv_iu6_t1_i0_t3_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i0_t3_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i0_t3_p,
output [0:2] iu_rv_iu6_t1_i0_t3_t,
output iu_rv_iu6_t1_i0_s1_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i0_s1_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i0_s1_p,
output [0:`ITAG_SIZE_ENC-1] iu_rv_iu6_t1_i0_s1_itag,
output [0:2] iu_rv_iu6_t1_i0_s1_t,
output iu_rv_iu6_t1_i0_s2_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i0_s2_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i0_s2_p,
output [0:`ITAG_SIZE_ENC-1] iu_rv_iu6_t1_i0_s2_itag,
output [0:2] iu_rv_iu6_t1_i0_s2_t,
output iu_rv_iu6_t1_i0_s3_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i0_s3_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i0_s3_p,
output [0:`ITAG_SIZE_ENC-1] iu_rv_iu6_t1_i0_s3_itag,
output [0:2] iu_rv_iu6_t1_i0_s3_t,
output iu_rv_iu6_t1_i1_vld,
output iu_rv_iu6_t1_i1_act,
output [0:`ITAG_SIZE_ENC-1] iu_rv_iu6_t1_i1_itag,
output [0:2] iu_rv_iu6_t1_i1_ucode,
output [0:`UCODE_ENTRIES_ENC-1] iu_rv_iu6_t1_i1_ucode_cnt,
output iu_rv_iu6_t1_i1_fuse_nop,
output iu_rv_iu6_t1_i1_rte_lq,
output iu_rv_iu6_t1_i1_rte_sq,
output iu_rv_iu6_t1_i1_rte_fx0,
output iu_rv_iu6_t1_i1_rte_fx1,
output iu_rv_iu6_t1_i1_rte_axu0,
output iu_rv_iu6_t1_i1_rte_axu1,
output iu_rv_iu6_t1_i1_valop,
output iu_rv_iu6_t1_i1_ord,
output iu_rv_iu6_t1_i1_cord,
output [0:2] iu_rv_iu6_t1_i1_error,
output iu_rv_iu6_t1_i1_btb_entry,
output [0:1] iu_rv_iu6_t1_i1_btb_hist,
output iu_rv_iu6_t1_i1_bta_val,
output [0:19] iu_rv_iu6_t1_i1_fusion,
output iu_rv_iu6_t1_i1_spec,
output iu_rv_iu6_t1_i1_type_fp,
output iu_rv_iu6_t1_i1_type_ap,
output iu_rv_iu6_t1_i1_type_spv,
output iu_rv_iu6_t1_i1_type_st,
output iu_rv_iu6_t1_i1_async_block,
output iu_rv_iu6_t1_i1_np1_flush,
output iu_rv_iu6_t1_i1_isram,
output iu_rv_iu6_t1_i1_isload,
output iu_rv_iu6_t1_i1_isstore,
output [0:31] iu_rv_iu6_t1_i1_instr,
output [62-`EFF_IFAR_WIDTH:61] iu_rv_iu6_t1_i1_ifar,
output [62-`EFF_IFAR_WIDTH:61] iu_rv_iu6_t1_i1_bta,
output iu_rv_iu6_t1_i1_br_pred,
output iu_rv_iu6_t1_i1_bh_update,
output [0:1] iu_rv_iu6_t1_i1_bh0_hist,
output [0:1] iu_rv_iu6_t1_i1_bh1_hist,
output [0:1] iu_rv_iu6_t1_i1_bh2_hist,
output [0:17] iu_rv_iu6_t1_i1_gshare,
output [0:2] iu_rv_iu6_t1_i1_ls_ptr,
output iu_rv_iu6_t1_i1_match,
output [0:3] iu_rv_iu6_t1_i1_ilat,
output iu_rv_iu6_t1_i1_t1_v,
output [0:2] iu_rv_iu6_t1_i1_t1_t,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i1_t1_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i1_t1_p,
output iu_rv_iu6_t1_i1_t2_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i1_t2_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i1_t2_p,
output [0:2] iu_rv_iu6_t1_i1_t2_t,
output iu_rv_iu6_t1_i1_t3_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i1_t3_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i1_t3_p,
output [0:2] iu_rv_iu6_t1_i1_t3_t,
output iu_rv_iu6_t1_i1_s1_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i1_s1_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i1_s1_p,
output [0:`ITAG_SIZE_ENC-1] iu_rv_iu6_t1_i1_s1_itag,
output [0:2] iu_rv_iu6_t1_i1_s1_t,
output iu_rv_iu6_t1_i1_s1_dep_hit,
output iu_rv_iu6_t1_i1_s2_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i1_s2_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i1_s2_p,
output [0:`ITAG_SIZE_ENC-1] iu_rv_iu6_t1_i1_s2_itag,
output [0:2] iu_rv_iu6_t1_i1_s2_t,
output iu_rv_iu6_t1_i1_s2_dep_hit,
output iu_rv_iu6_t1_i1_s3_v,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i1_s3_a,
output [0:`GPR_POOL_ENC-1] iu_rv_iu6_t1_i1_s3_p,
output [0:`ITAG_SIZE_ENC-1] iu_rv_iu6_t1_i1_s3_itag,
output [0:2] iu_rv_iu6_t1_i1_s3_t,
output iu_rv_iu6_t1_i1_s3_dep_hit,
`endif
input [0:`THREADS-1] spr_cpcr2_we
);
localparam [0:31] value_1 = 32'h00000001;
localparam [0:31] value_2 = 32'h00000002;
localparam [0:31] value_3 = 32'h00000003;
localparam [0:31] value_4 = 32'h00000004;
parameter fx0_high_credit_cnt_offset = 0;
parameter fx1_high_credit_cnt_offset = fx0_high_credit_cnt_offset + 5 * `THREADS;
parameter lq_cmdq_high_credit_cnt_offset = fx1_high_credit_cnt_offset + 5 * `THREADS;
parameter sq_cmdq_high_credit_cnt_offset = lq_cmdq_high_credit_cnt_offset + 5 * `THREADS;
parameter fu0_high_credit_cnt_offset = sq_cmdq_high_credit_cnt_offset + 5 * `THREADS;
parameter fu1_high_credit_cnt_offset = fu0_high_credit_cnt_offset + 5 * `THREADS;
parameter fx0_med_credit_cnt_offset = fu1_high_credit_cnt_offset + 5 * `THREADS;
parameter fx1_med_credit_cnt_offset = fx0_med_credit_cnt_offset + 5 * `THREADS;
parameter lq_cmdq_med_credit_cnt_offset = fx1_med_credit_cnt_offset + 5 * `THREADS;
parameter sq_cmdq_med_credit_cnt_offset = lq_cmdq_med_credit_cnt_offset + 5 * `THREADS;
parameter fu0_med_credit_cnt_offset = sq_cmdq_med_credit_cnt_offset + 5 * `THREADS;
parameter fu1_med_credit_cnt_offset = fu0_med_credit_cnt_offset + 5 * `THREADS;
parameter fx0_total_credit_cnt_offset = fu1_med_credit_cnt_offset + 5 * `THREADS;
parameter fx1_total_credit_cnt_offset = fx0_total_credit_cnt_offset + 5;
parameter lq_cmdq_total_credit_cnt_offset = fx1_total_credit_cnt_offset + 5;
parameter sq_cmdq_total_credit_cnt_offset = lq_cmdq_total_credit_cnt_offset + 5;
parameter fu0_total_credit_cnt_offset = sq_cmdq_total_credit_cnt_offset + 5;
parameter fu1_total_credit_cnt_offset = fu0_total_credit_cnt_offset + 5;
parameter cp_flush_offset = fu1_total_credit_cnt_offset + 5;
parameter xu_iu_run_thread_offset = cp_flush_offset + `THREADS;
parameter iu_xu_credits_returned_offset = xu_iu_run_thread_offset + `THREADS;
parameter dual_issue_use_fx0_offset = iu_xu_credits_returned_offset + 1;
parameter last_thread_offset = dual_issue_use_fx0_offset + 2;
parameter mm_hold_req_offset = last_thread_offset + `THREADS;
parameter mm_hold_done_offset = mm_hold_req_offset + `THREADS;
parameter mm_bus_snoop_hold_req_offset = mm_hold_done_offset + `THREADS;
parameter mm_bus_snoop_hold_done_offset = mm_bus_snoop_hold_req_offset + `THREADS;
parameter hold_instructions_offset = mm_bus_snoop_hold_done_offset + `THREADS;
parameter hold_req_offset = hold_instructions_offset + 1;
parameter hold_done_offset = hold_req_offset + `THREADS;
parameter ivax_hold_req_offset = hold_done_offset + `THREADS;
parameter mm_iu_flush_req_offset = ivax_hold_req_offset + `THREADS;
parameter mm_iu_hold_done_offset = mm_iu_flush_req_offset + `THREADS;
parameter mm_iu_bus_snoop_hold_req_offset = mm_iu_hold_done_offset + `THREADS;
parameter mm_iu_bus_snoop_hold_done_offset = mm_iu_bus_snoop_hold_req_offset + `THREADS;
parameter in_ucode_offset = mm_iu_bus_snoop_hold_done_offset + `THREADS;
parameter in_fusion_offset = in_ucode_offset + `THREADS;
parameter total_pri_mask_offset = in_fusion_offset + `THREADS;
parameter high_pri_mask_offset = total_pri_mask_offset + `THREADS;
parameter med_pri_mask_offset = high_pri_mask_offset + `THREADS;
parameter low_pri_mask_offset = med_pri_mask_offset + `THREADS;
parameter low_pri_cnt_offset = low_pri_mask_offset + `THREADS;
parameter low_pri_max_offset = low_pri_cnt_offset + 8 * `THREADS;
parameter perf_iu6_stall_offset = low_pri_max_offset + (6 * `THREADS);
parameter perf_iu6_dispatch_fx0_offset = perf_iu6_stall_offset + `THREADS;
parameter perf_iu6_dispatch_fx1_offset = perf_iu6_dispatch_fx0_offset + 2*`THREADS;
parameter perf_iu6_dispatch_lq_offset = perf_iu6_dispatch_fx1_offset + 2*`THREADS;
parameter perf_iu6_dispatch_axu0_offset = perf_iu6_dispatch_lq_offset + 2*`THREADS;
parameter perf_iu6_dispatch_axu1_offset = perf_iu6_dispatch_axu0_offset + 2*`THREADS;
parameter perf_iu6_fx0_credit_stall_offset = perf_iu6_dispatch_axu1_offset + 2*`THREADS;
parameter perf_iu6_fx1_credit_stall_offset = perf_iu6_fx0_credit_stall_offset + `THREADS;
parameter perf_iu6_lq_credit_stall_offset = perf_iu6_fx1_credit_stall_offset + `THREADS;
parameter perf_iu6_sq_credit_stall_offset = perf_iu6_lq_credit_stall_offset + `THREADS;
parameter perf_iu6_axu0_credit_stall_offset = perf_iu6_sq_credit_stall_offset + `THREADS;
parameter perf_iu6_axu1_credit_stall_offset = perf_iu6_axu0_credit_stall_offset + `THREADS;
parameter iu_pc_fx0_credit_ok_offset = perf_iu6_axu1_credit_stall_offset + `THREADS;
parameter iu_pc_fx1_credit_ok_offset = iu_pc_fx0_credit_ok_offset + `THREADS;
parameter iu_pc_lq_credit_ok_offset = iu_pc_fx1_credit_ok_offset + `THREADS;
parameter iu_pc_sq_credit_ok_offset = iu_pc_lq_credit_ok_offset + `THREADS;
parameter iu_pc_axu0_credit_ok_offset = iu_pc_sq_credit_ok_offset + `THREADS;
parameter iu_pc_axu1_credit_ok_offset = iu_pc_axu0_credit_ok_offset + `THREADS;
parameter scan_right = iu_pc_axu1_credit_ok_offset + `THREADS - 1;
// scan
wire [0:scan_right] siv;
wire [0:scan_right] sov;
wire tiup;
// MMU hold request
wire [0:`THREADS-1] mm_hold_req_d;
wire [0:`THREADS-1] mm_hold_req_l2;
wire [0:`THREADS-1] mm_hold_done_d;
wire [0:`THREADS-1] mm_hold_done_l2;
wire [0:`THREADS-1] hold_req_d;
wire [0:`THREADS-1] hold_req_l2;
wire [0:`THREADS-1] hold_done_d;
wire [0:`THREADS-1] hold_done_l2;
wire [0:`THREADS-1] mm_bus_snoop_hold_req_d;
wire [0:`THREADS-1] mm_bus_snoop_hold_req_l2;
wire [0:`THREADS-1] mm_bus_snoop_hold_done_d;
wire [0:`THREADS-1] mm_bus_snoop_hold_done_l2;
wire [0:`THREADS-1] ivax_hold_req_d;
wire [0:`THREADS-1] ivax_hold_req_l2;
wire [0:`THREADS-1] mm_iu_flush_req_d;
wire [0:`THREADS-1] mm_iu_flush_req_l2;
wire [0:`THREADS-1] mm_iu_hold_done_l2;
wire [0:`THREADS-1] mm_iu_bus_snoop_hold_req_d;
wire [0:`THREADS-1] mm_iu_bus_snoop_hold_req_l2;
wire [0:`THREADS-1] mm_iu_bus_snoop_hold_done_l2;
wire [0:`THREADS-1] in_ucode_d;
wire [0:`THREADS-1] in_ucode_l2;
wire [0:`THREADS-1] in_fusion_d;
wire [0:`THREADS-1] in_fusion_l2;
wire hold_instructions_d;
wire hold_instructions_l2;
// Credit counters
wire [0:4] fx0_high_credit_cnt_plus1_temp[0:`THREADS-1];
wire [0:4] fx0_high_credit_cnt_plus1[0:`THREADS-1];
wire [0:4] fx0_high_credit_cnt_minus1_temp[0:`THREADS-1];
wire [0:4] fx0_high_credit_cnt_minus1[0:`THREADS-1];
wire [0:4] fx0_high_credit_cnt_minus2_temp[0:`THREADS-1];
wire [0:4] fx0_high_credit_cnt_minus2[0:`THREADS-1];
reg [0:4] fx0_high_credit_cnt_d[0:`THREADS-1];
wire [0:4] fx0_high_credit_cnt_l2[0:`THREADS-1];
wire [0:4] fx1_high_credit_cnt_plus1_temp[0:`THREADS-1];
wire [0:4] fx1_high_credit_cnt_plus1[0:`THREADS-1];
wire [0:4] fx1_high_credit_cnt_minus1_temp[0:`THREADS-1];
wire [0:4] fx1_high_credit_cnt_minus1[0:`THREADS-1];
wire [0:4] fx1_high_credit_cnt_minus2_temp[0:`THREADS-1];
wire [0:4] fx1_high_credit_cnt_minus2[0:`THREADS-1];
reg [0:4] fx1_high_credit_cnt_d[0:`THREADS-1];
wire [0:4] fx1_high_credit_cnt_l2[0:`THREADS-1];
wire [0:4] lq_cmdq_high_credit_cnt_plus1_temp[0:`THREADS-1];
wire [0:4] lq_cmdq_high_credit_cnt_plus1[0:`THREADS-1];
wire [0:4] lq_cmdq_high_credit_cnt_minus1_temp[0:`THREADS-1];
wire [0:4] lq_cmdq_high_credit_cnt_minus1[0:`THREADS-1];
wire [0:4] lq_cmdq_high_credit_cnt_minus2_temp[0:`THREADS-1];
wire [0:4] lq_cmdq_high_credit_cnt_minus2[0:`THREADS-1];
reg [0:4] lq_cmdq_high_credit_cnt_d[0:`THREADS-1];
wire [0:4] lq_cmdq_high_credit_cnt_l2[0:`THREADS-1];
wire [0:4] sq_cmdq_high_credit_cnt_plus1_temp[0:`THREADS-1];
wire [0:4] sq_cmdq_high_credit_cnt_plus1[0:`THREADS-1];
wire [0:4] sq_cmdq_high_credit_cnt_minus1_temp[0:`THREADS-1];
wire [0:4] sq_cmdq_high_credit_cnt_minus1[0:`THREADS-1];
wire [0:4] sq_cmdq_high_credit_cnt_minus2_temp[0:`THREADS-1];
wire [0:4] sq_cmdq_high_credit_cnt_minus2[0:`THREADS-1];
reg [0:4] sq_cmdq_high_credit_cnt_d[0:`THREADS-1];
wire [0:4] sq_cmdq_high_credit_cnt_l2[0:`THREADS-1];
wire [0:4] fu0_high_credit_cnt_plus1_temp[0:`THREADS-1];
wire [0:4] fu0_high_credit_cnt_plus1[0:`THREADS-1];
wire [0:4] fu0_high_credit_cnt_minus1_temp[0:`THREADS-1];
wire [0:4] fu0_high_credit_cnt_minus1[0:`THREADS-1];
wire [0:4] fu0_high_credit_cnt_minus2_temp[0:`THREADS-1];
wire [0:4] fu0_high_credit_cnt_minus2[0:`THREADS-1];
reg [0:4] fu0_high_credit_cnt_d[0:`THREADS-1];
wire [0:4] fu0_high_credit_cnt_l2[0:`THREADS-1];
wire [0:4] fu1_high_credit_cnt_plus1_temp[0:`THREADS-1];
wire [0:4] fu1_high_credit_cnt_plus1[0:`THREADS-1];
wire [0:4] fu1_high_credit_cnt_minus1_temp[0:`THREADS-1];
wire [0:4] fu1_high_credit_cnt_minus1[0:`THREADS-1];
wire [0:4] fu1_high_credit_cnt_minus2_temp[0:`THREADS-1];
wire [0:4] fu1_high_credit_cnt_minus2[0:`THREADS-1];
reg [0:4] fu1_high_credit_cnt_d[0:`THREADS-1];
wire [0:4] fu1_high_credit_cnt_l2[0:`THREADS-1];
wire [0:4] fx0_med_credit_cnt_plus1_temp[0:`THREADS-1];
wire [0:4] fx0_med_credit_cnt_plus1[0:`THREADS-1];
wire [0:4] fx0_med_credit_cnt_minus1_temp[0:`THREADS-1];
wire [0:4] fx0_med_credit_cnt_minus1[0:`THREADS-1];
wire [0:4] fx0_med_credit_cnt_minus2_temp[0:`THREADS-1];
wire [0:4] fx0_med_credit_cnt_minus2[0:`THREADS-1];
reg [0:4] fx0_med_credit_cnt_d[0:`THREADS-1];
wire [0:4] fx0_med_credit_cnt_l2[0:`THREADS-1];
wire [0:4] fx1_med_credit_cnt_plus1_temp[0:`THREADS-1];
wire [0:4] fx1_med_credit_cnt_plus1[0:`THREADS-1];
wire [0:4] fx1_med_credit_cnt_minus1_temp[0:`THREADS-1];
wire [0:4] fx1_med_credit_cnt_minus1[0:`THREADS-1];
wire [0:4] fx1_med_credit_cnt_minus2_temp[0:`THREADS-1];
wire [0:4] fx1_med_credit_cnt_minus2[0:`THREADS-1];
reg [0:4] fx1_med_credit_cnt_d[0:`THREADS-1];
wire [0:4] fx1_med_credit_cnt_l2[0:`THREADS-1];
wire [0:4] lq_cmdq_med_credit_cnt_plus1_temp[0:`THREADS-1];
wire [0:4] lq_cmdq_med_credit_cnt_plus1[0:`THREADS-1];
wire [0:4] lq_cmdq_med_credit_cnt_minus1_temp[0:`THREADS-1];
wire [0:4] lq_cmdq_med_credit_cnt_minus1[0:`THREADS-1];
wire [0:4] lq_cmdq_med_credit_cnt_minus2_temp[0:`THREADS-1];
wire [0:4] lq_cmdq_med_credit_cnt_minus2[0:`THREADS-1];
reg [0:4] lq_cmdq_med_credit_cnt_d[0:`THREADS-1];
wire [0:4] lq_cmdq_med_credit_cnt_l2[0:`THREADS-1];
wire [0:4] sq_cmdq_med_credit_cnt_plus1_temp[0:`THREADS-1];
wire [0:4] sq_cmdq_med_credit_cnt_plus1[0:`THREADS-1];
wire [0:4] sq_cmdq_med_credit_cnt_minus1_temp[0:`THREADS-1];
wire [0:4] sq_cmdq_med_credit_cnt_minus1[0:`THREADS-1];
wire [0:4] sq_cmdq_med_credit_cnt_minus2_temp[0:`THREADS-1];
wire [0:4] sq_cmdq_med_credit_cnt_minus2[0:`THREADS-1];
reg [0:4] sq_cmdq_med_credit_cnt_d[0:`THREADS-1];
wire [0:4] sq_cmdq_med_credit_cnt_l2[0:`THREADS-1];
wire [0:4] fu0_med_credit_cnt_plus1_temp[0:`THREADS-1];
wire [0:4] fu0_med_credit_cnt_plus1[0:`THREADS-1];
wire [0:4] fu0_med_credit_cnt_minus1_temp[0:`THREADS-1];
wire [0:4] fu0_med_credit_cnt_minus1[0:`THREADS-1];
wire [0:4] fu0_med_credit_cnt_minus2_temp[0:`THREADS-1];
wire [0:4] fu0_med_credit_cnt_minus2[0:`THREADS-1];
reg [0:4] fu0_med_credit_cnt_d[0:`THREADS-1];
wire [0:4] fu0_med_credit_cnt_l2[0:`THREADS-1];
wire [0:4] fu1_med_credit_cnt_plus1_temp[0:`THREADS-1];
wire [0:4] fu1_med_credit_cnt_plus1[0:`THREADS-1];
wire [0:4] fu1_med_credit_cnt_minus1_temp[0:`THREADS-1];
wire [0:4] fu1_med_credit_cnt_minus1[0:`THREADS-1];
wire [0:4] fu1_med_credit_cnt_minus2_temp[0:`THREADS-1];
wire [0:4] fu1_med_credit_cnt_minus2[0:`THREADS-1];
reg [0:4] fu1_med_credit_cnt_d[0:`THREADS-1];
wire [0:4] fu1_med_credit_cnt_l2[0:`THREADS-1];
wire [0:4] fx0_credit_cnt_mux[0:`THREADS-1];
wire [0:4] fx1_credit_cnt_mux[0:`THREADS-1];
wire [0:4] lq_cmdq_credit_cnt_mux[0:`THREADS-1];
wire [0:4] sq_cmdq_credit_cnt_mux[0:`THREADS-1];
wire [0:4] fu0_credit_cnt_mux[0:`THREADS-1];
wire [0:4] fu1_credit_cnt_mux[0:`THREADS-1];
reg [0:4] fx0_total_credit_cnt_d;
wire [0:4] fx0_total_credit_cnt_l2;
reg [0:4] fx1_total_credit_cnt_d;
wire [0:4] fx1_total_credit_cnt_l2;
reg [0:4] lq_cmdq_total_credit_cnt_d;
wire [0:4] lq_cmdq_total_credit_cnt_l2;
reg [0:4] sq_cmdq_total_credit_cnt_d;
wire [0:4] sq_cmdq_total_credit_cnt_l2;
reg [0:4] fu0_total_credit_cnt_d;
wire [0:4] fu0_total_credit_cnt_l2;
reg [0:4] fu1_total_credit_cnt_d;
wire [0:4] fu1_total_credit_cnt_l2;
wire [0:`THREADS-1] total_pri_mask_d;
wire [0:`THREADS-1] total_pri_mask_l2;
wire [0:`THREADS-1] high_pri_mask_d;
wire [0:`THREADS-1] high_pri_mask_l2;
wire [0:`THREADS-1] med_pri_mask_d;
wire [0:`THREADS-1] med_pri_mask_l2;
wire [0:`THREADS-1] low_pri_mask_d;
wire [0:`THREADS-1] low_pri_mask_l2;
wire [0:7] low_pri_cnt_d[0:`THREADS-1];
wire [0:7] low_pri_cnt_l2[0:`THREADS-1];
wire [0:5] low_pri_max_d[0:`THREADS-1];
wire [0:5] low_pri_max_l2[0:`THREADS-1];
wire [0:`THREADS-1] low_pri_cnt_act;
wire [0:`THREADS-1] low_pri_en;
// Perf count latches
wire [0:`THREADS-1] perf_iu6_stall_d;
wire [0:`THREADS-1] perf_iu6_stall_l2;
wire [0:1] perf_iu6_dispatch_fx0_d[0:`THREADS-1];
wire [0:1] perf_iu6_dispatch_fx0_l2[0:`THREADS-1];
wire [0:1] perf_iu6_dispatch_fx1_d[0:`THREADS-1];
wire [0:1] perf_iu6_dispatch_fx1_l2[0:`THREADS-1];
wire [0:1] perf_iu6_dispatch_lq_d[0:`THREADS-1];
wire [0:1] perf_iu6_dispatch_lq_l2[0:`THREADS-1];
wire [0:1] perf_iu6_dispatch_axu0_d[0:`THREADS-1];
wire [0:1] perf_iu6_dispatch_axu0_l2[0:`THREADS-1];
wire [0:1] perf_iu6_dispatch_axu1_d[0:`THREADS-1];
wire [0:1] perf_iu6_dispatch_axu1_l2[0:`THREADS-1];
wire [0:`THREADS-1] perf_iu6_fx0_credit_stall_d;
wire [0:`THREADS-1] perf_iu6_fx0_credit_stall_l2;
wire [0:`THREADS-1] perf_iu6_fx1_credit_stall_d;
wire [0:`THREADS-1] perf_iu6_fx1_credit_stall_l2;
wire [0:`THREADS-1] perf_iu6_lq_credit_stall_d;
wire [0:`THREADS-1] perf_iu6_lq_credit_stall_l2;
wire [0:`THREADS-1] perf_iu6_sq_credit_stall_d;
wire [0:`THREADS-1] perf_iu6_sq_credit_stall_l2;
wire [0:`THREADS-1] perf_iu6_axu0_credit_stall_d;
wire [0:`THREADS-1] perf_iu6_axu0_credit_stall_l2;
wire [0:`THREADS-1] perf_iu6_axu1_credit_stall_d;
wire [0:`THREADS-1] perf_iu6_axu1_credit_stall_l2;
wire [0:`THREADS-1] iu_pc_fx0_credit_ok_d;
wire [0:`THREADS-1] iu_pc_fx0_credit_ok_l2;
wire [0:`THREADS-1] iu_pc_fx1_credit_ok_d;
wire [0:`THREADS-1] iu_pc_fx1_credit_ok_l2;
wire [0:`THREADS-1] iu_pc_lq_credit_ok_d;
wire [0:`THREADS-1] iu_pc_lq_credit_ok_l2;
wire [0:`THREADS-1] iu_pc_sq_credit_ok_d;
wire [0:`THREADS-1] iu_pc_sq_credit_ok_l2;
wire [0:`THREADS-1] iu_pc_axu0_credit_ok_d;
wire [0:`THREADS-1] iu_pc_axu0_credit_ok_l2;
wire [0:`THREADS-1] iu_pc_axu1_credit_ok_d;
wire [0:`THREADS-1] iu_pc_axu1_credit_ok_l2;
// Counts used for total counts
reg [0:1] fx0_credit_cnt_minus_1;
reg [0:1] fx0_credit_cnt_minus_2;
reg [0:1] fx0_credit_cnt_plus_1;
reg [0:1] fx0_credit_cnt_zero;
reg [0:1] fx1_credit_cnt_minus_1;
reg [0:1] fx1_credit_cnt_minus_2;
reg [0:1] fx1_credit_cnt_plus_1;
reg [0:1] fx1_credit_cnt_zero;
reg [0:1] lq_cmdq_credit_cnt_minus_1;
reg [0:1] lq_cmdq_credit_cnt_minus_2;
reg [0:1] lq_cmdq_credit_cnt_plus_1;
reg [0:1] lq_cmdq_credit_cnt_zero;
reg [0:1] sq_cmdq_credit_cnt_minus_1;
reg [0:1] sq_cmdq_credit_cnt_minus_2;
reg [0:1] sq_cmdq_credit_cnt_plus_1;
reg [0:1] sq_cmdq_credit_cnt_zero;
reg [0:1] fu0_credit_cnt_minus_1;
reg [0:1] fu0_credit_cnt_minus_2;
reg [0:1] fu0_credit_cnt_plus_1;
reg [0:1] fu0_credit_cnt_zero;
reg [0:1] fu1_credit_cnt_minus_1;
reg [0:1] fu1_credit_cnt_minus_2;
reg [0:1] fu1_credit_cnt_plus_1;
reg [0:1] fu1_credit_cnt_zero;
// Latch to delay the flush signal
wire [0:`THREADS-1] cp_flush_l2;
wire [0:`THREADS-1] xu_iu_run_thread_l2;
wire iu_xu_credits_returned_d;
wire iu_xu_credits_returned_l2;
// Rotating bit to determine in a tie which thread will issue
wire [0:`THREADS-1] last_thread_d;
wire [0:`THREADS-1] last_thread_l2;
wire last_thread_act;
// This signal compares credits left and issues FX0 and FX1 instructions to FX0 when set
reg [0:1] dual_issue_use_fx0_d;
wire [0:1] dual_issue_use_fx0_l2;
wire [0:1] fx0_send_cnt[0:`THREADS-1];
wire [0:1] fx1_send_cnt[0:`THREADS-1];
wire [0:1] lq_cmdq_send_cnt[0:`THREADS-1];
wire [0:1] sq_cmdq_send_cnt[0:`THREADS-1];
wire [0:1] fu0_send_cnt[0:`THREADS-1];
wire [0:1] fu1_send_cnt[0:`THREADS-1];
wire [0:`THREADS-1] core_block_ok;
// Check credits if only issue individual thread
wire [0:`THREADS-1] fx0_local_credit_ok;
wire [0:`THREADS-1] fx1_local_credit_ok;
wire [0:`THREADS-1] lq_cmdq_local_credit_ok;
wire [0:`THREADS-1] sq_cmdq_local_credit_ok;
wire [0:`THREADS-1] fu0_local_credit_ok;
wire [0:`THREADS-1] fu1_local_credit_ok;
// Check total credits if only issue individual thread
wire [0:`THREADS-1] fx0_credit_ok;
wire [0:`THREADS-1] fx1_credit_ok;
wire [0:`THREADS-1] lq_cmdq_credit_ok;
wire [0:`THREADS-1] sq_cmdq_credit_ok;
wire [0:`THREADS-1] fu0_credit_ok;
wire [0:`THREADS-1] fu1_credit_ok;
// Check total credits if issue all `THREADS
wire fx0_both_credit_ok;
wire fx1_both_credit_ok;
wire lq_cmdq_both_credit_ok;
wire sq_cmdq_both_credit_ok;
wire fu0_both_credit_ok;
wire fu1_both_credit_ok;
wire [0:`THREADS-1] core_block;
wire [0:`THREADS-1] send_instructions_all;
wire [0:`THREADS-1] send_instructions_local;
wire [0:`THREADS-1] send_instructions;
// signals to be used internal to vhdl
wire [0:`THREADS-1] iu_rv_iu6_i0_vld_int;
wire [0:`THREADS-1] iu_rv_iu6_i1_vld_int;
// Pervasive
wire pc_iu_func_sl_thold_1;
wire pc_iu_func_sl_thold_0;
wire pc_iu_func_sl_thold_0_b;
wire pc_iu_func_slp_sl_thold_1;
wire pc_iu_func_slp_sl_thold_0;
wire pc_iu_func_slp_sl_thold_0_b;
wire pc_iu_sg_1;
wire pc_iu_sg_0;
wire force_t;
wire [0:4] spr_high_fx0_cnt[0:`THREADS-1];
wire [0:4] spr_high_fx1_cnt[0:`THREADS-1];
wire [0:4] spr_high_lq_cnt[0:`THREADS-1];
wire [0:4] spr_high_sq_cnt[0:`THREADS-1];
wire [0:4] spr_high_fu0_cnt[0:`THREADS-1];
wire [0:4] spr_high_fu1_cnt[0:`THREADS-1];
wire [0:4] spr_med_fx0_cnt[0:`THREADS-1];
wire [0:4] spr_med_fx1_cnt[0:`THREADS-1];
wire [0:4] spr_med_lq_cnt[0:`THREADS-1];
wire [0:4] spr_med_sq_cnt[0:`THREADS-1];
wire [0:4] spr_med_fu0_cnt[0:`THREADS-1];
wire [0:4] spr_med_fu1_cnt[0:`THREADS-1];
wire [0:5] spr_low_pri_count[0:`THREADS-1];
// Wires to more to 2D arrays
wire [0:`THREADS-1] frn_fdis_iu6_i0_vld;
wire [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_i0_itag[0:`THREADS-1];
wire [0:2] frn_fdis_iu6_i0_ucode[0:`THREADS-1];
wire [0:`UCODE_ENTRIES_ENC-1] frn_fdis_iu6_i0_ucode_cnt[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i0_2ucode;
wire [0:`THREADS-1] frn_fdis_iu6_i0_fuse_nop;
wire [0:`THREADS-1] frn_fdis_iu6_i0_rte_lq;
wire [0:`THREADS-1] frn_fdis_iu6_i0_rte_sq;
wire [0:`THREADS-1] frn_fdis_iu6_i0_rte_fx0;
wire [0:`THREADS-1] frn_fdis_iu6_i0_rte_fx1;
wire [0:`THREADS-1] frn_fdis_iu6_i0_rte_axu0;
wire [0:`THREADS-1] frn_fdis_iu6_i0_rte_axu1;
wire [0:`THREADS-1] frn_fdis_iu6_i0_valop;
wire [0:`THREADS-1] frn_fdis_iu6_i0_ord;
wire [0:`THREADS-1] frn_fdis_iu6_i0_cord;
wire [0:2] frn_fdis_iu6_i0_error[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i0_btb_entry;
wire [0:1] frn_fdis_iu6_i0_btb_hist[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i0_bta_val;
wire [0:19] frn_fdis_iu6_i0_fusion[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i0_spec;
wire [0:`THREADS-1] frn_fdis_iu6_i0_type_fp;
wire [0:`THREADS-1] frn_fdis_iu6_i0_type_ap;
wire [0:`THREADS-1] frn_fdis_iu6_i0_type_spv;
wire [0:`THREADS-1] frn_fdis_iu6_i0_type_st;
wire [0:`THREADS-1] frn_fdis_iu6_i0_async_block;
wire [0:`THREADS-1] frn_fdis_iu6_i0_np1_flush;
wire [0:`THREADS-1] frn_fdis_iu6_i0_core_block;
wire [0:`THREADS-1] frn_fdis_iu6_i0_isram;
wire [0:`THREADS-1] frn_fdis_iu6_i0_isload;
wire [0:`THREADS-1] frn_fdis_iu6_i0_isstore;
wire [0:31] frn_fdis_iu6_i0_instr[0:`THREADS-1];
wire [62-`EFF_IFAR_WIDTH:61] frn_fdis_iu6_i0_ifar[0:`THREADS-1];
wire [62-`EFF_IFAR_WIDTH:61] frn_fdis_iu6_i0_bta[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i0_br_pred;
wire [0:`THREADS-1] frn_fdis_iu6_i0_bh_update;
wire [0:1] frn_fdis_iu6_i0_bh0_hist[0:`THREADS-1];
wire [0:1] frn_fdis_iu6_i0_bh1_hist[0:`THREADS-1];
wire [0:1] frn_fdis_iu6_i0_bh2_hist[0:`THREADS-1];
wire [0:17] frn_fdis_iu6_i0_gshare[0:`THREADS-1];
wire [0:2] frn_fdis_iu6_i0_ls_ptr[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i0_match;
wire [0:3] frn_fdis_iu6_i0_ilat[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i0_t1_v;
wire [0:2] frn_fdis_iu6_i0_t1_t[0:`THREADS-1];
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i0_t1_a[0:`THREADS-1];
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i0_t1_p[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i0_t2_v;
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i0_t2_a[0:`THREADS-1];
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i0_t2_p[0:`THREADS-1];
wire [0:2] frn_fdis_iu6_i0_t2_t[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i0_t3_v;
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i0_t3_a[0:`THREADS-1];
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i0_t3_p[0:`THREADS-1];
wire [0:2] frn_fdis_iu6_i0_t3_t[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i0_s1_v;
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i0_s1_a[0:`THREADS-1];
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i0_s1_p[0:`THREADS-1];
wire [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_i0_s1_itag[0:`THREADS-1];
wire [0:2] frn_fdis_iu6_i0_s1_t[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i0_s1_dep_hit;
wire [0:`THREADS-1] frn_fdis_iu6_i0_s2_v;
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i0_s2_a[0:`THREADS-1];
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i0_s2_p[0:`THREADS-1];
wire [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_i0_s2_itag[0:`THREADS-1];
wire [0:2] frn_fdis_iu6_i0_s2_t[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i0_s2_dep_hit;
wire [0:`THREADS-1] frn_fdis_iu6_i0_s3_v;
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i0_s3_a[0:`THREADS-1];
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i0_s3_p[0:`THREADS-1];
wire [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_i0_s3_itag[0:`THREADS-1];
wire [0:2] frn_fdis_iu6_i0_s3_t[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i0_s3_dep_hit;
wire [0:`THREADS-1] frn_fdis_iu6_i1_vld;
wire [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_i1_itag[0:`THREADS-1];
wire [0:2] frn_fdis_iu6_i1_ucode[0:`THREADS-1];
wire [0:`UCODE_ENTRIES_ENC-1] frn_fdis_iu6_i1_ucode_cnt[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i1_fuse_nop;
wire [0:`THREADS-1] frn_fdis_iu6_i1_rte_lq;
wire [0:`THREADS-1] frn_fdis_iu6_i1_rte_sq;
wire [0:`THREADS-1] frn_fdis_iu6_i1_rte_fx0;
wire [0:`THREADS-1] frn_fdis_iu6_i1_rte_fx1;
wire [0:`THREADS-1] frn_fdis_iu6_i1_rte_axu0;
wire [0:`THREADS-1] frn_fdis_iu6_i1_rte_axu1;
wire [0:`THREADS-1] frn_fdis_iu6_i1_valop;
wire [0:`THREADS-1] frn_fdis_iu6_i1_ord;
wire [0:`THREADS-1] frn_fdis_iu6_i1_cord;
wire [0:2] frn_fdis_iu6_i1_error[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i1_btb_entry;
wire [0:1] frn_fdis_iu6_i1_btb_hist[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i1_bta_val;
wire [0:19] frn_fdis_iu6_i1_fusion[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i1_spec;
wire [0:`THREADS-1] frn_fdis_iu6_i1_type_fp;
wire [0:`THREADS-1] frn_fdis_iu6_i1_type_ap;
wire [0:`THREADS-1] frn_fdis_iu6_i1_type_spv;
wire [0:`THREADS-1] frn_fdis_iu6_i1_type_st;
wire [0:`THREADS-1] frn_fdis_iu6_i1_async_block;
wire [0:`THREADS-1] frn_fdis_iu6_i1_np1_flush;
wire [0:`THREADS-1] frn_fdis_iu6_i1_core_block;
wire [0:`THREADS-1] frn_fdis_iu6_i1_isram;
wire [0:`THREADS-1] frn_fdis_iu6_i1_isload;
wire [0:`THREADS-1] frn_fdis_iu6_i1_isstore;
wire [0:31] frn_fdis_iu6_i1_instr[0:`THREADS-1];
wire [62-`EFF_IFAR_WIDTH:61] frn_fdis_iu6_i1_ifar[0:`THREADS-1];
wire [62-`EFF_IFAR_WIDTH:61] frn_fdis_iu6_i1_bta[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i1_br_pred;
wire [0:`THREADS-1] frn_fdis_iu6_i1_bh_update;
wire [0:1] frn_fdis_iu6_i1_bh0_hist[0:`THREADS-1];
wire [0:1] frn_fdis_iu6_i1_bh1_hist[0:`THREADS-1];
wire [0:1] frn_fdis_iu6_i1_bh2_hist[0:`THREADS-1];
wire [0:17] frn_fdis_iu6_i1_gshare[0:`THREADS-1];
wire [0:2] frn_fdis_iu6_i1_ls_ptr[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i1_match;
wire [0:3] frn_fdis_iu6_i1_ilat[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i1_t1_v;
wire [0:2] frn_fdis_iu6_i1_t1_t[0:`THREADS-1];
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i1_t1_a[0:`THREADS-1];
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i1_t1_p[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i1_t2_v;
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i1_t2_a[0:`THREADS-1];
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i1_t2_p[0:`THREADS-1];
wire [0:2] frn_fdis_iu6_i1_t2_t[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i1_t3_v;
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i1_t3_a[0:`THREADS-1];
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i1_t3_p[0:`THREADS-1];
wire [0:2] frn_fdis_iu6_i1_t3_t[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i1_s1_v;
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i1_s1_a[0:`THREADS-1];
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i1_s1_p[0:`THREADS-1];
wire [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_i1_s1_itag[0:`THREADS-1];
wire [0:2] frn_fdis_iu6_i1_s1_t[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i1_s1_dep_hit;
wire [0:`THREADS-1] frn_fdis_iu6_i1_s2_v;
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i1_s2_a[0:`THREADS-1];
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i1_s2_p[0:`THREADS-1];
wire [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_i1_s2_itag[0:`THREADS-1];
wire [0:2] frn_fdis_iu6_i1_s2_t[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i1_s2_dep_hit;
wire [0:`THREADS-1] frn_fdis_iu6_i1_s3_v;
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i1_s3_a[0:`THREADS-1];
wire [0:`GPR_POOL_ENC-1] frn_fdis_iu6_i1_s3_p[0:`THREADS-1];
wire [0:`ITAG_SIZE_ENC-1] frn_fdis_iu6_i1_s3_itag[0:`THREADS-1];
wire [0:2] frn_fdis_iu6_i1_s3_t[0:`THREADS-1];
wire [0:`THREADS-1] frn_fdis_iu6_i1_s3_dep_hit;
wire [0:`THREADS-1] fx0_send_cnt_zero;
wire [0:`THREADS-1] fx0_send_cnt_one;
wire [0:`THREADS-1] fx1_send_cnt_zero;
wire [0:`THREADS-1] fx1_send_cnt_one;
wire [0:`THREADS-1] fu0_send_cnt_zero;
wire [0:`THREADS-1] fu0_send_cnt_one;
wire [0:`THREADS-1] fu1_send_cnt_zero;
wire [0:`THREADS-1] fu1_send_cnt_one;
wire [0:`THREADS-1] lq_cmdq_send_cnt_zero;
wire [0:`THREADS-1] lq_cmdq_send_cnt_one;
wire [0:`THREADS-1] sq_cmdq_send_cnt_zero;
wire [0:`THREADS-1] sq_cmdq_send_cnt_one;
wire funcslp_force;
//!! Bugspray Include: iuq_dispatch
assign spr_high_fx0_cnt[0] = spr_t0_cpcr2_fx0_cnt;
assign spr_high_fx1_cnt[0] = spr_t0_cpcr2_fx1_cnt;
assign spr_high_lq_cnt[0] = spr_t0_cpcr2_lq_cnt;
assign spr_high_sq_cnt[0] = spr_t0_cpcr2_sq_cnt;
assign spr_high_fu0_cnt[0] = spr_t0_cpcr3_fu0_cnt;
assign spr_high_fu1_cnt[0] = spr_t0_cpcr3_fu1_cnt;
assign spr_med_fx0_cnt[0] = spr_t0_cpcr4_fx0_cnt;
assign spr_med_fx1_cnt[0] = spr_t0_cpcr4_fx1_cnt;
assign spr_med_lq_cnt[0] = spr_t0_cpcr4_lq_cnt;
assign spr_med_sq_cnt[0] = spr_t0_cpcr4_sq_cnt;
assign spr_med_fu0_cnt[0] = spr_t0_cpcr5_fu0_cnt;
assign spr_med_fu1_cnt[0] = spr_t0_cpcr5_fu1_cnt;
assign spr_low_pri_count[0] = spr_t0_low_pri_count;
`ifndef THREADS1
assign spr_high_fx0_cnt[1] = spr_t1_cpcr2_fx0_cnt;
assign spr_high_fx1_cnt[1] = spr_t1_cpcr2_fx1_cnt;
assign spr_high_lq_cnt[1] = spr_t1_cpcr2_lq_cnt;
assign spr_high_sq_cnt[1] = spr_t1_cpcr2_sq_cnt;
assign spr_high_fu0_cnt[1] = spr_t1_cpcr3_fu0_cnt;
assign spr_high_fu1_cnt[1] = spr_t1_cpcr3_fu1_cnt;
assign spr_med_fx0_cnt[1] = spr_t1_cpcr4_fx0_cnt;
assign spr_med_fx1_cnt[1] = spr_t1_cpcr4_fx1_cnt;
assign spr_med_lq_cnt[1] = spr_t1_cpcr4_lq_cnt;
assign spr_med_sq_cnt[1] = spr_t1_cpcr4_sq_cnt;
assign spr_med_fu0_cnt[1] = spr_t1_cpcr5_fu0_cnt;
assign spr_med_fu1_cnt[1] = spr_t1_cpcr5_fu1_cnt;
assign spr_low_pri_count[1] = spr_t1_low_pri_count;
`endif
assign frn_fdis_iu6_i0_vld[0] = frn_fdis_iu6_t0_i0_vld;
assign frn_fdis_iu6_i0_itag[0] = frn_fdis_iu6_t0_i0_itag;
assign frn_fdis_iu6_i0_ucode[0] = frn_fdis_iu6_t0_i0_ucode;
assign frn_fdis_iu6_i0_ucode_cnt[0] = frn_fdis_iu6_t0_i0_ucode_cnt;
assign frn_fdis_iu6_i0_2ucode[0] = frn_fdis_iu6_t0_i0_2ucode;
assign frn_fdis_iu6_i0_fuse_nop[0] = frn_fdis_iu6_t0_i0_fuse_nop;
assign frn_fdis_iu6_i0_rte_lq[0] = frn_fdis_iu6_t0_i0_rte_lq;
assign frn_fdis_iu6_i0_rte_sq[0] = frn_fdis_iu6_t0_i0_rte_sq;
assign frn_fdis_iu6_i0_rte_fx0[0] = frn_fdis_iu6_t0_i0_rte_fx0;
assign frn_fdis_iu6_i0_rte_fx1[0] = frn_fdis_iu6_t0_i0_rte_fx1;
assign frn_fdis_iu6_i0_rte_axu0[0] = frn_fdis_iu6_t0_i0_rte_axu0;
assign frn_fdis_iu6_i0_rte_axu1[0] = frn_fdis_iu6_t0_i0_rte_axu1;
assign frn_fdis_iu6_i0_valop[0] = frn_fdis_iu6_t0_i0_valop;
assign frn_fdis_iu6_i0_ord[0] = frn_fdis_iu6_t0_i0_ord;
assign frn_fdis_iu6_i0_cord[0] = frn_fdis_iu6_t0_i0_cord;
assign frn_fdis_iu6_i0_error[0] = frn_fdis_iu6_t0_i0_error;
assign frn_fdis_iu6_i0_btb_entry[0] = frn_fdis_iu6_t0_i0_btb_entry;
assign frn_fdis_iu6_i0_btb_hist[0] = frn_fdis_iu6_t0_i0_btb_hist;
assign frn_fdis_iu6_i0_bta_val[0] = frn_fdis_iu6_t0_i0_bta_val;
assign frn_fdis_iu6_i0_fusion[0] = frn_fdis_iu6_t0_i0_fusion;
assign frn_fdis_iu6_i0_spec[0] = frn_fdis_iu6_t0_i0_spec;
assign frn_fdis_iu6_i0_type_fp[0] = frn_fdis_iu6_t0_i0_type_fp;
assign frn_fdis_iu6_i0_type_ap[0] = frn_fdis_iu6_t0_i0_type_ap;
assign frn_fdis_iu6_i0_type_spv[0] = frn_fdis_iu6_t0_i0_type_spv;
assign frn_fdis_iu6_i0_type_st[0] = frn_fdis_iu6_t0_i0_type_st;
assign frn_fdis_iu6_i0_async_block[0] = frn_fdis_iu6_t0_i0_async_block;
assign frn_fdis_iu6_i0_np1_flush[0] = frn_fdis_iu6_t0_i0_np1_flush;
assign frn_fdis_iu6_i0_core_block[0] = frn_fdis_iu6_t0_i0_core_block;
assign frn_fdis_iu6_i0_isram[0] = frn_fdis_iu6_t0_i0_isram;
assign frn_fdis_iu6_i0_isload[0] = frn_fdis_iu6_t0_i0_isload;
assign frn_fdis_iu6_i0_isstore[0] = frn_fdis_iu6_t0_i0_isstore;
assign frn_fdis_iu6_i0_instr[0] = frn_fdis_iu6_t0_i0_instr;
assign frn_fdis_iu6_i0_ifar[0] = frn_fdis_iu6_t0_i0_ifar;
assign frn_fdis_iu6_i0_bta[0] = frn_fdis_iu6_t0_i0_bta;
assign frn_fdis_iu6_i0_br_pred[0] = frn_fdis_iu6_t0_i0_br_pred;
assign frn_fdis_iu6_i0_bh_update[0] = frn_fdis_iu6_t0_i0_bh_update;
assign frn_fdis_iu6_i0_bh0_hist[0] = frn_fdis_iu6_t0_i0_bh0_hist;
assign frn_fdis_iu6_i0_bh1_hist[0] = frn_fdis_iu6_t0_i0_bh1_hist;
assign frn_fdis_iu6_i0_bh2_hist[0] = frn_fdis_iu6_t0_i0_bh2_hist;
assign frn_fdis_iu6_i0_gshare[0] = frn_fdis_iu6_t0_i0_gshare;
assign frn_fdis_iu6_i0_ls_ptr[0] = frn_fdis_iu6_t0_i0_ls_ptr;
assign frn_fdis_iu6_i0_match[0] = frn_fdis_iu6_t0_i0_match;
assign frn_fdis_iu6_i0_ilat[0] = frn_fdis_iu6_t0_i0_ilat;
assign frn_fdis_iu6_i0_t1_v[0] = frn_fdis_iu6_t0_i0_t1_v;
assign frn_fdis_iu6_i0_t1_t[0] = frn_fdis_iu6_t0_i0_t1_t;
assign frn_fdis_iu6_i0_t1_a[0] = frn_fdis_iu6_t0_i0_t1_a;
assign frn_fdis_iu6_i0_t1_p[0] = frn_fdis_iu6_t0_i0_t1_p;
assign frn_fdis_iu6_i0_t2_v[0] = frn_fdis_iu6_t0_i0_t2_v;
assign frn_fdis_iu6_i0_t2_a[0] = frn_fdis_iu6_t0_i0_t2_a;
assign frn_fdis_iu6_i0_t2_p[0] = frn_fdis_iu6_t0_i0_t2_p;
assign frn_fdis_iu6_i0_t2_t[0] = frn_fdis_iu6_t0_i0_t2_t;
assign frn_fdis_iu6_i0_t3_v[0] = frn_fdis_iu6_t0_i0_t3_v;
assign frn_fdis_iu6_i0_t3_a[0] = frn_fdis_iu6_t0_i0_t3_a;
assign frn_fdis_iu6_i0_t3_p[0] = frn_fdis_iu6_t0_i0_t3_p;
assign frn_fdis_iu6_i0_t3_t[0] = frn_fdis_iu6_t0_i0_t3_t;
assign frn_fdis_iu6_i0_s1_v[0] = frn_fdis_iu6_t0_i0_s1_v;
assign frn_fdis_iu6_i0_s1_a[0] = frn_fdis_iu6_t0_i0_s1_a;
assign frn_fdis_iu6_i0_s1_p[0] = frn_fdis_iu6_t0_i0_s1_p;
assign frn_fdis_iu6_i0_s1_itag[0] = frn_fdis_iu6_t0_i0_s1_itag;
assign frn_fdis_iu6_i0_s1_t[0] = frn_fdis_iu6_t0_i0_s1_t;
assign frn_fdis_iu6_i0_s2_v[0] = frn_fdis_iu6_t0_i0_s2_v;
assign frn_fdis_iu6_i0_s2_a[0] = frn_fdis_iu6_t0_i0_s2_a;
assign frn_fdis_iu6_i0_s2_p[0] = frn_fdis_iu6_t0_i0_s2_p;
assign frn_fdis_iu6_i0_s2_itag[0] = frn_fdis_iu6_t0_i0_s2_itag;
assign frn_fdis_iu6_i0_s2_t[0] = frn_fdis_iu6_t0_i0_s2_t;
assign frn_fdis_iu6_i0_s3_v[0] = frn_fdis_iu6_t0_i0_s3_v;
assign frn_fdis_iu6_i0_s3_a[0] = frn_fdis_iu6_t0_i0_s3_a;
assign frn_fdis_iu6_i0_s3_p[0] = frn_fdis_iu6_t0_i0_s3_p;
assign frn_fdis_iu6_i0_s3_itag[0] = frn_fdis_iu6_t0_i0_s3_itag;
assign frn_fdis_iu6_i0_s3_t[0] = frn_fdis_iu6_t0_i0_s3_t;
assign frn_fdis_iu6_i1_vld[0] = frn_fdis_iu6_t0_i1_vld;
assign frn_fdis_iu6_i1_itag[0] = frn_fdis_iu6_t0_i1_itag;
assign frn_fdis_iu6_i1_ucode[0] = frn_fdis_iu6_t0_i1_ucode;
assign frn_fdis_iu6_i1_ucode_cnt[0] = frn_fdis_iu6_t0_i1_ucode_cnt;
assign frn_fdis_iu6_i1_fuse_nop[0] = frn_fdis_iu6_t0_i1_fuse_nop;
assign frn_fdis_iu6_i1_rte_lq[0] = frn_fdis_iu6_t0_i1_rte_lq;
assign frn_fdis_iu6_i1_rte_sq[0] = frn_fdis_iu6_t0_i1_rte_sq;
assign frn_fdis_iu6_i1_rte_fx0[0] = frn_fdis_iu6_t0_i1_rte_fx0;
assign frn_fdis_iu6_i1_rte_fx1[0] = frn_fdis_iu6_t0_i1_rte_fx1;
assign frn_fdis_iu6_i1_rte_axu0[0] = frn_fdis_iu6_t0_i1_rte_axu0;
assign frn_fdis_iu6_i1_rte_axu1[0] = frn_fdis_iu6_t0_i1_rte_axu1;
assign frn_fdis_iu6_i1_valop[0] = frn_fdis_iu6_t0_i1_valop;
assign frn_fdis_iu6_i1_ord[0] = frn_fdis_iu6_t0_i1_ord;
assign frn_fdis_iu6_i1_cord[0] = frn_fdis_iu6_t0_i1_cord;
assign frn_fdis_iu6_i1_error[0] = frn_fdis_iu6_t0_i1_error;
assign frn_fdis_iu6_i1_btb_entry[0] = frn_fdis_iu6_t0_i1_btb_entry;
assign frn_fdis_iu6_i1_btb_hist[0] = frn_fdis_iu6_t0_i1_btb_hist;
assign frn_fdis_iu6_i1_bta_val[0] = frn_fdis_iu6_t0_i1_bta_val;
assign frn_fdis_iu6_i1_fusion[0] = frn_fdis_iu6_t0_i1_fusion;
assign frn_fdis_iu6_i1_spec[0] = frn_fdis_iu6_t0_i1_spec;
assign frn_fdis_iu6_i1_type_fp[0] = frn_fdis_iu6_t0_i1_type_fp;
assign frn_fdis_iu6_i1_type_ap[0] = frn_fdis_iu6_t0_i1_type_ap;
assign frn_fdis_iu6_i1_type_spv[0] = frn_fdis_iu6_t0_i1_type_spv;
assign frn_fdis_iu6_i1_type_st[0] = frn_fdis_iu6_t0_i1_type_st;
assign frn_fdis_iu6_i1_async_block[0] = frn_fdis_iu6_t0_i1_async_block;
assign frn_fdis_iu6_i1_np1_flush[0] = frn_fdis_iu6_t0_i1_np1_flush;
assign frn_fdis_iu6_i1_core_block[0] = frn_fdis_iu6_t0_i1_core_block;
assign frn_fdis_iu6_i1_isram[0] = frn_fdis_iu6_t0_i1_isram;
assign frn_fdis_iu6_i1_isload[0] = frn_fdis_iu6_t0_i1_isload;
assign frn_fdis_iu6_i1_isstore[0] = frn_fdis_iu6_t0_i1_isstore;
assign frn_fdis_iu6_i1_instr[0] = frn_fdis_iu6_t0_i1_instr;
assign frn_fdis_iu6_i1_ifar[0] = frn_fdis_iu6_t0_i1_ifar;
assign frn_fdis_iu6_i1_bta[0] = frn_fdis_iu6_t0_i1_bta;
assign frn_fdis_iu6_i1_br_pred[0] = frn_fdis_iu6_t0_i1_br_pred;
assign frn_fdis_iu6_i1_bh_update[0] = frn_fdis_iu6_t0_i1_bh_update;
assign frn_fdis_iu6_i1_bh0_hist[0] = frn_fdis_iu6_t0_i1_bh0_hist;
assign frn_fdis_iu6_i1_bh1_hist[0] = frn_fdis_iu6_t0_i1_bh1_hist;
assign frn_fdis_iu6_i1_bh2_hist[0] = frn_fdis_iu6_t0_i1_bh2_hist;
assign frn_fdis_iu6_i1_gshare[0] = frn_fdis_iu6_t0_i1_gshare;
assign frn_fdis_iu6_i1_ls_ptr[0] = frn_fdis_iu6_t0_i1_ls_ptr;
assign frn_fdis_iu6_i1_match[0] = frn_fdis_iu6_t0_i1_match;
assign frn_fdis_iu6_i1_ilat[0] = frn_fdis_iu6_t0_i1_ilat;
assign frn_fdis_iu6_i1_t1_v[0] = frn_fdis_iu6_t0_i1_t1_v;
assign frn_fdis_iu6_i1_t1_t[0] = frn_fdis_iu6_t0_i1_t1_t;
assign frn_fdis_iu6_i1_t1_a[0] = frn_fdis_iu6_t0_i1_t1_a;
assign frn_fdis_iu6_i1_t1_p[0] = frn_fdis_iu6_t0_i1_t1_p;
assign frn_fdis_iu6_i1_t2_v[0] = frn_fdis_iu6_t0_i1_t2_v;
assign frn_fdis_iu6_i1_t2_a[0] = frn_fdis_iu6_t0_i1_t2_a;
assign frn_fdis_iu6_i1_t2_p[0] = frn_fdis_iu6_t0_i1_t2_p;
assign frn_fdis_iu6_i1_t2_t[0] = frn_fdis_iu6_t0_i1_t2_t;
assign frn_fdis_iu6_i1_t3_v[0] = frn_fdis_iu6_t0_i1_t3_v;
assign frn_fdis_iu6_i1_t3_a[0] = frn_fdis_iu6_t0_i1_t3_a;
assign frn_fdis_iu6_i1_t3_p[0] = frn_fdis_iu6_t0_i1_t3_p;
assign frn_fdis_iu6_i1_t3_t[0] = frn_fdis_iu6_t0_i1_t3_t;
assign frn_fdis_iu6_i1_s1_v[0] = frn_fdis_iu6_t0_i1_s1_v;
assign frn_fdis_iu6_i1_s1_a[0] = frn_fdis_iu6_t0_i1_s1_a;
assign frn_fdis_iu6_i1_s1_p[0] = frn_fdis_iu6_t0_i1_s1_p;
assign frn_fdis_iu6_i1_s1_itag[0] = frn_fdis_iu6_t0_i1_s1_itag;
assign frn_fdis_iu6_i1_s1_t[0] = frn_fdis_iu6_t0_i1_s1_t;
assign frn_fdis_iu6_i1_s1_dep_hit[0] = frn_fdis_iu6_t0_i1_s1_dep_hit;
assign frn_fdis_iu6_i1_s2_v[0] = frn_fdis_iu6_t0_i1_s2_v;
assign frn_fdis_iu6_i1_s2_a[0] = frn_fdis_iu6_t0_i1_s2_a;
assign frn_fdis_iu6_i1_s2_p[0] = frn_fdis_iu6_t0_i1_s2_p;
assign frn_fdis_iu6_i1_s2_itag[0] = frn_fdis_iu6_t0_i1_s2_itag;
assign frn_fdis_iu6_i1_s2_t[0] = frn_fdis_iu6_t0_i1_s2_t;
assign frn_fdis_iu6_i1_s2_dep_hit[0] = frn_fdis_iu6_t0_i1_s2_dep_hit;
assign frn_fdis_iu6_i1_s3_v[0] = frn_fdis_iu6_t0_i1_s3_v;
assign frn_fdis_iu6_i1_s3_a[0] = frn_fdis_iu6_t0_i1_s3_a;
assign frn_fdis_iu6_i1_s3_p[0] = frn_fdis_iu6_t0_i1_s3_p;
assign frn_fdis_iu6_i1_s3_itag[0] = frn_fdis_iu6_t0_i1_s3_itag;
assign frn_fdis_iu6_i1_s3_t[0] = frn_fdis_iu6_t0_i1_s3_t;
assign frn_fdis_iu6_i1_s3_dep_hit[0] = frn_fdis_iu6_t0_i1_s3_dep_hit;
`ifndef THREADS1
assign frn_fdis_iu6_i0_vld[1] = frn_fdis_iu6_t1_i0_vld;
assign frn_fdis_iu6_i0_itag[1] = frn_fdis_iu6_t1_i0_itag;
assign frn_fdis_iu6_i0_ucode[1] = frn_fdis_iu6_t1_i0_ucode;
assign frn_fdis_iu6_i0_ucode_cnt[1] = frn_fdis_iu6_t1_i0_ucode_cnt;
assign frn_fdis_iu6_i0_2ucode[1] = frn_fdis_iu6_t1_i0_2ucode;
assign frn_fdis_iu6_i0_fuse_nop[1] = frn_fdis_iu6_t1_i0_fuse_nop;
assign frn_fdis_iu6_i0_rte_lq[1] = frn_fdis_iu6_t1_i0_rte_lq;
assign frn_fdis_iu6_i0_rte_sq[1] = frn_fdis_iu6_t1_i0_rte_sq;
assign frn_fdis_iu6_i0_rte_fx0[1] = frn_fdis_iu6_t1_i0_rte_fx0;
assign frn_fdis_iu6_i0_rte_fx1[1] = frn_fdis_iu6_t1_i0_rte_fx1;
assign frn_fdis_iu6_i0_rte_axu0[1] = frn_fdis_iu6_t1_i0_rte_axu0;
assign frn_fdis_iu6_i0_rte_axu1[1] = frn_fdis_iu6_t1_i0_rte_axu1;
assign frn_fdis_iu6_i0_valop[1] = frn_fdis_iu6_t1_i0_valop;
assign frn_fdis_iu6_i0_ord[1] = frn_fdis_iu6_t1_i0_ord;
assign frn_fdis_iu6_i0_cord[1] = frn_fdis_iu6_t1_i0_cord;
assign frn_fdis_iu6_i0_error[1] = frn_fdis_iu6_t1_i0_error;
assign frn_fdis_iu6_i0_btb_entry[1] = frn_fdis_iu6_t1_i0_btb_entry;
assign frn_fdis_iu6_i0_btb_hist[1] = frn_fdis_iu6_t1_i0_btb_hist;
assign frn_fdis_iu6_i0_bta_val[1] = frn_fdis_iu6_t1_i0_bta_val;
assign frn_fdis_iu6_i0_fusion[1] = frn_fdis_iu6_t1_i0_fusion;
assign frn_fdis_iu6_i0_spec[1] = frn_fdis_iu6_t1_i0_spec;
assign frn_fdis_iu6_i0_type_fp[1] = frn_fdis_iu6_t1_i0_type_fp;
assign frn_fdis_iu6_i0_type_ap[1] = frn_fdis_iu6_t1_i0_type_ap;
assign frn_fdis_iu6_i0_type_spv[1] = frn_fdis_iu6_t1_i0_type_spv;
assign frn_fdis_iu6_i0_type_st[1] = frn_fdis_iu6_t1_i0_type_st;
assign frn_fdis_iu6_i0_async_block[1] = frn_fdis_iu6_t1_i0_async_block;
assign frn_fdis_iu6_i0_np1_flush[1] = frn_fdis_iu6_t1_i0_np1_flush;
assign frn_fdis_iu6_i0_core_block[1] = frn_fdis_iu6_t1_i0_core_block;
assign frn_fdis_iu6_i0_isram[1] = frn_fdis_iu6_t1_i0_isram;
assign frn_fdis_iu6_i0_isload[1] = frn_fdis_iu6_t1_i0_isload;
assign frn_fdis_iu6_i0_isstore[1] = frn_fdis_iu6_t1_i0_isstore;
assign frn_fdis_iu6_i0_instr[1] = frn_fdis_iu6_t1_i0_instr;
assign frn_fdis_iu6_i0_ifar[1] = frn_fdis_iu6_t1_i0_ifar;
assign frn_fdis_iu6_i0_bta[1] = frn_fdis_iu6_t1_i0_bta;
assign frn_fdis_iu6_i0_br_pred[1] = frn_fdis_iu6_t1_i0_br_pred;
assign frn_fdis_iu6_i0_bh_update[1] = frn_fdis_iu6_t1_i0_bh_update;
assign frn_fdis_iu6_i0_bh0_hist[1] = frn_fdis_iu6_t1_i0_bh0_hist;
assign frn_fdis_iu6_i0_bh1_hist[1] = frn_fdis_iu6_t1_i0_bh1_hist;
assign frn_fdis_iu6_i0_bh2_hist[1] = frn_fdis_iu6_t1_i0_bh2_hist;
assign frn_fdis_iu6_i0_gshare[1] = frn_fdis_iu6_t1_i0_gshare;
assign frn_fdis_iu6_i0_ls_ptr[1] = frn_fdis_iu6_t1_i0_ls_ptr;
assign frn_fdis_iu6_i0_match[1] = frn_fdis_iu6_t1_i0_match;
assign frn_fdis_iu6_i0_ilat[1] = frn_fdis_iu6_t1_i0_ilat;
assign frn_fdis_iu6_i0_t1_v[1] = frn_fdis_iu6_t1_i0_t1_v;
assign frn_fdis_iu6_i0_t1_t[1] = frn_fdis_iu6_t1_i0_t1_t;
assign frn_fdis_iu6_i0_t1_a[1] = frn_fdis_iu6_t1_i0_t1_a;
assign frn_fdis_iu6_i0_t1_p[1] = frn_fdis_iu6_t1_i0_t1_p;
assign frn_fdis_iu6_i0_t2_v[1] = frn_fdis_iu6_t1_i0_t2_v;
assign frn_fdis_iu6_i0_t2_a[1] = frn_fdis_iu6_t1_i0_t2_a;
assign frn_fdis_iu6_i0_t2_p[1] = frn_fdis_iu6_t1_i0_t2_p;
assign frn_fdis_iu6_i0_t2_t[1] = frn_fdis_iu6_t1_i0_t2_t;
assign frn_fdis_iu6_i0_t3_v[1] = frn_fdis_iu6_t1_i0_t3_v;
assign frn_fdis_iu6_i0_t3_a[1] = frn_fdis_iu6_t1_i0_t3_a;
assign frn_fdis_iu6_i0_t3_p[1] = frn_fdis_iu6_t1_i0_t3_p;
assign frn_fdis_iu6_i0_t3_t[1] = frn_fdis_iu6_t1_i0_t3_t;
assign frn_fdis_iu6_i0_s1_v[1] = frn_fdis_iu6_t1_i0_s1_v;
assign frn_fdis_iu6_i0_s1_a[1] = frn_fdis_iu6_t1_i0_s1_a;
assign frn_fdis_iu6_i0_s1_p[1] = frn_fdis_iu6_t1_i0_s1_p;
assign frn_fdis_iu6_i0_s1_itag[1] = frn_fdis_iu6_t1_i0_s1_itag;
assign frn_fdis_iu6_i0_s1_t[1] = frn_fdis_iu6_t1_i0_s1_t;
assign frn_fdis_iu6_i0_s2_v[1] = frn_fdis_iu6_t1_i0_s2_v;
assign frn_fdis_iu6_i0_s2_a[1] = frn_fdis_iu6_t1_i0_s2_a;
assign frn_fdis_iu6_i0_s2_p[1] = frn_fdis_iu6_t1_i0_s2_p;
assign frn_fdis_iu6_i0_s2_itag[1] = frn_fdis_iu6_t1_i0_s2_itag;
assign frn_fdis_iu6_i0_s2_t[1] = frn_fdis_iu6_t1_i0_s2_t;
assign frn_fdis_iu6_i0_s3_v[1] = frn_fdis_iu6_t1_i0_s3_v;
assign frn_fdis_iu6_i0_s3_a[1] = frn_fdis_iu6_t1_i0_s3_a;
assign frn_fdis_iu6_i0_s3_p[1] = frn_fdis_iu6_t1_i0_s3_p;
assign frn_fdis_iu6_i0_s3_itag[1] = frn_fdis_iu6_t1_i0_s3_itag;
assign frn_fdis_iu6_i0_s3_t[1] = frn_fdis_iu6_t1_i0_s3_t;
assign frn_fdis_iu6_i1_vld[1] = frn_fdis_iu6_t1_i1_vld;
assign frn_fdis_iu6_i1_itag[1] = frn_fdis_iu6_t1_i1_itag;
assign frn_fdis_iu6_i1_ucode[1] = frn_fdis_iu6_t1_i1_ucode;
assign frn_fdis_iu6_i1_ucode_cnt[1] = frn_fdis_iu6_t1_i1_ucode_cnt;
assign frn_fdis_iu6_i1_fuse_nop[1] = frn_fdis_iu6_t1_i1_fuse_nop;
assign frn_fdis_iu6_i1_rte_lq[1] = frn_fdis_iu6_t1_i1_rte_lq;
assign frn_fdis_iu6_i1_rte_sq[1] = frn_fdis_iu6_t1_i1_rte_sq;
assign frn_fdis_iu6_i1_rte_fx0[1] = frn_fdis_iu6_t1_i1_rte_fx0;
assign frn_fdis_iu6_i1_rte_fx1[1] = frn_fdis_iu6_t1_i1_rte_fx1;
assign frn_fdis_iu6_i1_rte_axu0[1] = frn_fdis_iu6_t1_i1_rte_axu0;
assign frn_fdis_iu6_i1_rte_axu1[1] = frn_fdis_iu6_t1_i1_rte_axu1;
assign frn_fdis_iu6_i1_valop[1] = frn_fdis_iu6_t1_i1_valop;
assign frn_fdis_iu6_i1_ord[1] = frn_fdis_iu6_t1_i1_ord;
assign frn_fdis_iu6_i1_cord[1] = frn_fdis_iu6_t1_i1_cord;
assign frn_fdis_iu6_i1_error[1] = frn_fdis_iu6_t1_i1_error;
assign frn_fdis_iu6_i1_btb_entry[1] = frn_fdis_iu6_t1_i1_btb_entry;
assign frn_fdis_iu6_i1_btb_hist[1] = frn_fdis_iu6_t1_i1_btb_hist;
assign frn_fdis_iu6_i1_bta_val[1] = frn_fdis_iu6_t1_i1_bta_val;
assign frn_fdis_iu6_i1_fusion[1] = frn_fdis_iu6_t1_i1_fusion;
assign frn_fdis_iu6_i1_spec[1] = frn_fdis_iu6_t1_i1_spec;
assign frn_fdis_iu6_i1_type_fp[1] = frn_fdis_iu6_t1_i1_type_fp;
assign frn_fdis_iu6_i1_type_ap[1] = frn_fdis_iu6_t1_i1_type_ap;
assign frn_fdis_iu6_i1_type_spv[1] = frn_fdis_iu6_t1_i1_type_spv;
assign frn_fdis_iu6_i1_type_st[1] = frn_fdis_iu6_t1_i1_type_st;
assign frn_fdis_iu6_i1_async_block[1] = frn_fdis_iu6_t1_i1_async_block;
assign frn_fdis_iu6_i1_np1_flush[1] = frn_fdis_iu6_t1_i1_np1_flush;
assign frn_fdis_iu6_i1_core_block[1] = frn_fdis_iu6_t1_i1_core_block;
assign frn_fdis_iu6_i1_isram[1] = frn_fdis_iu6_t1_i1_isram;
assign frn_fdis_iu6_i1_isload[1] = frn_fdis_iu6_t1_i1_isload;
assign frn_fdis_iu6_i1_isstore[1] = frn_fdis_iu6_t1_i1_isstore;
assign frn_fdis_iu6_i1_instr[1] = frn_fdis_iu6_t1_i1_instr;
assign frn_fdis_iu6_i1_ifar[1] = frn_fdis_iu6_t1_i1_ifar;
assign frn_fdis_iu6_i1_bta[1] = frn_fdis_iu6_t1_i1_bta;
assign frn_fdis_iu6_i1_br_pred[1] = frn_fdis_iu6_t1_i1_br_pred;
assign frn_fdis_iu6_i1_bh_update[1] = frn_fdis_iu6_t1_i1_bh_update;
assign frn_fdis_iu6_i1_bh0_hist[1] = frn_fdis_iu6_t1_i1_bh0_hist;
assign frn_fdis_iu6_i1_bh1_hist[1] = frn_fdis_iu6_t1_i1_bh1_hist;
assign frn_fdis_iu6_i1_bh2_hist[1] = frn_fdis_iu6_t1_i1_bh2_hist;
assign frn_fdis_iu6_i1_gshare[1] = frn_fdis_iu6_t1_i1_gshare;
assign frn_fdis_iu6_i1_ls_ptr[1] = frn_fdis_iu6_t1_i1_ls_ptr;
assign frn_fdis_iu6_i1_match[1] = frn_fdis_iu6_t1_i1_match;
assign frn_fdis_iu6_i1_ilat[1] = frn_fdis_iu6_t1_i1_ilat;
assign frn_fdis_iu6_i1_t1_v[1] = frn_fdis_iu6_t1_i1_t1_v;
assign frn_fdis_iu6_i1_t1_t[1] = frn_fdis_iu6_t1_i1_t1_t;
assign frn_fdis_iu6_i1_t1_a[1] = frn_fdis_iu6_t1_i1_t1_a;
assign frn_fdis_iu6_i1_t1_p[1] = frn_fdis_iu6_t1_i1_t1_p;
assign frn_fdis_iu6_i1_t2_v[1] = frn_fdis_iu6_t1_i1_t2_v;
assign frn_fdis_iu6_i1_t2_a[1] = frn_fdis_iu6_t1_i1_t2_a;
assign frn_fdis_iu6_i1_t2_p[1] = frn_fdis_iu6_t1_i1_t2_p;
assign frn_fdis_iu6_i1_t2_t[1] = frn_fdis_iu6_t1_i1_t2_t;
assign frn_fdis_iu6_i1_t3_v[1] = frn_fdis_iu6_t1_i1_t3_v;
assign frn_fdis_iu6_i1_t3_a[1] = frn_fdis_iu6_t1_i1_t3_a;
assign frn_fdis_iu6_i1_t3_p[1] = frn_fdis_iu6_t1_i1_t3_p;
assign frn_fdis_iu6_i1_t3_t[1] = frn_fdis_iu6_t1_i1_t3_t;
assign frn_fdis_iu6_i1_s1_v[1] = frn_fdis_iu6_t1_i1_s1_v;
assign frn_fdis_iu6_i1_s1_a[1] = frn_fdis_iu6_t1_i1_s1_a;
assign frn_fdis_iu6_i1_s1_p[1] = frn_fdis_iu6_t1_i1_s1_p;
assign frn_fdis_iu6_i1_s1_itag[1] = frn_fdis_iu6_t1_i1_s1_itag;
assign frn_fdis_iu6_i1_s1_t[1] = frn_fdis_iu6_t1_i1_s1_t;
assign frn_fdis_iu6_i1_s1_dep_hit[1] = frn_fdis_iu6_t1_i1_s1_dep_hit;
assign frn_fdis_iu6_i1_s2_v[1] = frn_fdis_iu6_t1_i1_s2_v;
assign frn_fdis_iu6_i1_s2_a[1] = frn_fdis_iu6_t1_i1_s2_a;
assign frn_fdis_iu6_i1_s2_p[1] = frn_fdis_iu6_t1_i1_s2_p;
assign frn_fdis_iu6_i1_s2_itag[1] = frn_fdis_iu6_t1_i1_s2_itag;
assign frn_fdis_iu6_i1_s2_t[1] = frn_fdis_iu6_t1_i1_s2_t;
assign frn_fdis_iu6_i1_s2_dep_hit[1] = frn_fdis_iu6_t1_i1_s2_dep_hit;
assign frn_fdis_iu6_i1_s3_v[1] = frn_fdis_iu6_t1_i1_s3_v;
assign frn_fdis_iu6_i1_s3_a[1] = frn_fdis_iu6_t1_i1_s3_a;
assign frn_fdis_iu6_i1_s3_p[1] = frn_fdis_iu6_t1_i1_s3_p;
assign frn_fdis_iu6_i1_s3_itag[1] = frn_fdis_iu6_t1_i1_s3_itag;
assign frn_fdis_iu6_i1_s3_t[1] = frn_fdis_iu6_t1_i1_s3_t;
assign frn_fdis_iu6_i1_s3_dep_hit[1] = frn_fdis_iu6_t1_i1_s3_dep_hit;
`endif
assign tiup = 1'b1;
assign dp_cp_hold_req = (mm_iu_flush_req_l2 & ~(in_ucode_l2 | in_fusion_l2));
assign dp_cp_bus_snoop_hold_req = (mm_iu_bus_snoop_hold_req_l2 & ~(in_ucode_l2 | in_fusion_l2));
assign mm_iu_flush_req_d = mm_iu_flush_req | (mm_iu_flush_req_l2 & (in_ucode_l2 | in_fusion_l2));
assign mm_iu_bus_snoop_hold_req_d = mm_iu_bus_snoop_hold_req | (mm_iu_bus_snoop_hold_req_l2 & (in_ucode_l2 | in_fusion_l2));
// Added logic for Erat invalidates to stop dispatch
generate
begin : xhdl1
genvar i;
for (i = 0; i <= `THREADS - 1; i = i + 1)
begin : send_cnt
//IN V0 12 V1 12 | IN
// - 1 1- 0 -- | 1
// - - -- 1 1- | 1
// - 1 -1 0 -- | 0
// - - -- 1 -1 | 0
assign in_ucode_d[i] = (cp_flush_l2[i] == 1'b1) ? 1'b0 :
(iu_rv_iu6_i0_vld_int[i] == 1'b1 & frn_fdis_iu6_i0_ucode[i][1] == 1'b1 & iu_rv_iu6_i1_vld_int[i] == 1'b0) ? 1'b1 :
(iu_rv_iu6_i1_vld_int[i] == 1'b1 & frn_fdis_iu6_i1_ucode[i][1] == 1'b1) ? 1'b1 :
(iu_rv_iu6_i0_vld_int[i] == 1'b1 & frn_fdis_iu6_i0_ucode[i][2] == 1'b1 & iu_rv_iu6_i1_vld_int[i] == 1'b0) ? 1'b0 :
(iu_rv_iu6_i1_vld_int[i] == 1'b1 & frn_fdis_iu6_i1_ucode[i][2] == 1'b1) ? 1'b0 :
in_ucode_l2[i];
//IN V0 F V1 F | IN
// - 1 1 0 - | 1
// - - - 1 1 | 1
// - 1 0 0 - | 0
// - - - 1 0 | 0
assign in_fusion_d[i] = (cp_flush_l2[i] == 1'b1) ? 1'b0 :
(iu_rv_iu6_i0_vld_int[i] == 1'b1 & frn_fdis_iu6_i0_fuse_nop[i] == 1'b1 & iu_rv_iu6_i1_vld_int[i] == 1'b0) ? 1'b1 :
(iu_rv_iu6_i1_vld_int[i] == 1'b1 & frn_fdis_iu6_i1_fuse_nop[i] == 1'b1) ? 1'b1 :
(iu_rv_iu6_i0_vld_int[i] == 1'b1 & frn_fdis_iu6_i0_fuse_nop[i] == 1'b0 & iu_rv_iu6_i1_vld_int[i] == 1'b0) ? 1'b0 :
(iu_rv_iu6_i1_vld_int[i] == 1'b1 & frn_fdis_iu6_i1_fuse_nop[i] == 1'b0) ? 1'b0 :
in_fusion_l2[i];
assign mm_hold_req_d[i] = (mm_iu_flush_req_l2[i] & ~(in_ucode_l2[i] | in_fusion_l2[i])) |
(mm_hold_req_l2[i] & ~mm_hold_done_l2[i]);
assign mm_hold_done_d[i] = mm_iu_hold_done_l2[i];
assign mm_bus_snoop_hold_req_d[i] = (mm_iu_bus_snoop_hold_req_l2[i] & ~(in_ucode_l2[i] | in_fusion_l2[i])) |
(mm_bus_snoop_hold_req_l2[i] & ~mm_bus_snoop_hold_done_l2[i]);
assign mm_bus_snoop_hold_done_d[i] = mm_iu_bus_snoop_hold_done_l2[i];
assign hold_req_d[i] = (send_instructions[i] & core_block[i]) |
(hold_req_l2[i] & ~hold_done_l2[i]);
assign hold_done_d[i] = cp_flush_l2[i];
assign ivax_hold_req_d[i] = (cp_dis_ivax[i]) |
(ivax_hold_req_l2[i] & ~mm_iu_tlbi_complete[i]);
assign fx0_send_cnt[i] = {(frn_fdis_iu6_i0_rte_fx0[i] & (~frn_fdis_iu6_i0_rte_fx1[i] | dual_issue_use_fx0_l2[0])),
(frn_fdis_iu6_i1_rte_fx0[i] & (~frn_fdis_iu6_i1_rte_fx1[i] | dual_issue_use_fx0_l2[1]))};
assign fx1_send_cnt[i] = {(frn_fdis_iu6_i0_rte_fx1[i] & (~frn_fdis_iu6_i0_rte_fx0[i] | ~dual_issue_use_fx0_l2[0])),
(frn_fdis_iu6_i1_rte_fx1[i] & (~frn_fdis_iu6_i1_rte_fx0[i] | ~dual_issue_use_fx0_l2[1]))};
assign lq_cmdq_send_cnt[i] = {frn_fdis_iu6_i0_rte_lq[i], frn_fdis_iu6_i1_rte_lq[i]};
assign sq_cmdq_send_cnt[i] = {frn_fdis_iu6_i0_rte_sq[i], frn_fdis_iu6_i1_rte_sq[i]};
assign fu0_send_cnt[i] = {(frn_fdis_iu6_i0_rte_axu0[i] & ~(frn_fdis_iu6_i0_rte_lq[i] & frn_fdis_iu6_i0_isload[i])),
(frn_fdis_iu6_i1_rte_axu0[i] & ~(frn_fdis_iu6_i1_rte_lq[i] & frn_fdis_iu6_i1_isload[i]))};
assign fu1_send_cnt[i] = {(frn_fdis_iu6_i0_rte_axu1[i] & ~(frn_fdis_iu6_i0_rte_lq[i] & frn_fdis_iu6_i0_isload[i])),
(frn_fdis_iu6_i1_rte_axu1[i] & ~(frn_fdis_iu6_i1_rte_lq[i] & frn_fdis_iu6_i1_isload[i]))};
assign core_block[i] = (frn_fdis_iu6_i0_core_block[i] | frn_fdis_iu6_i1_core_block[i]);
end
end
endgenerate
generate
begin : primux
genvar i;
for (i = 0; i <= `THREADS - 1; i = i + 1)
begin : credit_mux
assign fx0_credit_cnt_mux[i] = ({5{total_pri_mask_l2[i]}} & fx0_total_credit_cnt_l2) |
({5{high_pri_mask_l2[i]}} & fx0_high_credit_cnt_l2[i]) |
({5{med_pri_mask_l2[i]}} & fx0_med_credit_cnt_l2[i]);
assign fx1_credit_cnt_mux[i] = ({5{total_pri_mask_l2[i]}} & fx1_total_credit_cnt_l2) |
({5{high_pri_mask_l2[i]}} & fx1_high_credit_cnt_l2[i]) |
({5{med_pri_mask_l2[i]}} & fx1_med_credit_cnt_l2[i]);
assign lq_cmdq_credit_cnt_mux[i] = ({5{total_pri_mask_l2[i]}} & lq_cmdq_total_credit_cnt_l2) |
({5{high_pri_mask_l2[i]}} & lq_cmdq_high_credit_cnt_l2[i]) |
({5{med_pri_mask_l2[i]}} & lq_cmdq_med_credit_cnt_l2[i]);
assign sq_cmdq_credit_cnt_mux[i] = ({5{total_pri_mask_l2[i]}} & sq_cmdq_total_credit_cnt_l2) |
({5{high_pri_mask_l2[i]}} & sq_cmdq_high_credit_cnt_l2[i]) |
({5{med_pri_mask_l2[i]}} & sq_cmdq_med_credit_cnt_l2[i]);
assign fu0_credit_cnt_mux[i] = ({5{total_pri_mask_l2[i]}} & fu0_total_credit_cnt_l2) |
({5{high_pri_mask_l2[i]}} & fu0_high_credit_cnt_l2[i]) |
({5{med_pri_mask_l2[i]}} & fu0_med_credit_cnt_l2[i]);
assign fu1_credit_cnt_mux[i] = ({5{total_pri_mask_l2[i]}} & fu1_total_credit_cnt_l2) |
({5{high_pri_mask_l2[i]}} & fu1_high_credit_cnt_l2[i]) |
({5{med_pri_mask_l2[i]}} & fu1_med_credit_cnt_l2[i]);
end
end
endgenerate
`ifdef THREADS1
// Checking to make sure we aren't in ucode so we can issue a core blocker
assign core_block_ok[0] = 1'b1;
`endif
`ifndef THREADS1
assign core_block_ok[0] = ~(core_block[0] & (in_ucode_l2[1] | in_fusion_l2[1]));
assign core_block_ok[1] = ~(core_block[1] & (in_ucode_l2[0] | in_fusion_l2[0]));
`endif
tri_nor2 fx0_send_cnt_t0_zero(fx0_send_cnt_zero[0], fx0_send_cnt[0][0], fx0_send_cnt[0][1]);
tri_xor2 fx0_send_cnt_t0_one (fx0_send_cnt_one[0], fx0_send_cnt[0][0], fx0_send_cnt[0][1]);
tri_nor2 fx1_send_cnt_t0_zero(fx1_send_cnt_zero[0], fx1_send_cnt[0][0], fx1_send_cnt[0][1]);
tri_xor2 fx1_send_cnt_t0_one (fx1_send_cnt_one[0], fx1_send_cnt[0][0], fx1_send_cnt[0][1]);
tri_nor2 fu0_send_cnt_t0_zero(fu0_send_cnt_zero[0], fu0_send_cnt[0][0], fu0_send_cnt[0][1]);
tri_xor2 fu0_send_cnt_t0_one (fu0_send_cnt_one[0], fu0_send_cnt[0][0], fu0_send_cnt[0][1]);
tri_nor2 fu1_send_cnt_t0_zero(fu1_send_cnt_zero[0], fu1_send_cnt[0][0], fu1_send_cnt[0][1]);
tri_xor2 fu1_send_cnt_t0_one (fu1_send_cnt_one[0], fu1_send_cnt[0][0], fu1_send_cnt[0][1]);
tri_nor2 lq_cmdq_send_cnt_t0_zero(lq_cmdq_send_cnt_zero[0], lq_cmdq_send_cnt[0][0], lq_cmdq_send_cnt[0][1]);
tri_xor2 lq_cmdq_send_cnt_t0_one (lq_cmdq_send_cnt_one[0], lq_cmdq_send_cnt[0][0], lq_cmdq_send_cnt[0][1]);
tri_nor2 sq_cmdq_send_cnt_t0_zero(sq_cmdq_send_cnt_zero[0], sq_cmdq_send_cnt[0][0], sq_cmdq_send_cnt[0][1]);
tri_xor2 sq_cmdq_send_cnt_t0_one (sq_cmdq_send_cnt_one[0], sq_cmdq_send_cnt[0][0], sq_cmdq_send_cnt[0][1]);
`ifndef THREADS1
tri_nor2 fx0_send_cnt_t1_zero(fx0_send_cnt_zero[1], fx0_send_cnt[1][0], fx0_send_cnt[1][1]);
tri_xor2 fx0_send_cnt_t1_one (fx0_send_cnt_one[1], fx0_send_cnt[1][0], fx0_send_cnt[1][1]);
tri_nor2 fx1_send_cnt_t1_zero(fx1_send_cnt_zero[1], fx1_send_cnt[1][0], fx1_send_cnt[1][1]);
tri_xor2 fx1_send_cnt_t1_one (fx1_send_cnt_one[1], fx1_send_cnt[1][0], fx1_send_cnt[1][1]);
tri_nor2 fu0_send_cnt_t1_zero(fu0_send_cnt_zero[1], fu0_send_cnt[1][0], fu0_send_cnt[1][1]);
tri_xor2 fu0_send_cnt_t1_one (fu0_send_cnt_one[1], fu0_send_cnt[1][0], fu0_send_cnt[1][1]);
tri_nor2 fu1_send_cnt_t1_zero(fu1_send_cnt_zero[1], fu1_send_cnt[1][0], fu1_send_cnt[1][1]);
tri_xor2 fu1_send_cnt_t1_one (fu1_send_cnt_one[1], fu1_send_cnt[1][0], fu1_send_cnt[1][1]);
tri_nor2 lq_cmdq_send_cnt_t1_zero(lq_cmdq_send_cnt_zero[1], lq_cmdq_send_cnt[1][0], lq_cmdq_send_cnt[1][1]);
tri_xor2 lq_cmdq_send_cnt_t1_one (lq_cmdq_send_cnt_one[1], lq_cmdq_send_cnt[1][0], lq_cmdq_send_cnt[1][1]);
tri_nor2 sq_cmdq_send_cnt_t1_zero(sq_cmdq_send_cnt_zero[1], sq_cmdq_send_cnt[1][0], sq_cmdq_send_cnt[1][1]);
tri_xor2 sq_cmdq_send_cnt_t1_one (sq_cmdq_send_cnt_one[1], sq_cmdq_send_cnt[1][0], sq_cmdq_send_cnt[1][1]);
`endif
generate
begin : xhdl2
genvar i;
for (i = 0; i <= `THREADS - 1; i = i + 1)
begin : credit_ok
// Checking the credits allocated for each thread
assign fx0_local_credit_ok[i] = ((fx0_send_cnt_zero[i]) |
((fx0_send_cnt_one[i]) & |fx0_credit_cnt_mux[i]) |
(|fx0_credit_cnt_mux[i][0:3]));
assign fx1_local_credit_ok[i] = ((fx1_send_cnt_zero[i]) |
((fx1_send_cnt_one[i]) & |fx1_credit_cnt_mux[i]) |
(|fx1_credit_cnt_mux[i][0:3]));
assign lq_cmdq_local_credit_ok[i] = ((lq_cmdq_send_cnt_zero[i]) |
((lq_cmdq_send_cnt_one[i]) & |lq_cmdq_credit_cnt_mux[i]) |
(|lq_cmdq_credit_cnt_mux[i][0:3]));
assign sq_cmdq_local_credit_ok[i] = ((sq_cmdq_send_cnt_zero[i]) |
((sq_cmdq_send_cnt_one[i]) & |sq_cmdq_credit_cnt_mux[i]) |
(|sq_cmdq_credit_cnt_mux[i][0:3]));
assign fu0_local_credit_ok[i] = ((fu0_send_cnt_zero[i]) |
((fu0_send_cnt_one[i]) & |fu0_credit_cnt_mux[i]) |
(|fu0_credit_cnt_mux[i][0:3]));
assign fu1_local_credit_ok[i] = ((fu1_send_cnt_zero[i]) |
((fu1_send_cnt_one[i]) & |fu1_credit_cnt_mux[i]) |
(|fu1_credit_cnt_mux[i][0:3]));
// Checking total credits if only issuing each thread individually
assign fx0_credit_ok[i] = ((fx0_send_cnt_zero[i]) |
((fx0_send_cnt_one[i]) & |fx0_total_credit_cnt_l2) |
(|fx0_total_credit_cnt_l2[0:3]));
assign fx1_credit_ok[i] = ((fx1_send_cnt_zero[i]) |
((fx1_send_cnt_one[i]) & |fx1_total_credit_cnt_l2) |
(|fx1_total_credit_cnt_l2[0:3]));
assign lq_cmdq_credit_ok[i] = ((lq_cmdq_send_cnt_zero[i]) |
((lq_cmdq_send_cnt_one[i]) & |lq_cmdq_total_credit_cnt_l2) |
(|lq_cmdq_total_credit_cnt_l2[0:3]));
assign sq_cmdq_credit_ok[i] = ((sq_cmdq_send_cnt_zero[i]) |
((sq_cmdq_send_cnt_one[i]) & |sq_cmdq_total_credit_cnt_l2) |
(|sq_cmdq_total_credit_cnt_l2[0:3]));
assign fu0_credit_ok[i] = ((fu0_send_cnt_zero[i]) |
((fu0_send_cnt_one[i]) & |fu0_total_credit_cnt_l2) |
(|fu0_total_credit_cnt_l2[0:3]));
assign fu1_credit_ok[i] = ((fu1_send_cnt_zero[i]) |
((fu1_send_cnt_one[i]) & |fu1_total_credit_cnt_l2) |
(|fu1_total_credit_cnt_l2[0:3]));
end
end
endgenerate
generate
if (`THREADS == 1)
begin : thread_gen_1
assign fx0_both_credit_ok = 1'b0;
assign fx1_both_credit_ok = 1'b0;
assign lq_cmdq_both_credit_ok = 1'b0;
assign sq_cmdq_both_credit_ok = 1'b0;
assign fu0_both_credit_ok = 1'b0;
assign fu1_both_credit_ok = 1'b0;
end
endgenerate
generate
if (`THREADS == 2)
begin : thread_gen_2
assign fx0_both_credit_ok = (fx0_send_cnt_zero[0] & fx0_send_cnt_zero[1]) |
(((fx0_send_cnt_zero[0] & fx0_send_cnt_one[1] ) | (fx0_send_cnt_zero[1] & fx0_send_cnt_one[0])) & (~(fx0_total_credit_cnt_l2 == {5{1'b0}}))) |
(((fx0_send_cnt_zero[0] | fx0_send_cnt_zero[1]) | (fx0_send_cnt_one[0] & fx0_send_cnt_one[1])) & |fx0_total_credit_cnt_l2[0:3]);
assign fx1_both_credit_ok = (fx1_send_cnt_zero[0] & fx1_send_cnt_zero[1]) |
(((fx1_send_cnt_zero[0] & fx1_send_cnt_one[1] ) | (fx1_send_cnt_zero[1] & fx1_send_cnt_one[0])) & (~(fx1_total_credit_cnt_l2 == {5{1'b0}}))) |
(((fx1_send_cnt_zero[0] | fx1_send_cnt_zero[1]) | (fx1_send_cnt_one[0] & fx1_send_cnt_one[1])) & |fx1_total_credit_cnt_l2[0:3]);
assign lq_cmdq_both_credit_ok = (lq_cmdq_send_cnt_zero[0] & lq_cmdq_send_cnt_zero[1]) |
(((lq_cmdq_send_cnt_zero[0] & lq_cmdq_send_cnt_one[1] ) | (lq_cmdq_send_cnt_zero[1] & lq_cmdq_send_cnt_one[0])) & (~(lq_cmdq_total_credit_cnt_l2 == {5{1'b0}}))) |
(((lq_cmdq_send_cnt_zero[0] | lq_cmdq_send_cnt_zero[1]) | (lq_cmdq_send_cnt_one[0] & lq_cmdq_send_cnt_one[1])) & |lq_cmdq_total_credit_cnt_l2[0:3]);
assign sq_cmdq_both_credit_ok = (sq_cmdq_send_cnt_zero[0] & sq_cmdq_send_cnt_zero[1]) |
(((sq_cmdq_send_cnt_zero[0] & sq_cmdq_send_cnt_one[1] ) | (sq_cmdq_send_cnt_zero[1] & sq_cmdq_send_cnt_one[0])) & (~(sq_cmdq_total_credit_cnt_l2 == {5{1'b0}}))) |
(((sq_cmdq_send_cnt_zero[0] | sq_cmdq_send_cnt_zero[1]) | (sq_cmdq_send_cnt_one[0] & sq_cmdq_send_cnt_one[1])) & |sq_cmdq_total_credit_cnt_l2[0:3]);
assign fu0_both_credit_ok = (fu0_send_cnt_zero[0] & fu0_send_cnt_zero[1]) |
(((fu0_send_cnt_zero[0] & fu0_send_cnt_one[1] ) | (fu0_send_cnt_zero[1] & fu0_send_cnt_one[0])) & (~(fu0_total_credit_cnt_l2 == {5{1'b0}}))) |
(((fu0_send_cnt_zero[0] | fu0_send_cnt_zero[1]) | (fu0_send_cnt_one[0] & fu0_send_cnt_one[1])) & |fu0_total_credit_cnt_l2[0:3]);
assign fu1_both_credit_ok = (fu1_send_cnt_zero[0] & fu1_send_cnt_zero[1]) |
(((fu1_send_cnt_zero[0] & fu1_send_cnt_one[1] ) | (fu1_send_cnt_zero[1] & fu1_send_cnt_one[0])) & (~(fu1_total_credit_cnt_l2 == {5{1'b0}}))) |
(((fu1_send_cnt_zero[0] | fu1_send_cnt_zero[1]) | (fu1_send_cnt_one[0] & fu1_send_cnt_one[1])) & |fu1_total_credit_cnt_l2[0:3]);
end
endgenerate
generate
begin : xhdl3
genvar i;
for (i = 0; i <= `THREADS - 1; i = i + 1)
begin : send_ok
assign send_instructions_all[i] = (fx0_both_credit_ok & fx1_both_credit_ok & lq_cmdq_both_credit_ok & sq_cmdq_both_credit_ok & fu0_both_credit_ok & fu1_both_credit_ok) &
(core_block_ok[i] & fx0_local_credit_ok[i] & fx1_local_credit_ok[i] & lq_cmdq_local_credit_ok[i] & sq_cmdq_local_credit_ok[i] &
fu0_local_credit_ok[i] & fu1_local_credit_ok[i] & (low_pri_mask_l2[i] & frn_fdis_iu6_i0_vld[i])) &
(~(|(core_block) | hold_instructions_l2));
assign send_instructions_local[i] = ((fx0_credit_ok[i] & fx1_credit_ok[i] & lq_cmdq_credit_ok[i] & sq_cmdq_credit_ok[i] & fu0_credit_ok[i] & fu1_credit_ok[i]) &
(core_block_ok[i] & fx0_local_credit_ok[i] & fx1_local_credit_ok[i] & lq_cmdq_local_credit_ok[i] & sq_cmdq_local_credit_ok[i] &
fu0_local_credit_ok[i] & fu1_local_credit_ok[i] & (low_pri_mask_l2[i] & frn_fdis_iu6_i0_vld[i])) &
(frn_fdis_iu6_i0_ucode[i][0] | (~(hold_instructions_l2))));
end
end
endgenerate
assign hold_instructions_d = |(mm_hold_req_d | hold_req_d | ivax_hold_req_d);
generate
if (`THREADS == 1)
begin : send_thread_gen_1
assign send_instructions[0] = (send_instructions_all[0] | send_instructions_local[0]) & frn_fdis_iu6_i0_vld[0];
end
endgenerate
generate
if (`THREADS == 2)
begin : send_thread_gen_2
assign send_instructions[0] = (send_instructions_all[0] | (last_thread_l2[1] & send_instructions_local[0]) | (~send_instructions_local[1] & send_instructions_local[0])) & frn_fdis_iu6_i0_vld[0];
assign send_instructions[1] = (send_instructions_all[1] | (last_thread_l2[0] & send_instructions_local[1]) | (~send_instructions_local[0] & send_instructions_local[1])) & frn_fdis_iu6_i0_vld[1];
end
endgenerate
assign fdis_frn_iu6_stall = frn_fdis_iu6_i0_vld & (~send_instructions);
assign last_thread_act = |send_instructions;
`ifdef THREADS1
assign last_thread_d = last_thread_l2[0];
`endif
`ifndef THREADS1
assign last_thread_d = {last_thread_l2[1:`THREADS - 1], last_thread_l2[0]};
`endif
generate
begin : local_credit_calc
genvar i;
for (i = 0; i <= `THREADS - 1; i = i + 1)
begin : local_credit_calc_thread
assign fx0_high_credit_cnt_plus1_temp[i] = fx0_high_credit_cnt_l2[i] + value_1[27:31];
assign fx0_high_credit_cnt_minus1_temp[i] = fx0_high_credit_cnt_l2[i] - value_1[27:31];
assign fx0_high_credit_cnt_minus2_temp[i] = fx0_high_credit_cnt_l2[i] - value_2[27:31];
assign fx0_med_credit_cnt_plus1_temp[i] = fx0_med_credit_cnt_l2[i] + value_1[27:31];
assign fx0_med_credit_cnt_minus1_temp[i] = fx0_med_credit_cnt_l2[i] - value_1[27:31];
assign fx0_med_credit_cnt_minus2_temp[i] = fx0_med_credit_cnt_l2[i] - value_2[27:31];
assign fx1_high_credit_cnt_plus1_temp[i] = fx1_high_credit_cnt_l2[i] + value_1[27:31];
assign fx1_high_credit_cnt_minus1_temp[i] = fx1_high_credit_cnt_l2[i] - value_1[27:31];
assign fx1_high_credit_cnt_minus2_temp[i] = fx1_high_credit_cnt_l2[i] - value_2[27:31];
assign fx1_med_credit_cnt_plus1_temp[i] = fx1_med_credit_cnt_l2[i] + value_1[27:31];
assign fx1_med_credit_cnt_minus1_temp[i] = fx1_med_credit_cnt_l2[i] - value_1[27:31];
assign fx1_med_credit_cnt_minus2_temp[i] = fx1_med_credit_cnt_l2[i] - value_2[27:31];
assign lq_cmdq_high_credit_cnt_plus1_temp[i] = lq_cmdq_high_credit_cnt_l2[i] + value_1[27:31];
assign lq_cmdq_high_credit_cnt_minus1_temp[i] = lq_cmdq_high_credit_cnt_l2[i] - value_1[27:31];
assign lq_cmdq_high_credit_cnt_minus2_temp[i] = lq_cmdq_high_credit_cnt_l2[i] - value_2[27:31];
assign lq_cmdq_med_credit_cnt_plus1_temp[i] = lq_cmdq_med_credit_cnt_l2[i] + value_1[27:31];
assign lq_cmdq_med_credit_cnt_minus1_temp[i] = lq_cmdq_med_credit_cnt_l2[i] - value_1[27:31];
assign lq_cmdq_med_credit_cnt_minus2_temp[i] = lq_cmdq_med_credit_cnt_l2[i] - value_2[27:31];
assign sq_cmdq_high_credit_cnt_plus1_temp[i] = sq_cmdq_high_credit_cnt_l2[i] + value_1[27:31];
assign sq_cmdq_high_credit_cnt_minus1_temp[i] = sq_cmdq_high_credit_cnt_l2[i] - value_1[27:31];
assign sq_cmdq_high_credit_cnt_minus2_temp[i] = sq_cmdq_high_credit_cnt_l2[i] - value_2[27:31];
assign sq_cmdq_med_credit_cnt_plus1_temp[i] = sq_cmdq_med_credit_cnt_l2[i] + value_1[27:31];
assign sq_cmdq_med_credit_cnt_minus1_temp[i] = sq_cmdq_med_credit_cnt_l2[i] - value_1[27:31];
assign sq_cmdq_med_credit_cnt_minus2_temp[i] = sq_cmdq_med_credit_cnt_l2[i] - value_2[27:31];
assign fu0_high_credit_cnt_plus1_temp[i] = fu0_high_credit_cnt_l2[i] + value_1[27:31];
assign fu0_high_credit_cnt_minus1_temp[i] = fu0_high_credit_cnt_l2[i] - value_1[27:31];
assign fu0_high_credit_cnt_minus2_temp[i] = fu0_high_credit_cnt_l2[i] - value_2[27:31];
assign fu0_med_credit_cnt_plus1_temp[i] = fu0_med_credit_cnt_l2[i] + value_1[27:31];
assign fu0_med_credit_cnt_minus1_temp[i] = fu0_med_credit_cnt_l2[i] - value_1[27:31];
assign fu0_med_credit_cnt_minus2_temp[i] = fu0_med_credit_cnt_l2[i] - value_2[27:31];
assign fu1_high_credit_cnt_plus1_temp[i] = fu1_high_credit_cnt_l2[i] + value_1[27:31];
assign fu1_high_credit_cnt_minus1_temp[i] = fu1_high_credit_cnt_l2[i] - value_1[27:31];
assign fu1_high_credit_cnt_minus2_temp[i] = fu1_high_credit_cnt_l2[i] - value_2[27:31];
assign fu1_med_credit_cnt_plus1_temp[i] = fu1_med_credit_cnt_l2[i] + value_1[27:31];
assign fu1_med_credit_cnt_minus1_temp[i] = fu1_med_credit_cnt_l2[i] - value_1[27:31];
assign fu1_med_credit_cnt_minus2_temp[i] = fu1_med_credit_cnt_l2[i] - value_2[27:31];
assign fx0_high_credit_cnt_plus1[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_high_fx0_cnt[i] :
(fx0_high_credit_cnt_plus1_temp[i] > spr_high_fx0_cnt[i]) ? spr_high_fx0_cnt[i] :
fx0_high_credit_cnt_plus1_temp[i];
assign fx0_high_credit_cnt_minus1[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_high_fx0_cnt[i] :
(fx0_high_credit_cnt_minus1_temp[i][0] == 1'b1) ? 5'b0 :
fx0_high_credit_cnt_minus1_temp[i];
assign fx0_high_credit_cnt_minus2[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_high_fx0_cnt[i] :
(fx0_high_credit_cnt_minus2_temp[i][0] == 1'b1) ? 5'b0 :
fx0_high_credit_cnt_minus2_temp[i];
assign fx0_med_credit_cnt_plus1[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_med_fx0_cnt[i] :
(fx0_med_credit_cnt_plus1_temp[i] > spr_med_fx0_cnt[i]) ? spr_med_fx0_cnt[i] :
fx0_med_credit_cnt_plus1_temp[i];
assign fx0_med_credit_cnt_minus1[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_med_fx0_cnt[i] :
(fx0_med_credit_cnt_minus1_temp[i][0] == 1'b1) ? 5'b0 :
fx0_med_credit_cnt_minus1_temp[i];
assign fx0_med_credit_cnt_minus2[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_med_fx0_cnt[i] :
(fx0_med_credit_cnt_minus2_temp[i][0] == 1'b1) ? 5'b0 :
fx0_med_credit_cnt_minus2_temp[i];
assign fx1_high_credit_cnt_plus1[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_high_fx1_cnt[i] :
(fx1_high_credit_cnt_plus1_temp[i] > spr_high_fx1_cnt[i]) ? spr_high_fx1_cnt[i] :
fx1_high_credit_cnt_plus1_temp[i];
assign fx1_high_credit_cnt_minus1[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_high_fx1_cnt[i] :
(fx1_high_credit_cnt_minus1_temp[i][0] == 1'b1) ? 5'b0 :
fx1_high_credit_cnt_minus1_temp[i];
assign fx1_high_credit_cnt_minus2[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_high_fx1_cnt[i] :
(fx1_high_credit_cnt_minus2_temp[i][0] == 1'b1) ? 5'b0 :
fx1_high_credit_cnt_minus2_temp[i];
assign fx1_med_credit_cnt_plus1[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_med_fx1_cnt[i] :
(fx1_med_credit_cnt_plus1_temp[i] > spr_med_fx1_cnt[i]) ? spr_med_fx1_cnt[i] :
fx1_med_credit_cnt_plus1_temp[i];
assign fx1_med_credit_cnt_minus1[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_med_fx1_cnt[i] :
(fx1_med_credit_cnt_minus1_temp[i][0] == 1'b1) ? 5'b0 :
fx1_med_credit_cnt_minus1_temp[i];
assign fx1_med_credit_cnt_minus2[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_med_fx1_cnt[i] :
(fx1_med_credit_cnt_minus2_temp[i][0] == 1'b1) ? 5'b0 :
fx1_med_credit_cnt_minus2_temp[i];
assign lq_cmdq_high_credit_cnt_plus1[i] = (spr_cpcr_we[i] == 1'b1) ? spr_high_lq_cnt[i] :
(lq_cmdq_high_credit_cnt_plus1_temp[i] > spr_high_lq_cnt[i]) ? spr_high_lq_cnt[i] :
lq_cmdq_high_credit_cnt_plus1_temp[i];
assign lq_cmdq_high_credit_cnt_minus1[i] = (spr_cpcr_we[i] == 1'b1) ? spr_high_lq_cnt[i] :
(lq_cmdq_high_credit_cnt_minus1_temp[i][0] == 1'b1) ? 5'b0 :
lq_cmdq_high_credit_cnt_minus1_temp[i];
assign lq_cmdq_high_credit_cnt_minus2[i] = (spr_cpcr_we[i] == 1'b1) ? spr_high_lq_cnt[i] :
(lq_cmdq_high_credit_cnt_minus2_temp[i][0] == 1'b1) ? 5'b0 :
lq_cmdq_high_credit_cnt_minus2_temp[i];
assign lq_cmdq_med_credit_cnt_plus1[i] = (spr_cpcr_we[i] == 1'b1) ? spr_med_lq_cnt[i] :
(lq_cmdq_med_credit_cnt_plus1_temp[i] > spr_med_lq_cnt[i]) ? spr_med_lq_cnt[i] :
lq_cmdq_med_credit_cnt_plus1_temp[i];
assign lq_cmdq_med_credit_cnt_minus1[i] = (spr_cpcr_we[i] == 1'b1) ? spr_med_lq_cnt[i] :
(lq_cmdq_med_credit_cnt_minus1_temp[i][0] == 1'b1) ? 5'b0 :
lq_cmdq_med_credit_cnt_minus1_temp[i];
assign lq_cmdq_med_credit_cnt_minus2[i] = (spr_cpcr_we[i] == 1'b1) ? spr_med_lq_cnt[i] :
(lq_cmdq_med_credit_cnt_minus2_temp[i][0] == 1'b1) ? 5'b0 :
lq_cmdq_med_credit_cnt_minus2_temp[i];
assign sq_cmdq_high_credit_cnt_plus1[i] = (spr_cpcr_we[i] == 1'b1) ? spr_high_sq_cnt[i] :
(sq_cmdq_high_credit_cnt_plus1_temp[i] > spr_high_sq_cnt[i]) ? spr_high_sq_cnt[i] :
sq_cmdq_high_credit_cnt_plus1_temp[i];
assign sq_cmdq_high_credit_cnt_minus1[i] = (spr_cpcr_we[i] == 1'b1) ? spr_high_sq_cnt[i] :
(sq_cmdq_high_credit_cnt_minus1_temp[i][0] == 1'b1) ? 5'b0 :
sq_cmdq_high_credit_cnt_minus1_temp[i];
assign sq_cmdq_high_credit_cnt_minus2[i] = (spr_cpcr_we[i] == 1'b1) ? spr_high_sq_cnt[i] :
(sq_cmdq_high_credit_cnt_minus2_temp[i][0] == 1'b1) ? 5'b0 :
sq_cmdq_high_credit_cnt_minus2_temp[i];
assign sq_cmdq_med_credit_cnt_plus1[i] = (spr_cpcr_we[i] == 1'b1) ? spr_med_sq_cnt[i] :
(sq_cmdq_med_credit_cnt_plus1_temp[i] > spr_med_sq_cnt[i]) ? spr_med_sq_cnt[i] :
sq_cmdq_med_credit_cnt_plus1_temp[i];
assign sq_cmdq_med_credit_cnt_minus1[i] = (spr_cpcr_we[i] == 1'b1) ? spr_med_sq_cnt[i] :
(sq_cmdq_med_credit_cnt_minus1_temp[i][0] == 1'b1) ? 5'b0 :
sq_cmdq_med_credit_cnt_minus1_temp[i];
assign sq_cmdq_med_credit_cnt_minus2[i] = (spr_cpcr_we[i] == 1'b1) ? spr_med_sq_cnt[i] :
(sq_cmdq_med_credit_cnt_minus2_temp[i][0] == 1'b1) ? 5'b0 :
sq_cmdq_med_credit_cnt_minus2_temp[i];
assign fu0_high_credit_cnt_plus1[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_high_fu0_cnt[i] :
(fu0_high_credit_cnt_plus1_temp[i] > spr_high_fu0_cnt[i]) ? spr_high_fu0_cnt[i] :
fu0_high_credit_cnt_plus1_temp[i];
assign fu0_high_credit_cnt_minus1[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_high_fu0_cnt[i] :
(fu0_high_credit_cnt_minus1_temp[i][0] == 1'b1) ? 5'b0 :
fu0_high_credit_cnt_minus1_temp[i];
assign fu0_high_credit_cnt_minus2[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_high_fu0_cnt[i] :
(fu0_high_credit_cnt_minus2_temp[i][0] == 1'b1) ? 5'b0 :
fu0_high_credit_cnt_minus2_temp[i];
assign fu0_med_credit_cnt_plus1[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_med_fu0_cnt[i] :
(fu0_med_credit_cnt_plus1_temp[i] > spr_med_fu0_cnt[i]) ? spr_med_fu0_cnt[i] :
fu0_med_credit_cnt_plus1_temp[i];
assign fu0_med_credit_cnt_minus1[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_med_fu0_cnt[i] :
(fu0_med_credit_cnt_minus1_temp[i][0] == 1'b1) ? 5'b0 :
fu0_med_credit_cnt_minus1_temp[i];
assign fu0_med_credit_cnt_minus2[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_med_fu0_cnt[i] :
(fu0_med_credit_cnt_minus2_temp[i][0] == 1'b1) ? 5'b0 :
fu0_med_credit_cnt_minus2_temp[i];
assign fu1_high_credit_cnt_plus1[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_high_fu1_cnt[i] :
(fu1_high_credit_cnt_plus1_temp[i] > spr_high_fu1_cnt[i]) ? spr_high_fu1_cnt[i] :
fu1_high_credit_cnt_plus1_temp[i];
assign fu1_high_credit_cnt_minus1[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_high_fu1_cnt[i] :
(fu1_high_credit_cnt_minus1_temp[i][0] == 1'b1) ? 5'b0 :
fu1_high_credit_cnt_minus1_temp[i];
assign fu1_high_credit_cnt_minus2[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_high_fu1_cnt[i] :
(fu1_high_credit_cnt_minus2_temp[i][0] == 1'b1) ? 5'b0 :
fu1_high_credit_cnt_minus2_temp[i];
assign fu1_med_credit_cnt_plus1[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_med_fu1_cnt[i] :
(fu1_med_credit_cnt_plus1_temp[i] > spr_med_fu1_cnt[i]) ? spr_med_fu1_cnt[i] :
fu1_med_credit_cnt_plus1_temp[i];
assign fu1_med_credit_cnt_minus1[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_med_fu1_cnt[i] :
(fu1_med_credit_cnt_minus1_temp[i][0] == 1'b1) ? 5'b0 :
fu1_med_credit_cnt_minus1_temp[i];
assign fu1_med_credit_cnt_minus2[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_med_fu1_cnt[i] :
(fu1_med_credit_cnt_minus2_temp[i][0] == 1'b1) ? 5'b0 :
fu1_med_credit_cnt_minus2_temp[i];
end
end
endgenerate
generate
begin : xhdl4
genvar i;
for (i = 0; i <= `THREADS - 1; i = i + 1)
begin : credit_proc
always @(*)
begin: fx0_credit_proc
fx0_high_credit_cnt_d[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_high_fx0_cnt[i] : fx0_high_credit_cnt_l2[i];
fx0_med_credit_cnt_d[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_med_fx0_cnt[i] : fx0_med_credit_cnt_l2[i];
fx0_credit_cnt_minus_1[i] = 1'b0;
fx0_credit_cnt_minus_2[i] = 1'b0;
fx0_credit_cnt_plus_1[i] = 1'b0;
fx0_credit_cnt_zero[i] = 1'b1;
if (rv_iu_fx0_credit_free[i] == 1'b1 & (send_instructions[i] == 1'b0 | fx0_send_cnt[i] == 2'b00))
begin
fx0_high_credit_cnt_d[i] = fx0_high_credit_cnt_plus1[i];
fx0_med_credit_cnt_d[i] = fx0_med_credit_cnt_plus1[i];
fx0_credit_cnt_plus_1[i] = 1'b1;
fx0_credit_cnt_zero[i] = 1'b0;
end
if ((send_instructions[i] == 1'b1) & (((fx0_send_cnt[i][0] == 1'b1 ^ fx0_send_cnt[i][1] == 1'b1) & rv_iu_fx0_credit_free[i] == 1'b0) | ((fx0_send_cnt[i] == 2'b11) & rv_iu_fx0_credit_free[i] == 1'b1)))
begin
fx0_high_credit_cnt_d[i] = fx0_high_credit_cnt_minus1[i];
fx0_med_credit_cnt_d[i] = fx0_med_credit_cnt_minus1[i];
fx0_credit_cnt_minus_1[i] = 1'b1;
fx0_credit_cnt_zero[i] = 1'b0;
end
if (send_instructions[i] == 1'b1 & fx0_send_cnt[i] == 2'b11 & rv_iu_fx0_credit_free[i] == 1'b0)
begin
fx0_high_credit_cnt_d[i] = fx0_high_credit_cnt_minus2[i];
fx0_med_credit_cnt_d[i] = fx0_med_credit_cnt_minus2[i];
fx0_credit_cnt_minus_2[i] = 1'b1;
fx0_credit_cnt_zero[i] = 1'b0;
end
end
always @(*)
begin: fx1_credit_proc
fx1_high_credit_cnt_d[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_high_fx1_cnt[i] : fx1_high_credit_cnt_l2[i];
fx1_med_credit_cnt_d[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_med_fx1_cnt[i] : fx1_med_credit_cnt_l2[i];
fx1_credit_cnt_minus_1[i] = 1'b0;
fx1_credit_cnt_minus_2[i] = 1'b0;
fx1_credit_cnt_plus_1[i] = 1'b0;
fx1_credit_cnt_zero[i] = 1'b1;
if ((rv_iu_fx1_credit_free[i] == 1'b1) & (send_instructions[i] == 1'b0 | fx1_send_cnt[i] == 2'b00))
begin
fx1_high_credit_cnt_d[i] = fx1_high_credit_cnt_plus1[i];
fx1_med_credit_cnt_d[i] = fx1_med_credit_cnt_plus1[i];
fx1_credit_cnt_plus_1[i] = 1'b1;
fx1_credit_cnt_zero[i] = 1'b0;
end
if ((send_instructions[i] == 1'b1) & (((fx1_send_cnt[i][0] == 1'b1 ^ fx1_send_cnt[i][1] == 1'b1) & rv_iu_fx1_credit_free[i] == 1'b0) | ((fx1_send_cnt[i] == 2'b11) & rv_iu_fx1_credit_free[i] == 1'b1)))
begin
fx1_high_credit_cnt_d[i] = fx1_high_credit_cnt_minus1[i];
fx1_med_credit_cnt_d[i] = fx1_med_credit_cnt_minus1[i];
fx1_credit_cnt_minus_1[i] = 1'b1;
fx1_credit_cnt_zero[i] = 1'b0;
end
if (send_instructions[i] == 1'b1 & fx1_send_cnt[i] == 2'b11 & rv_iu_fx1_credit_free[i] == 1'b0)
begin
fx1_high_credit_cnt_d[i] = fx1_high_credit_cnt_minus2[i];
fx1_med_credit_cnt_d[i] = fx1_med_credit_cnt_minus2[i];
fx1_credit_cnt_minus_2[i] = 1'b1;
fx1_credit_cnt_zero[i] = 1'b0;
end
end
always @(*)
begin: lq_cmdq_credit_proc
lq_cmdq_high_credit_cnt_d[i] = (spr_cpcr_we[i] == 1'b1) ? spr_high_lq_cnt[i] : lq_cmdq_high_credit_cnt_l2[i];
lq_cmdq_med_credit_cnt_d[i] = (spr_cpcr_we[i] == 1'b1) ? spr_med_lq_cnt[i] : lq_cmdq_med_credit_cnt_l2[i];
lq_cmdq_credit_cnt_minus_1[i] = 1'b0;
lq_cmdq_credit_cnt_minus_2[i] = 1'b0;
lq_cmdq_credit_cnt_plus_1[i] = 1'b0;
lq_cmdq_credit_cnt_zero[i] = 1'b1;
if ((lq_iu_credit_free[i] == 1'b1) & (send_instructions[i] == 1'b0 | lq_cmdq_send_cnt[i] == 2'b00))
begin
lq_cmdq_high_credit_cnt_d[i] = lq_cmdq_high_credit_cnt_plus1[i];
lq_cmdq_med_credit_cnt_d[i] = lq_cmdq_med_credit_cnt_plus1[i];
lq_cmdq_credit_cnt_plus_1[i] = 1'b1;
lq_cmdq_credit_cnt_zero[i] = 1'b0;
end
if ((send_instructions[i] == 1'b1) & (((lq_cmdq_send_cnt[i][0] == 1'b1 ^ lq_cmdq_send_cnt[i][1] == 1'b1) & lq_iu_credit_free[i] == 1'b0) | ((lq_cmdq_send_cnt[i] == 2'b11) & lq_iu_credit_free[i] == 1'b1)))
begin
lq_cmdq_high_credit_cnt_d[i] = lq_cmdq_high_credit_cnt_minus1[i];
lq_cmdq_med_credit_cnt_d[i] = lq_cmdq_med_credit_cnt_minus1[i];
lq_cmdq_credit_cnt_minus_1[i] = 1'b1;
lq_cmdq_credit_cnt_zero[i] = 1'b0;
end
if (send_instructions[i] == 1'b1 & lq_cmdq_send_cnt[i] == 2'b11 & lq_iu_credit_free[i] == 1'b0)
begin
lq_cmdq_high_credit_cnt_d[i] = lq_cmdq_high_credit_cnt_minus2[i];
lq_cmdq_med_credit_cnt_d[i] = lq_cmdq_med_credit_cnt_minus2[i];
lq_cmdq_credit_cnt_minus_2[i] = 1'b1;
lq_cmdq_credit_cnt_zero[i] = 1'b0;
end
end
always @(*)
begin: sq_cmdq_credit_proc
sq_cmdq_high_credit_cnt_d[i] = (spr_cpcr_we[i] == 1'b1) ? spr_high_sq_cnt[i] : sq_cmdq_high_credit_cnt_l2[i];
sq_cmdq_med_credit_cnt_d[i] = (spr_cpcr_we[i] == 1'b1) ? spr_med_sq_cnt[i] : sq_cmdq_med_credit_cnt_l2[i];
sq_cmdq_credit_cnt_minus_1[i] = 1'b0;
sq_cmdq_credit_cnt_minus_2[i] = 1'b0;
sq_cmdq_credit_cnt_plus_1[i] = 1'b0;
sq_cmdq_credit_cnt_zero[i] = 1'b1;
if ((sq_iu_credit_free[i] == 1'b1) & (send_instructions[i] == 1'b0 | sq_cmdq_send_cnt[i] == 2'b00))
begin
sq_cmdq_high_credit_cnt_d[i] = sq_cmdq_high_credit_cnt_plus1[i];
sq_cmdq_med_credit_cnt_d[i] = sq_cmdq_med_credit_cnt_plus1[i];
sq_cmdq_credit_cnt_plus_1[i] = 1'b1;
sq_cmdq_credit_cnt_zero[i] = 1'b0;
end
if ((send_instructions[i] == 1'b1) & (((sq_cmdq_send_cnt[i][0] == 1'b1 ^ sq_cmdq_send_cnt[i][1] == 1'b1) & sq_iu_credit_free[i] == 1'b0) | ((sq_cmdq_send_cnt[i] == 2'b11) & sq_iu_credit_free[i] == 1'b1)))
begin
sq_cmdq_high_credit_cnt_d[i] = sq_cmdq_high_credit_cnt_minus1[i];
sq_cmdq_med_credit_cnt_d[i] = sq_cmdq_med_credit_cnt_minus1[i];
sq_cmdq_credit_cnt_minus_1[i] = 1'b1;
sq_cmdq_credit_cnt_zero[i] = 1'b0;
end
if (send_instructions[i] == 1'b1 & sq_cmdq_send_cnt[i] == 2'b11 & sq_iu_credit_free[i] == 1'b0)
begin
sq_cmdq_high_credit_cnt_d[i] = sq_cmdq_high_credit_cnt_minus2[i];
sq_cmdq_med_credit_cnt_d[i] = sq_cmdq_med_credit_cnt_minus2[i];
sq_cmdq_credit_cnt_minus_2[i] = 1'b1;
sq_cmdq_credit_cnt_zero[i] = 1'b0;
end
end
always @(*)
begin: fu0_credit_proc
fu0_high_credit_cnt_d[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_high_fu0_cnt[i] : fu0_high_credit_cnt_l2[i];
fu0_med_credit_cnt_d[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_med_fu0_cnt[i] : fu0_med_credit_cnt_l2[i];
fu0_credit_cnt_minus_1[i] = 1'b0;
fu0_credit_cnt_minus_2[i] = 1'b0;
fu0_credit_cnt_plus_1[i] = 1'b0;
fu0_credit_cnt_zero[i] = 1'b1;
if ((axu0_iu_credit_free[i] == 1'b1) & (send_instructions[i] == 1'b0 | fu0_send_cnt[i] == 2'b00))
begin
fu0_high_credit_cnt_d[i] = fu0_high_credit_cnt_plus1[i];
fu0_med_credit_cnt_d[i] = fu0_med_credit_cnt_plus1[i];
fu0_credit_cnt_plus_1[i] = 1'b1;
fu0_credit_cnt_zero[i] = 1'b0;
end
if ((send_instructions[i] == 1'b1) & (((fu0_send_cnt[i][0] == 1'b1 ^ fu0_send_cnt[i][1] == 1'b1) & axu0_iu_credit_free[i] == 1'b0) | ((fu0_send_cnt[i] == 2'b11) & axu0_iu_credit_free[i] == 1'b1)))
begin
fu0_high_credit_cnt_d[i] = fu0_high_credit_cnt_minus1[i];
fu0_med_credit_cnt_d[i] = fu0_med_credit_cnt_minus1[i];
fu0_credit_cnt_minus_1[i] = 1'b1;
fu0_credit_cnt_zero[i] = 1'b0;
end
if (send_instructions[i] == 1'b1 & fu0_send_cnt[i] == 2'b11 & axu0_iu_credit_free[i] == 1'b0)
begin
fu0_high_credit_cnt_d[i] = fu0_high_credit_cnt_minus2[i];
fu0_med_credit_cnt_d[i] = fu0_med_credit_cnt_minus2[i];
fu0_credit_cnt_minus_2[i] = 1'b1;
fu0_credit_cnt_zero[i] = 1'b0;
end
end
always @(*)
begin: fu1_credit_proc
fu1_high_credit_cnt_d[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_high_fu1_cnt[i] : fu1_high_credit_cnt_l2[i];
fu1_med_credit_cnt_d[i] = ((spr_cpcr_we[i] == 1'b1) | (&cp_flush_l2 == 1'b1)) ? spr_med_fu1_cnt[i] : fu1_med_credit_cnt_l2[i];
fu1_credit_cnt_minus_1[i] = 1'b0;
fu1_credit_cnt_minus_2[i] = 1'b0;
fu1_credit_cnt_plus_1[i] = 1'b0;
fu1_credit_cnt_zero[i] = 1'b1;
if ((axu1_iu_credit_free[i] == 1'b1) & (send_instructions[i] == 1'b0 | fu1_send_cnt[i] == 2'b00))
begin
fu1_high_credit_cnt_d[i] = fu1_high_credit_cnt_plus1[i];
fu1_med_credit_cnt_d[i] = fu1_med_credit_cnt_plus1[i];
fu1_credit_cnt_plus_1[i] = 1'b1;
fu1_credit_cnt_zero[i] = 1'b0;
end
if ((send_instructions[i] == 1'b1) & (((fu1_send_cnt[i][0] == 1'b1 ^ fu1_send_cnt[i][1] == 1'b1) & axu1_iu_credit_free[i] == 1'b0) | ((fu1_send_cnt[i] == 2'b11) & axu1_iu_credit_free[i] == 1'b1)))
begin
fu1_high_credit_cnt_d[i] = fu1_high_credit_cnt_minus1[i];
fu1_med_credit_cnt_d[i] = fu1_med_credit_cnt_minus1[i];
fu1_credit_cnt_minus_1[i] = 1'b1;
fu1_credit_cnt_zero[i] = 1'b0;
end
if (send_instructions[i] == 1'b1 & fu1_send_cnt[i] == 2'b11 & axu1_iu_credit_free[i] == 1'b0)
begin
fu1_high_credit_cnt_d[i] = fu1_high_credit_cnt_minus2[i];
fu1_med_credit_cnt_d[i] = fu1_med_credit_cnt_minus2[i];
fu1_credit_cnt_minus_2[i] = 1'b1;
fu1_credit_cnt_zero[i] = 1'b0;
end
end
end
end
endgenerate
//wtf (THREADS1 is def'd)
// iverilog sez: ../../verilog/work/iuq_dispatch.v:2322: warning: @* found no sensitivities so it will never trigger.
// seems to be correct behavior - block won't be entered without a value change
// make it initial, or a generate?
`ifdef THREADS1
//always @(*)
initial
begin: thread1_credit_proc
fx0_credit_cnt_minus_1[1] = 1'b0;
fx0_credit_cnt_minus_2[1] = 1'b0;
fx0_credit_cnt_plus_1[1] = 1'b0;
fx0_credit_cnt_zero[1] = 1'b1;
fx1_credit_cnt_minus_1[1] = 1'b0;
fx1_credit_cnt_minus_2[1] = 1'b0;
fx1_credit_cnt_plus_1[1] = 1'b0;
fx1_credit_cnt_zero[1] = 1'b1;
lq_cmdq_credit_cnt_minus_1[1] = 1'b0;
lq_cmdq_credit_cnt_minus_2[1] = 1'b0;
lq_cmdq_credit_cnt_plus_1[1] = 1'b0;
lq_cmdq_credit_cnt_zero[1] = 1'b1;
sq_cmdq_credit_cnt_minus_1[1] = 1'b0;
sq_cmdq_credit_cnt_minus_2[1] = 1'b0;
sq_cmdq_credit_cnt_plus_1[1] = 1'b0;
sq_cmdq_credit_cnt_zero[1] = 1'b1;
fu0_credit_cnt_minus_1[1] = 1'b0;
fu0_credit_cnt_minus_2[1] = 1'b0;
fu0_credit_cnt_plus_1[1] = 1'b0;
fu0_credit_cnt_zero[1] = 1'b1;
fu1_credit_cnt_minus_1[1] = 1'b0;
fu1_credit_cnt_minus_2[1] = 1'b0;
fu1_credit_cnt_plus_1[1] = 1'b0;
fu1_credit_cnt_zero[1] = 1'b1;
end
`endif
always @(*)
begin: fx0_total_credit_proc
fx0_total_credit_cnt_d = fx0_total_credit_cnt_l2;
if (|spr_cpcr_we == 1'b1 | &cp_flush_l2 == 1'b1)
fx0_total_credit_cnt_d = spr_cpcr0_fx0_cnt;
else
begin
if(fx0_credit_cnt_minus_2[0] & fx0_credit_cnt_minus_2[1])
fx0_total_credit_cnt_d = fx0_total_credit_cnt_l2 - value_4[27:31];
if((fx0_credit_cnt_minus_2[0] & fx0_credit_cnt_minus_1[1]) | (fx0_credit_cnt_minus_1[0] & fx0_credit_cnt_minus_2[1]))
fx0_total_credit_cnt_d = fx0_total_credit_cnt_l2 - value_3[27:31];
if((fx0_credit_cnt_minus_2[0] & fx0_credit_cnt_zero[1]) | (fx0_credit_cnt_minus_1[0] & fx0_credit_cnt_minus_1[1]) | (fx0_credit_cnt_zero[0] & fx0_credit_cnt_minus_2[1]))
fx0_total_credit_cnt_d = fx0_total_credit_cnt_l2 - value_2[27:31];
if((fx0_credit_cnt_minus_2[0] & fx0_credit_cnt_plus_1[1]) | (fx0_credit_cnt_minus_1[0] & fx0_credit_cnt_zero[1]) | (fx0_credit_cnt_zero[0] & fx0_credit_cnt_minus_1[1]) | (fx0_credit_cnt_plus_1[0] & fx0_credit_cnt_minus_2[1]))
fx0_total_credit_cnt_d = fx0_total_credit_cnt_l2 - value_1[27:31];
if((fx0_credit_cnt_zero[0] & fx0_credit_cnt_plus_1[1]) | (fx0_credit_cnt_plus_1[0] & fx0_credit_cnt_zero[1]))
fx0_total_credit_cnt_d = fx0_total_credit_cnt_l2 + value_1[27:31];
if(fx0_credit_cnt_plus_1[0] & fx0_credit_cnt_plus_1[1])
fx0_total_credit_cnt_d = fx0_total_credit_cnt_l2 + value_2[27:31];
end
end
always @(*)
begin: fx1_total_credit_proc
fx1_total_credit_cnt_d = fx1_total_credit_cnt_l2;
if (|spr_cpcr_we == 1'b1 | &cp_flush_l2 == 1'b1)
fx1_total_credit_cnt_d = spr_cpcr0_fx1_cnt;
else
begin
if(fx1_credit_cnt_minus_2[0] & fx1_credit_cnt_minus_2[1])
fx1_total_credit_cnt_d = fx1_total_credit_cnt_l2 - value_4[27:31];
if((fx1_credit_cnt_minus_2[0] & fx1_credit_cnt_minus_1[1]) | (fx1_credit_cnt_minus_1[0] & fx1_credit_cnt_minus_2[1]))
fx1_total_credit_cnt_d = fx1_total_credit_cnt_l2 - value_3[27:31];
if((fx1_credit_cnt_minus_2[0] & fx1_credit_cnt_zero[1]) | (fx1_credit_cnt_minus_1[0] & fx1_credit_cnt_minus_1[1]) | (fx1_credit_cnt_zero[0] & fx1_credit_cnt_minus_2[1]))
fx1_total_credit_cnt_d = fx1_total_credit_cnt_l2 - value_2[27:31];
if((fx1_credit_cnt_minus_2[0] & fx1_credit_cnt_plus_1[1]) | (fx1_credit_cnt_minus_1[0] & fx1_credit_cnt_zero[1]) | (fx1_credit_cnt_zero[0] & fx1_credit_cnt_minus_1[1]) | (fx1_credit_cnt_plus_1[0] & fx1_credit_cnt_minus_2[1]))
fx1_total_credit_cnt_d = fx1_total_credit_cnt_l2 - value_1[27:31];
if((fx1_credit_cnt_zero[0] & fx1_credit_cnt_plus_1[1]) | (fx1_credit_cnt_plus_1[0] & fx1_credit_cnt_zero[1]))
fx1_total_credit_cnt_d = fx1_total_credit_cnt_l2 + value_1[27:31];
if(fx1_credit_cnt_plus_1[0] & fx1_credit_cnt_plus_1[1])
fx1_total_credit_cnt_d = fx1_total_credit_cnt_l2 + value_2[27:31];
end
end
always @(*)
begin: lq_cmdq_total_credit_proc
lq_cmdq_total_credit_cnt_d = lq_cmdq_total_credit_cnt_l2;
if (|spr_cpcr_we == 1'b1)
lq_cmdq_total_credit_cnt_d = spr_cpcr0_lq_cnt;
else
begin
if(lq_cmdq_credit_cnt_minus_2[0] & lq_cmdq_credit_cnt_minus_2[1])
lq_cmdq_total_credit_cnt_d = lq_cmdq_total_credit_cnt_l2 - value_4[27:31];
if((lq_cmdq_credit_cnt_minus_2[0] & lq_cmdq_credit_cnt_minus_1[1]) | (lq_cmdq_credit_cnt_minus_1[0] & lq_cmdq_credit_cnt_minus_2[1]))
lq_cmdq_total_credit_cnt_d = lq_cmdq_total_credit_cnt_l2 - value_3[27:31];
if((lq_cmdq_credit_cnt_minus_2[0] & lq_cmdq_credit_cnt_zero[1]) | (lq_cmdq_credit_cnt_minus_1[0] & lq_cmdq_credit_cnt_minus_1[1]) | (lq_cmdq_credit_cnt_zero[0] & lq_cmdq_credit_cnt_minus_2[1]))
lq_cmdq_total_credit_cnt_d = lq_cmdq_total_credit_cnt_l2 - value_2[27:31];
if((lq_cmdq_credit_cnt_minus_2[0] & lq_cmdq_credit_cnt_plus_1[1]) | (lq_cmdq_credit_cnt_minus_1[0] & lq_cmdq_credit_cnt_zero[1]) | (lq_cmdq_credit_cnt_zero[0] & lq_cmdq_credit_cnt_minus_1[1]) |
(lq_cmdq_credit_cnt_plus_1[0] & lq_cmdq_credit_cnt_minus_2[1]))
lq_cmdq_total_credit_cnt_d = lq_cmdq_total_credit_cnt_l2 - value_1[27:31];
if((lq_cmdq_credit_cnt_zero[0] & lq_cmdq_credit_cnt_plus_1[1]) | (lq_cmdq_credit_cnt_plus_1[0] & lq_cmdq_credit_cnt_zero[1]))
lq_cmdq_total_credit_cnt_d = lq_cmdq_total_credit_cnt_l2 + value_1[27:31];
if(lq_cmdq_credit_cnt_plus_1[0] & lq_cmdq_credit_cnt_plus_1[1])
lq_cmdq_total_credit_cnt_d = lq_cmdq_total_credit_cnt_l2 + value_2[27:31];
end
end
always @(*)
begin: sq_cmdq_total_credit_proc
sq_cmdq_total_credit_cnt_d = sq_cmdq_total_credit_cnt_l2;
if (|spr_cpcr_we == 1'b1)
sq_cmdq_total_credit_cnt_d = spr_cpcr0_sq_cnt;
else
begin
if(sq_cmdq_credit_cnt_minus_2[0] & sq_cmdq_credit_cnt_minus_2[1])
sq_cmdq_total_credit_cnt_d = sq_cmdq_total_credit_cnt_l2 - value_4[27:31];
if((sq_cmdq_credit_cnt_minus_2[0] & sq_cmdq_credit_cnt_minus_1[1]) | (sq_cmdq_credit_cnt_minus_1[0] & sq_cmdq_credit_cnt_minus_2[1]))
sq_cmdq_total_credit_cnt_d = sq_cmdq_total_credit_cnt_l2 - value_3[27:31];
if((sq_cmdq_credit_cnt_minus_2[0] & sq_cmdq_credit_cnt_zero[1]) | (sq_cmdq_credit_cnt_minus_1[0] & sq_cmdq_credit_cnt_minus_1[1]) |
(sq_cmdq_credit_cnt_zero[0] & sq_cmdq_credit_cnt_minus_2[1]))
sq_cmdq_total_credit_cnt_d = sq_cmdq_total_credit_cnt_l2 - value_2[27:31];
if((sq_cmdq_credit_cnt_minus_2[0] & sq_cmdq_credit_cnt_plus_1[1]) | (sq_cmdq_credit_cnt_minus_1[0] & sq_cmdq_credit_cnt_zero[1]) |
(sq_cmdq_credit_cnt_zero[0] & sq_cmdq_credit_cnt_minus_1[1]) | (sq_cmdq_credit_cnt_plus_1[0] & sq_cmdq_credit_cnt_minus_2[1]))
sq_cmdq_total_credit_cnt_d = sq_cmdq_total_credit_cnt_l2 - value_1[27:31];
if((sq_cmdq_credit_cnt_zero[0] & sq_cmdq_credit_cnt_plus_1[1]) | (sq_cmdq_credit_cnt_plus_1[0] & sq_cmdq_credit_cnt_zero[1]))
sq_cmdq_total_credit_cnt_d = sq_cmdq_total_credit_cnt_l2 + value_1[27:31];
if(sq_cmdq_credit_cnt_plus_1[0] & sq_cmdq_credit_cnt_plus_1[1])
sq_cmdq_total_credit_cnt_d = sq_cmdq_total_credit_cnt_l2 + value_2[27:31];
end
end
always @(*)
begin: fu0_total_credit_proc
fu0_total_credit_cnt_d = fu0_total_credit_cnt_l2;
if (|spr_cpcr_we == 1'b1 | &cp_flush_l2 == 1'b1)
fu0_total_credit_cnt_d = spr_cpcr1_fu0_cnt;
else
begin
if(fu0_credit_cnt_minus_2[0] & fu0_credit_cnt_minus_2[1])
fu0_total_credit_cnt_d = fu0_total_credit_cnt_l2 - value_4[27:31];
if((fu0_credit_cnt_minus_2[0] & fu0_credit_cnt_minus_1[1]) | (fu0_credit_cnt_minus_1[0] & fu0_credit_cnt_minus_2[1]))
fu0_total_credit_cnt_d = fu0_total_credit_cnt_l2 - value_3[27:31];
if((fu0_credit_cnt_minus_2[0] & fu0_credit_cnt_zero[1]) | (fu0_credit_cnt_minus_1[0] & fu0_credit_cnt_minus_1[1]) | (fu0_credit_cnt_zero[0] & fu0_credit_cnt_minus_2[1]))
fu0_total_credit_cnt_d = fu0_total_credit_cnt_l2 - value_2[27:31];
if((fu0_credit_cnt_minus_2[0] & fu0_credit_cnt_plus_1[1]) | (fu0_credit_cnt_minus_1[0] & fu0_credit_cnt_zero[1]) | (fu0_credit_cnt_zero[0] & fu0_credit_cnt_minus_1[1]) | (fu0_credit_cnt_plus_1[0] & fu0_credit_cnt_minus_2[1]))
fu0_total_credit_cnt_d = fu0_total_credit_cnt_l2 - value_1[27:31];
if((fu0_credit_cnt_zero[0] & fu0_credit_cnt_plus_1[1]) | (fu0_credit_cnt_plus_1[0] & fu0_credit_cnt_zero[1]))
fu0_total_credit_cnt_d = fu0_total_credit_cnt_l2 + value_1[27:31];
if(fu0_credit_cnt_plus_1[0] & fu0_credit_cnt_plus_1[1])
fu0_total_credit_cnt_d = fu0_total_credit_cnt_l2 + value_2[27:31];
end
end
always @(*)
begin: fu1_total_credit_proc
fu1_total_credit_cnt_d = fu1_total_credit_cnt_l2;
if (|spr_cpcr_we == 1'b1 | &cp_flush_l2 == 1'b1)
fu1_total_credit_cnt_d = spr_cpcr1_fu1_cnt;
else
begin
if(fu1_credit_cnt_minus_2[0] & fu1_credit_cnt_minus_2[1])
fu1_total_credit_cnt_d = fu1_total_credit_cnt_l2 - value_4[27:31];
if((fu1_credit_cnt_minus_2[0] & fu1_credit_cnt_minus_1[1]) | (fu1_credit_cnt_minus_1[0] & fu1_credit_cnt_minus_2[1]))
fu1_total_credit_cnt_d = fu1_total_credit_cnt_l2 - value_3[27:31];
if((fu1_credit_cnt_minus_2[0] & fu1_credit_cnt_zero[1]) | (fu1_credit_cnt_minus_1[0] & fu1_credit_cnt_minus_1[1]) | (fu1_credit_cnt_zero[0] & fu1_credit_cnt_minus_2[1]))
fu1_total_credit_cnt_d = fu1_total_credit_cnt_l2 - value_2[27:31];
if((fu1_credit_cnt_minus_2[0] & fu1_credit_cnt_plus_1[1]) | (fu1_credit_cnt_minus_1[0] & fu1_credit_cnt_zero[1]) | (fu1_credit_cnt_zero[0] & fu1_credit_cnt_minus_1[1]) | (fu1_credit_cnt_plus_1[0] & fu1_credit_cnt_minus_2[1]))
fu1_total_credit_cnt_d = fu1_total_credit_cnt_l2 - value_1[27:31];
if((fu1_credit_cnt_zero[0] & fu1_credit_cnt_plus_1[1]) | (fu1_credit_cnt_plus_1[0] & fu1_credit_cnt_zero[1]))
fu1_total_credit_cnt_d = fu1_total_credit_cnt_l2 + value_1[27:31];
if(fu1_credit_cnt_plus_1[0] & fu1_credit_cnt_plus_1[1])
fu1_total_credit_cnt_d = fu1_total_credit_cnt_l2 + value_2[27:31];
end
end
assign iu_xu_credits_returned_d = (fx0_total_credit_cnt_l2 == spr_cpcr0_fx0_cnt) &
(fx1_total_credit_cnt_l2 == spr_cpcr0_fx1_cnt) &
(lq_cmdq_total_credit_cnt_l2 == spr_cpcr0_lq_cnt ) &
(sq_cmdq_total_credit_cnt_l2 == spr_cpcr0_sq_cnt ) &
(fu0_total_credit_cnt_l2 == spr_cpcr1_fu0_cnt) &
(fu1_total_credit_cnt_l2 == spr_cpcr1_fu1_cnt) ;
assign iu_xu_credits_returned = iu_xu_credits_returned_l2;
`ifdef THREADS1
assign total_pri_mask_d[0] = (spr_high_pri_mask[0] | spr_med_pri_mask[0]);
assign high_pri_mask_d[0] = 1'b0;
assign med_pri_mask_d[0] = (~spr_high_pri_mask[0] & ~spr_med_pri_mask[0] & low_pri_en[0]);
assign low_pri_mask_d[0] = spr_high_pri_mask[0] | spr_med_pri_mask[0] | (~spr_high_pri_mask[0] & ~spr_med_pri_mask[0] & low_pri_en[0]);
`endif
`ifndef THREADS1
assign total_pri_mask_d[0] = (spr_high_pri_mask[0] | spr_med_pri_mask[0]) & ~xu_iu_run_thread_l2[1];
assign high_pri_mask_d[0] = spr_high_pri_mask[0] & xu_iu_run_thread_l2[1];
assign med_pri_mask_d[0] = (~spr_high_pri_mask[0] & ~spr_med_pri_mask[0] & low_pri_en[0]) | (spr_med_pri_mask[0] & xu_iu_run_thread_l2[1]);
assign low_pri_mask_d[0] = spr_high_pri_mask[0] | spr_med_pri_mask[0] | (~spr_high_pri_mask[0] & ~spr_med_pri_mask[0] & low_pri_en[0]);
assign total_pri_mask_d[1] = (spr_high_pri_mask[1] | spr_med_pri_mask[1]) & ~xu_iu_run_thread_l2[0];
assign high_pri_mask_d[1] = spr_high_pri_mask[1] & xu_iu_run_thread_l2[0];
assign med_pri_mask_d[1] = (~spr_high_pri_mask[1] & ~spr_med_pri_mask[1] & low_pri_en[1]) | (spr_med_pri_mask[1] & xu_iu_run_thread_l2[0]);
assign low_pri_mask_d[1] = spr_high_pri_mask[1] | spr_med_pri_mask[1] | (~spr_high_pri_mask[1] & ~spr_med_pri_mask[1] & low_pri_en[1]);
`endif
generate
begin : pri_mask
genvar i;
for (i = 0; i <= `THREADS - 1; i = i + 1)
begin : pri_mask_set
assign low_pri_max_d[i] = spr_low_pri_count[i];
assign low_pri_cnt_d[i] = (iu_rv_iu6_i0_vld_int[i]) ? {8{1'b0}} :
low_pri_cnt_l2[i] + value_1[24:31];
assign low_pri_cnt_act[i] = ((low_pri_cnt_l2[i][0:5] != low_pri_max_l2[i]) |
iu_rv_iu6_i0_vld_int[i]) & ~spr_high_pri_mask[i] & ~spr_med_pri_mask[i];
assign low_pri_en[i] = (low_pri_max_l2[i] == low_pri_cnt_l2[i][0:5]) & ~iu_rv_iu6_i0_vld_int[i] & ~spr_high_pri_mask[i] & ~spr_med_pri_mask[i];
end
end
endgenerate
always @(*)
begin: dual_iss_fx0_proc
dual_issue_use_fx0_d = 2'b11;
if (`FXU1_ENABLE == 1 & fx0_total_credit_cnt_l2 < fx1_total_credit_cnt_l2)
dual_issue_use_fx0_d = 2'b00;
if (`FXU1_ENABLE == 1 & fx0_total_credit_cnt_l2 == fx1_total_credit_cnt_l2)
dual_issue_use_fx0_d = 2'b10;
end
assign iu_rv_iu6_i0_vld_int = send_instructions & frn_fdis_iu6_i0_vld;
assign iu_rv_iu6_i1_vld_int = send_instructions & frn_fdis_iu6_i1_vld;
assign iu_rv_iu6_t0_i0_vld = iu_rv_iu6_i0_vld_int[0];
assign iu_rv_iu6_t0_i0_act = frn_fdis_iu6_i0_vld[0];
assign iu_rv_iu6_t0_i0_itag = frn_fdis_iu6_i0_itag[0];
assign iu_rv_iu6_t0_i0_rte_lq = frn_fdis_iu6_i0_rte_lq[0];
assign iu_rv_iu6_t0_i0_rte_sq = frn_fdis_iu6_i0_rte_sq[0];
assign iu_rv_iu6_t0_i0_rte_fx0 = fx0_send_cnt[0][0] & frn_fdis_iu6_i0_rte_fx0[0];
assign iu_rv_iu6_t0_i0_rte_fx1 = fx1_send_cnt[0][0] & frn_fdis_iu6_i0_rte_fx1[0];
assign iu_rv_iu6_t0_i0_rte_axu0 = frn_fdis_iu6_i0_rte_axu0[0];
assign iu_rv_iu6_t0_i0_rte_axu1 = frn_fdis_iu6_i0_rte_axu1[0];
assign iu_rv_iu6_t0_i0_ucode = frn_fdis_iu6_i0_ucode[0];
assign iu_rv_iu6_t0_i0_ucode_cnt = frn_fdis_iu6_i0_ucode_cnt[0];
assign iu_rv_iu6_t0_i0_2ucode = frn_fdis_iu6_i0_2ucode[0];
assign iu_rv_iu6_t0_i0_fuse_nop = frn_fdis_iu6_i0_fuse_nop[0];
assign iu_rv_iu6_t0_i0_valop = frn_fdis_iu6_i0_valop[0];
assign iu_rv_iu6_t0_i0_ord = frn_fdis_iu6_i0_ord[0];
assign iu_rv_iu6_t0_i0_cord = frn_fdis_iu6_i0_cord[0];
assign iu_rv_iu6_t0_i0_error = frn_fdis_iu6_i0_error[0];
assign iu_rv_iu6_t0_i0_btb_entry = frn_fdis_iu6_i0_btb_entry[0];
assign iu_rv_iu6_t0_i0_btb_hist = frn_fdis_iu6_i0_btb_hist[0];
assign iu_rv_iu6_t0_i0_bta_val = frn_fdis_iu6_i0_bta_val[0];
assign iu_rv_iu6_t0_i0_fusion = frn_fdis_iu6_i0_fusion[0];
assign iu_rv_iu6_t0_i0_spec = frn_fdis_iu6_i0_spec[0];
assign iu_rv_iu6_t0_i0_type_fp = frn_fdis_iu6_i0_type_fp[0];
assign iu_rv_iu6_t0_i0_type_ap = frn_fdis_iu6_i0_type_ap[0];
assign iu_rv_iu6_t0_i0_type_spv = frn_fdis_iu6_i0_type_spv[0];
assign iu_rv_iu6_t0_i0_type_st = frn_fdis_iu6_i0_type_st[0];
assign iu_rv_iu6_t0_i0_async_block = frn_fdis_iu6_i0_async_block[0];
assign iu_rv_iu6_t0_i0_np1_flush = frn_fdis_iu6_i0_np1_flush[0];
assign iu_rv_iu6_t0_i0_isram = frn_fdis_iu6_i0_isram[0];
assign iu_rv_iu6_t0_i0_isload = frn_fdis_iu6_i0_isload[0];
assign iu_rv_iu6_t0_i0_isstore = frn_fdis_iu6_i0_isstore[0];
assign iu_rv_iu6_t0_i0_instr = frn_fdis_iu6_i0_instr[0];
assign iu_rv_iu6_t0_i0_ifar = frn_fdis_iu6_i0_ifar[0];
assign iu_rv_iu6_t0_i0_bta = frn_fdis_iu6_i0_bta[0];
assign iu_rv_iu6_t0_i0_br_pred = frn_fdis_iu6_i0_br_pred[0];
assign iu_rv_iu6_t0_i0_bh_update = frn_fdis_iu6_i0_bh_update[0];
assign iu_rv_iu6_t0_i0_bh0_hist = frn_fdis_iu6_i0_bh0_hist[0];
assign iu_rv_iu6_t0_i0_bh1_hist = frn_fdis_iu6_i0_bh1_hist[0];
assign iu_rv_iu6_t0_i0_bh2_hist = frn_fdis_iu6_i0_bh2_hist[0];
assign iu_rv_iu6_t0_i0_gshare = frn_fdis_iu6_i0_gshare[0];
assign iu_rv_iu6_t0_i0_ls_ptr = frn_fdis_iu6_i0_ls_ptr[0];
assign iu_rv_iu6_t0_i0_match = frn_fdis_iu6_i0_match[0];
assign iu_rv_iu6_t0_i0_ilat = frn_fdis_iu6_i0_ilat[0];
assign iu_rv_iu6_t0_i0_t1_v = frn_fdis_iu6_i0_t1_v[0];
assign iu_rv_iu6_t0_i0_t1_t = frn_fdis_iu6_i0_t1_t[0];
assign iu_rv_iu6_t0_i0_t1_a = frn_fdis_iu6_i0_t1_a[0];
assign iu_rv_iu6_t0_i0_t1_p = frn_fdis_iu6_i0_t1_p[0];
assign iu_rv_iu6_t0_i0_t2_v = frn_fdis_iu6_i0_t2_v[0];
assign iu_rv_iu6_t0_i0_t2_a = frn_fdis_iu6_i0_t2_a[0];
assign iu_rv_iu6_t0_i0_t2_p = frn_fdis_iu6_i0_t2_p[0];
assign iu_rv_iu6_t0_i0_t2_t = frn_fdis_iu6_i0_t2_t[0];
assign iu_rv_iu6_t0_i0_t3_v = frn_fdis_iu6_i0_t3_v[0];
assign iu_rv_iu6_t0_i0_t3_a = frn_fdis_iu6_i0_t3_a[0];
assign iu_rv_iu6_t0_i0_t3_p = frn_fdis_iu6_i0_t3_p[0];
assign iu_rv_iu6_t0_i0_t3_t = frn_fdis_iu6_i0_t3_t[0];
assign iu_rv_iu6_t0_i0_s1_v = frn_fdis_iu6_i0_s1_v[0];
assign iu_rv_iu6_t0_i0_s1_a = frn_fdis_iu6_i0_s1_a[0];
assign iu_rv_iu6_t0_i0_s1_p = frn_fdis_iu6_i0_s1_p[0];
assign iu_rv_iu6_t0_i0_s1_itag = frn_fdis_iu6_i0_s1_itag[0];
assign iu_rv_iu6_t0_i0_s1_t = frn_fdis_iu6_i0_s1_t[0];
assign iu_rv_iu6_t0_i0_s2_v = frn_fdis_iu6_i0_s2_v[0];
assign iu_rv_iu6_t0_i0_s2_a = frn_fdis_iu6_i0_s2_a[0];
assign iu_rv_iu6_t0_i0_s2_p = frn_fdis_iu6_i0_s2_p[0];
assign iu_rv_iu6_t0_i0_s2_itag = frn_fdis_iu6_i0_s2_itag[0];
assign iu_rv_iu6_t0_i0_s2_t = frn_fdis_iu6_i0_s2_t[0];
assign iu_rv_iu6_t0_i0_s3_v = frn_fdis_iu6_i0_s3_v[0];
assign iu_rv_iu6_t0_i0_s3_a = frn_fdis_iu6_i0_s3_a[0];
assign iu_rv_iu6_t0_i0_s3_p = frn_fdis_iu6_i0_s3_p[0];
assign iu_rv_iu6_t0_i0_s3_itag = frn_fdis_iu6_i0_s3_itag[0];
assign iu_rv_iu6_t0_i0_s3_t = frn_fdis_iu6_i0_s3_t[0];
assign iu_rv_iu6_t0_i1_vld = iu_rv_iu6_i1_vld_int[0];
assign iu_rv_iu6_t0_i1_act = frn_fdis_iu6_i1_vld[0];
assign iu_rv_iu6_t0_i1_itag = frn_fdis_iu6_i1_itag[0];
assign iu_rv_iu6_t0_i1_rte_lq = frn_fdis_iu6_i1_rte_lq[0];
assign iu_rv_iu6_t0_i1_rte_sq = frn_fdis_iu6_i1_rte_sq[0];
assign iu_rv_iu6_t0_i1_rte_fx0 = fx0_send_cnt[0][1] & frn_fdis_iu6_i1_rte_fx0[0];
assign iu_rv_iu6_t0_i1_rte_fx1 = fx1_send_cnt[0][1] & frn_fdis_iu6_i1_rte_fx1[0];
assign iu_rv_iu6_t0_i1_rte_axu0 = frn_fdis_iu6_i1_rte_axu0[0];
assign iu_rv_iu6_t0_i1_rte_axu1 = frn_fdis_iu6_i1_rte_axu1[0];
assign iu_rv_iu6_t0_i1_ucode = frn_fdis_iu6_i1_ucode[0];
assign iu_rv_iu6_t0_i1_ucode_cnt = frn_fdis_iu6_i1_ucode_cnt[0];
assign iu_rv_iu6_t0_i1_fuse_nop = frn_fdis_iu6_i1_fuse_nop[0];
assign iu_rv_iu6_t0_i1_valop = frn_fdis_iu6_i1_valop[0];
assign iu_rv_iu6_t0_i1_ord = frn_fdis_iu6_i1_ord[0];
assign iu_rv_iu6_t0_i1_cord = frn_fdis_iu6_i1_cord[0];
assign iu_rv_iu6_t0_i1_error = frn_fdis_iu6_i1_error[0];
assign iu_rv_iu6_t0_i1_btb_entry = frn_fdis_iu6_i1_btb_entry[0];
assign iu_rv_iu6_t0_i1_btb_hist = frn_fdis_iu6_i1_btb_hist[0];
assign iu_rv_iu6_t0_i1_bta_val = frn_fdis_iu6_i1_bta_val[0];
assign iu_rv_iu6_t0_i1_fusion = frn_fdis_iu6_i1_fusion[0];
assign iu_rv_iu6_t0_i1_spec = frn_fdis_iu6_i1_spec[0];
assign iu_rv_iu6_t0_i1_type_fp = frn_fdis_iu6_i1_type_fp[0];
assign iu_rv_iu6_t0_i1_type_ap = frn_fdis_iu6_i1_type_ap[0];
assign iu_rv_iu6_t0_i1_type_spv = frn_fdis_iu6_i1_type_spv[0];
assign iu_rv_iu6_t0_i1_type_st = frn_fdis_iu6_i1_type_st[0];
assign iu_rv_iu6_t0_i1_async_block = frn_fdis_iu6_i1_async_block[0];
assign iu_rv_iu6_t0_i1_np1_flush = frn_fdis_iu6_i1_np1_flush[0];
assign iu_rv_iu6_t0_i1_isram = frn_fdis_iu6_i1_isram[0];
assign iu_rv_iu6_t0_i1_isload = frn_fdis_iu6_i1_isload[0];
assign iu_rv_iu6_t0_i1_isstore = frn_fdis_iu6_i1_isstore[0];
assign iu_rv_iu6_t0_i1_instr = frn_fdis_iu6_i1_instr[0];
assign iu_rv_iu6_t0_i1_ifar = frn_fdis_iu6_i1_ifar[0];
assign iu_rv_iu6_t0_i1_bta = frn_fdis_iu6_i1_bta[0];
assign iu_rv_iu6_t0_i1_br_pred = frn_fdis_iu6_i1_br_pred[0];
assign iu_rv_iu6_t0_i1_bh_update = frn_fdis_iu6_i1_bh_update[0];
assign iu_rv_iu6_t0_i1_bh0_hist = frn_fdis_iu6_i1_bh0_hist[0];
assign iu_rv_iu6_t0_i1_bh1_hist = frn_fdis_iu6_i1_bh1_hist[0];
assign iu_rv_iu6_t0_i1_bh2_hist = frn_fdis_iu6_i1_bh2_hist[0];
assign iu_rv_iu6_t0_i1_gshare = frn_fdis_iu6_i1_gshare[0];
assign iu_rv_iu6_t0_i1_ls_ptr = frn_fdis_iu6_i1_ls_ptr[0];
assign iu_rv_iu6_t0_i1_match = frn_fdis_iu6_i1_match[0];
assign iu_rv_iu6_t0_i1_ilat = frn_fdis_iu6_i1_ilat[0];
assign iu_rv_iu6_t0_i1_t1_v = frn_fdis_iu6_i1_t1_v[0];
assign iu_rv_iu6_t0_i1_t1_t = frn_fdis_iu6_i1_t1_t[0];
assign iu_rv_iu6_t0_i1_t1_a = frn_fdis_iu6_i1_t1_a[0];
assign iu_rv_iu6_t0_i1_t1_p = frn_fdis_iu6_i1_t1_p[0];
assign iu_rv_iu6_t0_i1_t2_v = frn_fdis_iu6_i1_t2_v[0];
assign iu_rv_iu6_t0_i1_t2_a = frn_fdis_iu6_i1_t2_a[0];
assign iu_rv_iu6_t0_i1_t2_p = frn_fdis_iu6_i1_t2_p[0];
assign iu_rv_iu6_t0_i1_t2_t = frn_fdis_iu6_i1_t2_t[0];
assign iu_rv_iu6_t0_i1_t3_v = frn_fdis_iu6_i1_t3_v[0];
assign iu_rv_iu6_t0_i1_t3_a = frn_fdis_iu6_i1_t3_a[0];
assign iu_rv_iu6_t0_i1_t3_p = frn_fdis_iu6_i1_t3_p[0];
assign iu_rv_iu6_t0_i1_t3_t = frn_fdis_iu6_i1_t3_t[0];
assign iu_rv_iu6_t0_i1_s1_v = frn_fdis_iu6_i1_s1_v[0];
assign iu_rv_iu6_t0_i1_s1_a = frn_fdis_iu6_i1_s1_a[0];
assign iu_rv_iu6_t0_i1_s1_p = frn_fdis_iu6_i1_s1_p[0];
assign iu_rv_iu6_t0_i1_s1_itag = frn_fdis_iu6_i1_s1_itag[0];
assign iu_rv_iu6_t0_i1_s1_t = frn_fdis_iu6_i1_s1_t[0];
assign iu_rv_iu6_t0_i1_s1_dep_hit = frn_fdis_iu6_i1_s1_dep_hit[0];
assign iu_rv_iu6_t0_i1_s2_v = frn_fdis_iu6_i1_s2_v[0];
assign iu_rv_iu6_t0_i1_s2_a = frn_fdis_iu6_i1_s2_a[0];
assign iu_rv_iu6_t0_i1_s2_p = frn_fdis_iu6_i1_s2_p[0];
assign iu_rv_iu6_t0_i1_s2_itag = frn_fdis_iu6_i1_s2_itag[0];
assign iu_rv_iu6_t0_i1_s2_t = frn_fdis_iu6_i1_s2_t[0];
assign iu_rv_iu6_t0_i1_s2_dep_hit = frn_fdis_iu6_i1_s2_dep_hit[0];
assign iu_rv_iu6_t0_i1_s3_v = frn_fdis_iu6_i1_s3_v[0];
assign iu_rv_iu6_t0_i1_s3_a = frn_fdis_iu6_i1_s3_a[0];
assign iu_rv_iu6_t0_i1_s3_p = frn_fdis_iu6_i1_s3_p[0];
assign iu_rv_iu6_t0_i1_s3_itag = frn_fdis_iu6_i1_s3_itag[0];
assign iu_rv_iu6_t0_i1_s3_t = frn_fdis_iu6_i1_s3_t[0];
assign iu_rv_iu6_t0_i1_s3_dep_hit = frn_fdis_iu6_i1_s3_dep_hit[0];
`ifndef THREADS1
assign iu_rv_iu6_t1_i0_vld = iu_rv_iu6_i0_vld_int[1];
assign iu_rv_iu6_t1_i0_act = frn_fdis_iu6_i0_vld[1];
assign iu_rv_iu6_t1_i0_itag = frn_fdis_iu6_i0_itag[1];
assign iu_rv_iu6_t1_i0_rte_lq = frn_fdis_iu6_i0_rte_lq[1];
assign iu_rv_iu6_t1_i0_rte_sq = frn_fdis_iu6_i0_rte_sq[1];
assign iu_rv_iu6_t1_i0_rte_fx0 = fx0_send_cnt[1][0] & frn_fdis_iu6_i0_rte_fx0[1];
assign iu_rv_iu6_t1_i0_rte_fx1 = fx1_send_cnt[1][0] & frn_fdis_iu6_i0_rte_fx1[1];
assign iu_rv_iu6_t1_i0_rte_axu0 = frn_fdis_iu6_i0_rte_axu0[1];
assign iu_rv_iu6_t1_i0_rte_axu1 = frn_fdis_iu6_i0_rte_axu1[1];
assign iu_rv_iu6_t1_i0_ucode = frn_fdis_iu6_i0_ucode[1];
assign iu_rv_iu6_t1_i0_ucode_cnt = frn_fdis_iu6_i0_ucode_cnt[1];
assign iu_rv_iu6_t1_i0_2ucode = frn_fdis_iu6_i0_2ucode[1];
assign iu_rv_iu6_t1_i0_fuse_nop = frn_fdis_iu6_i0_fuse_nop[1];
assign iu_rv_iu6_t1_i0_valop = frn_fdis_iu6_i0_valop[1];
assign iu_rv_iu6_t1_i0_ord = frn_fdis_iu6_i0_ord[1];
assign iu_rv_iu6_t1_i0_cord = frn_fdis_iu6_i0_cord[1];
assign iu_rv_iu6_t1_i0_error = frn_fdis_iu6_i0_error[1];
assign iu_rv_iu6_t1_i0_btb_entry = frn_fdis_iu6_i0_btb_entry[1];
assign iu_rv_iu6_t1_i0_btb_hist = frn_fdis_iu6_i0_btb_hist[1];
assign iu_rv_iu6_t1_i0_bta_val = frn_fdis_iu6_i0_bta_val[1];
assign iu_rv_iu6_t1_i0_fusion = frn_fdis_iu6_i0_fusion[1];
assign iu_rv_iu6_t1_i0_spec = frn_fdis_iu6_i0_spec[1];
assign iu_rv_iu6_t1_i0_type_fp = frn_fdis_iu6_i0_type_fp[1];
assign iu_rv_iu6_t1_i0_type_ap = frn_fdis_iu6_i0_type_ap[1];
assign iu_rv_iu6_t1_i0_type_spv = frn_fdis_iu6_i0_type_spv[1];
assign iu_rv_iu6_t1_i0_type_st = frn_fdis_iu6_i0_type_st[1];
assign iu_rv_iu6_t1_i0_async_block = frn_fdis_iu6_i0_async_block[1];
assign iu_rv_iu6_t1_i0_np1_flush = frn_fdis_iu6_i0_np1_flush[1];
assign iu_rv_iu6_t1_i0_isram = frn_fdis_iu6_i0_isram[1];
assign iu_rv_iu6_t1_i0_isload = frn_fdis_iu6_i0_isload[1];
assign iu_rv_iu6_t1_i0_isstore = frn_fdis_iu6_i0_isstore[1];
assign iu_rv_iu6_t1_i0_instr = frn_fdis_iu6_i0_instr[1];
assign iu_rv_iu6_t1_i0_ifar = frn_fdis_iu6_i0_ifar[1];
assign iu_rv_iu6_t1_i0_bta = frn_fdis_iu6_i0_bta[1];
assign iu_rv_iu6_t1_i0_br_pred = frn_fdis_iu6_i0_br_pred[1];
assign iu_rv_iu6_t1_i0_bh_update = frn_fdis_iu6_i0_bh_update[1];
assign iu_rv_iu6_t1_i0_bh0_hist = frn_fdis_iu6_i0_bh0_hist[1];
assign iu_rv_iu6_t1_i0_bh1_hist = frn_fdis_iu6_i0_bh1_hist[1];
assign iu_rv_iu6_t1_i0_bh2_hist = frn_fdis_iu6_i0_bh2_hist[1];
assign iu_rv_iu6_t1_i0_gshare = frn_fdis_iu6_i0_gshare[1];
assign iu_rv_iu6_t1_i0_ls_ptr = frn_fdis_iu6_i0_ls_ptr[1];
assign iu_rv_iu6_t1_i0_match = frn_fdis_iu6_i0_match[1];
assign iu_rv_iu6_t1_i0_ilat = frn_fdis_iu6_i0_ilat[1];
assign iu_rv_iu6_t1_i0_t1_v = frn_fdis_iu6_i0_t1_v[1];
assign iu_rv_iu6_t1_i0_t1_t = frn_fdis_iu6_i0_t1_t[1];
assign iu_rv_iu6_t1_i0_t1_a = frn_fdis_iu6_i0_t1_a[1];
assign iu_rv_iu6_t1_i0_t1_p = frn_fdis_iu6_i0_t1_p[1];
assign iu_rv_iu6_t1_i0_t2_v = frn_fdis_iu6_i0_t2_v[1];
assign iu_rv_iu6_t1_i0_t2_a = frn_fdis_iu6_i0_t2_a[1];
assign iu_rv_iu6_t1_i0_t2_p = frn_fdis_iu6_i0_t2_p[1];
assign iu_rv_iu6_t1_i0_t2_t = frn_fdis_iu6_i0_t2_t[1];
assign iu_rv_iu6_t1_i0_t3_v = frn_fdis_iu6_i0_t3_v[1];
assign iu_rv_iu6_t1_i0_t3_a = frn_fdis_iu6_i0_t3_a[1];
assign iu_rv_iu6_t1_i0_t3_p = frn_fdis_iu6_i0_t3_p[1];
assign iu_rv_iu6_t1_i0_t3_t = frn_fdis_iu6_i0_t3_t[1];
assign iu_rv_iu6_t1_i0_s1_v = frn_fdis_iu6_i0_s1_v[1];
assign iu_rv_iu6_t1_i0_s1_a = frn_fdis_iu6_i0_s1_a[1];
assign iu_rv_iu6_t1_i0_s1_p = frn_fdis_iu6_i0_s1_p[1];
assign iu_rv_iu6_t1_i0_s1_itag = frn_fdis_iu6_i0_s1_itag[1];
assign iu_rv_iu6_t1_i0_s1_t = frn_fdis_iu6_i0_s1_t[1];
assign iu_rv_iu6_t1_i0_s2_v = frn_fdis_iu6_i0_s2_v[1];
assign iu_rv_iu6_t1_i0_s2_a = frn_fdis_iu6_i0_s2_a[1];
assign iu_rv_iu6_t1_i0_s2_p = frn_fdis_iu6_i0_s2_p[1];
assign iu_rv_iu6_t1_i0_s2_itag = frn_fdis_iu6_i0_s2_itag[1];
assign iu_rv_iu6_t1_i0_s2_t = frn_fdis_iu6_i0_s2_t[1];
assign iu_rv_iu6_t1_i0_s3_v = frn_fdis_iu6_i0_s3_v[1];
assign iu_rv_iu6_t1_i0_s3_a = frn_fdis_iu6_i0_s3_a[1];
assign iu_rv_iu6_t1_i0_s3_p = frn_fdis_iu6_i0_s3_p[1];
assign iu_rv_iu6_t1_i0_s3_itag = frn_fdis_iu6_i0_s3_itag[1];
assign iu_rv_iu6_t1_i0_s3_t = frn_fdis_iu6_i0_s3_t[1];
assign iu_rv_iu6_t1_i1_vld = iu_rv_iu6_i1_vld_int[1];
assign iu_rv_iu6_t1_i1_act = frn_fdis_iu6_i1_vld[1];
assign iu_rv_iu6_t1_i1_itag = frn_fdis_iu6_i1_itag[1];
assign iu_rv_iu6_t1_i1_rte_lq = frn_fdis_iu6_i1_rte_lq[1];
assign iu_rv_iu6_t1_i1_rte_sq = frn_fdis_iu6_i1_rte_sq[1];
assign iu_rv_iu6_t1_i1_rte_fx0 = fx0_send_cnt[1][1] & frn_fdis_iu6_i1_rte_fx0[1];
assign iu_rv_iu6_t1_i1_rte_fx1 = fx1_send_cnt[1][1] & frn_fdis_iu6_i1_rte_fx1[1];
assign iu_rv_iu6_t1_i1_rte_axu0 = frn_fdis_iu6_i1_rte_axu0[1];
assign iu_rv_iu6_t1_i1_rte_axu1 = frn_fdis_iu6_i1_rte_axu1[1];
assign iu_rv_iu6_t1_i1_ucode = frn_fdis_iu6_i1_ucode[1];
assign iu_rv_iu6_t1_i1_ucode_cnt = frn_fdis_iu6_i1_ucode_cnt[1];
assign iu_rv_iu6_t1_i1_fuse_nop = frn_fdis_iu6_i1_fuse_nop[1];
assign iu_rv_iu6_t1_i1_valop = frn_fdis_iu6_i1_valop[1];
assign iu_rv_iu6_t1_i1_ord = frn_fdis_iu6_i1_ord[1];
assign iu_rv_iu6_t1_i1_cord = frn_fdis_iu6_i1_cord[1];
assign iu_rv_iu6_t1_i1_error = frn_fdis_iu6_i1_error[1];
assign iu_rv_iu6_t1_i1_btb_entry = frn_fdis_iu6_i1_btb_entry[1];
assign iu_rv_iu6_t1_i1_btb_hist = frn_fdis_iu6_i1_btb_hist[1];
assign iu_rv_iu6_t1_i1_bta_val = frn_fdis_iu6_i1_bta_val[1];
assign iu_rv_iu6_t1_i1_fusion = frn_fdis_iu6_i1_fusion[1];
assign iu_rv_iu6_t1_i1_spec = frn_fdis_iu6_i1_spec[1];
assign iu_rv_iu6_t1_i1_type_fp = frn_fdis_iu6_i1_type_fp[1];
assign iu_rv_iu6_t1_i1_type_ap = frn_fdis_iu6_i1_type_ap[1];
assign iu_rv_iu6_t1_i1_type_spv = frn_fdis_iu6_i1_type_spv[1];
assign iu_rv_iu6_t1_i1_type_st = frn_fdis_iu6_i1_type_st[1];
assign iu_rv_iu6_t1_i1_async_block = frn_fdis_iu6_i1_async_block[1];
assign iu_rv_iu6_t1_i1_np1_flush = frn_fdis_iu6_i1_np1_flush[1];
assign iu_rv_iu6_t1_i1_isram = frn_fdis_iu6_i1_isram[1];
assign iu_rv_iu6_t1_i1_isload = frn_fdis_iu6_i1_isload[1];
assign iu_rv_iu6_t1_i1_isstore = frn_fdis_iu6_i1_isstore[1];
assign iu_rv_iu6_t1_i1_instr = frn_fdis_iu6_i1_instr[1];
assign iu_rv_iu6_t1_i1_ifar = frn_fdis_iu6_i1_ifar[1];
assign iu_rv_iu6_t1_i1_bta = frn_fdis_iu6_i1_bta[1];
assign iu_rv_iu6_t1_i1_br_pred = frn_fdis_iu6_i1_br_pred[1];
assign iu_rv_iu6_t1_i1_bh_update = frn_fdis_iu6_i1_bh_update[1];
assign iu_rv_iu6_t1_i1_bh0_hist = frn_fdis_iu6_i1_bh0_hist[1];
assign iu_rv_iu6_t1_i1_bh1_hist = frn_fdis_iu6_i1_bh1_hist[1];
assign iu_rv_iu6_t1_i1_bh2_hist = frn_fdis_iu6_i1_bh2_hist[1];
assign iu_rv_iu6_t1_i1_gshare = frn_fdis_iu6_i1_gshare[1];
assign iu_rv_iu6_t1_i1_ls_ptr = frn_fdis_iu6_i1_ls_ptr[1];
assign iu_rv_iu6_t1_i1_match = frn_fdis_iu6_i1_match[1];
assign iu_rv_iu6_t1_i1_ilat = frn_fdis_iu6_i1_ilat[1];
assign iu_rv_iu6_t1_i1_t1_v = frn_fdis_iu6_i1_t1_v[1];
assign iu_rv_iu6_t1_i1_t1_t = frn_fdis_iu6_i1_t1_t[1];
assign iu_rv_iu6_t1_i1_t1_a = frn_fdis_iu6_i1_t1_a[1];
assign iu_rv_iu6_t1_i1_t1_p = frn_fdis_iu6_i1_t1_p[1];
assign iu_rv_iu6_t1_i1_t2_v = frn_fdis_iu6_i1_t2_v[1];
assign iu_rv_iu6_t1_i1_t2_a = frn_fdis_iu6_i1_t2_a[1];
assign iu_rv_iu6_t1_i1_t2_p = frn_fdis_iu6_i1_t2_p[1];
assign iu_rv_iu6_t1_i1_t2_t = frn_fdis_iu6_i1_t2_t[1];
assign iu_rv_iu6_t1_i1_t3_v = frn_fdis_iu6_i1_t3_v[1];
assign iu_rv_iu6_t1_i1_t3_a = frn_fdis_iu6_i1_t3_a[1];
assign iu_rv_iu6_t1_i1_t3_p = frn_fdis_iu6_i1_t3_p[1];
assign iu_rv_iu6_t1_i1_t3_t = frn_fdis_iu6_i1_t3_t[1];
assign iu_rv_iu6_t1_i1_s1_v = frn_fdis_iu6_i1_s1_v[1];
assign iu_rv_iu6_t1_i1_s1_a = frn_fdis_iu6_i1_s1_a[1];
assign iu_rv_iu6_t1_i1_s1_p = frn_fdis_iu6_i1_s1_p[1];
assign iu_rv_iu6_t1_i1_s1_itag = frn_fdis_iu6_i1_s1_itag[1];
assign iu_rv_iu6_t1_i1_s1_t = frn_fdis_iu6_i1_s1_t[1];
assign iu_rv_iu6_t1_i1_s1_dep_hit = frn_fdis_iu6_i1_s1_dep_hit[1];
assign iu_rv_iu6_t1_i1_s2_v = frn_fdis_iu6_i1_s2_v[1];
assign iu_rv_iu6_t1_i1_s2_a = frn_fdis_iu6_i1_s2_a[1];
assign iu_rv_iu6_t1_i1_s2_p = frn_fdis_iu6_i1_s2_p[1];
assign iu_rv_iu6_t1_i1_s2_itag = frn_fdis_iu6_i1_s2_itag[1];
assign iu_rv_iu6_t1_i1_s2_t = frn_fdis_iu6_i1_s2_t[1];
assign iu_rv_iu6_t1_i1_s2_dep_hit = frn_fdis_iu6_i1_s2_dep_hit[1];
assign iu_rv_iu6_t1_i1_s3_v = frn_fdis_iu6_i1_s3_v[1];
assign iu_rv_iu6_t1_i1_s3_a = frn_fdis_iu6_i1_s3_a[1];
assign iu_rv_iu6_t1_i1_s3_p = frn_fdis_iu6_i1_s3_p[1];
assign iu_rv_iu6_t1_i1_s3_itag = frn_fdis_iu6_i1_s3_itag[1];
assign iu_rv_iu6_t1_i1_s3_t = frn_fdis_iu6_i1_s3_t[1];
assign iu_rv_iu6_t1_i1_s3_dep_hit = frn_fdis_iu6_i1_s3_dep_hit[1];
`endif
// Perf counters
generate
begin : perf_set
genvar i;
for (i = 0; i <= `THREADS - 1; i = i + 1)
begin : perf_mask_set
assign perf_iu6_stall_d[i] = frn_fdis_iu6_i0_vld[i] & (~send_instructions[i]);
assign perf_iu6_dispatch_fx0_d[i][0] = ((iu_rv_iu6_i1_vld_int[i] & fx0_send_cnt[i][1] & frn_fdis_iu6_i1_rte_fx0[i]) & perf_iu6_dispatch_fx0_l2[i][1]) |
((iu_rv_iu6_i0_vld_int[i] & fx0_send_cnt[i][0] & frn_fdis_iu6_i0_rte_fx0[i]) & perf_iu6_dispatch_fx0_l2[i][1]) |
(iu_rv_iu6_i0_vld_int[i] & fx0_send_cnt[i][0] & frn_fdis_iu6_i0_rte_fx0[i]) & (iu_rv_iu6_i1_vld_int[i] & fx0_send_cnt[i][1] & frn_fdis_iu6_i1_rte_fx0[i]);
assign perf_iu6_dispatch_fx0_d[i][1] = (~(iu_rv_iu6_i0_vld_int[i] & fx0_send_cnt[i][0] & frn_fdis_iu6_i0_rte_fx0[i]) & ~(iu_rv_iu6_i1_vld_int[i] & fx0_send_cnt[i][1] & frn_fdis_iu6_i1_rte_fx0[i]) & perf_iu6_dispatch_fx0_l2[i][1]) |
(~(iu_rv_iu6_i0_vld_int[i] & fx0_send_cnt[i][0] & frn_fdis_iu6_i0_rte_fx0[i]) & (iu_rv_iu6_i1_vld_int[i] & fx0_send_cnt[i][1] & frn_fdis_iu6_i1_rte_fx0[i]) & ~perf_iu6_dispatch_fx0_l2[i][1]) |
((iu_rv_iu6_i0_vld_int[i] & fx0_send_cnt[i][0] & frn_fdis_iu6_i0_rte_fx0[i]) & ~(iu_rv_iu6_i1_vld_int[i] & fx0_send_cnt[i][1] & frn_fdis_iu6_i1_rte_fx0[i]) & ~perf_iu6_dispatch_fx0_l2[i][1]) |
((iu_rv_iu6_i0_vld_int[i] & fx0_send_cnt[i][0] & frn_fdis_iu6_i0_rte_fx0[i]) & (iu_rv_iu6_i1_vld_int[i] & fx0_send_cnt[i][1] & frn_fdis_iu6_i1_rte_fx0[i]) & perf_iu6_dispatch_fx0_l2[i][1]);
assign perf_iu6_dispatch_fx1_d[i][0] = ((iu_rv_iu6_i1_vld_int[i] & fx1_send_cnt[i][1] & frn_fdis_iu6_i1_rte_fx1[i]) & perf_iu6_dispatch_fx1_l2[i][1]) |
((iu_rv_iu6_i0_vld_int[i] & fx1_send_cnt[i][0] & frn_fdis_iu6_i0_rte_fx1[i]) & perf_iu6_dispatch_fx1_l2[i][1]) |
(iu_rv_iu6_i0_vld_int[i] & fx1_send_cnt[i][0] & frn_fdis_iu6_i0_rte_fx1[i]) & (iu_rv_iu6_i1_vld_int[i] & fx1_send_cnt[i][1] & frn_fdis_iu6_i1_rte_fx1[i]);
assign perf_iu6_dispatch_fx1_d[i][1] = (~(iu_rv_iu6_i0_vld_int[i] & fx1_send_cnt[i][0] & frn_fdis_iu6_i0_rte_fx1[i]) & ~(iu_rv_iu6_i1_vld_int[i] & fx1_send_cnt[i][1] & frn_fdis_iu6_i1_rte_fx1[i]) & perf_iu6_dispatch_fx1_l2[i][1]) |
(~(iu_rv_iu6_i0_vld_int[i] & fx1_send_cnt[i][0] & frn_fdis_iu6_i0_rte_fx1[i]) & (iu_rv_iu6_i1_vld_int[i] & fx1_send_cnt[i][1] & frn_fdis_iu6_i1_rte_fx1[i]) & ~perf_iu6_dispatch_fx1_l2[i][1]) |
((iu_rv_iu6_i0_vld_int[i] & fx1_send_cnt[i][0] & frn_fdis_iu6_i0_rte_fx1[i]) & ~(iu_rv_iu6_i1_vld_int[i] & fx1_send_cnt[i][1] & frn_fdis_iu6_i1_rte_fx1[i]) & ~perf_iu6_dispatch_fx1_l2[i][1]) |
((iu_rv_iu6_i0_vld_int[i] & fx1_send_cnt[i][0] & frn_fdis_iu6_i0_rte_fx1[i]) & (iu_rv_iu6_i1_vld_int[i] & fx1_send_cnt[i][1] & frn_fdis_iu6_i1_rte_fx1[i]) & perf_iu6_dispatch_fx1_l2[i][1]);
assign perf_iu6_dispatch_lq_d[i][0] = ((iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_lq[i]) & perf_iu6_dispatch_fx1_l2[i][1]) |
((iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_lq[i]) & perf_iu6_dispatch_fx1_l2[i][1]) |
(iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_lq[i]) & (iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_lq[i]);
assign perf_iu6_dispatch_lq_d[i][1] = (~(iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_lq[i]) & ~(iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_lq[i]) & perf_iu6_dispatch_fx0_l2[i][1]) |
(~(iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_lq[i]) & (iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_lq[i]) & ~perf_iu6_dispatch_fx0_l2[i][1]) |
((iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_lq[i]) & ~(iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_lq[i]) & ~perf_iu6_dispatch_fx0_l2[i][1]) |
((iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_lq[i]) & (iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_lq[i]) & perf_iu6_dispatch_fx0_l2[i][1]);
assign perf_iu6_dispatch_axu0_d[i][0] = ((iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_axu0[i]) & perf_iu6_dispatch_fx1_l2[i][1]) |
((iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_axu0[i]) & perf_iu6_dispatch_fx1_l2[i][1]) |
(iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_axu0[i]) & (iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_axu0[i]);
assign perf_iu6_dispatch_axu0_d[i][1] = (~(iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_axu0[i]) & ~(iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_axu0[i]) & perf_iu6_dispatch_fx0_l2[i][1]) |
(~(iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_axu0[i]) & (iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_axu0[i]) & ~perf_iu6_dispatch_fx0_l2[i][1]) |
((iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_axu0[i]) & ~(iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_axu0[i]) & ~perf_iu6_dispatch_fx0_l2[i][1]) |
((iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_axu0[i]) & (iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_axu0[i]) & perf_iu6_dispatch_fx0_l2[i][1]);
assign perf_iu6_dispatch_axu1_d[i][0] = ((iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_axu1[i]) & perf_iu6_dispatch_fx1_l2[i][1]) |
((iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_axu1[i]) & perf_iu6_dispatch_fx1_l2[i][1]) |
(iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_axu1[i]) & (iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_axu1[i]);
assign perf_iu6_dispatch_axu1_d[i][1] = (~(iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_axu1[i]) & ~(iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_axu1[i]) & perf_iu6_dispatch_fx0_l2[i][1]) |
(~(iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_axu1[i]) & (iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_axu1[i]) & ~perf_iu6_dispatch_fx0_l2[i][1]) |
((iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_axu1[i]) & ~(iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_axu1[i]) & ~perf_iu6_dispatch_fx0_l2[i][1]) |
((iu_rv_iu6_i0_vld_int[i] & frn_fdis_iu6_i0_rte_axu1[i]) & (iu_rv_iu6_i1_vld_int[i] & frn_fdis_iu6_i1_rte_axu1[i]) & perf_iu6_dispatch_fx0_l2[i][1]);
assign perf_iu6_fx0_credit_stall_d[i] = frn_fdis_iu6_i0_vld[i] & (~fx0_credit_ok[i] | ~fx0_local_credit_ok[i]);
assign perf_iu6_fx1_credit_stall_d[i] = frn_fdis_iu6_i0_vld[i] & (~fx1_credit_ok[i] | ~fx1_local_credit_ok[i]);
assign perf_iu6_lq_credit_stall_d[i] = frn_fdis_iu6_i0_vld[i] & (~lq_cmdq_credit_ok[i] | ~lq_cmdq_local_credit_ok[i]);
assign perf_iu6_sq_credit_stall_d[i] = frn_fdis_iu6_i0_vld[i] & (~sq_cmdq_credit_ok[i] | ~sq_cmdq_local_credit_ok[i]);
assign perf_iu6_axu0_credit_stall_d[i] = frn_fdis_iu6_i0_vld[i] & (~fu0_credit_ok[i] | ~fu0_local_credit_ok[i]);
assign perf_iu6_axu1_credit_stall_d[i] = frn_fdis_iu6_i0_vld[i] & (~fu1_credit_ok[i] | ~fu1_local_credit_ok[i]);
assign iu_pc_fx0_credit_ok_d[i] = fx0_credit_ok[i] & fx0_local_credit_ok[i];
assign iu_pc_fx1_credit_ok_d[i] = fx1_credit_ok[i] & fx1_local_credit_ok[i];
assign iu_pc_lq_credit_ok_d[i] = lq_cmdq_credit_ok[i] & lq_cmdq_local_credit_ok[i];
assign iu_pc_sq_credit_ok_d[i] = sq_cmdq_credit_ok[i] & sq_cmdq_local_credit_ok[i];
assign iu_pc_axu0_credit_ok_d[i] = fu0_credit_ok[i] & fu0_local_credit_ok[i];
assign iu_pc_axu1_credit_ok_d[i] = fu1_credit_ok[i] & fu1_local_credit_ok[i];
end
end
endgenerate
assign perf_iu6_stall = perf_iu6_stall_l2;
`ifdef THREADS1
assign perf_iu6_dispatch_fx0 = perf_iu6_dispatch_fx0_l2[0][0];
assign perf_iu6_dispatch_fx1 = perf_iu6_dispatch_fx1_l2[0][0];
assign perf_iu6_dispatch_lq = perf_iu6_dispatch_lq_l2[0][0];
assign perf_iu6_dispatch_axu0 = perf_iu6_dispatch_axu0_l2[0][0];
assign perf_iu6_dispatch_axu1 = perf_iu6_dispatch_axu1_l2[0][0];
`endif
`ifndef THREADS1
assign perf_iu6_dispatch_fx0 = {perf_iu6_dispatch_fx0_l2[0][0], perf_iu6_dispatch_fx0_l2[1][0]};
assign perf_iu6_dispatch_fx1 = {perf_iu6_dispatch_fx1_l2[0][0], perf_iu6_dispatch_fx1_l2[1][0]};
assign perf_iu6_dispatch_lq = {perf_iu6_dispatch_lq_l2[0][0], perf_iu6_dispatch_lq_l2[1][0]};
assign perf_iu6_dispatch_axu0 = {perf_iu6_dispatch_axu0_l2[0][0], perf_iu6_dispatch_axu0_l2[1][0]};
assign perf_iu6_dispatch_axu1 = {perf_iu6_dispatch_axu1_l2[0][0], perf_iu6_dispatch_axu1_l2[1][0]};
`endif
assign perf_iu6_fx0_credit_stall = perf_iu6_fx0_credit_stall_l2;
assign perf_iu6_fx1_credit_stall = perf_iu6_fx1_credit_stall_l2;
assign perf_iu6_lq_credit_stall = perf_iu6_lq_credit_stall_l2;
assign perf_iu6_sq_credit_stall = perf_iu6_sq_credit_stall_l2;
assign perf_iu6_axu0_credit_stall = perf_iu6_axu0_credit_stall_l2;
assign perf_iu6_axu1_credit_stall = perf_iu6_axu1_credit_stall_l2;
assign iu_pc_fx0_credit_ok = iu_pc_fx0_credit_ok_l2;
assign iu_pc_fx1_credit_ok = iu_pc_fx1_credit_ok_l2;
assign iu_pc_axu0_credit_ok = iu_pc_axu0_credit_ok_l2;
assign iu_pc_axu1_credit_ok = iu_pc_axu1_credit_ok_l2;
assign iu_pc_lq_credit_ok = iu_pc_lq_credit_ok_l2;
assign iu_pc_sq_credit_ok = iu_pc_sq_credit_ok_l2;
generate
begin : xhdl7
genvar i;
for (i = 0; i <= `THREADS - 1; i = i + 1)
begin : thread_latches
tri_rlmreg_p #(.WIDTH(5), .INIT(`RV_FX0_ENTRIES - 2)) fx0_high_credit_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[fx0_high_credit_cnt_offset + 5 * i:fx0_high_credit_cnt_offset + (5 * (i + 1)-1)]),
.scout(sov[fx0_high_credit_cnt_offset + 5 * i:fx0_high_credit_cnt_offset + (5 * (i + 1)-1)]),
.din(fx0_high_credit_cnt_d[i]),
.dout(fx0_high_credit_cnt_l2[i])
);
tri_rlmreg_p #(.WIDTH(5), .INIT(`RV_FX1_ENTRIES - 2)) fx1_high_credit_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[fx1_high_credit_cnt_offset + 5 * i:fx1_high_credit_cnt_offset + (5 * (i + 1)-1)]),
.scout(sov[fx1_high_credit_cnt_offset + 5 * i:fx1_high_credit_cnt_offset + (5 * (i + 1)-1)]),
.din(fx1_high_credit_cnt_d[i]),
.dout(fx1_high_credit_cnt_l2[i])
);
tri_rlmreg_p #(.WIDTH(5), .INIT(`LDSTQ_ENTRIES - 2)) lq_cmdq_high_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[lq_cmdq_high_credit_cnt_offset + 5 * i:lq_cmdq_high_credit_cnt_offset + (5 * (i + 1)-1)]),
.scout(sov[lq_cmdq_high_credit_cnt_offset + 5 * i:lq_cmdq_high_credit_cnt_offset + (5 * (i + 1)-1)]),
.din(lq_cmdq_high_credit_cnt_d[i]),
.dout(lq_cmdq_high_credit_cnt_l2[i])
);
tri_rlmreg_p #(.WIDTH(5), .INIT(`STQ_ENTRIES - 2)) sq_cmdq_high_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[sq_cmdq_high_credit_cnt_offset + 5 * i:sq_cmdq_high_credit_cnt_offset + (5 * (i + 1)-1)]),
.scout(sov[sq_cmdq_high_credit_cnt_offset + 5 * i:sq_cmdq_high_credit_cnt_offset + (5 * (i + 1)-1)]),
.din(sq_cmdq_high_credit_cnt_d[i]),
.dout(sq_cmdq_high_credit_cnt_l2[i])
);
tri_rlmreg_p #(.WIDTH(5), .INIT(`RV_AXU0_ENTRIES - 2)) fu0_high_credit_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[fu0_high_credit_cnt_offset + 5 * i:fu0_high_credit_cnt_offset + (5 * (i + 1)-1)]),
.scout(sov[fu0_high_credit_cnt_offset + 5 * i:fu0_high_credit_cnt_offset + (5 * (i + 1)-1)]),
.din(fu0_high_credit_cnt_d[i]),
.dout(fu0_high_credit_cnt_l2[i])
);
tri_rlmreg_p #(.WIDTH(5), .INIT(`RV_AXU1_ENTRIES - 2)) fu1_high_credit_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[fu1_high_credit_cnt_offset + 5 * i:fu1_high_credit_cnt_offset + (5 * (i + 1)-1)]),
.scout(sov[fu1_high_credit_cnt_offset + 5 * i:fu1_high_credit_cnt_offset + (5 * (i + 1)-1)]),
.din(fu1_high_credit_cnt_d[i]),
.dout(fu1_high_credit_cnt_l2[i])
);
tri_rlmreg_p #(.WIDTH(5), .INIT(`RV_FX0_ENTRIES / 2)) fx0_med_credit_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[fx0_med_credit_cnt_offset + 5 * i:fx0_med_credit_cnt_offset + (5 * (i + 1)-1)]),
.scout(sov[fx0_med_credit_cnt_offset + 5 * i:fx0_med_credit_cnt_offset + (5 * (i + 1)-1)]),
.din(fx0_med_credit_cnt_d[i]),
.dout(fx0_med_credit_cnt_l2[i])
);
tri_rlmreg_p #(.WIDTH(5), .INIT(`RV_FX1_ENTRIES / 2)) fx1_med_credit_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[fx1_med_credit_cnt_offset + 5 * i:fx1_med_credit_cnt_offset + (5 * (i + 1)-1)]),
.scout(sov[fx1_med_credit_cnt_offset + 5 * i:fx1_med_credit_cnt_offset + (5 * (i + 1)-1)]),
.din(fx1_med_credit_cnt_d[i]),
.dout(fx1_med_credit_cnt_l2[i])
);
tri_rlmreg_p #(.WIDTH(5), .INIT(`LDSTQ_ENTRIES / 2)) lq_cmdq_med_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[lq_cmdq_med_credit_cnt_offset + 5 * i:lq_cmdq_med_credit_cnt_offset + (5 * (i + 1)-1)]),
.scout(sov[lq_cmdq_med_credit_cnt_offset + 5 * i:lq_cmdq_med_credit_cnt_offset + (5 * (i + 1)-1)]),
.din(lq_cmdq_med_credit_cnt_d[i]),
.dout(lq_cmdq_med_credit_cnt_l2[i])
);
tri_rlmreg_p #(.WIDTH(5), .INIT(`STQ_ENTRIES / 2)) sq_cmdq_med_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[sq_cmdq_med_credit_cnt_offset + 5 * i:sq_cmdq_med_credit_cnt_offset + (5 * (i + 1)-1)]),
.scout(sov[sq_cmdq_med_credit_cnt_offset + 5 * i:sq_cmdq_med_credit_cnt_offset + (5 * (i + 1)-1)]),
.din(sq_cmdq_med_credit_cnt_d[i]),
.dout(sq_cmdq_med_credit_cnt_l2[i])
);
tri_rlmreg_p #(.WIDTH(5), .INIT(`RV_AXU0_ENTRIES / 2)) fu0_med_credit_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[fu0_med_credit_cnt_offset + 5 * i:fu0_med_credit_cnt_offset + (5 * (i + 1)-1)]),
.scout(sov[fu0_med_credit_cnt_offset + 5 * i:fu0_med_credit_cnt_offset + (5 * (i + 1)-1)]),
.din(fu0_med_credit_cnt_d[i]),
.dout(fu0_med_credit_cnt_l2[i])
);
tri_rlmreg_p #(.WIDTH(5), .INIT(`RV_AXU1_ENTRIES / 2)) fu1_med_credit_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[fu1_med_credit_cnt_offset + 5 * i:fu1_med_credit_cnt_offset + (5 * (i + 1)-1)]),
.scout(sov[fu1_med_credit_cnt_offset + 5 * i:fu1_med_credit_cnt_offset + (5 * (i + 1)-1)]),
.din(fu1_med_credit_cnt_d[i]),
.dout(fu1_med_credit_cnt_l2[i])
);
end
end
endgenerate
tri_rlmreg_p #(.WIDTH(5), .INIT(`RV_FX0_ENTRIES)) fx0_total_credit_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[fx0_total_credit_cnt_offset:fx0_total_credit_cnt_offset + 5 - 1]),
.scout(sov[fx0_total_credit_cnt_offset:fx0_total_credit_cnt_offset + 5 - 1]),
.din(fx0_total_credit_cnt_d),
.dout(fx0_total_credit_cnt_l2)
);
tri_rlmreg_p #(.WIDTH(5), .INIT(`RV_FX1_ENTRIES)) fx1_total_credit_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[fx1_total_credit_cnt_offset:fx1_total_credit_cnt_offset + 5 - 1]),
.scout(sov[fx1_total_credit_cnt_offset:fx1_total_credit_cnt_offset + 5 - 1]),
.din(fx1_total_credit_cnt_d),
.dout(fx1_total_credit_cnt_l2)
);
tri_rlmreg_p #(.WIDTH(5), .INIT(`LDSTQ_ENTRIES)) lq_cmdq_total_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[lq_cmdq_total_credit_cnt_offset:lq_cmdq_total_credit_cnt_offset + 5 - 1]),
.scout(sov[lq_cmdq_total_credit_cnt_offset:lq_cmdq_total_credit_cnt_offset + 5 - 1]),
.din(lq_cmdq_total_credit_cnt_d),
.dout(lq_cmdq_total_credit_cnt_l2)
);
tri_rlmreg_p #(.WIDTH(5), .INIT(`STQ_ENTRIES)) sq_cmdq_total_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[sq_cmdq_total_credit_cnt_offset:sq_cmdq_total_credit_cnt_offset + 5 - 1]),
.scout(sov[sq_cmdq_total_credit_cnt_offset:sq_cmdq_total_credit_cnt_offset + 5 - 1]),
.din(sq_cmdq_total_credit_cnt_d),
.dout(sq_cmdq_total_credit_cnt_l2)
);
tri_rlmreg_p #(.WIDTH(5), .INIT(`RV_AXU0_ENTRIES)) fu0_total_credit_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[fu0_total_credit_cnt_offset:fu0_total_credit_cnt_offset + 5 - 1]),
.scout(sov[fu0_total_credit_cnt_offset:fu0_total_credit_cnt_offset + 5 - 1]),
.din(fu0_total_credit_cnt_d),
.dout(fu0_total_credit_cnt_l2)
);
tri_rlmreg_p #(.WIDTH(5), .INIT(`RV_AXU1_ENTRIES)) fu1_total_credit_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[fu1_total_credit_cnt_offset:fu1_total_credit_cnt_offset + 5 - 1]),
.scout(sov[fu1_total_credit_cnt_offset:fu1_total_credit_cnt_offset + 5 - 1]),
.din(fu1_total_credit_cnt_d),
.dout(fu1_total_credit_cnt_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) cp_flush_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[cp_flush_offset:cp_flush_offset + `THREADS - 1]),
.scout(sov[cp_flush_offset:cp_flush_offset + `THREADS - 1]),
.din(cp_flush),
.dout(cp_flush_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) xu_iu_run_thread_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[xu_iu_run_thread_offset:xu_iu_run_thread_offset + `THREADS - 1]),
.scout(sov[xu_iu_run_thread_offset:xu_iu_run_thread_offset + `THREADS - 1]),
.din(xu_iu_run_thread),
.dout(xu_iu_run_thread_l2)
);
tri_rlmlatch_p #(.INIT(0)) iu_xu_credits_returned_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[iu_xu_credits_returned_offset]),
.scout(sov[iu_xu_credits_returned_offset]),
.din(iu_xu_credits_returned_d),
.dout(iu_xu_credits_returned_l2)
);
tri_rlmreg_p #(.WIDTH(2), .INIT(0)) dual_issue_use_fx0_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.thold_b(pc_iu_func_sl_thold_0_b),
.sg(pc_iu_sg_0),
.force_t(force_t),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.d_mode(d_mode),
.scin(siv[dual_issue_use_fx0_offset:dual_issue_use_fx0_offset + 2 - 1]),
.scout(sov[dual_issue_use_fx0_offset:dual_issue_use_fx0_offset + 2 - 1]),
.din(dual_issue_use_fx0_d),
.dout(dual_issue_use_fx0_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(1)) last_thread_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(last_thread_act),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[last_thread_offset:last_thread_offset + `THREADS - 1]),
.scout(sov[last_thread_offset:last_thread_offset + `THREADS - 1]),
.din(last_thread_d),
.dout(last_thread_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) mm_hold_req_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(funcslp_force),
.thold_b(pc_iu_func_slp_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[mm_hold_req_offset:mm_hold_req_offset + `THREADS - 1]),
.scout(sov[mm_hold_req_offset:mm_hold_req_offset + `THREADS - 1]),
.din(mm_hold_req_d),
.dout(mm_hold_req_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) mm_hold_done_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(funcslp_force),
.thold_b(pc_iu_func_slp_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[mm_hold_done_offset:mm_hold_done_offset + `THREADS - 1]),
.scout(sov[mm_hold_done_offset:mm_hold_done_offset + `THREADS - 1]),
.din(mm_hold_done_d),
.dout(mm_hold_done_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) mm_bus_snoop_hold_req_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(funcslp_force),
.thold_b(pc_iu_func_slp_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[mm_bus_snoop_hold_req_offset:mm_bus_snoop_hold_req_offset + `THREADS - 1]),
.scout(sov[mm_bus_snoop_hold_req_offset:mm_bus_snoop_hold_req_offset + `THREADS - 1]),
.din(mm_bus_snoop_hold_req_d),
.dout(mm_bus_snoop_hold_req_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) mm_bus_snoop_hold_done_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(funcslp_force),
.thold_b(pc_iu_func_slp_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[mm_bus_snoop_hold_done_offset:mm_bus_snoop_hold_done_offset + `THREADS - 1]),
.scout(sov[mm_bus_snoop_hold_done_offset:mm_bus_snoop_hold_done_offset + `THREADS - 1]),
.din(mm_bus_snoop_hold_done_d),
.dout(mm_bus_snoop_hold_done_l2)
);
tri_rlmlatch_p #(.INIT(0)) hold_instructions_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.thold_b(pc_iu_func_sl_thold_0_b),
.sg(pc_iu_sg_0),
.force_t(force_t),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.d_mode(d_mode),
.scin(siv[hold_instructions_offset]),
.scout(sov[hold_instructions_offset]),
.din(hold_instructions_d),
.dout(hold_instructions_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) hold_req_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[hold_req_offset:hold_req_offset + `THREADS - 1]),
.scout(sov[hold_req_offset:hold_req_offset + `THREADS - 1]),
.din(hold_req_d),
.dout(hold_req_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) ivax_hold_req_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[ivax_hold_req_offset:ivax_hold_req_offset + `THREADS - 1]),
.scout(sov[ivax_hold_req_offset:ivax_hold_req_offset + `THREADS - 1]),
.din(ivax_hold_req_d),
.dout(ivax_hold_req_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) hold_done_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[hold_done_offset:hold_done_offset + `THREADS - 1]),
.scout(sov[hold_done_offset:hold_done_offset + `THREADS - 1]),
.din(hold_done_d),
.dout(hold_done_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) mm_iu_flush_req_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(funcslp_force),
.thold_b(pc_iu_func_slp_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[mm_iu_flush_req_offset:mm_iu_flush_req_offset + `THREADS - 1]),
.scout(sov[mm_iu_flush_req_offset:mm_iu_flush_req_offset + `THREADS - 1]),
.din(mm_iu_flush_req_d),
.dout(mm_iu_flush_req_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) mm_iu_hold_done_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(funcslp_force),
.thold_b(pc_iu_func_slp_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[mm_iu_hold_done_offset:mm_iu_hold_done_offset + `THREADS - 1]),
.scout(sov[mm_iu_hold_done_offset:mm_iu_hold_done_offset + `THREADS - 1]),
.din(mm_iu_hold_done),
.dout(mm_iu_hold_done_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) mm_iu_bus_snoop_hold_req_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(funcslp_force),
.thold_b(pc_iu_func_slp_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[mm_iu_bus_snoop_hold_req_offset:mm_iu_bus_snoop_hold_req_offset + `THREADS - 1]),
.scout(sov[mm_iu_bus_snoop_hold_req_offset:mm_iu_bus_snoop_hold_req_offset + `THREADS - 1]),
.din(mm_iu_bus_snoop_hold_req_d),
.dout(mm_iu_bus_snoop_hold_req_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) mm_iu_bus_snoop_hold_done_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(funcslp_force),
.thold_b(pc_iu_func_slp_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[mm_iu_bus_snoop_hold_done_offset:mm_iu_bus_snoop_hold_done_offset + `THREADS - 1]),
.scout(sov[mm_iu_bus_snoop_hold_done_offset:mm_iu_bus_snoop_hold_done_offset + `THREADS - 1]),
.din(mm_iu_bus_snoop_hold_done),
.dout(mm_iu_bus_snoop_hold_done_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) in_ucode_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[in_ucode_offset:in_ucode_offset + `THREADS - 1]),
.scout(sov[in_ucode_offset:in_ucode_offset + `THREADS - 1]),
.din(in_ucode_d),
.dout(in_ucode_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) in_fusion_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[in_fusion_offset:in_fusion_offset + `THREADS - 1]),
.scout(sov[in_fusion_offset:in_fusion_offset + `THREADS - 1]),
.din(in_fusion_d),
.dout(in_fusion_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) total_pri_mask_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[total_pri_mask_offset:total_pri_mask_offset + `THREADS - 1]),
.scout(sov[total_pri_mask_offset:total_pri_mask_offset + `THREADS - 1]),
.din(total_pri_mask_d),
.dout(total_pri_mask_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) high_pri_mask_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[high_pri_mask_offset:high_pri_mask_offset + `THREADS - 1]),
.scout(sov[high_pri_mask_offset:high_pri_mask_offset + `THREADS - 1]),
.din(high_pri_mask_d),
.dout(high_pri_mask_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) med_pri_mask_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[med_pri_mask_offset:med_pri_mask_offset + `THREADS - 1]),
.scout(sov[med_pri_mask_offset:med_pri_mask_offset + `THREADS - 1]),
.din(med_pri_mask_d),
.dout(med_pri_mask_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) low_pri_mask_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[low_pri_mask_offset:low_pri_mask_offset + `THREADS - 1]),
.scout(sov[low_pri_mask_offset:low_pri_mask_offset + `THREADS - 1]),
.din(low_pri_mask_d),
.dout(low_pri_mask_l2)
);
generate
begin : low_pri_counts
genvar i;
for (i = 0; i <= `THREADS - 1; i = i + 1)
begin : thread_latches
tri_rlmreg_p #(.WIDTH(8), .INIT(0)) low_pri_cnt_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(low_pri_cnt_act[i]),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[low_pri_cnt_offset + 8 * i:low_pri_cnt_offset + (8 * (i + 1)-1)]),
.scout(sov[low_pri_cnt_offset + 8 * i:low_pri_cnt_offset + (8 * (i + 1)-1)]),
.din(low_pri_cnt_d[i]),
.dout(low_pri_cnt_l2[i])
);
tri_rlmreg_p #(.WIDTH(6), .INIT(0)) low_pri_max_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[low_pri_max_offset + 6 * i:low_pri_max_offset + (6 * (i + 1)-1)]),
.scout(sov[low_pri_max_offset + 6 * i:low_pri_max_offset + (6 * (i + 1)-1)]),
.din(low_pri_max_d[i]),
.dout(low_pri_max_l2[i])
);
end
end
endgenerate
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) perf_iu6_stall_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(pc_iu_event_bus_enable),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[perf_iu6_stall_offset:perf_iu6_stall_offset + `THREADS - 1]),
.scout(sov[perf_iu6_stall_offset:perf_iu6_stall_offset + `THREADS - 1]),
.din(perf_iu6_stall_d),
.dout(perf_iu6_stall_l2)
);
generate
begin : perf_counts
genvar i;
for (i = 0; i <= `THREADS - 1; i = i + 1)
begin : thread_latches
tri_rlmreg_p #(.WIDTH(2), .INIT(0)) perf_iu6_dispatch_fx0_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(pc_iu_event_bus_enable),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[perf_iu6_dispatch_fx0_offset+2*i:perf_iu6_dispatch_fx0_offset + (2 * (i + 1)-1)]),
.scout(sov[perf_iu6_dispatch_fx0_offset+2*i:perf_iu6_dispatch_fx0_offset + (2 * (i + 1)-1)]),
.din(perf_iu6_dispatch_fx0_d[i]),
.dout(perf_iu6_dispatch_fx0_l2[i])
);
tri_rlmreg_p #(.WIDTH(2), .INIT(0)) perf_iu6_dispatch_fx1_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(pc_iu_event_bus_enable),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[perf_iu6_dispatch_fx1_offset+2*i:perf_iu6_dispatch_fx1_offset + (2 * (i + 1)-1)]),
.scout(sov[perf_iu6_dispatch_fx1_offset+2*i:perf_iu6_dispatch_fx1_offset + (2 * (i + 1)-1)]),
.din(perf_iu6_dispatch_fx1_d[i]),
.dout(perf_iu6_dispatch_fx1_l2[i])
);
tri_rlmreg_p #(.WIDTH(2), .INIT(0)) perf_iu6_dispatch_lq_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(pc_iu_event_bus_enable),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[perf_iu6_dispatch_lq_offset+2*i:perf_iu6_dispatch_lq_offset + (2 * (i + 1)-1)]),
.scout(sov[perf_iu6_dispatch_lq_offset+2*i:perf_iu6_dispatch_lq_offset + (2 * (i + 1)-1)]),
.din(perf_iu6_dispatch_lq_d[i]),
.dout(perf_iu6_dispatch_lq_l2[i])
);
tri_rlmreg_p #(.WIDTH(2), .INIT(0)) perf_iu6_dispatch_axu0_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(pc_iu_event_bus_enable),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[perf_iu6_dispatch_axu0_offset+2*i:perf_iu6_dispatch_axu0_offset + (2 * (i + 1)-1)]),
.scout(sov[perf_iu6_dispatch_axu0_offset+2*i:perf_iu6_dispatch_axu0_offset + (2 * (i + 1)-1)]),
.din(perf_iu6_dispatch_axu0_d[i]),
.dout(perf_iu6_dispatch_axu0_l2[i])
);
tri_rlmreg_p #(.WIDTH(2), .INIT(0)) perf_iu6_dispatch_axu1_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(pc_iu_event_bus_enable),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[perf_iu6_dispatch_axu1_offset+2*i:perf_iu6_dispatch_axu1_offset + (2 * (i + 1)-1)]),
.scout(sov[perf_iu6_dispatch_axu1_offset+2*i:perf_iu6_dispatch_axu1_offset + (2 * (i + 1)-1)]),
.din(perf_iu6_dispatch_axu1_d[i]),
.dout(perf_iu6_dispatch_axu1_l2[i])
);
end
end
endgenerate
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) perf_iu6_fx0_credit_stall_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(pc_iu_event_bus_enable),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[perf_iu6_fx0_credit_stall_offset:perf_iu6_fx0_credit_stall_offset + `THREADS - 1]),
.scout(sov[perf_iu6_fx0_credit_stall_offset:perf_iu6_fx0_credit_stall_offset + `THREADS - 1]),
.din(perf_iu6_fx0_credit_stall_d),
.dout(perf_iu6_fx0_credit_stall_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) perf_iu6_fx1_credit_stall_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(pc_iu_event_bus_enable),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[perf_iu6_fx1_credit_stall_offset:perf_iu6_fx1_credit_stall_offset + `THREADS - 1]),
.scout(sov[perf_iu6_fx1_credit_stall_offset:perf_iu6_fx1_credit_stall_offset + `THREADS - 1]),
.din(perf_iu6_fx1_credit_stall_d),
.dout(perf_iu6_fx1_credit_stall_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) perf_iu6_lq_credit_stall_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(pc_iu_event_bus_enable),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[perf_iu6_lq_credit_stall_offset:perf_iu6_lq_credit_stall_offset + `THREADS - 1]),
.scout(sov[perf_iu6_lq_credit_stall_offset:perf_iu6_lq_credit_stall_offset + `THREADS - 1]),
.din(perf_iu6_lq_credit_stall_d),
.dout(perf_iu6_lq_credit_stall_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) perf_iu6_sq_credit_stall_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(pc_iu_event_bus_enable),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[perf_iu6_sq_credit_stall_offset:perf_iu6_sq_credit_stall_offset + `THREADS - 1]),
.scout(sov[perf_iu6_sq_credit_stall_offset:perf_iu6_sq_credit_stall_offset + `THREADS - 1]),
.din(perf_iu6_sq_credit_stall_d),
.dout(perf_iu6_sq_credit_stall_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) perf_iu6_axu0_credit_stall_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(pc_iu_event_bus_enable),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[perf_iu6_axu0_credit_stall_offset:perf_iu6_axu0_credit_stall_offset + `THREADS - 1]),
.scout(sov[perf_iu6_axu0_credit_stall_offset:perf_iu6_axu0_credit_stall_offset + `THREADS - 1]),
.din(perf_iu6_axu0_credit_stall_d),
.dout(perf_iu6_axu0_credit_stall_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) perf_iu6_axu1_credit_stall_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(pc_iu_event_bus_enable),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[perf_iu6_axu1_credit_stall_offset:perf_iu6_axu1_credit_stall_offset + `THREADS - 1]),
.scout(sov[perf_iu6_axu1_credit_stall_offset:perf_iu6_axu1_credit_stall_offset + `THREADS - 1]),
.din(perf_iu6_axu1_credit_stall_d),
.dout(perf_iu6_axu1_credit_stall_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) iu_pc_fx0_credit_ok_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[iu_pc_fx0_credit_ok_offset:iu_pc_fx0_credit_ok_offset + `THREADS - 1]),
.scout(sov[iu_pc_fx0_credit_ok_offset:iu_pc_fx0_credit_ok_offset + `THREADS - 1]),
.din(iu_pc_fx0_credit_ok_d),
.dout(iu_pc_fx0_credit_ok_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) iu_pc_fx1_credit_ok_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[iu_pc_fx1_credit_ok_offset:iu_pc_fx1_credit_ok_offset + `THREADS - 1]),
.scout(sov[iu_pc_fx1_credit_ok_offset:iu_pc_fx1_credit_ok_offset + `THREADS - 1]),
.din(iu_pc_fx1_credit_ok_d),
.dout(iu_pc_fx1_credit_ok_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) iu_pc_lq_credit_ok_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[iu_pc_lq_credit_ok_offset:iu_pc_lq_credit_ok_offset + `THREADS - 1]),
.scout(sov[iu_pc_lq_credit_ok_offset:iu_pc_lq_credit_ok_offset + `THREADS - 1]),
.din(iu_pc_lq_credit_ok_d),
.dout(iu_pc_lq_credit_ok_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) iu_pc_sq_credit_ok_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[iu_pc_sq_credit_ok_offset:iu_pc_sq_credit_ok_offset + `THREADS - 1]),
.scout(sov[iu_pc_sq_credit_ok_offset:iu_pc_sq_credit_ok_offset + `THREADS - 1]),
.din(iu_pc_sq_credit_ok_d),
.dout(iu_pc_sq_credit_ok_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) iu_pc_axu0_credit_ok_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[iu_pc_axu0_credit_ok_offset:iu_pc_axu0_credit_ok_offset + `THREADS - 1]),
.scout(sov[iu_pc_axu0_credit_ok_offset:iu_pc_axu0_credit_ok_offset + `THREADS - 1]),
.din(iu_pc_axu0_credit_ok_d),
.dout(iu_pc_axu0_credit_ok_l2)
);
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0)) iu_pc_axu1_credit_ok_latch(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.act(tiup),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b),
.d_mode(d_mode),
.sg(pc_iu_sg_0),
.delay_lclkr(delay_lclkr),
.mpw1_b(mpw1_b),
.mpw2_b(mpw2_b),
.scin(siv[iu_pc_axu1_credit_ok_offset:iu_pc_axu1_credit_ok_offset + `THREADS - 1]),
.scout(sov[iu_pc_axu1_credit_ok_offset:iu_pc_axu1_credit_ok_offset + `THREADS - 1]),
.din(iu_pc_axu1_credit_ok_d),
.dout(iu_pc_axu1_credit_ok_l2)
);
//-----------------------------------------------
// pervasive
//-----------------------------------------------
tri_plat #(.WIDTH(3)) perv_2to1_reg(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.flush(tc_ac_ccflush_dc),
.din({pc_iu_func_sl_thold_2, pc_iu_func_slp_sl_thold_2, pc_iu_sg_2}),
.q({pc_iu_func_sl_thold_1, pc_iu_func_slp_sl_thold_1, pc_iu_sg_1})
);
tri_plat #(.WIDTH(3)) perv_1to0_reg(
.vd(vdd),
.gd(gnd),
.nclk(nclk),
.flush(tc_ac_ccflush_dc),
.din({pc_iu_func_sl_thold_1, pc_iu_func_slp_sl_thold_1, pc_iu_sg_1}),
.q({pc_iu_func_sl_thold_0, pc_iu_func_slp_sl_thold_0, pc_iu_sg_0})
);
tri_lcbor perv_lcbor_sl(
.clkoff_b(clkoff_b),
.thold(pc_iu_func_sl_thold_0),
.sg(pc_iu_sg_0),
.act_dis(act_dis),
.force_t(force_t),
.thold_b(pc_iu_func_sl_thold_0_b)
);
tri_lcbor perv_lcbor_slp_sl(
.clkoff_b(clkoff_b),
.thold(pc_iu_func_slp_sl_thold_0),
.sg(pc_iu_sg_0),
.act_dis(act_dis),
.force_t(funcslp_force),
.thold_b(pc_iu_func_slp_sl_thold_0_b)
);
//---------------------------------------------------------------------
// Scan
//---------------------------------------------------------------------
assign siv[0:scan_right] = {sov[1:scan_right], scan_in};
assign scan_out = sov[0];
endmodule