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.
3758 lines
161 KiB
Verilog
3758 lines
161 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.
|
|
|
|
// Description: XU LSU L2 Command Queue
|
|
//
|
|
//*****************************************************************************
|
|
|
|
`timescale 1 ns / 1 ns
|
|
|
|
`include "tri_a2o.vh"
|
|
|
|
module lq_lsq(
|
|
rv_lq_rv1_i0_vld,
|
|
rv_lq_rv1_i0_ucode_preissue,
|
|
rv_lq_rv1_i0_s3_t,
|
|
rv_lq_rv1_i0_isLoad,
|
|
rv_lq_rv1_i0_isStore,
|
|
rv_lq_rv1_i0_itag,
|
|
rv_lq_rv1_i0_rte_lq,
|
|
rv_lq_rv1_i0_rte_sq,
|
|
rv_lq_rv1_i1_vld,
|
|
rv_lq_rv1_i1_ucode_preissue,
|
|
rv_lq_rv1_i1_s3_t,
|
|
rv_lq_rv1_i1_isLoad,
|
|
rv_lq_rv1_i1_isStore,
|
|
rv_lq_rv1_i1_itag,
|
|
rv_lq_rv1_i1_rte_lq,
|
|
rv_lq_rv1_i1_rte_sq,
|
|
xu1_lq_ex2_stq_val,
|
|
xu1_lq_ex2_stq_itag,
|
|
xu1_lq_ex2_stq_dvc1_cmp,
|
|
xu1_lq_ex2_stq_dvc2_cmp,
|
|
ctl_lsq_ex4_xu1_data,
|
|
xu1_lq_ex3_illeg_lswx,
|
|
xu1_lq_ex3_strg_noop,
|
|
xu_lq_axu_ex_stq_val,
|
|
xu_lq_axu_ex_stq_itag,
|
|
xu_lq_axu_exp1_stq_data,
|
|
rv_lq_vld,
|
|
rv_lq_isLoad,
|
|
rv_lq_rvs_empty,
|
|
ctl_lsq_rv1_dir_rd_val,
|
|
ctl_lsq_ex2_streq_val,
|
|
ctl_lsq_ex2_itag,
|
|
ctl_lsq_ex2_thrd_id,
|
|
ctl_lsq_ex3_ldreq_val,
|
|
ctl_lsq_ex3_wchkall_val,
|
|
ctl_lsq_ex3_pfetch_val,
|
|
ctl_lsq_ex3_byte_en,
|
|
ctl_lsq_ex3_p_addr,
|
|
ctl_lsq_ex3_thrd_id,
|
|
ctl_lsq_ex3_algebraic,
|
|
ctl_lsq_ex3_opsize,
|
|
ctl_lsq_ex4_ldreq_val,
|
|
ctl_lsq_ex4_binvreq_val,
|
|
ctl_lsq_ex4_streq_val,
|
|
ctl_lsq_ex4_othreq_val,
|
|
ctl_lsq_ex4_p_addr,
|
|
ctl_lsq_ex4_dReq_val,
|
|
ctl_lsq_ex4_gath_load,
|
|
ctl_lsq_ex4_send_l2,
|
|
ctl_lsq_ex4_has_data,
|
|
ctl_lsq_ex4_cline_chk,
|
|
ctl_lsq_ex4_wimge,
|
|
ctl_lsq_ex4_byte_swap,
|
|
ctl_lsq_ex4_is_sync,
|
|
ctl_lsq_ex4_all_thrd_chk,
|
|
ctl_lsq_ex4_is_icbi,
|
|
ctl_lsq_ex4_watch_clr,
|
|
ctl_lsq_ex4_watch_clr_all,
|
|
ctl_lsq_ex4_mtspr_trace,
|
|
ctl_lsq_ex4_is_resv,
|
|
ctl_lsq_ex4_is_mfgpr,
|
|
ctl_lsq_ex4_is_icswxr,
|
|
ctl_lsq_ex4_is_store,
|
|
ctl_lsq_ex4_is_inval_op,
|
|
ctl_lsq_ex4_is_cinval,
|
|
ctl_lsq_ex5_lock_clr,
|
|
ctl_lsq_ex5_lock_set,
|
|
ctl_lsq_ex5_watch_set,
|
|
ctl_lsq_ex5_tgpr,
|
|
ctl_lsq_ex5_axu_val,
|
|
ctl_lsq_ex5_is_epid,
|
|
ctl_lsq_ex5_usr_def,
|
|
ctl_lsq_ex5_drop_rel,
|
|
ctl_lsq_ex5_flush_req,
|
|
ctl_lsq_ex5_flush_pfetch,
|
|
ctl_lsq_ex5_cmmt_events,
|
|
ctl_lsq_ex5_perf_val0,
|
|
ctl_lsq_ex5_perf_sel0,
|
|
ctl_lsq_ex5_perf_val1,
|
|
ctl_lsq_ex5_perf_sel1,
|
|
ctl_lsq_ex5_perf_val2,
|
|
ctl_lsq_ex5_perf_sel2,
|
|
ctl_lsq_ex5_perf_val3,
|
|
ctl_lsq_ex5_perf_sel3,
|
|
ctl_lsq_ex5_not_touch,
|
|
ctl_lsq_ex5_class_id,
|
|
ctl_lsq_ex5_dvc,
|
|
ctl_lsq_ex5_dacrw,
|
|
ctl_lsq_ex5_ttype,
|
|
ctl_lsq_ex5_l_fld,
|
|
ctl_lsq_ex5_load_hit,
|
|
lsq_ctl_ex6_ldq_events,
|
|
lsq_ctl_ex6_stq_events,
|
|
lsq_perv_ex7_events,
|
|
lsq_perv_ldq_events,
|
|
lsq_perv_stq_events,
|
|
lsq_perv_odq_events,
|
|
ctl_lsq_ex6_ldh_dacrw,
|
|
ctl_lsq_stq3_icswx_data,
|
|
ctl_lsq_spr_dvc1_dbg,
|
|
ctl_lsq_spr_dvc2_dbg,
|
|
ctl_lsq_spr_dbcr2_dvc1m,
|
|
ctl_lsq_spr_dbcr2_dvc1be,
|
|
ctl_lsq_spr_dbcr2_dvc2m,
|
|
ctl_lsq_spr_dbcr2_dvc2be,
|
|
ctl_lsq_dbg_int_en,
|
|
ctl_lsq_ldp_idle,
|
|
ctl_lsq_spr_lsucr0_b2b,
|
|
ctl_lsq_spr_lsucr0_lge,
|
|
ctl_lsq_spr_lsucr0_lca,
|
|
ctl_lsq_spr_lsucr0_sca,
|
|
ctl_lsq_spr_lsucr0_dfwd,
|
|
ctl_lsq_pf_empty,
|
|
dir_arr_wr_enable,
|
|
dir_arr_wr_way,
|
|
dir_arr_wr_addr,
|
|
dir_arr_wr_data,
|
|
dir_arr_rd_data1,
|
|
xu_lq_spr_xucr0_cls,
|
|
xu_lq_spr_xucr0_cred,
|
|
iu_lq_spr_iucr0_icbi_ack,
|
|
dat_lsq_stq4_128data,
|
|
iu_lq_request,
|
|
iu_lq_cTag,
|
|
iu_lq_ra,
|
|
iu_lq_wimge,
|
|
iu_lq_userdef,
|
|
lq_iu_icbi_val,
|
|
lq_iu_icbi_addr,
|
|
iu_lq_icbi_complete,
|
|
lq_iu_ici_val,
|
|
mm_lq_lsu_req,
|
|
mm_lq_lsu_ttype,
|
|
mm_lq_lsu_wimge,
|
|
mm_lq_lsu_u,
|
|
mm_lq_lsu_addr,
|
|
mm_lq_lsu_lpid,
|
|
mm_lq_lsu_gs,
|
|
mm_lq_lsu_ind,
|
|
mm_lq_lsu_lbit,
|
|
mm_lq_lsu_lpidr,
|
|
lq_mm_lsu_token,
|
|
lq_mm_lmq_stq_empty,
|
|
lq_xu_quiesce,
|
|
lq_pc_ldq_quiesce,
|
|
lq_pc_stq_quiesce,
|
|
lq_pc_pfetch_quiesce,
|
|
iu_lq_cp_flush,
|
|
iu_lq_recirc_val,
|
|
iu_lq_cp_next_itag,
|
|
iu_lq_i0_completed,
|
|
iu_lq_i0_completed_itag,
|
|
iu_lq_i1_completed,
|
|
iu_lq_i1_completed_itag,
|
|
xu_lq_xer_cp_rd,
|
|
an_ac_sync_ack,
|
|
an_ac_stcx_complete,
|
|
an_ac_stcx_pass,
|
|
an_ac_icbi_ack,
|
|
an_ac_icbi_ack_thread,
|
|
an_ac_coreid,
|
|
an_ac_req_ld_pop,
|
|
an_ac_req_st_pop,
|
|
an_ac_req_st_gather,
|
|
an_ac_reld_data_vld,
|
|
an_ac_reld_core_tag,
|
|
an_ac_reld_qw,
|
|
an_ac_reld_data,
|
|
an_ac_reld_data_coming,
|
|
an_ac_reld_ditc,
|
|
an_ac_reld_crit_qw,
|
|
an_ac_reld_l1_dump,
|
|
an_ac_reld_ecc_err,
|
|
an_ac_reld_ecc_err_ue,
|
|
an_ac_back_inv,
|
|
an_ac_back_inv_addr,
|
|
an_ac_back_inv_target_bit1,
|
|
an_ac_back_inv_target_bit3,
|
|
an_ac_back_inv_target_bit4,
|
|
an_ac_req_spare_ctrl_a1,
|
|
lq_iu_credit_free,
|
|
sq_iu_credit_free,
|
|
lsq_ctl_rv_hold_all,
|
|
lsq_ctl_rv_set_hold,
|
|
lsq_ctl_rv_clr_hold,
|
|
lsq_ctl_stq_release_itag_vld,
|
|
lsq_ctl_stq_release_itag,
|
|
lsq_ctl_stq_release_tid,
|
|
lsq_ctl_stq_cpl_ready,
|
|
lsq_ctl_stq_cpl_ready_itag,
|
|
lsq_ctl_stq_cpl_ready_tid,
|
|
lsq_ctl_stq_n_flush,
|
|
lsq_ctl_stq_np1_flush,
|
|
lsq_ctl_stq_exception_val,
|
|
lsq_ctl_stq_exception,
|
|
lsq_ctl_stq_dacrw,
|
|
ctl_lsq_stq_cpl_blk,
|
|
ctl_lsq_ex_pipe_full,
|
|
lsq_ctl_ex5_ldq_restart,
|
|
lsq_ctl_ex5_stq_restart,
|
|
lsq_ctl_ex5_stq_restart_miss,
|
|
lsq_ctl_ex5_fwd_val,
|
|
lsq_ctl_ex5_fwd_data,
|
|
lsq_ctl_sync_in_stq,
|
|
lsq_ctl_sync_done,
|
|
lq1_iu_execute_vld,
|
|
lq1_iu_itag,
|
|
lq1_iu_exception_val,
|
|
lq1_iu_exception,
|
|
lq1_iu_n_flush,
|
|
lq1_iu_np1_flush,
|
|
lq1_iu_dacr_type,
|
|
lq1_iu_dacrw,
|
|
lq1_iu_perf_events,
|
|
lsq_dat_stq1_stg_act,
|
|
lsq_dat_rel1_data_val,
|
|
lsq_dat_rel1_qw,
|
|
lsq_dat_stq1_val,
|
|
lsq_dat_stq1_mftgpr_val,
|
|
lsq_dat_stq1_store_val,
|
|
lsq_dat_stq1_byte_en,
|
|
lsq_dat_stq1_op_size,
|
|
lsq_dat_stq1_addr,
|
|
lsq_dat_stq1_le_mode,
|
|
lsq_dat_stq2_blk_req,
|
|
lsq_dat_stq2_store_data,
|
|
lsq_ctl_stq1_stg_act,
|
|
lsq_ctl_oldest_tid,
|
|
lsq_ctl_oldest_itag,
|
|
lsq_ctl_rel1_clr_val,
|
|
lsq_ctl_rel1_set_val,
|
|
lsq_ctl_rel1_data_val,
|
|
lsq_ctl_rel1_back_inv,
|
|
lsq_ctl_rel1_tag,
|
|
lsq_ctl_rel1_classid,
|
|
lsq_ctl_rel1_lock_set,
|
|
lsq_ctl_rel1_watch_set,
|
|
lsq_ctl_rel2_blk_req,
|
|
lsq_ctl_stq2_blk_req,
|
|
lsq_ctl_rel2_upd_val,
|
|
lsq_ctl_rel2_data,
|
|
lsq_ctl_rel3_l1dump_val,
|
|
lsq_ctl_rel3_clr_relq,
|
|
ctl_lsq_stq4_perr_reject,
|
|
lsq_ctl_stq1_val,
|
|
lsq_ctl_stq1_mftgpr_val,
|
|
lsq_ctl_stq1_mfdpf_val,
|
|
lsq_ctl_stq1_mfdpa_val,
|
|
lsq_ctl_stq1_thrd_id,
|
|
lsq_ctl_rel1_thrd_id,
|
|
lsq_ctl_stq1_store_val,
|
|
lsq_ctl_stq1_lock_clr,
|
|
lsq_ctl_stq1_watch_clr,
|
|
lsq_ctl_stq1_l_fld,
|
|
lsq_ctl_stq1_inval,
|
|
lsq_ctl_stq1_dci_val,
|
|
lsq_ctl_stq1_addr,
|
|
lsq_ctl_stq1_ci,
|
|
lsq_ctl_stq1_axu_val,
|
|
lsq_ctl_stq1_epid_val,
|
|
lsq_ctl_stq4_xucr0_cul,
|
|
lsq_ctl_stq5_itag,
|
|
lsq_ctl_stq5_tgpr,
|
|
lsq_ctl_rel1_gpr_val,
|
|
lsq_ctl_rel1_ta_gpr,
|
|
lsq_ctl_rel1_upd_gpr,
|
|
lsq_ctl_stq1_resv,
|
|
lsq_ctl_ex3_strg_val,
|
|
lsq_ctl_ex3_strg_noop,
|
|
lsq_ctl_ex3_illeg_lswx,
|
|
lsq_ctl_ex3_ct_val,
|
|
lsq_ctl_ex3_be_ct,
|
|
lsq_ctl_ex3_le_ct,
|
|
odq_pf_report_tid,
|
|
odq_pf_report_itag,
|
|
odq_pf_resolved,
|
|
lq_xu_cr_l2_we,
|
|
lq_xu_cr_l2_wa,
|
|
lq_xu_cr_l2_wd,
|
|
lq_xu_axu_rel_le,
|
|
lsq_ctl_rv0_back_inv,
|
|
lsq_ctl_rv1_back_inv_addr,
|
|
lq_rv_itag2_vld,
|
|
lq_rv_itag2,
|
|
lq_xu_dbell_val,
|
|
lq_xu_dbell_type,
|
|
lq_xu_dbell_brdcast,
|
|
lq_xu_dbell_lpid_match,
|
|
lq_xu_dbell_pirtag,
|
|
ac_an_req_pwr_token,
|
|
ac_an_req,
|
|
ac_an_req_ra,
|
|
ac_an_req_ttype,
|
|
ac_an_req_thread,
|
|
ac_an_req_wimg_w,
|
|
ac_an_req_wimg_i,
|
|
ac_an_req_wimg_m,
|
|
ac_an_req_wimg_g,
|
|
ac_an_req_endian,
|
|
ac_an_req_user_defined,
|
|
ac_an_req_spare_ctrl_a0,
|
|
ac_an_req_ld_core_tag,
|
|
ac_an_req_ld_xfr_len,
|
|
ac_an_st_byte_enbl,
|
|
ac_an_st_data,
|
|
ac_an_st_data_pwr_token,
|
|
pc_lq_inj_relq_parity,
|
|
lq_pc_err_relq_parity,
|
|
lq_pc_err_invld_reld,
|
|
lq_pc_err_l2intrf_ecc,
|
|
lq_pc_err_l2intrf_ue,
|
|
lq_pc_err_l2credit_overrun,
|
|
vcs,
|
|
vdd,
|
|
gnd,
|
|
nclk,
|
|
sg_2,
|
|
fce_2,
|
|
func_sl_thold_2,
|
|
func_nsl_thold_2,
|
|
func_slp_sl_thold_2,
|
|
pc_lq_ccflush_dc,
|
|
clkoff_dc_b,
|
|
d_mode_dc,
|
|
delay_lclkr_dc,
|
|
mpw1_dc_b,
|
|
mpw2_dc_b,
|
|
g8t_clkoff_dc_b,
|
|
g8t_d_mode_dc,
|
|
g8t_delay_lclkr_dc,
|
|
g8t_mpw1_dc_b,
|
|
g8t_mpw2_dc_b,
|
|
abst_sl_thold_2,
|
|
time_sl_thold_2,
|
|
ary_nsl_thold_2,
|
|
repr_sl_thold_2,
|
|
bolt_sl_thold_2,
|
|
bo_enable_2,
|
|
an_ac_scan_dis_dc_b,
|
|
an_ac_scan_diag_dc,
|
|
an_ac_lbist_ary_wrt_thru_dc,
|
|
pc_lq_abist_ena_dc,
|
|
pc_lq_abist_raw_dc_b,
|
|
pc_lq_bo_unload,
|
|
pc_lq_bo_repair,
|
|
pc_lq_bo_reset,
|
|
pc_lq_bo_shdata,
|
|
pc_lq_bo_select,
|
|
lq_pc_bo_fail,
|
|
lq_pc_bo_diagout,
|
|
pc_lq_abist_wl64_comp_ena,
|
|
pc_lq_abist_g8t_wenb,
|
|
pc_lq_abist_g8t1p_renb_0,
|
|
pc_lq_abist_g8t_dcomp,
|
|
pc_lq_abist_g8t_bw_1,
|
|
pc_lq_abist_g8t_bw_0,
|
|
pc_lq_abist_di_0,
|
|
pc_lq_abist_waddr_0,
|
|
pc_lq_abist_raddr_0,
|
|
abst_scan_in,
|
|
time_scan_in,
|
|
repr_scan_in,
|
|
func_scan_in,
|
|
abst_scan_out,
|
|
time_scan_out,
|
|
repr_scan_out,
|
|
func_scan_out
|
|
);
|
|
// parameter EXPAND_TYPE = 2; // 0 = ibm (Umbra), 1 = non-ibm, 2 = ibm (MPG)
|
|
// parameter GPR_WIDTH_ENC = 6; // Register Mode 5 = 32bit, 6 = 64bit
|
|
// parameter LDSTQ_ENTRIES = 16; // Order Queue Size
|
|
// parameter LDSTQ_ENTRIES_ENC = 4; // Order Queue Size Encoded
|
|
// parameter LMQ_ENTRIES = 8; // Loadmiss Queue Size
|
|
// parameter LMQ_ENTRIES_ENC = 3; // Loadmiss Queue Size Encoded
|
|
// parameter LGQ_ENTRIES = 8; // Load Gather Queue Size
|
|
// parameter STQ_ENTRIES = 12; // Store Queue Size
|
|
// parameter STQ_ENTRIES_ENC = 4; // Store Queue Size Encoded
|
|
// parameter STQ_FWD_ENTRIES = 4; // number of stq entries that can be forwarded from
|
|
// parameter STQ_DATA_SIZE = 64; // 64 or 128 Bit store data sizes supported
|
|
// parameter IUQ_ENTRIES = 4; // Instruction Fetch Queue Size
|
|
// parameter MMQ_ENTRIES = 1; // Memory Management Queue Size
|
|
// parameter ITAG_SIZE_ENC = 7; // ITAG size
|
|
// parameter CR_POOL_ENC = 5; // Encode of CR rename pool size
|
|
// parameter GPR_POOL_ENC = 6;
|
|
// parameter AXU_SPARE_ENC = 3;
|
|
// parameter THREADS_POOL_ENC = 1;
|
|
// parameter DC_SIZE = 15; // 14 => 16K L1D$, 15 => 32K L1D
|
|
// parameter CL_SIZE = 6; // 6 => 64B CLINE, 7 => 128B CLINE
|
|
// parameter LOAD_CREDITS = 8;
|
|
// parameter STORE_CREDITS = 32;
|
|
// parameter THREADS = 2; // Number of Threads in the System
|
|
// parameter CR_WIDTH = 4;
|
|
// parameter REAL_IFAR_WIDTH = 42; // real addressing bits
|
|
parameter WAYDATASIZE = 34; // TagSize + Parity Bits
|
|
|
|
// IU interface to RV for instruction insertion
|
|
// port 0
|
|
input [0:`THREADS-1] rv_lq_rv1_i0_vld;
|
|
input rv_lq_rv1_i0_ucode_preissue;
|
|
input [0:2] rv_lq_rv1_i0_s3_t;
|
|
input rv_lq_rv1_i0_isLoad;
|
|
input rv_lq_rv1_i0_isStore;
|
|
input [0:`ITAG_SIZE_ENC-1] rv_lq_rv1_i0_itag;
|
|
input rv_lq_rv1_i0_rte_lq;
|
|
input rv_lq_rv1_i0_rte_sq;
|
|
|
|
// port 1
|
|
input [0:`THREADS-1] rv_lq_rv1_i1_vld;
|
|
input rv_lq_rv1_i1_ucode_preissue;
|
|
input [0:2] rv_lq_rv1_i1_s3_t;
|
|
input rv_lq_rv1_i1_isLoad;
|
|
input rv_lq_rv1_i1_isStore;
|
|
input [0:`ITAG_SIZE_ENC-1] rv_lq_rv1_i1_itag;
|
|
input rv_lq_rv1_i1_rte_lq;
|
|
input rv_lq_rv1_i1_rte_sq;
|
|
|
|
// FXU0 Data interface
|
|
input [0:`THREADS-1] xu1_lq_ex2_stq_val;
|
|
input [0:`ITAG_SIZE_ENC-1] xu1_lq_ex2_stq_itag;
|
|
input [(64-(2**`GPR_WIDTH_ENC))/8:7] xu1_lq_ex2_stq_dvc1_cmp;
|
|
input [(64-(2**`GPR_WIDTH_ENC))/8:7] xu1_lq_ex2_stq_dvc2_cmp;
|
|
input [64-(2**`GPR_WIDTH_ENC):63] ctl_lsq_ex4_xu1_data;
|
|
input xu1_lq_ex3_illeg_lswx;
|
|
input xu1_lq_ex3_strg_noop;
|
|
|
|
// AXU Data interface
|
|
input [0:`THREADS-1] xu_lq_axu_ex_stq_val;
|
|
input [0:`ITAG_SIZE_ENC-1] xu_lq_axu_ex_stq_itag;
|
|
input [(128-`STQ_DATA_SIZE):127] xu_lq_axu_exp1_stq_data;
|
|
|
|
// RV1 RV Issue Valid
|
|
input [0:`THREADS-1] rv_lq_vld;
|
|
input rv_lq_isLoad;
|
|
|
|
// RV is empty indicator
|
|
input [0:`THREADS-1] rv_lq_rvs_empty;
|
|
|
|
// SPR Directory Read Valid
|
|
input ctl_lsq_rv1_dir_rd_val;
|
|
|
|
// Execution Pipe Outputs
|
|
input [0:`THREADS-1] ctl_lsq_ex2_streq_val;
|
|
input [0:`ITAG_SIZE_ENC-1] ctl_lsq_ex2_itag;
|
|
input [0:`THREADS-1] ctl_lsq_ex2_thrd_id;
|
|
input [0:`THREADS-1] ctl_lsq_ex3_ldreq_val;
|
|
input [0:`THREADS-1] ctl_lsq_ex3_wchkall_val;
|
|
input ctl_lsq_ex3_pfetch_val;
|
|
input [0:15] ctl_lsq_ex3_byte_en;
|
|
input [58:63] ctl_lsq_ex3_p_addr;
|
|
input [0:`THREADS-1] ctl_lsq_ex3_thrd_id;
|
|
input ctl_lsq_ex3_algebraic;
|
|
input [0:2] ctl_lsq_ex3_opsize;
|
|
input ctl_lsq_ex4_ldreq_val;
|
|
input ctl_lsq_ex4_binvreq_val;
|
|
input ctl_lsq_ex4_streq_val;
|
|
input ctl_lsq_ex4_othreq_val;
|
|
input [64-`REAL_IFAR_WIDTH:57] ctl_lsq_ex4_p_addr;
|
|
input ctl_lsq_ex4_dReq_val;
|
|
input ctl_lsq_ex4_gath_load;
|
|
input ctl_lsq_ex4_send_l2;
|
|
input ctl_lsq_ex4_has_data;
|
|
input ctl_lsq_ex4_cline_chk;
|
|
input [0:4] ctl_lsq_ex4_wimge;
|
|
input ctl_lsq_ex4_byte_swap;
|
|
input ctl_lsq_ex4_is_sync;
|
|
input ctl_lsq_ex4_all_thrd_chk;
|
|
input ctl_lsq_ex4_is_icbi;
|
|
input ctl_lsq_ex4_watch_clr;
|
|
input ctl_lsq_ex4_watch_clr_all;
|
|
input ctl_lsq_ex4_mtspr_trace;
|
|
input ctl_lsq_ex4_is_resv;
|
|
input ctl_lsq_ex4_is_mfgpr;
|
|
input ctl_lsq_ex4_is_icswxr;
|
|
input ctl_lsq_ex4_is_store;
|
|
input ctl_lsq_ex4_is_inval_op;
|
|
input ctl_lsq_ex4_is_cinval;
|
|
input ctl_lsq_ex5_lock_clr;
|
|
input ctl_lsq_ex5_lock_set;
|
|
input ctl_lsq_ex5_watch_set;
|
|
input [0:`AXU_SPARE_ENC+`GPR_POOL_ENC+`THREADS_POOL_ENC-1] ctl_lsq_ex5_tgpr;
|
|
input ctl_lsq_ex5_axu_val;
|
|
input ctl_lsq_ex5_is_epid;
|
|
input [0:3] ctl_lsq_ex5_usr_def;
|
|
input ctl_lsq_ex5_drop_rel;
|
|
input ctl_lsq_ex5_flush_req; // Flush request from LDQ/STQ
|
|
input ctl_lsq_ex5_flush_pfetch; // Flush Prefetch in EX5
|
|
input [0:10] ctl_lsq_ex5_cmmt_events;
|
|
input ctl_lsq_ex5_perf_val0;
|
|
input [0:3] ctl_lsq_ex5_perf_sel0;
|
|
input ctl_lsq_ex5_perf_val1;
|
|
input [0:3] ctl_lsq_ex5_perf_sel1;
|
|
input ctl_lsq_ex5_perf_val2;
|
|
input [0:3] ctl_lsq_ex5_perf_sel2;
|
|
input ctl_lsq_ex5_perf_val3;
|
|
input [0:3] ctl_lsq_ex5_perf_sel3;
|
|
input ctl_lsq_ex5_not_touch;
|
|
input [0:1] ctl_lsq_ex5_class_id;
|
|
input [0:1] ctl_lsq_ex5_dvc;
|
|
input [0:3] ctl_lsq_ex5_dacrw;
|
|
input [0:5] ctl_lsq_ex5_ttype;
|
|
input [0:1] ctl_lsq_ex5_l_fld;
|
|
input ctl_lsq_ex5_load_hit;
|
|
output [0:3] lsq_ctl_ex6_ldq_events; // LDQ Pipeline Performance Events
|
|
output [0:1] lsq_ctl_ex6_stq_events; // LDQ Pipeline Performance Events
|
|
output [0:`THREADS-1] lsq_perv_ex7_events; // LDQ Pipeline Performance Events
|
|
output [0:(2*`THREADS)+3] lsq_perv_ldq_events; // REL Pipeline Performance Events
|
|
output [0:(3*`THREADS)+2] lsq_perv_stq_events; // STQ Pipeline Performance Events
|
|
output [0:4+`THREADS-1] lsq_perv_odq_events; // ODQ Pipeline Performance Events
|
|
input [0:3] ctl_lsq_ex6_ldh_dacrw;
|
|
|
|
// ICSWX Data to be sent to the L2
|
|
input [0:26] ctl_lsq_stq3_icswx_data;
|
|
|
|
// Interface with Local SPR's
|
|
input [64-(2**`GPR_WIDTH_ENC):63] ctl_lsq_spr_dvc1_dbg;
|
|
input [64-(2**`GPR_WIDTH_ENC):63] ctl_lsq_spr_dvc2_dbg;
|
|
input [0:2*`THREADS-1] ctl_lsq_spr_dbcr2_dvc1m;
|
|
input [0:8*`THREADS-1] ctl_lsq_spr_dbcr2_dvc1be;
|
|
input [0:2*`THREADS-1] ctl_lsq_spr_dbcr2_dvc2m;
|
|
input [0:8*`THREADS-1] ctl_lsq_spr_dbcr2_dvc2be;
|
|
input [0:`THREADS-1] ctl_lsq_dbg_int_en;
|
|
input [0:`THREADS-1] ctl_lsq_ldp_idle;
|
|
input ctl_lsq_spr_lsucr0_b2b; // LSUCR0[B2B] Mode enabled
|
|
input ctl_lsq_spr_lsucr0_lge; // LSUCR0[LGE] Load Gather Enable
|
|
input [0:2] ctl_lsq_spr_lsucr0_lca;
|
|
input [0:2] ctl_lsq_spr_lsucr0_sca;
|
|
input ctl_lsq_spr_lsucr0_dfwd; // LSUCR0[DFWD] Store Forwarding Disabled
|
|
|
|
input [0:`THREADS-1] ctl_lsq_pf_empty;
|
|
|
|
//--------------------------------------------------------------
|
|
// Interface with Commit Pipe Directories
|
|
//--------------------------------------------------------------
|
|
input [0:3] dir_arr_wr_enable;
|
|
input [0:7] dir_arr_wr_way;
|
|
input [64-(`DC_SIZE-3):63-`CL_SIZE] dir_arr_wr_addr;
|
|
input [64-`REAL_IFAR_WIDTH:64-`REAL_IFAR_WIDTH+WAYDATASIZE-1] dir_arr_wr_data;
|
|
output [0:(8*WAYDATASIZE)-1] dir_arr_rd_data1;
|
|
|
|
// Data Cache Config
|
|
input xu_lq_spr_xucr0_cls; // Data Cache Line Size Mode
|
|
input xu_lq_spr_xucr0_cred; // L2 Credit Control
|
|
|
|
// ICBI ACK Enable
|
|
input iu_lq_spr_iucr0_icbi_ack;
|
|
|
|
// STQ4 Data for L2 write
|
|
input [0:127] dat_lsq_stq4_128data;
|
|
|
|
// Instruction Fetches
|
|
input [0:`THREADS-1] iu_lq_request;
|
|
input [0:1] iu_lq_cTag;
|
|
input [64-`REAL_IFAR_WIDTH:59] iu_lq_ra;
|
|
input [0:4] iu_lq_wimge;
|
|
input [0:3] iu_lq_userdef;
|
|
|
|
// ICBI Interface to IU
|
|
output [0:`THREADS-1] lq_iu_icbi_val;
|
|
output [64-`REAL_IFAR_WIDTH:57] lq_iu_icbi_addr;
|
|
input [0:`THREADS-1] iu_lq_icbi_complete;
|
|
|
|
// ICI Interace
|
|
output lq_iu_ici_val;
|
|
|
|
// MMU instruction interface
|
|
input [0:`THREADS-1] mm_lq_lsu_req; // will only pulse when mm has at least 1 token (1 bit per thread)
|
|
input [0:1] mm_lq_lsu_ttype; // 0=TLBIVAX, 1=TLBI_COMPLETE, 2=LOAD (tag=01100), 3=LOAD (tag=01101)
|
|
input [0:4] mm_lq_lsu_wimge;
|
|
input [0:3] mm_lq_lsu_u; // user defined bits
|
|
input [64-`REAL_IFAR_WIDTH:63] mm_lq_lsu_addr; // address for TLBI (or loads, maybe),
|
|
|
|
// TLBI_COMPLETE is address-less
|
|
input [0:7] mm_lq_lsu_lpid; // muxed LPID for the thread of the mmu command
|
|
input mm_lq_lsu_gs;
|
|
input mm_lq_lsu_ind;
|
|
input mm_lq_lsu_lbit; // "L" bit, for large vs. small
|
|
input [0:7] mm_lq_lsu_lpidr;
|
|
output lq_mm_lsu_token;
|
|
output [0:`THREADS-1] lq_xu_quiesce; // Load and Store Queue is empty
|
|
output [0:`THREADS-1] lq_pc_ldq_quiesce;
|
|
output [0:`THREADS-1] lq_pc_stq_quiesce;
|
|
output [0:`THREADS-1] lq_pc_pfetch_quiesce;
|
|
output lq_mm_lmq_stq_empty;
|
|
|
|
// Zap Machine
|
|
input [0:`THREADS-1] iu_lq_cp_flush;
|
|
|
|
// Next Itag Completion
|
|
input [0:`THREADS-1] iu_lq_recirc_val;
|
|
input [0:(`ITAG_SIZE_ENC*`THREADS)-1] iu_lq_cp_next_itag;
|
|
|
|
// Complete iTag
|
|
input [0:`THREADS-1] iu_lq_i0_completed;
|
|
input [0:(`ITAG_SIZE_ENC*`THREADS)-1] iu_lq_i0_completed_itag;
|
|
input [0:`THREADS-1] iu_lq_i1_completed;
|
|
input [0:(`ITAG_SIZE_ENC*`THREADS)-1] iu_lq_i1_completed_itag;
|
|
|
|
// XER Read for long latency CP_NEXT ops stcx./icswx.
|
|
input [0:`THREADS-1] xu_lq_xer_cp_rd;
|
|
|
|
// Sync Ack
|
|
input [0:`THREADS-1] an_ac_sync_ack;
|
|
|
|
// Stcx Complete
|
|
input [0:`THREADS-1] an_ac_stcx_complete;
|
|
input [0:`THREADS-1] an_ac_stcx_pass;
|
|
|
|
// ICBI ACK
|
|
input an_ac_icbi_ack;
|
|
input [0:1] an_ac_icbi_ack_thread;
|
|
|
|
// Core ID
|
|
input [6:7] an_ac_coreid;
|
|
|
|
// L2 Interface Credit Control
|
|
input an_ac_req_ld_pop;
|
|
input an_ac_req_st_pop;
|
|
input an_ac_req_st_gather;
|
|
|
|
// L2 Interface Reload
|
|
input an_ac_reld_data_vld;
|
|
input [0:4] an_ac_reld_core_tag;
|
|
input [58:59] an_ac_reld_qw;
|
|
input [0:127] an_ac_reld_data;
|
|
input an_ac_reld_data_coming;
|
|
input an_ac_reld_ditc;
|
|
input an_ac_reld_crit_qw;
|
|
input an_ac_reld_l1_dump;
|
|
input an_ac_reld_ecc_err;
|
|
input an_ac_reld_ecc_err_ue;
|
|
|
|
// L2 Interface Back Invalidate
|
|
input an_ac_back_inv;
|
|
input [64-`REAL_IFAR_WIDTH:63] an_ac_back_inv_addr;
|
|
input an_ac_back_inv_target_bit1;
|
|
input an_ac_back_inv_target_bit3;
|
|
input an_ac_back_inv_target_bit4;
|
|
input [0:3] an_ac_req_spare_ctrl_a1;
|
|
|
|
// Credit Release to IU
|
|
output [0:`THREADS-1] lq_iu_credit_free;
|
|
output [0:`THREADS-1] sq_iu_credit_free;
|
|
|
|
// Reservation Station Hold indicator
|
|
output lsq_ctl_rv_hold_all;
|
|
|
|
// Reservation station set barrier indicator
|
|
output lsq_ctl_rv_set_hold;
|
|
output [0:`THREADS-1] lsq_ctl_rv_clr_hold;
|
|
|
|
// STCX/ICSWX Itag Complete
|
|
output lsq_ctl_stq_release_itag_vld;
|
|
output [0:`ITAG_SIZE_ENC-1] lsq_ctl_stq_release_itag;
|
|
output [0:`THREADS-1] lsq_ctl_stq_release_tid;
|
|
|
|
// Store Queue Completion Report
|
|
output lsq_ctl_stq_cpl_ready;
|
|
output [0:`ITAG_SIZE_ENC-1] lsq_ctl_stq_cpl_ready_itag;
|
|
output [0:`THREADS-1] lsq_ctl_stq_cpl_ready_tid;
|
|
output lsq_ctl_stq_n_flush;
|
|
output lsq_ctl_stq_np1_flush;
|
|
output lsq_ctl_stq_exception_val;
|
|
output [0:5] lsq_ctl_stq_exception;
|
|
output [0:3] lsq_ctl_stq_dacrw;
|
|
input ctl_lsq_stq_cpl_blk;
|
|
input ctl_lsq_ex_pipe_full;
|
|
|
|
// LOADMISS Queue RESTART indicator
|
|
output lsq_ctl_ex5_ldq_restart;
|
|
|
|
// Store Queue RESTART indicator
|
|
output lsq_ctl_ex5_stq_restart;
|
|
output lsq_ctl_ex5_stq_restart_miss;
|
|
|
|
// Store Data Forward
|
|
output lsq_ctl_ex5_fwd_val;
|
|
output [(128-`STQ_DATA_SIZE):127] lsq_ctl_ex5_fwd_data;
|
|
|
|
output lsq_ctl_sync_in_stq;
|
|
output lsq_ctl_sync_done;
|
|
|
|
// Interface to completion
|
|
output [0:`THREADS-1] lq1_iu_execute_vld;
|
|
output [0:`ITAG_SIZE_ENC-1] lq1_iu_itag;
|
|
output lq1_iu_exception_val;
|
|
output [0:5] lq1_iu_exception;
|
|
output lq1_iu_n_flush;
|
|
output lq1_iu_np1_flush;
|
|
output lq1_iu_dacr_type;
|
|
output [0:3] lq1_iu_dacrw;
|
|
output [0:3] lq1_iu_perf_events;
|
|
|
|
// RELOAD/COMMIT Data Control
|
|
output lsq_dat_stq1_stg_act;
|
|
output lsq_dat_rel1_data_val;
|
|
output [57:59] lsq_dat_rel1_qw; // RELOAD Data Quadword
|
|
output lsq_dat_stq1_val;
|
|
output lsq_dat_stq1_mftgpr_val;
|
|
output lsq_dat_stq1_store_val;
|
|
output [0:15] lsq_dat_stq1_byte_en;
|
|
output [0:2] lsq_dat_stq1_op_size;
|
|
output [52:63] lsq_dat_stq1_addr;
|
|
output lsq_dat_stq1_le_mode;
|
|
output lsq_dat_stq2_blk_req;
|
|
output [0:143] lsq_dat_stq2_store_data;
|
|
|
|
// RELOAD/COMMIT Directory Control
|
|
output lsq_ctl_stq1_stg_act;
|
|
output [0:`THREADS-1] lsq_ctl_oldest_tid;
|
|
output [0:`ITAG_SIZE_ENC-1] lsq_ctl_oldest_itag;
|
|
output lsq_ctl_rel1_clr_val; // Reload Data is valid, need to Pick a Way to update
|
|
output lsq_ctl_rel1_set_val; // Reload Data is valid for last beat, update Directory Contents and set Valid
|
|
output lsq_ctl_rel1_data_val; // Reload Data is Valid, need to update Way in Data Cache
|
|
output lsq_ctl_rel1_back_inv; // Reload was Back-Invalidated
|
|
output [0:3] lsq_ctl_rel1_tag; // Reload Tag
|
|
output [0:1] lsq_ctl_rel1_classid; // Used to index into xucr2 RMT table
|
|
output lsq_ctl_rel1_lock_set; // Reload is for a dcbt[st]ls instruction
|
|
output lsq_ctl_rel1_watch_set; // Reload is for a ldawx. instruction
|
|
output lsq_ctl_rel2_blk_req; // Block Reload due to RV issue or Back-Invalidate
|
|
output lsq_ctl_stq2_blk_req; // Block Store due to RV issue
|
|
output lsq_ctl_rel2_upd_val; // all 8 data beats have transferred without error, set valid in dir
|
|
output [0:127] lsq_ctl_rel2_data; // Reload PRF update data
|
|
output lsq_ctl_rel3_l1dump_val; // Reload Complete for an L1_DUMP reload
|
|
output lsq_ctl_rel3_clr_relq; // Reload Complete due to an ECC error
|
|
input ctl_lsq_stq4_perr_reject; // STQ4 parity error detect, reject STQ2 Commit
|
|
output lsq_ctl_stq1_val;
|
|
output lsq_ctl_stq1_mftgpr_val;
|
|
output lsq_ctl_stq1_mfdpf_val;
|
|
output lsq_ctl_stq1_mfdpa_val;
|
|
output [0:`THREADS-1] lsq_ctl_stq1_thrd_id;
|
|
output [0:`THREADS-1] lsq_ctl_rel1_thrd_id;
|
|
output lsq_ctl_stq1_store_val;
|
|
output lsq_ctl_stq1_lock_clr;
|
|
output lsq_ctl_stq1_watch_clr;
|
|
output [0:1] lsq_ctl_stq1_l_fld;
|
|
output lsq_ctl_stq1_inval;
|
|
output lsq_ctl_stq1_dci_val;
|
|
output [64-`REAL_IFAR_WIDTH:63-`CL_SIZE] lsq_ctl_stq1_addr;
|
|
output lsq_ctl_stq1_ci;
|
|
output lsq_ctl_stq1_axu_val;
|
|
output lsq_ctl_stq1_epid_val;
|
|
output lsq_ctl_stq4_xucr0_cul;
|
|
output [0:`ITAG_SIZE_ENC-1] lsq_ctl_stq5_itag;
|
|
output [0:`AXU_SPARE_ENC+`GPR_POOL_ENC+`THREADS_POOL_ENC-1] lsq_ctl_stq5_tgpr;
|
|
|
|
// RELOAD Register Control
|
|
output lsq_ctl_rel1_gpr_val; // Critical Quadword requires an update of the Regfile
|
|
output [0:`AXU_SPARE_ENC+`GPR_POOL_ENC+`THREADS_POOL_ENC-1] lsq_ctl_rel1_ta_gpr; // Reload Target Register
|
|
output lsq_ctl_rel1_upd_gpr; // Critical Quadword did not get and ECC error in REL1
|
|
output lsq_ctl_stq1_resv;
|
|
|
|
// Illegal LSWX has been determined
|
|
output lsq_ctl_ex3_strg_val; // STQ has checked XER valid
|
|
output lsq_ctl_ex3_strg_noop; // STQ detected a noop of LSWX/STSWX
|
|
output lsq_ctl_ex3_illeg_lswx; // STQ detected illegal form of LSWX
|
|
output lsq_ctl_ex3_ct_val; // ICSWX Data is valid
|
|
output [0:5] lsq_ctl_ex3_be_ct; // Big Endian Coprocessor Type Select
|
|
output [0:5] lsq_ctl_ex3_le_ct; // Little Endian Coprocessor Type Select
|
|
|
|
// release itag to pfetch
|
|
output [0:`THREADS-1] odq_pf_report_tid;
|
|
output [0:`ITAG_SIZE_ENC-1] odq_pf_report_itag;
|
|
output odq_pf_resolved;
|
|
|
|
// STCX Update
|
|
output lq_xu_cr_l2_we;
|
|
output [0:`CR_POOL_ENC+`THREADS_POOL_ENC-1] lq_xu_cr_l2_wa;
|
|
output [0:`CR_WIDTH-1] lq_xu_cr_l2_wd;
|
|
|
|
// PRF update for reloads
|
|
output lq_xu_axu_rel_le;
|
|
|
|
// Back-Invalidate
|
|
output lsq_ctl_rv0_back_inv;
|
|
output [64-`REAL_IFAR_WIDTH:63-`CL_SIZE] lsq_ctl_rv1_back_inv_addr;
|
|
|
|
// RV Reload Release Dependent ITAGs
|
|
output [0:`THREADS-1] lq_rv_itag2_vld;
|
|
output [0:`ITAG_SIZE_ENC-1] lq_rv_itag2;
|
|
|
|
// Doorbell Interface
|
|
output lq_xu_dbell_val;
|
|
output [0:4] lq_xu_dbell_type;
|
|
output lq_xu_dbell_brdcast;
|
|
output lq_xu_dbell_lpid_match;
|
|
output [50:63] lq_xu_dbell_pirtag;
|
|
|
|
// L2 Interface Outputs
|
|
output ac_an_req_pwr_token;
|
|
output ac_an_req;
|
|
output [64-`REAL_IFAR_WIDTH:63] ac_an_req_ra;
|
|
output [0:5] ac_an_req_ttype;
|
|
output [0:2] ac_an_req_thread;
|
|
output ac_an_req_wimg_w;
|
|
output ac_an_req_wimg_i;
|
|
output ac_an_req_wimg_m;
|
|
output ac_an_req_wimg_g;
|
|
output ac_an_req_endian;
|
|
output [0:3] ac_an_req_user_defined;
|
|
output [0:3] ac_an_req_spare_ctrl_a0;
|
|
output [0:4] ac_an_req_ld_core_tag;
|
|
output [0:2] ac_an_req_ld_xfr_len;
|
|
output [0:31] ac_an_st_byte_enbl;
|
|
output [0:255] ac_an_st_data;
|
|
output ac_an_st_data_pwr_token;
|
|
|
|
// Interface to Pervasive Unit
|
|
input pc_lq_inj_relq_parity; // Inject Parity Error on the Reload Data Queue
|
|
output lq_pc_err_relq_parity; // Reload Data Queue Parity Error Detected
|
|
output lq_pc_err_invld_reld; // Reload detected without Loadmiss waiting for reload or got extra beats for cacheable request
|
|
output lq_pc_err_l2intrf_ecc; // Reload detected with an ECC error
|
|
output lq_pc_err_l2intrf_ue; // Reload detected with an uncorrectable ECC error
|
|
output lq_pc_err_l2credit_overrun; // L2 Credits were Overrun
|
|
|
|
// Pervasive
|
|
|
|
|
|
inout vcs;
|
|
|
|
|
|
inout vdd;
|
|
|
|
|
|
inout gnd;
|
|
|
|
(* pin_data="PIN_FUNCTION=/G_CLK/CAP_LIMIT=/99999/" *)
|
|
|
|
input [0:`NCLK_WIDTH-1] nclk;
|
|
input sg_2;
|
|
input fce_2;
|
|
input func_sl_thold_2;
|
|
input func_nsl_thold_2;
|
|
input func_slp_sl_thold_2;
|
|
input pc_lq_ccflush_dc;
|
|
input clkoff_dc_b;
|
|
input d_mode_dc;
|
|
input delay_lclkr_dc;
|
|
input mpw1_dc_b;
|
|
input mpw2_dc_b;
|
|
input g8t_clkoff_dc_b;
|
|
input g8t_d_mode_dc;
|
|
input [0:4] g8t_delay_lclkr_dc;
|
|
input [0:4] g8t_mpw1_dc_b;
|
|
input g8t_mpw2_dc_b;
|
|
input abst_sl_thold_2;
|
|
input time_sl_thold_2;
|
|
input ary_nsl_thold_2;
|
|
input repr_sl_thold_2;
|
|
input bolt_sl_thold_2;
|
|
input bo_enable_2;
|
|
input an_ac_scan_dis_dc_b;
|
|
input an_ac_scan_diag_dc;
|
|
input an_ac_lbist_ary_wrt_thru_dc;
|
|
input pc_lq_abist_ena_dc;
|
|
input pc_lq_abist_raw_dc_b;
|
|
input pc_lq_bo_unload;
|
|
input pc_lq_bo_repair;
|
|
input pc_lq_bo_reset;
|
|
input pc_lq_bo_shdata;
|
|
input [8:13] pc_lq_bo_select;
|
|
output [8:13] lq_pc_bo_fail;
|
|
output [8:13] lq_pc_bo_diagout;
|
|
|
|
// G8T ABIST Control
|
|
input pc_lq_abist_wl64_comp_ena;
|
|
input pc_lq_abist_g8t_wenb;
|
|
input pc_lq_abist_g8t1p_renb_0;
|
|
input [0:3] pc_lq_abist_g8t_dcomp;
|
|
input pc_lq_abist_g8t_bw_1;
|
|
input pc_lq_abist_g8t_bw_0;
|
|
input [0:3] pc_lq_abist_di_0;
|
|
input [4:9] pc_lq_abist_waddr_0;
|
|
input [3:8] pc_lq_abist_raddr_0;
|
|
|
|
// SCAN Ports
|
|
(* pin_data="PIN_FUNCTION=/SCAN_IN/" *)
|
|
input abst_scan_in;
|
|
(* pin_data="PIN_FUNCTION=/SCAN_IN/" *)
|
|
input time_scan_in;
|
|
(* pin_data="PIN_FUNCTION=/SCAN_IN/" *)
|
|
input repr_scan_in;
|
|
(* pin_data="PIN_FUNCTION=/SCAN_IN/" *)
|
|
input [0:6] func_scan_in;
|
|
(* pin_data="PIN_FUNCTION=/SCAN_OUT/" *)
|
|
output abst_scan_out;
|
|
(* pin_data="PIN_FUNCTION=/SCAN_OUT/" *)
|
|
output time_scan_out;
|
|
(* pin_data="PIN_FUNCTION=/SCAN_OUT/" *)
|
|
output repr_scan_out;
|
|
(* pin_data="PIN_FUNCTION=/SCAN_OUT/" *)
|
|
output [0:6] func_scan_out;
|
|
|
|
//--------------------------
|
|
// signals
|
|
//--------------------------
|
|
wire spr_xucr0_cls_d;
|
|
wire spr_xucr0_cls_q;
|
|
wire lsq_l2_pwrToken;
|
|
wire lsq_l2_valid;
|
|
wire [0:1] lsq_l2_tid;
|
|
wire [64-`REAL_IFAR_WIDTH:63] lsq_l2_p_addr;
|
|
wire [0:4] lsq_l2_wimge;
|
|
wire [0:3] lsq_l2_usrDef;
|
|
wire [0:15] lsq_l2_byteEn;
|
|
wire [0:5] lsq_l2_ttype;
|
|
wire [0:2] lsq_l2_opSize;
|
|
wire [0:4] lsq_l2_coreTag;
|
|
wire lsq_l2_dataToken;
|
|
wire [0:127] lsq_l2_st_data;
|
|
wire an_ac_req_ld_pop_d;
|
|
wire an_ac_req_ld_pop_q;
|
|
wire an_ac_req_st_pop_d;
|
|
wire an_ac_req_st_pop_q;
|
|
wire an_ac_req_st_gather_d;
|
|
wire an_ac_req_st_gather_q;
|
|
wire an_ac_reld_data_vld_d;
|
|
wire an_ac_reld_data_vld_q;
|
|
wire an_ac_reld_data_vld_stg1_d;
|
|
wire an_ac_reld_data_vld_stg1_q;
|
|
wire [0:4] an_ac_reld_core_tag_d;
|
|
wire [0:4] an_ac_reld_core_tag_q;
|
|
wire [58:59] an_ac_reld_qw_d;
|
|
wire [58:59] an_ac_reld_qw_q;
|
|
wire [0:127] an_ac_reld_data_d;
|
|
wire [0:127] an_ac_reld_data_q;
|
|
wire an_ac_reld_data_coming_d;
|
|
wire an_ac_reld_data_coming_q;
|
|
wire an_ac_reld_ditc_d;
|
|
wire an_ac_reld_ditc_q;
|
|
wire an_ac_reld_crit_qw_d;
|
|
wire an_ac_reld_crit_qw_q;
|
|
wire an_ac_reld_l1_dump_d;
|
|
wire an_ac_reld_l1_dump_q;
|
|
wire an_ac_reld_ecc_err_d;
|
|
wire an_ac_reld_ecc_err_q;
|
|
wire an_ac_reld_ecc_err_ue_d;
|
|
wire an_ac_reld_ecc_err_ue_q;
|
|
wire an_ac_back_inv_d;
|
|
wire an_ac_back_inv_q;
|
|
wire [64-`REAL_IFAR_WIDTH:63] an_ac_back_inv_addr_d;
|
|
wire [64-`REAL_IFAR_WIDTH:63] an_ac_back_inv_addr_q;
|
|
wire an_ac_back_inv_target_bit1_d;
|
|
wire an_ac_back_inv_target_bit1_q;
|
|
wire an_ac_back_inv_target_bit3_d;
|
|
wire an_ac_back_inv_target_bit3_q;
|
|
wire an_ac_back_inv_target_bit4_d;
|
|
wire an_ac_back_inv_target_bit4_q;
|
|
wire [0:7] mm_lq_lsu_lpidr_d;
|
|
wire [0:7] mm_lq_lsu_lpidr_q;
|
|
wire l2_dbell_val_d;
|
|
wire l2_dbell_val_q;
|
|
wire l2_back_inv_val_d;
|
|
wire l2_back_inv_val_q;
|
|
wire [64-`REAL_IFAR_WIDTH:63-`CL_SIZE] l2_back_inv_addr;
|
|
wire [64-`REAL_IFAR_WIDTH:63-`CL_SIZE] rv1_back_inv_addr_d;
|
|
wire [64-`REAL_IFAR_WIDTH:63-`CL_SIZE] rv1_back_inv_addr_q;
|
|
wire [0:3] an_ac_req_spare_ctrl_a1_d;
|
|
wire [0:3] an_ac_req_spare_ctrl_a1_q;
|
|
wire l2_lsq_resp_isComing;
|
|
wire l2_lsq_resp_val;
|
|
wire [0:4] l2_lsq_resp_cTag;
|
|
wire [57:59] l2_lsq_resp_qw;
|
|
wire l2_lsq_resp_crit_qw;
|
|
wire l2_lsq_resp_l1_dump;
|
|
wire [0:127] l2_lsq_resp_data;
|
|
wire l2_lsq_resp_ecc_err;
|
|
wire l2_lsq_resp_ecc_err_ue;
|
|
wire arb_stq_cred_avail;
|
|
wire odq_ldq_n_flush;
|
|
wire odq_ldq_np1_flush;
|
|
wire odq_ldq_resolved;
|
|
wire odq_ldq_report_needed;
|
|
wire [0:`THREADS-1] odq_ldq_report_tid;
|
|
wire [0:3] odq_ldq_report_pEvents;
|
|
wire [0:`ITAG_SIZE_ENC-1] odq_ldq_report_itag;
|
|
wire [0:3] odq_ldq_report_dacrw;
|
|
wire odq_ldq_report_eccue;
|
|
wire [0:`THREADS-1] odq_ldq_oldest_ld_tid;
|
|
wire [0:`ITAG_SIZE_ENC-1] odq_ldq_oldest_ld_itag;
|
|
wire odq_ldq_ex7_pfetch_blk;
|
|
wire odq_stq_resolved;
|
|
wire [0:`STQ_ENTRIES-1] odq_stq_stTag;
|
|
wire [0:`THREADS-1] stq_ldq_empty;
|
|
wire arb_ldq_ldq_unit_sel;
|
|
wire arb_imq_iuq_unit_sel;
|
|
wire arb_imq_mmq_unit_sel;
|
|
wire imq_arb_iuq_ld_req_avail;
|
|
wire [0:1] imq_arb_iuq_tid;
|
|
wire [0:3] imq_arb_iuq_usr_def;
|
|
wire [0:4] imq_arb_iuq_wimge;
|
|
wire [64-`REAL_IFAR_WIDTH:63] imq_arb_iuq_p_addr;
|
|
wire [0:5] imq_arb_iuq_ttype;
|
|
wire [0:2] imq_arb_iuq_opSize;
|
|
wire [0:4] imq_arb_iuq_cTag;
|
|
wire imq_arb_mmq_ld_req_avail;
|
|
wire imq_arb_mmq_st_req_avail;
|
|
wire [0:1] imq_arb_mmq_tid;
|
|
wire [0:3] imq_arb_mmq_usr_def;
|
|
wire [0:4] imq_arb_mmq_wimge;
|
|
wire [64-`REAL_IFAR_WIDTH:63] imq_arb_mmq_p_addr;
|
|
wire [0:5] imq_arb_mmq_ttype;
|
|
wire [0:2] imq_arb_mmq_opSize;
|
|
wire [0:4] imq_arb_mmq_cTag;
|
|
wire [0:15] imq_arb_mmq_st_data;
|
|
wire ldq_arb_ld_req_pwrToken;
|
|
wire ldq_arb_ld_req_avail;
|
|
wire [0:1] ldq_arb_tid;
|
|
wire [0:3] ldq_arb_usr_def;
|
|
wire [0:4] ldq_arb_wimge;
|
|
wire [64-`REAL_IFAR_WIDTH:63] ldq_arb_p_addr;
|
|
wire [0:5] ldq_arb_ttype;
|
|
wire [0:2] ldq_arb_opsize;
|
|
wire [0:4] ldq_arb_cTag;
|
|
wire stq_arb_st_req_avail;
|
|
wire stq_arb_stq3_cmmt_val;
|
|
wire stq_arb_stq3_cmmt_reject;
|
|
wire stq_arb_stq3_req_val;
|
|
wire [0:1] stq_arb_stq3_tid;
|
|
wire [0:3] stq_arb_stq3_usrDef;
|
|
wire [0:4] stq_arb_stq3_wimge;
|
|
wire [64-`REAL_IFAR_WIDTH:63] stq_arb_stq3_p_addr;
|
|
wire [0:5] stq_arb_stq3_ttype;
|
|
wire [0:2] stq_arb_stq3_opSize;
|
|
wire [0:15] stq_arb_stq3_byteEn;
|
|
wire [0:4] stq_arb_stq3_cTag;
|
|
wire [0:`LMQ_ENTRIES-1] ldq_stq_ex5_ldm_hit;
|
|
wire [0:`LMQ_ENTRIES-1] ldq_stq_ex5_ldm_entry;
|
|
wire [0:`LMQ_ENTRIES-1] ldq_stq_ldm_cpl;
|
|
wire ldq_stq_stq4_dir_upd;
|
|
wire [64-(`DC_SIZE-3):57] ldq_stq_stq4_cclass;
|
|
wire [0:`STQ_ENTRIES_ENC-1] stq_odq_i0_stTag;
|
|
wire [0:`STQ_ENTRIES_ENC-1] stq_odq_i1_stTag;
|
|
wire stq_odq_stq4_stTag_inval;
|
|
wire [0:`STQ_ENTRIES_ENC-1] stq_odq_stq4_stTag;
|
|
wire odq_stq_ex2_nxt_oldest_val;
|
|
wire [0:`STQ_ENTRIES-1] odq_stq_ex2_nxt_oldest_stTag;
|
|
wire odq_stq_ex2_nxt_youngest_val;
|
|
wire [0:`STQ_ENTRIES-1] odq_stq_ex2_nxt_youngest_stTag;
|
|
wire ldq_stq_rel1_blk_store;
|
|
wire [0:127] ldq_arb_rel1_data;
|
|
wire ldq_arb_rel1_axu_val;
|
|
wire [0:2] ldq_arb_rel1_op_size;
|
|
wire [64-`REAL_IFAR_WIDTH:63] ldq_arb_rel1_addr;
|
|
wire ldq_arb_rel1_ci;
|
|
wire ldq_arb_rel1_byte_swap;
|
|
wire [0:`THREADS-1] ldq_arb_rel1_thrd_id;
|
|
wire ldq_arb_rel2_rdat_sel;
|
|
wire [0:143] ldq_arb_rel2_rd_data;
|
|
wire [0:143] arb_ldq_rel2_wrt_data;
|
|
wire stq_arb_stq1_axu_val;
|
|
wire stq_arb_stq1_epid_val;
|
|
wire [0:2] stq_arb_stq1_opSize;
|
|
wire [64-`REAL_IFAR_WIDTH:63] stq_arb_stq1_p_addr;
|
|
wire stq_arb_stq1_wimge_i;
|
|
wire [(128-`STQ_DATA_SIZE):127] stq_arb_stq1_store_data;
|
|
wire stq_arb_stq1_byte_swap;
|
|
wire [0:`THREADS-1] stq_arb_stq1_thrd_id;
|
|
wire stq_arb_release_itag_vld;
|
|
wire [0:`ITAG_SIZE_ENC-1] stq_arb_release_itag;
|
|
wire [0:`THREADS-1] stq_arb_release_tid;
|
|
wire ldq_rel2_blk_req;
|
|
wire stq_stq2_blk_req;
|
|
wire ldq_hold_all_req;
|
|
wire stq_hold_all_req;
|
|
wire ldq_rv_set_hold;
|
|
wire stq_rv_set_hold;
|
|
wire [0:`THREADS-1] ldq_rv_clr_hold;
|
|
wire [0:`THREADS-1] stq_rv_clr_hold;
|
|
wire [0:`THREADS-1] an_ac_sync_ack_d;
|
|
wire [0:`THREADS-1] an_ac_sync_ack_q;
|
|
wire [0:`THREADS-1] an_ac_stcx_complete_d;
|
|
wire [0:`THREADS-1] an_ac_stcx_complete_q;
|
|
wire [0:`THREADS-1] an_ac_stcx_pass_d;
|
|
wire [0:`THREADS-1] an_ac_stcx_pass_q;
|
|
wire an_ac_icbi_ack_d;
|
|
wire an_ac_icbi_ack_q;
|
|
wire [0:1] an_ac_icbi_ack_thread_d;
|
|
wire [0:1] an_ac_icbi_ack_thread_q;
|
|
wire [6:7] an_ac_coreid_d;
|
|
wire [6:7] an_ac_coreid_q;
|
|
wire ldq_odq_vld;
|
|
wire ldq_odq_pfetch_vld;
|
|
wire ldq_odq_wimge_i;
|
|
wire [0:3] ldq_odq_ex6_pEvents;
|
|
wire ldq_odq_hit;
|
|
wire ldq_odq_fwd;
|
|
wire ldq_odq_inv_d;
|
|
wire ldq_odq_inv_q;
|
|
wire [64-`REAL_IFAR_WIDTH:59] ldq_odq_addr_d;
|
|
wire [64-`REAL_IFAR_WIDTH:59] ldq_odq_addr_q;
|
|
wire [0:`ITAG_SIZE_ENC-1] ldq_odq_itag_d;
|
|
wire [0:`ITAG_SIZE_ENC-1] ldq_odq_itag_q;
|
|
wire ldq_odq_cline_chk_d;
|
|
wire ldq_odq_cline_chk_q;
|
|
wire ldq_odq_upd_val;
|
|
wire [0:`ITAG_SIZE_ENC-1] ldq_odq_upd_itag;
|
|
wire ldq_odq_upd_nFlush;
|
|
wire ldq_odq_upd_np1Flush;
|
|
wire [0:`THREADS-1] ldq_odq_upd_tid;
|
|
wire [0:3] ldq_odq_upd_dacrw;
|
|
wire ldq_odq_upd_eccue;
|
|
wire [0:3] ldq_odq_upd_pEvents;
|
|
wire ldq_rel2_byte_swap;
|
|
wire [0:127] ldq_rel2_data;
|
|
wire stq_ldq_ex5_stq_restart;
|
|
wire stq_ldq_ex5_stq_restart_miss;
|
|
wire stq_ldq_ex5_fwd_val;
|
|
wire [0:`ITAG_SIZE_ENC-1] ex3_itag_d;
|
|
wire [0:`ITAG_SIZE_ENC-1] ex3_itag_q;
|
|
wire [0:`ITAG_SIZE_ENC-1] ex4_itag_d;
|
|
wire [0:`ITAG_SIZE_ENC-1] ex4_itag_q;
|
|
wire [0:15] ex4_byte_en_d;
|
|
wire [0:15] ex4_byte_en_q;
|
|
wire [0:15] ex5_byte_en_d;
|
|
wire [0:15] ex5_byte_en_q;
|
|
wire [64-`REAL_IFAR_WIDTH:63] ex4_p_addr;
|
|
wire [58:63] ex4_p_addr_d;
|
|
wire [58:63] ex4_p_addr_q;
|
|
wire [0:`THREADS-1] ex4_thrd_id_d;
|
|
wire [0:`THREADS-1] ex4_thrd_id_q;
|
|
wire [0:`THREADS-1] ex5_thrd_id_d;
|
|
wire [0:`THREADS-1] ex5_thrd_id_q;
|
|
wire [0:`THREADS-1] ex6_thrd_id_d;
|
|
wire [0:`THREADS-1] ex6_thrd_id_q;
|
|
wire [0:`THREADS-1] ex7_thrd_id_d;
|
|
wire [0:`THREADS-1] ex7_thrd_id_q;
|
|
wire [0:`THREADS-1] ex4_streq_val;
|
|
wire ex3_ldreq_val;
|
|
wire ex4_algebraic_d;
|
|
wire ex4_algebraic_q;
|
|
wire ex5_algebraic_d;
|
|
wire ex5_algebraic_q;
|
|
wire [0:2] ex4_opsize_d;
|
|
wire [0:2] ex4_opsize_q;
|
|
wire [0:2] ex5_opsize_d;
|
|
wire [0:2] ex5_opsize_q;
|
|
wire ex5_dreq_val_d;
|
|
wire ex5_dreq_val_q;
|
|
wire [64-(`DC_SIZE-3):63-`CL_SIZE] dir_arr_rd_addr1;
|
|
wire ldq_arb_rel1_data_sel;
|
|
wire ldq_ctl_stq1_stg_act;
|
|
wire stq_ctl_stq1_stg_act;
|
|
wire ldq_dat_stq1_stg_act;
|
|
wire stq_dat_stq1_stg_act;
|
|
|
|
wire func_nsl_thold_1;
|
|
wire func_sl_thold_1;
|
|
wire func_slp_sl_thold_1;
|
|
wire sg_1;
|
|
wire fce_1;
|
|
wire func_nsl_thold_0;
|
|
wire func_sl_thold_0;
|
|
wire func_slp_sl_thold_0;
|
|
wire sg_0;
|
|
wire fce_0;
|
|
wire func_nsl_thold_0_b;
|
|
wire func_sl_thold_0_b;
|
|
wire func_slp_sl_thold_0_b;
|
|
wire func_nsl_force;
|
|
wire func_sl_force;
|
|
wire func_slp_sl_force;
|
|
wire abst_scan_in_q;
|
|
wire [0:2] abst_scan_out_int;
|
|
wire [0:2] abst_scan_out_q;
|
|
wire time_scan_in_q;
|
|
wire [0:1] time_scan_out_int;
|
|
wire [0:1] time_scan_out_q;
|
|
wire repr_scan_in_q;
|
|
wire [0:1] repr_scan_out_int;
|
|
wire [0:1] repr_scan_out_q;
|
|
wire [0:6] func_scan_in_q;
|
|
wire [0:6] func_scan_out_int;
|
|
wire [0:6] func_scan_out_q;
|
|
wire arb_func_scan_out;
|
|
wire [0:24] abist_siv;
|
|
wire [0:24] abist_sov;
|
|
wire abst_sl_thold_1;
|
|
wire time_sl_thold_1;
|
|
wire ary_nsl_thold_1;
|
|
wire repr_sl_thold_1;
|
|
wire bolt_sl_thold_1;
|
|
wire abst_sl_thold_0;
|
|
wire time_sl_thold_0;
|
|
wire ary_nsl_thold_0;
|
|
wire repr_sl_thold_0;
|
|
wire bolt_sl_thold_0;
|
|
wire abst_sl_thold_0_b;
|
|
wire abst_sl_force;
|
|
wire pc_lq_abist_wl64_comp_ena_q;
|
|
wire [3:8] pc_lq_abist_raddr_0_q;
|
|
wire pc_lq_abist_g8t_wenb_q;
|
|
wire pc_lq_abist_g8t1p_renb_0_q;
|
|
wire [0:3] pc_lq_abist_g8t_dcomp_q;
|
|
wire pc_lq_abist_g8t_bw_1_q;
|
|
wire pc_lq_abist_g8t_bw_0_q;
|
|
wire [0:3] pc_lq_abist_di_0_q;
|
|
wire [4:9] pc_lq_abist_waddr_0_q;
|
|
wire slat_force;
|
|
wire abst_slat_thold_b;
|
|
wire abst_slat_d2clk;
|
|
wire [0:`NCLK_WIDTH-1] abst_slat_lclk;
|
|
wire time_slat_thold_b;
|
|
wire time_slat_d2clk;
|
|
wire [0:`NCLK_WIDTH-1] time_slat_lclk;
|
|
wire repr_slat_thold_b;
|
|
wire repr_slat_d2clk;
|
|
wire [0:`NCLK_WIDTH-1] repr_slat_lclk;
|
|
wire func_slat_thold_b;
|
|
wire func_slat_d2clk;
|
|
wire [0:`NCLK_WIDTH-1] func_slat_lclk;
|
|
|
|
wire [0:3] abst_scan_q;
|
|
wire [0:3] abst_scan_q_b;
|
|
wire [0:2] time_scan_q;
|
|
wire [0:2] time_scan_q_b;
|
|
wire [0:2] repr_scan_q;
|
|
wire [0:2] repr_scan_q_b;
|
|
wire [0:13] func_scan_q;
|
|
wire [0:13] func_scan_q_b;
|
|
|
|
//--------------------------
|
|
// constants
|
|
//--------------------------
|
|
|
|
parameter ldq_odq_inv_offset = 0;
|
|
parameter ldq_odq_addr_offset = ldq_odq_inv_offset + 1;
|
|
parameter ldq_odq_itag_offset = ldq_odq_addr_offset + (`REAL_IFAR_WIDTH-4);
|
|
parameter ldq_odq_cline_chk_offset = ldq_odq_itag_offset + `ITAG_SIZE_ENC;
|
|
parameter ex3_itag_offset = ldq_odq_cline_chk_offset + 1;
|
|
parameter ex4_itag_offset = ex3_itag_offset + `ITAG_SIZE_ENC;
|
|
parameter ex4_byte_en_offset = ex4_itag_offset + `ITAG_SIZE_ENC;
|
|
parameter ex5_byte_en_offset = ex4_byte_en_offset + 16;
|
|
parameter ex4_p_addr_offset = ex5_byte_en_offset + 16;
|
|
parameter ex4_thrd_id_offset = ex4_p_addr_offset + 6;
|
|
parameter ex5_thrd_id_offset = ex4_thrd_id_offset + `THREADS;
|
|
parameter ex6_thrd_id_offset = ex5_thrd_id_offset + `THREADS;
|
|
parameter ex7_thrd_id_offset = ex6_thrd_id_offset + `THREADS;
|
|
parameter ex4_algebraic_offset = ex7_thrd_id_offset + `THREADS;
|
|
parameter ex5_algebraic_offset = ex4_algebraic_offset + 1;
|
|
parameter ex4_opsize_offset = ex5_algebraic_offset + 1;
|
|
parameter ex5_opsize_offset = ex4_opsize_offset + 3;
|
|
parameter ex5_dreq_val_offset = ex5_opsize_offset + 3;
|
|
parameter spr_xucr0_cls_offset = ex5_dreq_val_offset + 1;
|
|
parameter an_ac_req_ld_pop_offset = spr_xucr0_cls_offset + 1;
|
|
parameter an_ac_req_st_pop_offset = an_ac_req_ld_pop_offset + 1;
|
|
parameter an_ac_req_st_gather_offset = an_ac_req_st_pop_offset + 1;
|
|
parameter an_ac_reld_data_vld_offset = an_ac_req_st_gather_offset + 1;
|
|
parameter an_ac_reld_data_vld_stg1_offset = an_ac_reld_data_vld_offset + 1;
|
|
parameter an_ac_reld_data_coming_offset = an_ac_reld_data_vld_stg1_offset + 1;
|
|
parameter an_ac_reld_ditc_offset = an_ac_reld_data_coming_offset + 1;
|
|
parameter an_ac_reld_crit_qw_offset = an_ac_reld_ditc_offset + 1;
|
|
parameter an_ac_reld_l1_dump_offset = an_ac_reld_crit_qw_offset + 1;
|
|
parameter an_ac_reld_ecc_err_offset = an_ac_reld_l1_dump_offset + 1;
|
|
parameter an_ac_reld_ecc_err_ue_offset = an_ac_reld_ecc_err_offset + 1;
|
|
parameter an_ac_back_inv_offset = an_ac_reld_ecc_err_ue_offset + 1;
|
|
parameter an_ac_back_inv_target_bit1_offset = an_ac_back_inv_offset + 1;
|
|
parameter an_ac_back_inv_target_bit3_offset = an_ac_back_inv_target_bit1_offset + 1;
|
|
parameter an_ac_back_inv_target_bit4_offset = an_ac_back_inv_target_bit3_offset + 1;
|
|
parameter mm_lq_lsu_lpidr_offset = an_ac_back_inv_target_bit4_offset + 1;
|
|
parameter l2_dbell_val_offset = mm_lq_lsu_lpidr_offset + 8;
|
|
parameter l2_back_inv_val_offset = l2_dbell_val_offset + 1;
|
|
parameter rv1_back_inv_addr_offset = l2_back_inv_val_offset + 1;
|
|
parameter an_ac_req_spare_ctrl_a1_offset = rv1_back_inv_addr_offset + (63-`CL_SIZE-(64-`REAL_IFAR_WIDTH)+1);
|
|
parameter an_ac_reld_core_tag_offset = an_ac_req_spare_ctrl_a1_offset + 4;
|
|
parameter an_ac_reld_qw_offset = an_ac_reld_core_tag_offset + 5;
|
|
parameter an_ac_reld_data_offset = an_ac_reld_qw_offset + 2;
|
|
parameter an_ac_back_inv_addr_offset = an_ac_reld_data_offset + 128;
|
|
parameter an_ac_sync_ack_offset = an_ac_back_inv_addr_offset + `REAL_IFAR_WIDTH;
|
|
parameter an_ac_stcx_complete_offset = an_ac_sync_ack_offset + `THREADS;
|
|
parameter an_ac_stcx_pass_offset = an_ac_stcx_complete_offset + `THREADS;
|
|
parameter an_ac_icbi_ack_offset = an_ac_stcx_pass_offset + `THREADS;
|
|
parameter an_ac_icbi_ack_thread_offset = an_ac_icbi_ack_offset + 1;
|
|
parameter an_ac_coreid_offset = an_ac_icbi_ack_thread_offset + 2;
|
|
parameter scan_right = an_ac_coreid_offset + 2 - 1;
|
|
|
|
wire [0:scan_right] siv;
|
|
wire [0:scan_right] sov;
|
|
wire tiup;
|
|
wire tidn;
|
|
|
|
(* analysis_not_referenced="true" *)
|
|
wire unused;
|
|
|
|
|
|
//!! Bugspray Include: lq_lsq
|
|
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
// Inputs
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
assign tiup = 1'b1;
|
|
assign tidn = 1'b0;
|
|
|
|
assign unused = |abst_scan_q | |abst_scan_q_b | |time_scan_q | |time_scan_q_b |
|
|
|repr_scan_q | |repr_scan_q_b | |func_scan_q | |func_scan_q_b;
|
|
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
// XU Config Bits
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
|
|
// XUCR0[CLS] 128 Byte Cacheline Enabled
|
|
// 1 => 128 Byte Cacheline
|
|
// 0 => 64 Byte Cacheline
|
|
assign spr_xucr0_cls_d = xu_lq_spr_xucr0_cls;
|
|
|
|
assign an_ac_sync_ack_d = an_ac_sync_ack;
|
|
assign an_ac_stcx_complete_d = an_ac_stcx_complete;
|
|
assign an_ac_stcx_pass_d = an_ac_stcx_pass;
|
|
assign an_ac_icbi_ack_d = an_ac_icbi_ack;
|
|
assign an_ac_icbi_ack_thread_d = an_ac_icbi_ack_thread;
|
|
assign an_ac_coreid_d = an_ac_coreid;
|
|
assign an_ac_req_ld_pop_d = an_ac_req_ld_pop;
|
|
assign an_ac_req_st_pop_d = an_ac_req_st_pop;
|
|
assign an_ac_req_st_gather_d = an_ac_req_st_gather;
|
|
|
|
assign an_ac_reld_data_vld_d = an_ac_reld_data_vld;
|
|
assign an_ac_reld_core_tag_d = an_ac_reld_core_tag;
|
|
assign an_ac_reld_qw_d = an_ac_reld_qw;
|
|
assign an_ac_reld_data_d = an_ac_reld_data;
|
|
assign an_ac_reld_data_coming_d = an_ac_reld_data_coming;
|
|
assign an_ac_reld_ditc_d = an_ac_reld_ditc;
|
|
assign an_ac_reld_crit_qw_d = an_ac_reld_crit_qw;
|
|
assign an_ac_reld_l1_dump_d = an_ac_reld_l1_dump;
|
|
assign an_ac_reld_ecc_err_d = an_ac_reld_ecc_err;
|
|
assign an_ac_reld_ecc_err_ue_d = an_ac_reld_ecc_err_ue;
|
|
|
|
assign an_ac_back_inv_d = an_ac_back_inv;
|
|
assign an_ac_back_inv_addr_d = an_ac_back_inv_addr;
|
|
assign an_ac_back_inv_target_bit1_d = an_ac_back_inv_target_bit1;
|
|
assign an_ac_back_inv_target_bit3_d = an_ac_back_inv_target_bit3;
|
|
assign an_ac_back_inv_target_bit4_d = an_ac_back_inv_target_bit4;
|
|
assign an_ac_req_spare_ctrl_a1_d = an_ac_req_spare_ctrl_a1;
|
|
assign l2_back_inv_val_d = an_ac_back_inv_q & an_ac_back_inv_target_bit1_q;
|
|
// Forcing bit (57) to 1 when running in 128Byte cache line mode
|
|
assign l2_back_inv_addr = {an_ac_back_inv_addr_q[64 - `REAL_IFAR_WIDTH:63 - `CL_SIZE - 1], (an_ac_back_inv_addr_q[63 - `CL_SIZE] | spr_xucr0_cls_q)};
|
|
assign rv1_back_inv_addr_d = l2_back_inv_addr;
|
|
|
|
// Early inputs to LSQ
|
|
assign ex3_itag_d = ctl_lsq_ex2_itag;
|
|
assign ex4_itag_d = ex3_itag_q;
|
|
assign ex4_byte_en_d = ctl_lsq_ex3_byte_en;
|
|
assign ex5_byte_en_d = ex4_byte_en_q;
|
|
assign ex4_p_addr_d = ctl_lsq_ex3_p_addr;
|
|
assign ex4_p_addr = {ctl_lsq_ex4_p_addr, ex4_p_addr_q[58:63]};
|
|
assign ex4_thrd_id_d = ctl_lsq_ex3_thrd_id;
|
|
assign ex5_thrd_id_d = ex4_thrd_id_q;
|
|
assign ex6_thrd_id_d = ex5_thrd_id_q;
|
|
assign ex7_thrd_id_d = ex6_thrd_id_q;
|
|
assign ex4_streq_val = ex4_thrd_id_q & {`THREADS{ctl_lsq_ex4_streq_val}};
|
|
assign ex3_ldreq_val = |(ctl_lsq_ex3_ldreq_val);
|
|
assign ex4_algebraic_d = ctl_lsq_ex3_algebraic;
|
|
assign ex5_algebraic_d = ex4_algebraic_q;
|
|
assign ex4_opsize_d = ctl_lsq_ex3_opsize;
|
|
assign ex5_opsize_d = ex4_opsize_q;
|
|
assign ex5_dreq_val_d = ctl_lsq_ex4_dReq_val;
|
|
|
|
// Order Queue Inputs
|
|
assign ldq_odq_hit = ctl_lsq_ex5_load_hit | ex5_dreq_val_q | stq_ldq_ex5_fwd_val;
|
|
assign ldq_odq_fwd = stq_ldq_ex5_fwd_val;
|
|
assign ldq_odq_inv_d = ctl_lsq_ex4_binvreq_val;
|
|
assign ldq_odq_addr_d = ex4_p_addr[64 - `REAL_IFAR_WIDTH:59];
|
|
assign ldq_odq_itag_d = ex4_itag_q;
|
|
assign ldq_odq_cline_chk_d = ctl_lsq_ex4_cline_chk;
|
|
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
// DOORBELL DETECT
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
assign mm_lq_lsu_lpidr_d = mm_lq_lsu_lpidr;
|
|
assign l2_dbell_val_d = an_ac_back_inv_q & an_ac_back_inv_target_bit4_q;
|
|
assign lq_xu_dbell_val = l2_dbell_val_q;
|
|
assign lq_xu_dbell_type = an_ac_back_inv_addr_q[32:36];
|
|
assign lq_xu_dbell_brdcast = an_ac_back_inv_addr_q[37];
|
|
assign lq_xu_dbell_lpid_match = (an_ac_back_inv_addr_q[42:49] == mm_lq_lsu_lpidr_q) | ((~(|(an_ac_back_inv_addr_q[42:49]))));
|
|
assign lq_xu_dbell_pirtag = an_ac_back_inv_addr_q[50:63];
|
|
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
// DIRECTORY ARRAYS
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
assign dir_arr_rd_addr1 = stq_arb_stq1_p_addr[64 - (`DC_SIZE - 3):63 - `CL_SIZE];
|
|
|
|
generate
|
|
if (`DC_SIZE == 15 & `CL_SIZE == 6)
|
|
begin : dc32Kdir64B
|
|
|
|
// number of addressable register in this array
|
|
// width of the bus to address all ports (2^portadrbus_width >= addressable_ports)
|
|
// bitwidth of ports
|
|
// number of ways
|
|
tri_64x34_8w_1r1w #(.addressable_ports(64), .addressbus_width(6), .port_bitwidth(WAYDATASIZE), .ways(8)) arr(
|
|
// POWER PINS
|
|
.vcs(vdd),
|
|
.vdd(vdd),
|
|
.gnd(gnd),
|
|
|
|
// CLOCK AND CLOCKCONTROL PORTS
|
|
.nclk(nclk),
|
|
.rd_act(stq_ctl_stq1_stg_act),
|
|
.wr_act(tiup),
|
|
.sg_0(sg_0),
|
|
.abst_sl_thold_0(abst_sl_thold_0),
|
|
.ary_nsl_thold_0(ary_nsl_thold_0),
|
|
.time_sl_thold_0(time_sl_thold_0),
|
|
.repr_sl_thold_0(repr_sl_thold_0),
|
|
.func_sl_force(func_sl_force), // Does not use Sleep THOLDS, This copy is not active while in sleep mode
|
|
.func_sl_thold_0_b(func_sl_thold_0_b), // Does not use Sleep THOLDS, This copy is not active while in sleep mode
|
|
.g8t_clkoff_dc_b(g8t_clkoff_dc_b),
|
|
.ccflush_dc(pc_lq_ccflush_dc),
|
|
.scan_dis_dc_b(an_ac_scan_dis_dc_b),
|
|
.scan_diag_dc(an_ac_scan_diag_dc),
|
|
.g8t_d_mode_dc(g8t_d_mode_dc),
|
|
.g8t_mpw1_dc_b(g8t_mpw1_dc_b),
|
|
.g8t_mpw2_dc_b(g8t_mpw2_dc_b),
|
|
.g8t_delay_lclkr_dc(g8t_delay_lclkr_dc),
|
|
.d_mode_dc(d_mode_dc),
|
|
.mpw1_dc_b(mpw1_dc_b),
|
|
.mpw2_dc_b(mpw2_dc_b),
|
|
.delay_lclkr_dc(delay_lclkr_dc),
|
|
|
|
// ABIST
|
|
.wr_abst_act(pc_lq_abist_g8t_wenb_q),
|
|
.rd0_abst_act(pc_lq_abist_g8t1p_renb_0_q),
|
|
.abist_di(pc_lq_abist_di_0_q),
|
|
.abist_bw_odd(pc_lq_abist_g8t_bw_1_q),
|
|
.abist_bw_even(pc_lq_abist_g8t_bw_0_q),
|
|
.abist_wr_adr(pc_lq_abist_waddr_0_q),
|
|
.abist_rd0_adr(pc_lq_abist_raddr_0_q[3:8]),
|
|
.tc_lbist_ary_wrt_thru_dc(an_ac_lbist_ary_wrt_thru_dc),
|
|
.abist_ena_1(pc_lq_abist_ena_dc),
|
|
.abist_g8t_rd0_comp_ena(pc_lq_abist_wl64_comp_ena_q),
|
|
.abist_raw_dc_b(pc_lq_abist_raw_dc_b),
|
|
.obs0_abist_cmp(pc_lq_abist_g8t_dcomp_q),
|
|
|
|
// SCAN PORTS
|
|
.abst_scan_in(abst_scan_in_q),
|
|
.time_scan_in(time_scan_in_q),
|
|
.repr_scan_in(repr_scan_in_q),
|
|
.func_scan_in(arb_func_scan_out),
|
|
.abst_scan_out(abst_scan_out_int[0]),
|
|
.time_scan_out(time_scan_out_int[0]),
|
|
.repr_scan_out(repr_scan_out_int[0]),
|
|
.func_scan_out(func_scan_out_int[4]),
|
|
|
|
// BOLT-ON
|
|
.lcb_bolt_sl_thold_0(bolt_sl_thold_0),
|
|
.pc_bo_enable_2(bo_enable_2),
|
|
.pc_bo_reset(pc_lq_bo_reset),
|
|
.pc_bo_unload(pc_lq_bo_unload),
|
|
.pc_bo_repair(pc_lq_bo_repair),
|
|
.pc_bo_shdata(pc_lq_bo_shdata),
|
|
.pc_bo_select(pc_lq_bo_select[10:13]),
|
|
.bo_pc_failout(lq_pc_bo_fail[10:13]),
|
|
.bo_pc_diagloop(lq_pc_bo_diagout[10:13]),
|
|
.tri_lcb_mpw1_dc_b(mpw1_dc_b),
|
|
.tri_lcb_mpw2_dc_b(mpw2_dc_b),
|
|
.tri_lcb_delay_lclkr_dc(delay_lclkr_dc),
|
|
.tri_lcb_clkoff_dc_b(clkoff_dc_b),
|
|
.tri_lcb_act_dis_dc(tidn),
|
|
|
|
// Write Ports
|
|
.write_enable(dir_arr_wr_enable),
|
|
.way(dir_arr_wr_way),
|
|
.addr_wr(dir_arr_wr_addr),
|
|
.data_in(dir_arr_wr_data),
|
|
|
|
// Read Ports
|
|
.addr_rd_01(dir_arr_rd_addr1),
|
|
.addr_rd_23(dir_arr_rd_addr1),
|
|
.addr_rd_45(dir_arr_rd_addr1),
|
|
.addr_rd_67(dir_arr_rd_addr1),
|
|
.data_out(dir_arr_rd_data1)
|
|
);
|
|
end
|
|
endgenerate
|
|
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
// ORDER QUEUE
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
|
|
lq_odq odq(
|
|
|
|
// IU interface to RV for instruction insertion
|
|
// port 0
|
|
.rv_lq_rv1_i0_vld(rv_lq_rv1_i0_vld),
|
|
.rv_lq_rv1_i0_ucode_preissue(rv_lq_rv1_i0_ucode_preissue),
|
|
.rv_lq_rv1_i0_s3_t(rv_lq_rv1_i0_s3_t),
|
|
.rv_lq_rv1_i0_isLoad(rv_lq_rv1_i0_isLoad),
|
|
.rv_lq_rv1_i0_isStore(rv_lq_rv1_i0_isStore),
|
|
.rv_lq_rv1_i0_itag(rv_lq_rv1_i0_itag),
|
|
.rv_lq_rv1_i0_rte_lq(rv_lq_rv1_i0_rte_lq),
|
|
.rv_lq_rv1_i0_rte_sq(rv_lq_rv1_i0_rte_sq),
|
|
|
|
// port 1
|
|
.rv_lq_rv1_i1_vld(rv_lq_rv1_i1_vld),
|
|
.rv_lq_rv1_i1_ucode_preissue(rv_lq_rv1_i1_ucode_preissue),
|
|
.rv_lq_rv1_i1_s3_t(rv_lq_rv1_i1_s3_t),
|
|
.rv_lq_rv1_i1_isLoad(rv_lq_rv1_i1_isLoad),
|
|
.rv_lq_rv1_i1_isStore(rv_lq_rv1_i1_isStore),
|
|
.rv_lq_rv1_i1_itag(rv_lq_rv1_i1_itag),
|
|
.rv_lq_rv1_i1_rte_lq(rv_lq_rv1_i1_rte_lq),
|
|
.rv_lq_rv1_i1_rte_sq(rv_lq_rv1_i1_rte_sq),
|
|
|
|
.ldq_odq_vld(ldq_odq_vld),
|
|
.ldq_odq_pfetch_vld(ldq_odq_pfetch_vld),
|
|
.ldq_odq_tid(ex5_thrd_id_q),
|
|
.ldq_odq_wimge_i(ldq_odq_wimge_i),
|
|
.ldq_odq_inv(ldq_odq_inv_q),
|
|
.ldq_odq_hit(ldq_odq_hit),
|
|
.ldq_odq_fwd(ldq_odq_fwd),
|
|
.ldq_odq_addr(ldq_odq_addr_q),
|
|
.ldq_odq_bytemask(ex5_byte_en_q),
|
|
.ldq_odq_itag(ldq_odq_itag_q),
|
|
.ldq_odq_cline_chk(ldq_odq_cline_chk_q),
|
|
.ldq_odq_ex6_pEvents(ldq_odq_ex6_pEvents),
|
|
.ctl_lsq_ex6_ldh_dacrw(ctl_lsq_ex6_ldh_dacrw),
|
|
|
|
// Update Order Queue Entry when reload is complete and itag is not resolved
|
|
.ldq_odq_upd_val(ldq_odq_upd_val),
|
|
.ldq_odq_upd_itag(ldq_odq_upd_itag),
|
|
.ldq_odq_upd_nFlush(ldq_odq_upd_nFlush),
|
|
.ldq_odq_upd_np1Flush(ldq_odq_upd_np1Flush),
|
|
.ldq_odq_upd_tid(ldq_odq_upd_tid),
|
|
.ldq_odq_upd_dacrw(ldq_odq_upd_dacrw),
|
|
.ldq_odq_upd_eccue(ldq_odq_upd_eccue),
|
|
.ldq_odq_upd_pEvents(ldq_odq_upd_pEvents),
|
|
|
|
.odq_ldq_n_flush(odq_ldq_n_flush),
|
|
.odq_ldq_np1_flush(odq_ldq_np1_flush),
|
|
.odq_ldq_resolved(odq_ldq_resolved),
|
|
.odq_ldq_report_needed(odq_ldq_report_needed),
|
|
.odq_ldq_report_itag(odq_ldq_report_itag),
|
|
.odq_ldq_oldest_ld_tid(odq_ldq_oldest_ld_tid),
|
|
.odq_ldq_oldest_ld_itag(odq_ldq_oldest_ld_itag),
|
|
.odq_ldq_ex7_pfetch_blk(odq_ldq_ex7_pfetch_blk),
|
|
.odq_ldq_report_tid(odq_ldq_report_tid),
|
|
.odq_ldq_report_dacrw(odq_ldq_report_dacrw),
|
|
.odq_ldq_report_eccue(odq_ldq_report_eccue),
|
|
.odq_ldq_report_pEvents(odq_ldq_report_pEvents),
|
|
.odq_stq_resolved(odq_stq_resolved),
|
|
.odq_stq_stTag(odq_stq_stTag),
|
|
.lsq_ctl_oldest_tid(lsq_ctl_oldest_tid),
|
|
.lsq_ctl_oldest_itag(lsq_ctl_oldest_itag),
|
|
|
|
// Age Detection
|
|
// need to determine age for this load in ex2
|
|
.ctl_lsq_ex2_thrd_id(ctl_lsq_ex2_thrd_id),
|
|
.ctl_lsq_ex2_itag(ctl_lsq_ex2_itag),
|
|
|
|
// store tag used when instruction was inserted to store queue
|
|
.stq_odq_i0_stTag(stq_odq_i0_stTag),
|
|
.stq_odq_i1_stTag(stq_odq_i1_stTag),
|
|
|
|
// store tag is committed, remove from order queue and dont compare against it
|
|
.stq_odq_stq4_stTag_inval(stq_odq_stq4_stTag_inval),
|
|
.stq_odq_stq4_stTag(stq_odq_stq4_stTag),
|
|
|
|
// order queue closest oldest store to the ex2 load request
|
|
.odq_stq_ex2_nxt_oldest_val(odq_stq_ex2_nxt_oldest_val),
|
|
.odq_stq_ex2_nxt_oldest_stTag(odq_stq_ex2_nxt_oldest_stTag),
|
|
|
|
// order queue closest youngest store to the ex2 load request
|
|
.odq_stq_ex2_nxt_youngest_val(odq_stq_ex2_nxt_youngest_val),
|
|
.odq_stq_ex2_nxt_youngest_stTag(odq_stq_ex2_nxt_youngest_stTag),
|
|
|
|
// CP_NEXT Itag
|
|
.iu_lq_cp_next_itag(iu_lq_cp_next_itag),
|
|
|
|
// Commit Report
|
|
.iu_lq_i0_completed(iu_lq_i0_completed),
|
|
.iu_lq_i0_completed_itag(iu_lq_i0_completed_itag),
|
|
.iu_lq_i1_completed(iu_lq_i1_completed),
|
|
.iu_lq_i1_completed_itag(iu_lq_i1_completed_itag),
|
|
|
|
// Back-Invalidate Valid
|
|
.l2_back_inv_val(l2_back_inv_val_q),
|
|
.l2_back_inv_addr(l2_back_inv_addr[64 - (`DC_SIZE - 3):63 - `CL_SIZE]),
|
|
|
|
// Zap Machine
|
|
.iu_lq_cp_flush(iu_lq_cp_flush),
|
|
|
|
// return credit to iu
|
|
.lq_iu_credit_free(lq_iu_credit_free),
|
|
|
|
// mode bit
|
|
.xu_lq_spr_xucr0_cls(xu_lq_spr_xucr0_cls),
|
|
|
|
// Performance Events
|
|
.lsq_perv_odq_events(lsq_perv_odq_events),
|
|
|
|
// Pervasive
|
|
.vdd(vdd),
|
|
.gnd(gnd),
|
|
.nclk(nclk),
|
|
.sg_0(sg_0),
|
|
.func_sl_thold_0_b(func_sl_thold_0_b),
|
|
.func_sl_force(func_sl_force),
|
|
.d_mode_dc(d_mode_dc),
|
|
.delay_lclkr_dc(delay_lclkr_dc),
|
|
.mpw1_dc_b(mpw1_dc_b),
|
|
.mpw2_dc_b(mpw2_dc_b),
|
|
.scan_in(func_scan_in_q[0]),
|
|
.scan_out(func_scan_out_int[0])
|
|
);
|
|
|
|
assign odq_pf_resolved = odq_ldq_resolved;
|
|
assign odq_pf_report_tid = odq_ldq_report_tid;
|
|
assign odq_pf_report_itag = odq_ldq_report_itag;
|
|
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
// LOADMISS QUEUE
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
lq_ldq ldq(
|
|
|
|
// RV1 RV Issue Valid
|
|
.rv_lq_vld(rv_lq_vld),
|
|
.rv_lq_isLoad(rv_lq_isLoad),
|
|
|
|
// RV is empty indicator
|
|
.rv_lq_rvs_empty(rv_lq_rvs_empty),
|
|
|
|
// SPR Directory Read Valid
|
|
.ctl_lsq_rv1_dir_rd_val(ctl_lsq_rv1_dir_rd_val),
|
|
|
|
// Back-Invalidate Valid
|
|
.l2_back_inv_val(l2_back_inv_val_q),
|
|
.l2_back_inv_addr(l2_back_inv_addr[64-`REAL_IFAR_WIDTH:63-`CL_SIZE]),
|
|
|
|
// Load Request Interface
|
|
.ctl_lsq_ex3_ldreq_val(ex3_ldreq_val),
|
|
.ctl_lsq_ex3_pfetch_val(ctl_lsq_ex3_pfetch_val),
|
|
.ctl_lsq_ex4_ldreq_val(ctl_lsq_ex4_ldreq_val),
|
|
.ctl_lsq_ex4_streq_val(ctl_lsq_ex4_streq_val),
|
|
.ctl_lsq_ex4_othreq_val(ctl_lsq_ex4_othreq_val),
|
|
.ctl_lsq_ex4_p_addr(ex4_p_addr),
|
|
.ctl_lsq_ex4_itag(ex4_itag_q),
|
|
.ctl_lsq_ex4_dReq_val(ctl_lsq_ex4_dReq_val),
|
|
.ctl_lsq_ex4_gath_load(ctl_lsq_ex4_gath_load),
|
|
.ctl_lsq_ex4_wimge(ctl_lsq_ex4_wimge),
|
|
.ctl_lsq_ex4_byte_swap(ctl_lsq_ex4_byte_swap),
|
|
.ctl_lsq_ex4_is_resv(ctl_lsq_ex4_is_resv),
|
|
.ctl_lsq_ex4_is_sync(ctl_lsq_ex4_is_sync),
|
|
.ctl_lsq_ex4_all_thrd_chk(ctl_lsq_ex4_all_thrd_chk),
|
|
.ctl_lsq_ex4_thrd_id(ex4_thrd_id_q),
|
|
.ctl_lsq_ex5_lock_set(ctl_lsq_ex5_lock_set),
|
|
.ctl_lsq_ex5_watch_set(ctl_lsq_ex5_watch_set),
|
|
.ctl_lsq_ex5_thrd_id(ex5_thrd_id_q),
|
|
.ctl_lsq_ex5_load_hit(ctl_lsq_ex5_load_hit),
|
|
.ctl_lsq_ex5_opsize(ex5_opsize_q),
|
|
.ctl_lsq_ex5_tgpr(ctl_lsq_ex5_tgpr),
|
|
.ctl_lsq_ex5_axu_val(ctl_lsq_ex5_axu_val),
|
|
.ctl_lsq_ex5_usr_def(ctl_lsq_ex5_usr_def),
|
|
.ctl_lsq_ex5_drop_rel(ctl_lsq_ex5_drop_rel),
|
|
.ctl_lsq_ex5_flush_req(ctl_lsq_ex5_flush_req),
|
|
.ctl_lsq_ex5_flush_pfetch(ctl_lsq_ex5_flush_pfetch),
|
|
.ctl_lsq_ex5_cmmt_events(ctl_lsq_ex5_cmmt_events),
|
|
.ctl_lsq_ex5_perf_val0(ctl_lsq_ex5_perf_val0),
|
|
.ctl_lsq_ex5_perf_sel0(ctl_lsq_ex5_perf_sel0),
|
|
.ctl_lsq_ex5_perf_val1(ctl_lsq_ex5_perf_val1),
|
|
.ctl_lsq_ex5_perf_sel1(ctl_lsq_ex5_perf_sel1),
|
|
.ctl_lsq_ex5_perf_val2(ctl_lsq_ex5_perf_val2),
|
|
.ctl_lsq_ex5_perf_sel2(ctl_lsq_ex5_perf_sel2),
|
|
.ctl_lsq_ex5_perf_val3(ctl_lsq_ex5_perf_val3),
|
|
.ctl_lsq_ex5_perf_sel3(ctl_lsq_ex5_perf_sel3),
|
|
.ctl_lsq_ex5_not_touch(ctl_lsq_ex5_not_touch),
|
|
.ctl_lsq_ex5_algebraic(ex5_algebraic_q),
|
|
.ctl_lsq_ex5_class_id(ctl_lsq_ex5_class_id),
|
|
.ctl_lsq_ex5_dvc(ctl_lsq_ex5_dvc),
|
|
.ctl_lsq_ex5_dacrw(ctl_lsq_ex5_dacrw),
|
|
.ctl_lsq_ex5_ttype(ctl_lsq_ex5_ttype),
|
|
.lsq_ctl_ex6_ldq_events(lsq_ctl_ex6_ldq_events),
|
|
.lsq_perv_ex7_events(lsq_perv_ex7_events),
|
|
.lsq_perv_ldq_events(lsq_perv_ldq_events),
|
|
.ctl_lsq_ex7_thrd_id(ex7_thrd_id_q),
|
|
|
|
.ctl_lsq_pf_empty(ctl_lsq_pf_empty),
|
|
|
|
// Interface with Local SPR's
|
|
.ctl_lsq_spr_dvc1_dbg(ctl_lsq_spr_dvc1_dbg),
|
|
.ctl_lsq_spr_dvc2_dbg(ctl_lsq_spr_dvc2_dbg),
|
|
.ctl_lsq_spr_dbcr2_dvc1m(ctl_lsq_spr_dbcr2_dvc1m),
|
|
.ctl_lsq_spr_dbcr2_dvc1be(ctl_lsq_spr_dbcr2_dvc1be),
|
|
.ctl_lsq_spr_dbcr2_dvc2m(ctl_lsq_spr_dbcr2_dvc2m),
|
|
.ctl_lsq_spr_dbcr2_dvc2be(ctl_lsq_spr_dbcr2_dvc2be),
|
|
.ctl_lsq_dbg_int_en(ctl_lsq_dbg_int_en),
|
|
.ctl_lsq_ldp_idle(ctl_lsq_ldp_idle),
|
|
|
|
.stq_ldq_ex5_stq_restart(stq_ldq_ex5_stq_restart),
|
|
.stq_ldq_ex5_stq_restart_miss(stq_ldq_ex5_stq_restart_miss),
|
|
.stq_ldq_ex5_fwd_val(stq_ldq_ex5_fwd_val),
|
|
|
|
// OrderQ Inputs
|
|
.odq_ldq_n_flush(odq_ldq_n_flush),
|
|
.odq_ldq_np1_flush(odq_ldq_np1_flush),
|
|
.odq_ldq_resolved(odq_ldq_resolved),
|
|
.odq_ldq_report_needed(odq_ldq_report_needed),
|
|
.odq_ldq_report_tid(odq_ldq_report_tid),
|
|
.odq_ldq_report_itag(odq_ldq_report_itag),
|
|
.odq_ldq_report_dacrw(odq_ldq_report_dacrw),
|
|
.odq_ldq_report_eccue(odq_ldq_report_eccue),
|
|
.odq_ldq_report_pEvents(odq_ldq_report_pEvents),
|
|
.odq_ldq_oldest_ld_tid(odq_ldq_oldest_ld_tid),
|
|
.odq_ldq_oldest_ld_itag(odq_ldq_oldest_ld_itag),
|
|
.odq_ldq_ex7_pfetch_blk(odq_ldq_ex7_pfetch_blk),
|
|
|
|
// Store Queue is Empty
|
|
.stq_ldq_empty(stq_ldq_empty),
|
|
|
|
// Completion Inputs
|
|
.iu_lq_cp_flush(iu_lq_cp_flush),
|
|
.iu_lq_cp_next_itag(iu_lq_cp_next_itag),
|
|
|
|
// L2 Request Sent
|
|
.arb_ldq_ldq_unit_sel(arb_ldq_ldq_unit_sel),
|
|
|
|
// L2 Reload
|
|
.l2_lsq_resp_isComing(l2_lsq_resp_isComing),
|
|
.l2_lsq_resp_val(l2_lsq_resp_val),
|
|
.l2_lsq_resp_cTag(l2_lsq_resp_cTag),
|
|
.l2_lsq_resp_qw(l2_lsq_resp_qw),
|
|
.l2_lsq_resp_crit_qw(l2_lsq_resp_crit_qw),
|
|
.l2_lsq_resp_l1_dump(l2_lsq_resp_l1_dump),
|
|
.l2_lsq_resp_data(l2_lsq_resp_data),
|
|
.l2_lsq_resp_ecc_err(l2_lsq_resp_ecc_err),
|
|
.l2_lsq_resp_ecc_err_ue(l2_lsq_resp_ecc_err_ue),
|
|
|
|
// Data Cache Config
|
|
.xu_lq_spr_xucr0_cls(xu_lq_spr_xucr0_cls),
|
|
|
|
// LSU Config
|
|
.ctl_lsq_spr_lsucr0_lge(ctl_lsq_spr_lsucr0_lge),
|
|
.ctl_lsq_spr_lsucr0_lca(ctl_lsq_spr_lsucr0_lca),
|
|
|
|
// Inject Reload Data Array Parity Error
|
|
.pc_lq_inj_relq_parity(pc_lq_inj_relq_parity),
|
|
|
|
// Interface to Store Queue
|
|
.ldq_stq_rel1_blk_store(ldq_stq_rel1_blk_store),
|
|
|
|
// Store Hit LoadMiss Queue Entries
|
|
.ldq_stq_ex5_ldm_hit(ldq_stq_ex5_ldm_hit),
|
|
.ldq_stq_ex5_ldm_entry(ldq_stq_ex5_ldm_entry),
|
|
.ldq_stq_ldm_cpl(ldq_stq_ldm_cpl),
|
|
|
|
// RV Reload Release Dependent ITAGs
|
|
.lq_rv_itag2_vld(lq_rv_itag2_vld),
|
|
.lq_rv_itag2(lq_rv_itag2),
|
|
|
|
// PRF update for reloads
|
|
.ldq_rel2_byte_swap(ldq_rel2_byte_swap),
|
|
.ldq_rel2_data(ldq_rel2_data),
|
|
|
|
// Directory Congruence Class Updated
|
|
.ldq_stq_stq4_dir_upd(ldq_stq_stq4_dir_upd),
|
|
.ldq_stq_stq4_cclass(ldq_stq_stq4_cclass),
|
|
|
|
// Load Request was not restarted
|
|
.ldq_odq_vld(ldq_odq_vld),
|
|
.ldq_odq_pfetch_vld(ldq_odq_pfetch_vld),
|
|
.ldq_odq_wimge_i(ldq_odq_wimge_i),
|
|
.ldq_odq_ex6_pEvents(ldq_odq_ex6_pEvents),
|
|
|
|
// Update Order Queue Entry when reload is complete and itag is not resolved
|
|
.ldq_odq_upd_val(ldq_odq_upd_val),
|
|
.ldq_odq_upd_itag(ldq_odq_upd_itag),
|
|
.ldq_odq_upd_nFlush(ldq_odq_upd_nFlush),
|
|
.ldq_odq_upd_np1Flush(ldq_odq_upd_np1Flush),
|
|
.ldq_odq_upd_tid(ldq_odq_upd_tid),
|
|
.ldq_odq_upd_dacrw(ldq_odq_upd_dacrw),
|
|
.ldq_odq_upd_eccue(ldq_odq_upd_eccue),
|
|
.ldq_odq_upd_pEvents(ldq_odq_upd_pEvents),
|
|
|
|
// Interface to Completion
|
|
.lq1_iu_execute_vld(lq1_iu_execute_vld),
|
|
.lq1_iu_itag(lq1_iu_itag),
|
|
.lq1_iu_exception_val(lq1_iu_exception_val),
|
|
.lq1_iu_exception(lq1_iu_exception),
|
|
.lq1_iu_n_flush(lq1_iu_n_flush),
|
|
.lq1_iu_np1_flush(lq1_iu_np1_flush),
|
|
.lq1_iu_dacr_type(lq1_iu_dacr_type),
|
|
.lq1_iu_dacrw(lq1_iu_dacrw),
|
|
.lq1_iu_perf_events(lq1_iu_perf_events),
|
|
|
|
// Reservation station hold indicator
|
|
.ldq_hold_all_req(ldq_hold_all_req),
|
|
|
|
// Reservation station set barrier indicator
|
|
.ldq_rv_set_hold(ldq_rv_set_hold),
|
|
.ldq_rv_clr_hold(ldq_rv_clr_hold),
|
|
|
|
// LOADMISS Queue RESTART indicator
|
|
.lsq_ctl_ex5_ldq_restart(lsq_ctl_ex5_ldq_restart),
|
|
|
|
// LDQ Request to the L2
|
|
.ldq_arb_ld_req_pwrToken(ldq_arb_ld_req_pwrToken),
|
|
.ldq_arb_ld_req_avail(ldq_arb_ld_req_avail),
|
|
.ldq_arb_tid(ldq_arb_tid),
|
|
.ldq_arb_usr_def(ldq_arb_usr_def),
|
|
.ldq_arb_wimge(ldq_arb_wimge),
|
|
.ldq_arb_p_addr(ldq_arb_p_addr),
|
|
.ldq_arb_ttype(ldq_arb_ttype),
|
|
.ldq_arb_opsize(ldq_arb_opsize),
|
|
.ldq_arb_cTag(ldq_arb_cTag),
|
|
|
|
// RELOAD Data Control
|
|
.ldq_dat_stq1_stg_act(ldq_dat_stq1_stg_act),
|
|
.lsq_dat_rel1_data_val(lsq_dat_rel1_data_val),
|
|
.lsq_dat_rel1_qw(lsq_dat_rel1_qw),
|
|
|
|
// RELOAD Directory Control
|
|
.ldq_ctl_stq1_stg_act(ldq_ctl_stq1_stg_act),
|
|
.lsq_ctl_rel1_clr_val(lsq_ctl_rel1_clr_val),
|
|
.lsq_ctl_rel1_set_val(lsq_ctl_rel1_set_val),
|
|
.lsq_ctl_rel1_data_val(lsq_ctl_rel1_data_val),
|
|
.lsq_ctl_rel1_thrd_id(lsq_ctl_rel1_thrd_id),
|
|
.lsq_ctl_rel1_back_inv(lsq_ctl_rel1_back_inv),
|
|
.lsq_ctl_rel1_tag(lsq_ctl_rel1_tag),
|
|
.lsq_ctl_rel1_classid(lsq_ctl_rel1_classid),
|
|
.lsq_ctl_rel1_lock_set(lsq_ctl_rel1_lock_set),
|
|
.lsq_ctl_rel1_watch_set(lsq_ctl_rel1_watch_set),
|
|
.lsq_ctl_rel2_blk_req(ldq_rel2_blk_req),
|
|
.lsq_ctl_rel2_upd_val(lsq_ctl_rel2_upd_val),
|
|
.lsq_ctl_rel3_l1dump_val(lsq_ctl_rel3_l1dump_val),
|
|
.lsq_ctl_rel3_clr_relq(lsq_ctl_rel3_clr_relq),
|
|
|
|
// Control Common to Reload and Commit Pipes
|
|
.ldq_arb_rel1_data_sel(ldq_arb_rel1_data_sel),
|
|
.ldq_arb_rel1_axu_val(ldq_arb_rel1_axu_val),
|
|
.ldq_arb_rel1_op_size(ldq_arb_rel1_op_size),
|
|
.ldq_arb_rel1_addr(ldq_arb_rel1_addr),
|
|
.ldq_arb_rel1_ci(ldq_arb_rel1_ci),
|
|
.ldq_arb_rel1_byte_swap(ldq_arb_rel1_byte_swap),
|
|
.ldq_arb_rel1_thrd_id(ldq_arb_rel1_thrd_id),
|
|
.ldq_arb_rel1_data(ldq_arb_rel1_data),
|
|
.ldq_arb_rel2_rdat_sel(ldq_arb_rel2_rdat_sel),
|
|
.ldq_arb_rel2_rd_data(ldq_arb_rel2_rd_data),
|
|
.arb_ldq_rel2_wrt_data(arb_ldq_rel2_wrt_data),
|
|
|
|
// RELOAD Register Control
|
|
.lsq_ctl_rel1_gpr_val(lsq_ctl_rel1_gpr_val),
|
|
.lsq_ctl_rel1_ta_gpr(lsq_ctl_rel1_ta_gpr),
|
|
.lsq_ctl_rel1_upd_gpr(lsq_ctl_rel1_upd_gpr),
|
|
|
|
// Interface to Pervasive Unit
|
|
.lq_pc_err_invld_reld(lq_pc_err_invld_reld),
|
|
.lq_pc_err_l2intrf_ecc(lq_pc_err_l2intrf_ecc),
|
|
.lq_pc_err_l2intrf_ue(lq_pc_err_l2intrf_ue),
|
|
.lq_pc_err_relq_parity(lq_pc_err_relq_parity),
|
|
|
|
// LQ is Quiesced
|
|
.lq_xu_quiesce(lq_xu_quiesce),
|
|
.lq_pc_ldq_quiesce(lq_pc_ldq_quiesce),
|
|
.lq_pc_stq_quiesce(lq_pc_stq_quiesce),
|
|
.lq_pc_pfetch_quiesce(lq_pc_pfetch_quiesce),
|
|
.lq_mm_lmq_stq_empty(lq_mm_lmq_stq_empty),
|
|
|
|
// Array Pervasive Controls
|
|
.bo_enable_2(bo_enable_2),
|
|
.clkoff_dc_b(clkoff_dc_b),
|
|
.g8t_clkoff_dc_b(g8t_clkoff_dc_b),
|
|
.g8t_d_mode_dc(g8t_d_mode_dc),
|
|
.g8t_delay_lclkr_dc(g8t_delay_lclkr_dc),
|
|
.g8t_mpw1_dc_b(g8t_mpw1_dc_b),
|
|
.g8t_mpw2_dc_b(g8t_mpw2_dc_b),
|
|
.pc_lq_ccflush_dc(pc_lq_ccflush_dc),
|
|
.an_ac_scan_dis_dc_b(an_ac_scan_dis_dc_b),
|
|
.an_ac_scan_diag_dc(an_ac_scan_diag_dc),
|
|
.an_ac_lbist_ary_wrt_thru_dc(an_ac_lbist_ary_wrt_thru_dc),
|
|
.pc_lq_abist_ena_dc(pc_lq_abist_ena_dc),
|
|
.pc_lq_abist_raw_dc_b(pc_lq_abist_raw_dc_b),
|
|
.pc_lq_abist_wl64_comp_ena(pc_lq_abist_wl64_comp_ena),
|
|
.pc_lq_abist_raddr_0(pc_lq_abist_raddr_0[3:8]),
|
|
.pc_lq_abist_g8t_wenb(pc_lq_abist_g8t_wenb),
|
|
.pc_lq_abist_g8t1p_renb_0(pc_lq_abist_g8t1p_renb_0),
|
|
.pc_lq_abist_g8t_dcomp(pc_lq_abist_g8t_dcomp),
|
|
.pc_lq_abist_g8t_bw_1(pc_lq_abist_g8t_bw_1),
|
|
.pc_lq_abist_g8t_bw_0(pc_lq_abist_g8t_bw_0),
|
|
.pc_lq_abist_di_0(pc_lq_abist_di_0),
|
|
.pc_lq_abist_waddr_0(pc_lq_abist_waddr_0),
|
|
.pc_lq_bo_unload(pc_lq_bo_unload),
|
|
.pc_lq_bo_repair(pc_lq_bo_repair),
|
|
.pc_lq_bo_reset(pc_lq_bo_reset),
|
|
.pc_lq_bo_shdata(pc_lq_bo_shdata),
|
|
.pc_lq_bo_select(pc_lq_bo_select[8:9]),
|
|
.lq_pc_bo_fail(lq_pc_bo_fail[8:9]),
|
|
.lq_pc_bo_diagout(lq_pc_bo_diagout[8:9]),
|
|
|
|
// Pervasive
|
|
.vcs(vdd),
|
|
.vdd(vdd),
|
|
.gnd(gnd),
|
|
.nclk(nclk),
|
|
.sg_0(sg_0),
|
|
.func_sl_thold_0_b(func_sl_thold_0_b),
|
|
.func_sl_force(func_sl_force),
|
|
.func_nsl_thold_0_b(func_nsl_thold_0_b),
|
|
.func_nsl_force(func_nsl_force),
|
|
.abst_sl_thold_0(abst_sl_thold_0),
|
|
.ary_nsl_thold_0(ary_nsl_thold_0),
|
|
.time_sl_thold_0(time_sl_thold_0),
|
|
.repr_sl_thold_0(repr_sl_thold_0),
|
|
.bolt_sl_thold_0(bolt_sl_thold_0),
|
|
.d_mode_dc(d_mode_dc),
|
|
.delay_lclkr_dc(delay_lclkr_dc),
|
|
.mpw1_dc_b(mpw1_dc_b),
|
|
.mpw2_dc_b(mpw2_dc_b),
|
|
.scan_in(func_scan_in_q[1]),
|
|
.abst_scan_in(abst_scan_out_q[1]),
|
|
.time_scan_in(time_scan_out_q[0]),
|
|
.repr_scan_in(repr_scan_out_q[0]),
|
|
.scan_out(func_scan_out_int[1]),
|
|
.abst_scan_out(abst_scan_out_int[2]),
|
|
.time_scan_out(time_scan_out_int[1]),
|
|
.repr_scan_out(repr_scan_out_int[1])
|
|
);
|
|
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
// STORE QUEUE
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
|
|
lq_stq stq(
|
|
|
|
// IU interface to RV for instruction insertion
|
|
// port 0
|
|
.rv_lq_rv1_i0_vld(rv_lq_rv1_i0_vld),
|
|
.rv_lq_rv1_i0_ucode_preissue(rv_lq_rv1_i0_ucode_preissue),
|
|
.rv_lq_rv1_i0_s3_t(rv_lq_rv1_i0_s3_t),
|
|
.rv_lq_rv1_i0_rte_sq(rv_lq_rv1_i0_rte_sq),
|
|
.rv_lq_rv1_i0_itag(rv_lq_rv1_i0_itag),
|
|
|
|
// port 1
|
|
.rv_lq_rv1_i1_vld(rv_lq_rv1_i1_vld),
|
|
.rv_lq_rv1_i1_ucode_preissue(rv_lq_rv1_i1_ucode_preissue),
|
|
.rv_lq_rv1_i1_s3_t(rv_lq_rv1_i1_s3_t),
|
|
.rv_lq_rv1_i1_rte_sq(rv_lq_rv1_i1_rte_sq),
|
|
.rv_lq_rv1_i1_itag(rv_lq_rv1_i1_itag),
|
|
|
|
// RV1 RV Issue Valid
|
|
.rv_lq_vld(rv_lq_vld),
|
|
.rv_lq_isLoad(rv_lq_isLoad),
|
|
|
|
// FXU0 Data interface
|
|
.xu1_lq_ex2_stq_val(xu1_lq_ex2_stq_val),
|
|
.xu1_lq_ex2_stq_itag(xu1_lq_ex2_stq_itag),
|
|
// xu1_lq_ex2_stq_size => xu1_lq_ex2_stq_size,
|
|
.xu1_lq_ex2_stq_dvc1_cmp(xu1_lq_ex2_stq_dvc1_cmp),
|
|
.xu1_lq_ex2_stq_dvc2_cmp(xu1_lq_ex2_stq_dvc2_cmp),
|
|
.ctl_lsq_ex4_xu1_data(ctl_lsq_ex4_xu1_data),
|
|
.xu1_lq_ex3_illeg_lswx(xu1_lq_ex3_illeg_lswx),
|
|
.xu1_lq_ex3_strg_noop(xu1_lq_ex3_strg_noop),
|
|
|
|
// AXU Data interface
|
|
.xu_lq_axu_ex_stq_val(xu_lq_axu_ex_stq_val),
|
|
.xu_lq_axu_ex_stq_itag(xu_lq_axu_ex_stq_itag),
|
|
.xu_lq_axu_exp1_stq_data(xu_lq_axu_exp1_stq_data),
|
|
|
|
// Load Request Interface
|
|
.ctl_lsq_ex2_streq_val(ctl_lsq_ex2_streq_val),
|
|
.ctl_lsq_ex2_itag(ctl_lsq_ex2_itag),
|
|
.ctl_lsq_ex2_thrd_id(ctl_lsq_ex2_thrd_id),
|
|
.ctl_lsq_ex3_ldreq_val(ctl_lsq_ex3_ldreq_val),
|
|
.ctl_lsq_ex3_pfetch_val(ctl_lsq_ex3_pfetch_val),
|
|
.ctl_lsq_ex3_wchkall_val(ctl_lsq_ex3_wchkall_val),
|
|
.ctl_lsq_ex3_byte_en(ctl_lsq_ex3_byte_en),
|
|
.ctl_lsq_ex3_p_addr(ctl_lsq_ex3_p_addr),
|
|
.ctl_lsq_ex3_opsize(ctl_lsq_ex3_opsize),
|
|
.ctl_lsq_ex3_algebraic(ctl_lsq_ex3_algebraic),
|
|
.ctl_lsq_ex4_streq_val(ex4_streq_val),
|
|
.ctl_lsq_ex4_p_addr(ex4_p_addr),
|
|
.ctl_lsq_ex4_cline_chk(ctl_lsq_ex4_cline_chk),
|
|
.ctl_lsq_ex4_dreq_val(ctl_lsq_ex4_dReq_val),
|
|
.ctl_lsq_ex4_send_l2(ctl_lsq_ex4_send_l2),
|
|
.ctl_lsq_ex4_has_data(ctl_lsq_ex4_has_data),
|
|
.ctl_lsq_ex4_wimge(ctl_lsq_ex4_wimge),
|
|
.ctl_lsq_ex4_byte_swap(ctl_lsq_ex4_byte_swap),
|
|
.ctl_lsq_ex4_is_sync(ctl_lsq_ex4_is_sync),
|
|
.ctl_lsq_ex4_all_thrd_chk(ctl_lsq_ex4_all_thrd_chk),
|
|
.ctl_lsq_ex4_is_store(ctl_lsq_ex4_is_store),
|
|
.ctl_lsq_ex4_is_resv(ctl_lsq_ex4_is_resv),
|
|
.ctl_lsq_ex4_is_mfgpr(ctl_lsq_ex4_is_mfgpr),
|
|
.ctl_lsq_ex4_is_icswxr(ctl_lsq_ex4_is_icswxr),
|
|
.ctl_lsq_ex4_is_icbi(ctl_lsq_ex4_is_icbi),
|
|
.ctl_lsq_ex4_is_inval_op(ctl_lsq_ex4_is_inval_op),
|
|
.ctl_lsq_ex4_watch_clr(ctl_lsq_ex4_watch_clr),
|
|
.ctl_lsq_ex4_watch_clr_all(ctl_lsq_ex4_watch_clr_all),
|
|
.ctl_lsq_ex4_mtspr_trace(ctl_lsq_ex4_mtspr_trace),
|
|
.ctl_lsq_ex4_is_cinval(ctl_lsq_ex4_is_cinval),
|
|
.ctl_lsq_ex5_lock_clr(ctl_lsq_ex5_lock_clr),
|
|
.ctl_lsq_ex5_ttype(ctl_lsq_ex5_ttype),
|
|
.ctl_lsq_ex5_axu_val(ctl_lsq_ex5_axu_val),
|
|
.ctl_lsq_ex5_is_epid(ctl_lsq_ex5_is_epid),
|
|
.ctl_lsq_ex5_usr_def(ctl_lsq_ex5_usr_def),
|
|
.ctl_lsq_ex5_l_fld(ctl_lsq_ex5_l_fld),
|
|
.ctl_lsq_ex5_tgpr(ctl_lsq_ex5_tgpr),
|
|
.ctl_lsq_ex5_dvc(ctl_lsq_ex5_dvc),
|
|
.ctl_lsq_ex5_load_hit(ctl_lsq_ex5_load_hit),
|
|
.ctl_lsq_ex5_dacrw(ctl_lsq_ex5_dacrw),
|
|
.ctl_lsq_ex5_flush_req(ctl_lsq_ex5_flush_req),
|
|
.ctl_lsq_rv1_dir_rd_val(ctl_lsq_rv1_dir_rd_val),
|
|
|
|
// Interface with Local SPR's
|
|
.ctl_lsq_spr_dvc1_dbg(ctl_lsq_spr_dvc1_dbg),
|
|
.ctl_lsq_spr_dvc2_dbg(ctl_lsq_spr_dvc2_dbg),
|
|
.ctl_lsq_spr_dbcr2_dvc1m(ctl_lsq_spr_dbcr2_dvc1m),
|
|
.ctl_lsq_spr_dbcr2_dvc1be(ctl_lsq_spr_dbcr2_dvc1be),
|
|
.ctl_lsq_spr_dbcr2_dvc2m(ctl_lsq_spr_dbcr2_dvc2m),
|
|
.ctl_lsq_spr_dbcr2_dvc2be(ctl_lsq_spr_dbcr2_dvc2be),
|
|
.ctl_lsq_dbg_int_en(ctl_lsq_dbg_int_en),
|
|
|
|
// Next Itag Completion
|
|
.iu_lq_cp_next_val(iu_lq_recirc_val),
|
|
.iu_lq_cp_next_itag(iu_lq_cp_next_itag),
|
|
|
|
// Completion Inputs
|
|
.iu_lq_cp_flush(iu_lq_cp_flush),
|
|
.iu_lq_i0_completed(iu_lq_i0_completed),
|
|
.iu_lq_i0_completed_itag(iu_lq_i0_completed_itag),
|
|
.iu_lq_i1_completed(iu_lq_i1_completed),
|
|
.iu_lq_i1_completed_itag(iu_lq_i1_completed_itag),
|
|
|
|
// Store Queue Completion Report
|
|
.lsq_ctl_stq_cpl_ready(lsq_ctl_stq_cpl_ready),
|
|
.lsq_ctl_stq_cpl_ready_itag(lsq_ctl_stq_cpl_ready_itag),
|
|
.lsq_ctl_stq_cpl_ready_tid(lsq_ctl_stq_cpl_ready_tid),
|
|
.lsq_ctl_stq_n_flush(lsq_ctl_stq_n_flush),
|
|
.lsq_ctl_stq_np1_flush(lsq_ctl_stq_np1_flush),
|
|
.lsq_ctl_stq_exception_val(lsq_ctl_stq_exception_val),
|
|
.lsq_ctl_stq_exception(lsq_ctl_stq_exception),
|
|
.lsq_ctl_stq_dacrw(lsq_ctl_stq_dacrw),
|
|
.ctl_lsq_stq_cpl_blk(ctl_lsq_stq_cpl_blk),
|
|
.ctl_lsq_ex_pipe_full(ctl_lsq_ex_pipe_full),
|
|
|
|
// Store Queue is Empty
|
|
.stq_ldq_empty(stq_ldq_empty),
|
|
|
|
// L2 Store Credit Available
|
|
.arb_stq_cred_avail(arb_stq_cred_avail),
|
|
|
|
// Data Cache Config
|
|
.xu_lq_spr_xucr0_cls(xu_lq_spr_xucr0_cls),
|
|
|
|
// ICBI ACK Enable
|
|
.iu_lq_spr_iucr0_icbi_ack(iu_lq_spr_iucr0_icbi_ack),
|
|
|
|
// LSUCR0 Config Bits
|
|
.ctl_lsq_spr_lsucr0_sca(ctl_lsq_spr_lsucr0_sca),
|
|
.ctl_lsq_spr_lsucr0_dfwd(ctl_lsq_spr_lsucr0_dfwd),
|
|
|
|
// Interface to Store Queue
|
|
.ldq_stq_rel1_blk_store(ldq_stq_rel1_blk_store),
|
|
|
|
.ldq_stq_ex5_ldm_hit(ldq_stq_ex5_ldm_hit),
|
|
.ldq_stq_ex5_ldm_entry(ldq_stq_ex5_ldm_entry),
|
|
.ldq_stq_ldm_cpl(ldq_stq_ldm_cpl),
|
|
|
|
.ldq_stq_stq4_dir_upd(ldq_stq_stq4_dir_upd),
|
|
.ldq_stq_stq4_cclass(ldq_stq_stq4_cclass),
|
|
|
|
// Age Detection
|
|
// store tag used when instruction was inserted to store queue
|
|
.stq_odq_i0_stTag(stq_odq_i0_stTag),
|
|
.stq_odq_i1_stTag(stq_odq_i1_stTag),
|
|
|
|
// store tag is committed, remove from order queue and dont compare against it
|
|
.stq_odq_stq4_stTag_inval(stq_odq_stq4_stTag_inval),
|
|
.stq_odq_stq4_stTag(stq_odq_stq4_stTag),
|
|
|
|
// order queue closest oldest store to the ex2 load request
|
|
.odq_stq_ex2_nxt_oldest_val(odq_stq_ex2_nxt_oldest_val),
|
|
.odq_stq_ex2_nxt_oldest_stTag(odq_stq_ex2_nxt_oldest_stTag),
|
|
|
|
// order queue closest youngest store to the ex2 load request
|
|
.odq_stq_ex2_nxt_youngest_val(odq_stq_ex2_nxt_youngest_val),
|
|
.odq_stq_ex2_nxt_youngest_stTag(odq_stq_ex2_nxt_youngest_stTag),
|
|
|
|
// store tag is resolved from odq allow stq to commit
|
|
.odq_stq_resolved(odq_stq_resolved),
|
|
.odq_stq_stTag(odq_stq_stTag),
|
|
|
|
// Reservation station hold indicator
|
|
.stq_hold_all_req(stq_hold_all_req),
|
|
|
|
// Reservation station set barrier indicator
|
|
.stq_rv_set_hold(stq_rv_set_hold),
|
|
.stq_rv_clr_hold(stq_rv_clr_hold),
|
|
|
|
// STORE Queue RESTART indicator
|
|
.lsq_ctl_ex5_stq_restart(stq_ldq_ex5_stq_restart),
|
|
.lsq_ctl_ex5_stq_restart_miss(stq_ldq_ex5_stq_restart_miss),
|
|
|
|
// STQ Request to the L2
|
|
.stq_arb_st_req_avail(stq_arb_st_req_avail),
|
|
.stq_arb_stq3_cmmt_val(stq_arb_stq3_cmmt_val),
|
|
.stq_arb_stq3_cmmt_reject(stq_arb_stq3_cmmt_reject),
|
|
.stq_arb_stq3_req_val(stq_arb_stq3_req_val),
|
|
.stq_arb_stq3_tid(stq_arb_stq3_tid),
|
|
.stq_arb_stq3_usrDef(stq_arb_stq3_usrDef),
|
|
.stq_arb_stq3_wimge(stq_arb_stq3_wimge),
|
|
.stq_arb_stq3_p_addr(stq_arb_stq3_p_addr),
|
|
.stq_arb_stq3_ttype(stq_arb_stq3_ttype),
|
|
.stq_arb_stq3_opSize(stq_arb_stq3_opSize),
|
|
.stq_arb_stq3_byteEn(stq_arb_stq3_byteEn),
|
|
.stq_arb_stq3_cTag(stq_arb_stq3_cTag),
|
|
|
|
// Store Commit Data Control
|
|
.stq_dat_stq1_stg_act(stq_dat_stq1_stg_act),
|
|
.lsq_dat_stq1_val(lsq_dat_stq1_val),
|
|
.lsq_dat_stq1_mftgpr_val(lsq_dat_stq1_mftgpr_val),
|
|
.lsq_dat_stq1_store_val(lsq_dat_stq1_store_val),
|
|
.lsq_dat_stq1_byte_en(lsq_dat_stq1_byte_en),
|
|
.stq_arb_stq1_axu_val(stq_arb_stq1_axu_val),
|
|
.stq_arb_stq1_epid_val(stq_arb_stq1_epid_val),
|
|
.stq_arb_stq1_opSize(stq_arb_stq1_opSize),
|
|
.stq_arb_stq1_p_addr(stq_arb_stq1_p_addr),
|
|
.stq_arb_stq1_wimge_i(stq_arb_stq1_wimge_i),
|
|
.stq_arb_stq1_store_data(stq_arb_stq1_store_data),
|
|
.stq_arb_stq1_thrd_id(stq_arb_stq1_thrd_id),
|
|
.stq_arb_stq1_byte_swap(stq_arb_stq1_byte_swap),
|
|
|
|
// Store Commit Directory Control
|
|
.stq_ctl_stq1_stg_act(stq_ctl_stq1_stg_act),
|
|
.lsq_ctl_stq1_val(lsq_ctl_stq1_val),
|
|
.lsq_ctl_stq1_mftgpr_val(lsq_ctl_stq1_mftgpr_val),
|
|
.lsq_ctl_stq1_mfdpf_val(lsq_ctl_stq1_mfdpf_val),
|
|
.lsq_ctl_stq1_mfdpa_val(lsq_ctl_stq1_mfdpa_val),
|
|
.lsq_ctl_stq1_lock_clr(lsq_ctl_stq1_lock_clr),
|
|
.lsq_ctl_stq1_watch_clr(lsq_ctl_stq1_watch_clr),
|
|
.lsq_ctl_stq1_l_fld(lsq_ctl_stq1_l_fld),
|
|
.lsq_ctl_stq1_inval(lsq_ctl_stq1_inval),
|
|
.lsq_ctl_stq1_dci_val(lsq_ctl_stq1_dci_val),
|
|
.lsq_ctl_stq1_store_val(lsq_ctl_stq1_store_val),
|
|
.lsq_ctl_stq4_xucr0_cul(lsq_ctl_stq4_xucr0_cul),
|
|
.lsq_ctl_stq5_itag(lsq_ctl_stq5_itag),
|
|
.lsq_ctl_stq5_tgpr(lsq_ctl_stq5_tgpr),
|
|
.ctl_lsq_stq4_perr_reject(ctl_lsq_stq4_perr_reject),
|
|
|
|
// Illegal LSWX has been determined
|
|
.lsq_ctl_ex3_strg_val(lsq_ctl_ex3_strg_val),
|
|
.lsq_ctl_ex3_strg_noop(lsq_ctl_ex3_strg_noop),
|
|
.lsq_ctl_ex3_illeg_lswx(lsq_ctl_ex3_illeg_lswx),
|
|
.lsq_ctl_ex3_ct_val(lsq_ctl_ex3_ct_val),
|
|
.lsq_ctl_ex3_be_ct(lsq_ctl_ex3_be_ct),
|
|
.lsq_ctl_ex3_le_ct(lsq_ctl_ex3_le_ct),
|
|
|
|
// Store Commit Control
|
|
.lsq_ctl_stq1_resv(lsq_ctl_stq1_resv),
|
|
.stq_stq2_blk_req(stq_stq2_blk_req),
|
|
|
|
.lsq_ctl_sync_in_stq(lsq_ctl_sync_in_stq),
|
|
.lsq_ctl_sync_done(lsq_ctl_sync_done),
|
|
|
|
// Store Data Forward
|
|
.lsq_ctl_ex5_fwd_val(stq_ldq_ex5_fwd_val),
|
|
.lsq_ctl_ex5_fwd_data(lsq_ctl_ex5_fwd_data),
|
|
.lsq_ctl_ex6_stq_events(lsq_ctl_ex6_stq_events),
|
|
.lsq_perv_stq_events(lsq_perv_stq_events),
|
|
|
|
// Store Credit Return
|
|
.sq_iu_credit_free(sq_iu_credit_free),
|
|
|
|
.an_ac_sync_ack(an_ac_sync_ack),
|
|
|
|
// ICBI interface
|
|
.lq_iu_icbi_val(lq_iu_icbi_val),
|
|
.lq_iu_icbi_addr(lq_iu_icbi_addr),
|
|
.iu_lq_icbi_complete(iu_lq_icbi_complete),
|
|
|
|
// ICI Interace
|
|
.lq_iu_ici_val(lq_iu_ici_val),
|
|
|
|
// Back-Invalidate Valid
|
|
.l2_back_inv_val(l2_back_inv_val_q),
|
|
.l2_back_inv_addr(l2_back_inv_addr[64 - (`DC_SIZE - 3):63 - `CL_SIZE]),
|
|
|
|
// L2 Interface Back Invalidate
|
|
.an_ac_back_inv(an_ac_back_inv_q),
|
|
.an_ac_back_inv_target_bit3(an_ac_back_inv_target_bit3_q),
|
|
.an_ac_back_inv_addr(an_ac_back_inv_addr_q[58:60]),
|
|
.an_ac_back_inv_addr_lo(an_ac_back_inv_addr_q[62:63]),
|
|
|
|
// Stcx Complete
|
|
.an_ac_stcx_complete(an_ac_stcx_complete_q),
|
|
.an_ac_stcx_pass(an_ac_stcx_pass_q),
|
|
|
|
// ICBI ACK
|
|
.an_ac_icbi_ack(an_ac_icbi_ack_q),
|
|
.an_ac_icbi_ack_thread(an_ac_icbi_ack_thread_q),
|
|
|
|
// Core ID
|
|
.an_ac_coreid(an_ac_coreid_q),
|
|
|
|
// STCX/ICSWX CR Update
|
|
.lq_xu_cr_l2_we(lq_xu_cr_l2_we),
|
|
.lq_xu_cr_l2_wa(lq_xu_cr_l2_wa),
|
|
.lq_xu_cr_l2_wd(lq_xu_cr_l2_wd),
|
|
|
|
// XER Read for long latency CP_NEXT ops stcx./icswx.
|
|
.xu_lq_xer_cp_rd(xu_lq_xer_cp_rd),
|
|
|
|
// Reload Itag Complete
|
|
.stq_arb_release_itag_vld(stq_arb_release_itag_vld),
|
|
.stq_arb_release_itag(stq_arb_release_itag),
|
|
.stq_arb_release_tid(stq_arb_release_tid),
|
|
|
|
// Pervasive
|
|
.vdd(vdd),
|
|
.gnd(gnd),
|
|
.nclk(nclk),
|
|
.sg_0(sg_0),
|
|
.func_sl_thold_0_b(func_sl_thold_0_b),
|
|
.func_sl_force(func_sl_force),
|
|
.d_mode_dc(d_mode_dc),
|
|
.delay_lclkr_dc(delay_lclkr_dc),
|
|
.mpw1_dc_b(mpw1_dc_b),
|
|
.mpw2_dc_b(mpw2_dc_b),
|
|
.scan_in(func_scan_in_q[2]),
|
|
.scan_out(func_scan_out_int[2])
|
|
);
|
|
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
// INSTRUCTION/MMU QUEUE
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
|
|
lq_imq imq(
|
|
|
|
// Instruction Fetches
|
|
.iu_lq_request(iu_lq_request),
|
|
.iu_lq_cTag(iu_lq_cTag),
|
|
.iu_lq_ra(iu_lq_ra),
|
|
.iu_lq_wimge(iu_lq_wimge),
|
|
.iu_lq_userdef(iu_lq_userdef),
|
|
|
|
// MMU instruction interface
|
|
.mm_lq_lsu_req(mm_lq_lsu_req),
|
|
.mm_lq_lsu_ttype(mm_lq_lsu_ttype),
|
|
.mm_lq_lsu_wimge(mm_lq_lsu_wimge),
|
|
.mm_lq_lsu_u(mm_lq_lsu_u),
|
|
.mm_lq_lsu_addr(mm_lq_lsu_addr),
|
|
|
|
// TLBI_COMPLETE is addressless
|
|
.mm_lq_lsu_lpid(mm_lq_lsu_lpid),
|
|
.mm_lq_lsu_gs(mm_lq_lsu_gs),
|
|
.mm_lq_lsu_ind(mm_lq_lsu_ind),
|
|
.mm_lq_lsu_lbit(mm_lq_lsu_lbit),
|
|
.lq_mm_lsu_token(lq_mm_lsu_token),
|
|
|
|
// IUQ Request Sent
|
|
.arb_imq_iuq_unit_sel(arb_imq_iuq_unit_sel),
|
|
.arb_imq_mmq_unit_sel(arb_imq_mmq_unit_sel),
|
|
|
|
// IUQ Request to the L2
|
|
.imq_arb_iuq_ld_req_avail(imq_arb_iuq_ld_req_avail),
|
|
.imq_arb_iuq_tid(imq_arb_iuq_tid),
|
|
.imq_arb_iuq_usr_def(imq_arb_iuq_usr_def),
|
|
.imq_arb_iuq_wimge(imq_arb_iuq_wimge),
|
|
.imq_arb_iuq_p_addr(imq_arb_iuq_p_addr),
|
|
.imq_arb_iuq_ttype(imq_arb_iuq_ttype),
|
|
.imq_arb_iuq_opSize(imq_arb_iuq_opSize),
|
|
.imq_arb_iuq_cTag(imq_arb_iuq_cTag),
|
|
|
|
// MMQ Request to the L2
|
|
.imq_arb_mmq_ld_req_avail(imq_arb_mmq_ld_req_avail),
|
|
.imq_arb_mmq_st_req_avail(imq_arb_mmq_st_req_avail),
|
|
.imq_arb_mmq_tid(imq_arb_mmq_tid),
|
|
.imq_arb_mmq_usr_def(imq_arb_mmq_usr_def),
|
|
.imq_arb_mmq_wimge(imq_arb_mmq_wimge),
|
|
.imq_arb_mmq_p_addr(imq_arb_mmq_p_addr),
|
|
.imq_arb_mmq_ttype(imq_arb_mmq_ttype),
|
|
.imq_arb_mmq_opSize(imq_arb_mmq_opSize),
|
|
.imq_arb_mmq_cTag(imq_arb_mmq_cTag),
|
|
.imq_arb_mmq_st_data(imq_arb_mmq_st_data),
|
|
|
|
// Pervasive
|
|
.vdd(vdd),
|
|
.gnd(gnd),
|
|
.nclk(nclk),
|
|
.sg_0(sg_0),
|
|
.func_sl_thold_0_b(func_sl_thold_0_b),
|
|
.func_sl_force(func_sl_force),
|
|
.func_slp_sl_thold_0_b(func_slp_sl_thold_0_b),
|
|
.func_slp_sl_force(func_slp_sl_force),
|
|
.d_mode_dc(d_mode_dc),
|
|
.delay_lclkr_dc(delay_lclkr_dc),
|
|
.mpw1_dc_b(mpw1_dc_b),
|
|
.mpw2_dc_b(mpw2_dc_b),
|
|
.scan_in(func_scan_in_q[3]),
|
|
.scan_out(func_scan_out_int[3])
|
|
);
|
|
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
// L2 REQUEST ARBITER
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
|
|
lq_arb arb(
|
|
|
|
// IUQ Request to the L2
|
|
.imq_arb_iuq_ld_req_avail(imq_arb_iuq_ld_req_avail),
|
|
.imq_arb_iuq_tid(imq_arb_iuq_tid),
|
|
.imq_arb_iuq_usr_def(imq_arb_iuq_usr_def),
|
|
.imq_arb_iuq_wimge(imq_arb_iuq_wimge),
|
|
.imq_arb_iuq_p_addr(imq_arb_iuq_p_addr),
|
|
.imq_arb_iuq_ttype(imq_arb_iuq_ttype),
|
|
.imq_arb_iuq_opSize(imq_arb_iuq_opSize),
|
|
.imq_arb_iuq_cTag(imq_arb_iuq_cTag),
|
|
|
|
// MMQ Request to the L2
|
|
.imq_arb_mmq_ld_req_avail(imq_arb_mmq_ld_req_avail),
|
|
.imq_arb_mmq_st_req_avail(imq_arb_mmq_st_req_avail),
|
|
.imq_arb_mmq_tid(imq_arb_mmq_tid),
|
|
.imq_arb_mmq_usr_def(imq_arb_mmq_usr_def),
|
|
.imq_arb_mmq_wimge(imq_arb_mmq_wimge),
|
|
.imq_arb_mmq_p_addr(imq_arb_mmq_p_addr),
|
|
.imq_arb_mmq_ttype(imq_arb_mmq_ttype),
|
|
.imq_arb_mmq_opSize(imq_arb_mmq_opSize),
|
|
.imq_arb_mmq_cTag(imq_arb_mmq_cTag),
|
|
.imq_arb_mmq_st_data(imq_arb_mmq_st_data),
|
|
|
|
// ldq Request to the L2
|
|
.ldq_arb_ld_req_pwrToken(ldq_arb_ld_req_pwrToken),
|
|
.ldq_arb_ld_req_avail(ldq_arb_ld_req_avail),
|
|
.ldq_arb_tid(ldq_arb_tid),
|
|
.ldq_arb_usr_def(ldq_arb_usr_def),
|
|
.ldq_arb_wimge(ldq_arb_wimge),
|
|
.ldq_arb_p_addr(ldq_arb_p_addr),
|
|
.ldq_arb_ttype(ldq_arb_ttype),
|
|
.ldq_arb_opSize(ldq_arb_opsize),
|
|
.ldq_arb_cTag(ldq_arb_cTag),
|
|
|
|
// Store Type Request to L2
|
|
.stq_arb_stq1_stg_act(stq_dat_stq1_stg_act),
|
|
.stq_arb_st_req_avail(stq_arb_st_req_avail),
|
|
.stq_arb_stq3_cmmt_val(stq_arb_stq3_cmmt_val),
|
|
.stq_arb_stq3_cmmt_reject(stq_arb_stq3_cmmt_reject),
|
|
.stq_arb_stq3_req_val(stq_arb_stq3_req_val),
|
|
.stq_arb_stq3_tid(stq_arb_stq3_tid),
|
|
.stq_arb_stq3_usrDef(stq_arb_stq3_usrDef),
|
|
.stq_arb_stq3_wimge(stq_arb_stq3_wimge),
|
|
.stq_arb_stq3_p_addr(stq_arb_stq3_p_addr),
|
|
.stq_arb_stq3_ttype(stq_arb_stq3_ttype),
|
|
.stq_arb_stq3_opSize(stq_arb_stq3_opSize),
|
|
.stq_arb_stq3_byteEn(stq_arb_stq3_byteEn),
|
|
.stq_arb_stq3_cTag(stq_arb_stq3_cTag),
|
|
.dat_lsq_stq4_128data(dat_lsq_stq4_128data),
|
|
|
|
// Common Between LDQ and STQ
|
|
.ldq_arb_rel1_stg_act(ldq_ctl_stq1_stg_act),
|
|
.ldq_arb_rel1_data_sel(ldq_arb_rel1_data_sel),
|
|
.ldq_arb_rel1_data(ldq_arb_rel1_data),
|
|
.ldq_arb_rel1_blk_store(ldq_stq_rel1_blk_store),
|
|
.ldq_arb_rel1_axu_val(ldq_arb_rel1_axu_val),
|
|
.ldq_arb_rel1_op_size(ldq_arb_rel1_op_size),
|
|
.ldq_arb_rel1_addr(ldq_arb_rel1_addr),
|
|
.ldq_arb_rel1_ci(ldq_arb_rel1_ci),
|
|
.ldq_arb_rel1_byte_swap(ldq_arb_rel1_byte_swap),
|
|
.ldq_arb_rel1_thrd_id(ldq_arb_rel1_thrd_id),
|
|
.ldq_arb_rel2_rdat_sel(ldq_arb_rel2_rdat_sel),
|
|
.stq_arb_stq1_axu_val(stq_arb_stq1_axu_val),
|
|
.stq_arb_stq1_epid_val(stq_arb_stq1_epid_val),
|
|
.stq_arb_stq1_opSize(stq_arb_stq1_opSize),
|
|
.stq_arb_stq1_p_addr(stq_arb_stq1_p_addr),
|
|
.stq_arb_stq1_wimge_i(stq_arb_stq1_wimge_i),
|
|
.stq_arb_stq1_store_data(stq_arb_stq1_store_data),
|
|
.stq_arb_stq1_byte_swap(stq_arb_stq1_byte_swap),
|
|
.stq_arb_stq1_thrd_id(stq_arb_stq1_thrd_id),
|
|
.stq_arb_release_itag_vld(stq_arb_release_itag_vld),
|
|
.stq_arb_release_itag(stq_arb_release_itag),
|
|
.stq_arb_release_tid(stq_arb_release_tid),
|
|
|
|
// L2 Credit Control
|
|
.l2_lsq_req_ld_pop(an_ac_req_ld_pop_q),
|
|
.l2_lsq_req_st_pop(an_ac_req_st_pop_q),
|
|
.l2_lsq_req_st_gather(an_ac_req_st_gather_q),
|
|
|
|
// ICSWX Data to be sent to the L2
|
|
.ctl_lsq_stq3_icswx_data(ctl_lsq_stq3_icswx_data),
|
|
|
|
// Interface with Reload Data Queue
|
|
.ldq_arb_rel2_rd_data(ldq_arb_rel2_rd_data),
|
|
.arb_ldq_rel2_wrt_data(arb_ldq_rel2_wrt_data),
|
|
|
|
// L2 Credits Available
|
|
.arb_stq_cred_avail(arb_stq_cred_avail),
|
|
|
|
// Unit Selected to Send Request to the L2
|
|
.arb_ldq_ldq_unit_sel(arb_ldq_ldq_unit_sel),
|
|
.arb_imq_iuq_unit_sel(arb_imq_iuq_unit_sel),
|
|
.arb_imq_mmq_unit_sel(arb_imq_mmq_unit_sel),
|
|
|
|
// Common Between LDQ and STQ
|
|
.lsq_ctl_stq1_axu_val(lsq_ctl_stq1_axu_val),
|
|
.lsq_ctl_stq1_epid_val(lsq_ctl_stq1_epid_val),
|
|
.lsq_dat_stq1_op_size(lsq_dat_stq1_op_size),
|
|
.lsq_dat_stq1_addr(lsq_dat_stq1_addr),
|
|
.lsq_dat_stq1_le_mode(lsq_dat_stq1_le_mode),
|
|
.lsq_dat_stq2_store_data(lsq_dat_stq2_store_data),
|
|
.lsq_ctl_stq1_addr(lsq_ctl_stq1_addr),
|
|
.lsq_ctl_stq1_ci(lsq_ctl_stq1_ci),
|
|
.lsq_ctl_stq1_thrd_id(lsq_ctl_stq1_thrd_id),
|
|
|
|
// STCX/ICSWX Itag Complete
|
|
.lsq_ctl_stq_release_itag_vld(lsq_ctl_stq_release_itag_vld),
|
|
.lsq_ctl_stq_release_itag(lsq_ctl_stq_release_itag),
|
|
.lsq_ctl_stq_release_tid(lsq_ctl_stq_release_tid),
|
|
|
|
// L2 Request Signals
|
|
.lsq_l2_pwrToken(lsq_l2_pwrToken),
|
|
.lsq_l2_valid(lsq_l2_valid),
|
|
.lsq_l2_tid(lsq_l2_tid),
|
|
.lsq_l2_p_addr(lsq_l2_p_addr),
|
|
.lsq_l2_wimge(lsq_l2_wimge),
|
|
.lsq_l2_usrDef(lsq_l2_usrDef),
|
|
.lsq_l2_byteEn(lsq_l2_byteEn),
|
|
.lsq_l2_ttype(lsq_l2_ttype),
|
|
.lsq_l2_opSize(lsq_l2_opSize),
|
|
.lsq_l2_coreTag(lsq_l2_coreTag),
|
|
.lsq_l2_dataToken(lsq_l2_dataToken),
|
|
.lsq_l2_st_data(lsq_l2_st_data),
|
|
|
|
// SPR Bits
|
|
.ctl_lsq_spr_lsucr0_b2b(ctl_lsq_spr_lsucr0_b2b),
|
|
.xu_lq_spr_xucr0_cred(xu_lq_spr_xucr0_cred),
|
|
.xu_lq_spr_xucr0_cls(xu_lq_spr_xucr0_cls),
|
|
|
|
// Pervasive Error Report
|
|
.lq_pc_err_l2credit_overrun(lq_pc_err_l2credit_overrun),
|
|
|
|
// Pervasive
|
|
.vdd(vdd),
|
|
.gnd(gnd),
|
|
.nclk(nclk),
|
|
.sg_0(sg_0),
|
|
.func_sl_thold_0_b(func_sl_thold_0_b),
|
|
.func_sl_force(func_sl_force),
|
|
.func_slp_sl_thold_0_b(func_slp_sl_thold_0_b),
|
|
.func_slp_sl_force(func_slp_sl_force),
|
|
.d_mode_dc(d_mode_dc),
|
|
.delay_lclkr_dc(delay_lclkr_dc),
|
|
.mpw1_dc_b(mpw1_dc_b),
|
|
.mpw2_dc_b(mpw2_dc_b),
|
|
.scan_in(func_scan_in_q[4]),
|
|
.scan_out(arb_func_scan_out)
|
|
);
|
|
|
|
assign an_ac_reld_data_vld_stg1_d = an_ac_reld_data_vld_q;
|
|
|
|
assign l2_lsq_resp_isComing = an_ac_reld_data_coming_q;
|
|
assign l2_lsq_resp_val = an_ac_reld_data_vld_q;
|
|
assign l2_lsq_resp_cTag = an_ac_reld_core_tag_q;
|
|
assign l2_lsq_resp_qw = {1'b0, an_ac_reld_qw_q};
|
|
assign l2_lsq_resp_crit_qw = an_ac_reld_crit_qw_q;
|
|
assign l2_lsq_resp_l1_dump = an_ac_reld_l1_dump_q;
|
|
assign l2_lsq_resp_data = an_ac_reld_data_q;
|
|
assign l2_lsq_resp_ecc_err = an_ac_reld_ecc_err_q;
|
|
assign l2_lsq_resp_ecc_err_ue = an_ac_reld_ecc_err_ue_q;
|
|
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
// Outputs
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
|
|
assign ac_an_req_pwr_token = lsq_l2_pwrToken;
|
|
assign ac_an_req = lsq_l2_valid;
|
|
assign ac_an_req_ra = lsq_l2_p_addr;
|
|
assign ac_an_req_ttype = lsq_l2_ttype;
|
|
assign ac_an_req_thread[0:1] = lsq_l2_tid;
|
|
assign ac_an_req_thread[2] = 1'b0; // DITC Indicator
|
|
assign ac_an_req_wimg_w = lsq_l2_wimge[0];
|
|
assign ac_an_req_wimg_i = lsq_l2_wimge[1];
|
|
assign ac_an_req_wimg_m = lsq_l2_wimge[2];
|
|
assign ac_an_req_wimg_g = lsq_l2_wimge[3];
|
|
assign ac_an_req_endian = lsq_l2_wimge[4];
|
|
assign ac_an_req_user_defined = lsq_l2_usrDef;
|
|
assign ac_an_req_spare_ctrl_a0 = {4{1'b0}};
|
|
assign ac_an_req_ld_core_tag = lsq_l2_coreTag;
|
|
assign ac_an_req_ld_xfr_len = lsq_l2_opSize;
|
|
assign ac_an_st_byte_enbl[0:15] = lsq_l2_byteEn;
|
|
assign ac_an_st_byte_enbl[16:31] = {16{1'b0}};
|
|
assign ac_an_st_data[0:127] = lsq_l2_st_data;
|
|
assign ac_an_st_data[128:255] = {128{1'b0}};
|
|
assign ac_an_st_data_pwr_token = lsq_l2_dataToken;
|
|
assign lsq_ctl_stq1_stg_act = ldq_ctl_stq1_stg_act | stq_ctl_stq1_stg_act;
|
|
assign lsq_dat_stq1_stg_act = ldq_dat_stq1_stg_act | stq_dat_stq1_stg_act;
|
|
assign lsq_ctl_rel2_blk_req = ldq_rel2_blk_req;
|
|
assign lsq_ctl_stq2_blk_req = stq_stq2_blk_req;
|
|
assign lsq_dat_stq2_blk_req = ldq_rel2_blk_req | stq_stq2_blk_req;
|
|
assign lsq_ctl_rv_hold_all = ldq_hold_all_req | stq_hold_all_req;
|
|
assign lsq_ctl_rv_set_hold = ldq_rv_set_hold | stq_rv_set_hold;
|
|
assign lsq_ctl_rv_clr_hold = ldq_rv_clr_hold | stq_rv_clr_hold;
|
|
assign lsq_ctl_rv0_back_inv = l2_back_inv_val_q;
|
|
assign lsq_ctl_rv1_back_inv_addr = rv1_back_inv_addr_q;
|
|
assign lsq_ctl_ex5_stq_restart = stq_ldq_ex5_stq_restart;
|
|
assign lsq_ctl_ex5_stq_restart_miss = stq_ldq_ex5_stq_restart_miss;
|
|
assign lsq_ctl_ex5_fwd_val = stq_ldq_ex5_fwd_val;
|
|
assign lq_xu_axu_rel_le = ldq_rel2_byte_swap;
|
|
assign lsq_ctl_rel2_data = ldq_rel2_data;
|
|
|
|
// SCAN OUT Gate
|
|
assign abst_scan_out = abst_scan_out_q[2] & an_ac_scan_dis_dc_b;
|
|
assign time_scan_out = time_scan_out_q[1] & an_ac_scan_dis_dc_b;
|
|
assign repr_scan_out = repr_scan_out_q[1] & an_ac_scan_dis_dc_b;
|
|
assign func_scan_out = func_scan_out_q & {7{an_ac_scan_dis_dc_b}};
|
|
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
// REGISTERS
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ldq_odq_inv_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ldq_odq_inv_offset]),
|
|
.scout(sov[ldq_odq_inv_offset]),
|
|
.din(ldq_odq_inv_d),
|
|
.dout(ldq_odq_inv_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(`REAL_IFAR_WIDTH-4), .INIT(0), .NEEDS_SRESET(1)) ldq_odq_addr_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ldq_odq_addr_offset:ldq_odq_addr_offset + (`REAL_IFAR_WIDTH-4) - 1]),
|
|
.scout(sov[ldq_odq_addr_offset:ldq_odq_addr_offset + (`REAL_IFAR_WIDTH-4) - 1]),
|
|
.din(ldq_odq_addr_d),
|
|
.dout(ldq_odq_addr_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(`ITAG_SIZE_ENC), .INIT(0), .NEEDS_SRESET(1)) ldq_odq_itag_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ldq_odq_itag_offset:ldq_odq_itag_offset + `ITAG_SIZE_ENC - 1]),
|
|
.scout(sov[ldq_odq_itag_offset:ldq_odq_itag_offset + `ITAG_SIZE_ENC - 1]),
|
|
.din(ldq_odq_itag_d),
|
|
.dout(ldq_odq_itag_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ldq_odq_cline_chk_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ldq_odq_cline_chk_offset]),
|
|
.scout(sov[ldq_odq_cline_chk_offset]),
|
|
.din(ldq_odq_cline_chk_d),
|
|
.dout(ldq_odq_cline_chk_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(`ITAG_SIZE_ENC), .INIT(0), .NEEDS_SRESET(1)) ex3_itag_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex3_itag_offset:ex3_itag_offset + `ITAG_SIZE_ENC - 1]),
|
|
.scout(sov[ex3_itag_offset:ex3_itag_offset + `ITAG_SIZE_ENC - 1]),
|
|
.din(ex3_itag_d),
|
|
.dout(ex3_itag_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(`ITAG_SIZE_ENC), .INIT(0), .NEEDS_SRESET(1)) ex4_itag_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex4_itag_offset:ex4_itag_offset + `ITAG_SIZE_ENC - 1]),
|
|
.scout(sov[ex4_itag_offset:ex4_itag_offset + `ITAG_SIZE_ENC - 1]),
|
|
.din(ex4_itag_d),
|
|
.dout(ex4_itag_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(16), .INIT(0), .NEEDS_SRESET(1)) ex4_byte_en_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex4_byte_en_offset:ex4_byte_en_offset + 16 - 1]),
|
|
.scout(sov[ex4_byte_en_offset:ex4_byte_en_offset + 16 - 1]),
|
|
.din(ex4_byte_en_d),
|
|
.dout(ex4_byte_en_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(16), .INIT(0), .NEEDS_SRESET(1)) ex5_byte_en_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex5_byte_en_offset:ex5_byte_en_offset + 16 - 1]),
|
|
.scout(sov[ex5_byte_en_offset:ex5_byte_en_offset + 16 - 1]),
|
|
.din(ex5_byte_en_d),
|
|
.dout(ex5_byte_en_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(6), .INIT(0), .NEEDS_SRESET(1)) ex4_p_addr_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex4_p_addr_offset:ex4_p_addr_offset + 6 - 1]),
|
|
.scout(sov[ex4_p_addr_offset:ex4_p_addr_offset + 6 - 1]),
|
|
.din(ex4_p_addr_d),
|
|
.dout(ex4_p_addr_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0), .NEEDS_SRESET(1)) ex4_thrd_id_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex4_thrd_id_offset:ex4_thrd_id_offset + `THREADS - 1]),
|
|
.scout(sov[ex4_thrd_id_offset:ex4_thrd_id_offset + `THREADS - 1]),
|
|
.din(ex4_thrd_id_d),
|
|
.dout(ex4_thrd_id_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0), .NEEDS_SRESET(1)) ex5_thrd_id_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex5_thrd_id_offset:ex5_thrd_id_offset + `THREADS - 1]),
|
|
.scout(sov[ex5_thrd_id_offset:ex5_thrd_id_offset + `THREADS - 1]),
|
|
.din(ex5_thrd_id_d),
|
|
.dout(ex5_thrd_id_q)
|
|
);
|
|
|
|
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0), .NEEDS_SRESET(1)) ex6_thrd_id_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex6_thrd_id_offset:ex6_thrd_id_offset + `THREADS - 1]),
|
|
.scout(sov[ex6_thrd_id_offset:ex6_thrd_id_offset + `THREADS - 1]),
|
|
.din(ex6_thrd_id_d),
|
|
.dout(ex6_thrd_id_q)
|
|
);
|
|
|
|
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0), .NEEDS_SRESET(1)) ex7_thrd_id_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex7_thrd_id_offset:ex7_thrd_id_offset + `THREADS - 1]),
|
|
.scout(sov[ex7_thrd_id_offset:ex7_thrd_id_offset + `THREADS - 1]),
|
|
.din(ex7_thrd_id_d),
|
|
.dout(ex7_thrd_id_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex4_algebraic_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex4_algebraic_offset]),
|
|
.scout(sov[ex4_algebraic_offset]),
|
|
.din(ex4_algebraic_d),
|
|
.dout(ex4_algebraic_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex5_algebraic_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex5_algebraic_offset]),
|
|
.scout(sov[ex5_algebraic_offset]),
|
|
.din(ex5_algebraic_d),
|
|
.dout(ex5_algebraic_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(3), .INIT(0), .NEEDS_SRESET(1)) ex4_opsize_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex4_opsize_offset:ex4_opsize_offset + 3 - 1]),
|
|
.scout(sov[ex4_opsize_offset:ex4_opsize_offset + 3 - 1]),
|
|
.din(ex4_opsize_d),
|
|
.dout(ex4_opsize_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(3), .INIT(0), .NEEDS_SRESET(1)) ex5_opsize_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex5_opsize_offset:ex5_opsize_offset + 3 - 1]),
|
|
.scout(sov[ex5_opsize_offset:ex5_opsize_offset + 3 - 1]),
|
|
.din(ex5_opsize_d),
|
|
.dout(ex5_opsize_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex5_dreq_val_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex5_dreq_val_offset]),
|
|
.scout(sov[ex5_dreq_val_offset]),
|
|
.din(ex5_dreq_val_d),
|
|
.dout(ex5_dreq_val_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) spr_xucr0_cls_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[spr_xucr0_cls_offset]),
|
|
.scout(sov[spr_xucr0_cls_offset]),
|
|
.din(spr_xucr0_cls_d),
|
|
.dout(spr_xucr0_cls_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) an_ac_req_ld_pop_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_slp_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_slp_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_req_ld_pop_offset]),
|
|
.scout(sov[an_ac_req_ld_pop_offset]),
|
|
.din(an_ac_req_ld_pop_d),
|
|
.dout(an_ac_req_ld_pop_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) an_ac_req_st_pop_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_slp_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_slp_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_req_st_pop_offset]),
|
|
.scout(sov[an_ac_req_st_pop_offset]),
|
|
.din(an_ac_req_st_pop_d),
|
|
.dout(an_ac_req_st_pop_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) an_ac_req_st_gather_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_slp_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_slp_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_req_st_gather_offset]),
|
|
.scout(sov[an_ac_req_st_gather_offset]),
|
|
.din(an_ac_req_st_gather_d),
|
|
.dout(an_ac_req_st_gather_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) an_ac_reld_data_vld_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_reld_data_vld_offset]),
|
|
.scout(sov[an_ac_reld_data_vld_offset]),
|
|
.din(an_ac_reld_data_vld_d),
|
|
.dout(an_ac_reld_data_vld_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) an_ac_reld_data_vld_stg1_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_reld_data_vld_stg1_offset]),
|
|
.scout(sov[an_ac_reld_data_vld_stg1_offset]),
|
|
.din(an_ac_reld_data_vld_stg1_d),
|
|
.dout(an_ac_reld_data_vld_stg1_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) an_ac_reld_data_coming_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_reld_data_coming_offset]),
|
|
.scout(sov[an_ac_reld_data_coming_offset]),
|
|
.din(an_ac_reld_data_coming_d),
|
|
.dout(an_ac_reld_data_coming_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) an_ac_reld_ditc_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_reld_ditc_offset]),
|
|
.scout(sov[an_ac_reld_ditc_offset]),
|
|
.din(an_ac_reld_ditc_d),
|
|
.dout(an_ac_reld_ditc_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) an_ac_reld_crit_qw_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_reld_crit_qw_offset]),
|
|
.scout(sov[an_ac_reld_crit_qw_offset]),
|
|
.din(an_ac_reld_crit_qw_d),
|
|
.dout(an_ac_reld_crit_qw_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) an_ac_reld_l1_dump_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_reld_l1_dump_offset]),
|
|
.scout(sov[an_ac_reld_l1_dump_offset]),
|
|
.din(an_ac_reld_l1_dump_d),
|
|
.dout(an_ac_reld_l1_dump_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) an_ac_reld_ecc_err_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_reld_ecc_err_offset]),
|
|
.scout(sov[an_ac_reld_ecc_err_offset]),
|
|
.din(an_ac_reld_ecc_err_d),
|
|
.dout(an_ac_reld_ecc_err_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) an_ac_reld_ecc_err_ue_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_reld_ecc_err_ue_offset]),
|
|
.scout(sov[an_ac_reld_ecc_err_ue_offset]),
|
|
.din(an_ac_reld_ecc_err_ue_d),
|
|
.dout(an_ac_reld_ecc_err_ue_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) an_ac_back_inv_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_slp_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_slp_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_back_inv_offset]),
|
|
.scout(sov[an_ac_back_inv_offset]),
|
|
.din(an_ac_back_inv_d),
|
|
.dout(an_ac_back_inv_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) an_ac_back_inv_target_bit1_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_slp_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_slp_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_back_inv_target_bit1_offset]),
|
|
.scout(sov[an_ac_back_inv_target_bit1_offset]),
|
|
.din(an_ac_back_inv_target_bit1_d),
|
|
.dout(an_ac_back_inv_target_bit1_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) an_ac_back_inv_target_bit3_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_slp_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_slp_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_back_inv_target_bit3_offset]),
|
|
.scout(sov[an_ac_back_inv_target_bit3_offset]),
|
|
.din(an_ac_back_inv_target_bit3_d),
|
|
.dout(an_ac_back_inv_target_bit3_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) an_ac_back_inv_target_bit4_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_slp_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_slp_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_back_inv_target_bit4_offset]),
|
|
.scout(sov[an_ac_back_inv_target_bit4_offset]),
|
|
.din(an_ac_back_inv_target_bit4_d),
|
|
.dout(an_ac_back_inv_target_bit4_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(8), .INIT(0), .NEEDS_SRESET(1)) mm_lq_lsu_lpidr_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_slp_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_slp_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[mm_lq_lsu_lpidr_offset:mm_lq_lsu_lpidr_offset + 8 - 1]),
|
|
.scout(sov[mm_lq_lsu_lpidr_offset:mm_lq_lsu_lpidr_offset + 8 - 1]),
|
|
.din(mm_lq_lsu_lpidr_d),
|
|
.dout(mm_lq_lsu_lpidr_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) l2_dbell_val_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_slp_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_slp_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[l2_dbell_val_offset]),
|
|
.scout(sov[l2_dbell_val_offset]),
|
|
.din(l2_dbell_val_d),
|
|
.dout(l2_dbell_val_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) l2_back_inv_val_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_slp_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_slp_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[l2_back_inv_val_offset]),
|
|
.scout(sov[l2_back_inv_val_offset]),
|
|
.din(l2_back_inv_val_d),
|
|
.dout(l2_back_inv_val_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH((63-`CL_SIZE-(64-`REAL_IFAR_WIDTH)+1)), .INIT(0), .NEEDS_SRESET(1)) rv1_back_inv_addr_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(l2_back_inv_val_q),
|
|
.force_t(func_slp_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_slp_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[rv1_back_inv_addr_offset:rv1_back_inv_addr_offset + (63-`CL_SIZE-(64-`REAL_IFAR_WIDTH)+1) - 1]),
|
|
.scout(sov[rv1_back_inv_addr_offset:rv1_back_inv_addr_offset + (63-`CL_SIZE-(64-`REAL_IFAR_WIDTH)+1) - 1]),
|
|
.din(rv1_back_inv_addr_d),
|
|
.dout(rv1_back_inv_addr_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(4), .INIT(0), .NEEDS_SRESET(1)) an_ac_req_spare_ctrl_a1_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_req_spare_ctrl_a1_offset:an_ac_req_spare_ctrl_a1_offset + 4 - 1]),
|
|
.scout(sov[an_ac_req_spare_ctrl_a1_offset:an_ac_req_spare_ctrl_a1_offset + 4 - 1]),
|
|
.din(an_ac_req_spare_ctrl_a1_d),
|
|
.dout(an_ac_req_spare_ctrl_a1_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(5), .INIT(0), .NEEDS_SRESET(1)) an_ac_reld_core_tag_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_reld_core_tag_offset:an_ac_reld_core_tag_offset + 5 - 1]),
|
|
.scout(sov[an_ac_reld_core_tag_offset:an_ac_reld_core_tag_offset + 5 - 1]),
|
|
.din(an_ac_reld_core_tag_d),
|
|
.dout(an_ac_reld_core_tag_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(2), .INIT(0), .NEEDS_SRESET(1)) an_ac_reld_qw_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_reld_qw_offset:an_ac_reld_qw_offset + 2 - 1]),
|
|
.scout(sov[an_ac_reld_qw_offset:an_ac_reld_qw_offset + 2 - 1]),
|
|
.din(an_ac_reld_qw_d),
|
|
.dout(an_ac_reld_qw_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(128), .INIT(0), .NEEDS_SRESET(1)) an_ac_reld_data_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(an_ac_reld_data_vld_stg1_q),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_reld_data_offset:an_ac_reld_data_offset + 128 - 1]),
|
|
.scout(sov[an_ac_reld_data_offset:an_ac_reld_data_offset + 128 - 1]),
|
|
.din(an_ac_reld_data_d),
|
|
.dout(an_ac_reld_data_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(`REAL_IFAR_WIDTH), .INIT(0), .NEEDS_SRESET(1)) an_ac_back_inv_addr_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(an_ac_back_inv_q),
|
|
.force_t(func_slp_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_slp_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_back_inv_addr_offset:an_ac_back_inv_addr_offset + `REAL_IFAR_WIDTH - 1]),
|
|
.scout(sov[an_ac_back_inv_addr_offset:an_ac_back_inv_addr_offset + `REAL_IFAR_WIDTH - 1]),
|
|
.din(an_ac_back_inv_addr_d),
|
|
.dout(an_ac_back_inv_addr_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0), .NEEDS_SRESET(1)) an_ac_sync_ack_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_sync_ack_offset:an_ac_sync_ack_offset + `THREADS - 1]),
|
|
.scout(sov[an_ac_sync_ack_offset:an_ac_sync_ack_offset + `THREADS - 1]),
|
|
.din(an_ac_sync_ack_d),
|
|
.dout(an_ac_sync_ack_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0), .NEEDS_SRESET(1)) an_ac_stcx_complete_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_stcx_complete_offset:an_ac_stcx_complete_offset + `THREADS - 1]),
|
|
.scout(sov[an_ac_stcx_complete_offset:an_ac_stcx_complete_offset + `THREADS - 1]),
|
|
.din(an_ac_stcx_complete_d),
|
|
.dout(an_ac_stcx_complete_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(`THREADS), .INIT(0), .NEEDS_SRESET(1)) an_ac_stcx_pass_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_stcx_pass_offset:an_ac_stcx_pass_offset + `THREADS - 1]),
|
|
.scout(sov[an_ac_stcx_pass_offset:an_ac_stcx_pass_offset + `THREADS - 1]),
|
|
.din(an_ac_stcx_pass_d),
|
|
.dout(an_ac_stcx_pass_q)
|
|
);
|
|
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) an_ac_icbi_ack_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_icbi_ack_offset]),
|
|
.scout(sov[an_ac_icbi_ack_offset]),
|
|
.din(an_ac_icbi_ack_d),
|
|
.dout(an_ac_icbi_ack_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(2), .INIT(0), .NEEDS_SRESET(1)) an_ac_icbi_ack_thread_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_icbi_ack_thread_offset:an_ac_icbi_ack_thread_offset + 2 - 1]),
|
|
.scout(sov[an_ac_icbi_ack_thread_offset:an_ac_icbi_ack_thread_offset + 2 - 1]),
|
|
.din(an_ac_icbi_ack_thread_d),
|
|
.dout(an_ac_icbi_ack_thread_q)
|
|
);
|
|
|
|
|
|
tri_rlmreg_p #(.WIDTH(2), .INIT(0), .NEEDS_SRESET(1)) an_ac_coreid_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(tiup),
|
|
.force_t(func_slp_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_slp_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[an_ac_coreid_offset:an_ac_coreid_offset + 2 - 1]),
|
|
.scout(sov[an_ac_coreid_offset:an_ac_coreid_offset + 2 - 1]),
|
|
.din(an_ac_coreid_d),
|
|
.dout(an_ac_coreid_q)
|
|
);
|
|
|
|
//---------------------------------------------------------------------
|
|
// abist latches
|
|
//---------------------------------------------------------------------
|
|
|
|
tri_rlmreg_p #(.INIT(0), .WIDTH(25), .NEEDS_SRESET(1)) abist_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.act(pc_lq_abist_ena_dc),
|
|
.thold_b(abst_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.force_t(abst_sl_force),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.d_mode(d_mode_dc),
|
|
.scin(abist_siv[0:24]),
|
|
.scout(abist_sov[0:24]),
|
|
.din({pc_lq_abist_wl64_comp_ena,
|
|
pc_lq_abist_g8t_wenb,
|
|
pc_lq_abist_g8t1p_renb_0,
|
|
pc_lq_abist_g8t_dcomp,
|
|
pc_lq_abist_g8t_bw_1,
|
|
pc_lq_abist_g8t_bw_0,
|
|
pc_lq_abist_di_0,
|
|
pc_lq_abist_waddr_0,
|
|
pc_lq_abist_raddr_0}),
|
|
.dout({pc_lq_abist_wl64_comp_ena_q,
|
|
pc_lq_abist_g8t_wenb_q,
|
|
pc_lq_abist_g8t1p_renb_0_q,
|
|
pc_lq_abist_g8t_dcomp_q,
|
|
pc_lq_abist_g8t_bw_1_q,
|
|
pc_lq_abist_g8t_bw_0_q,
|
|
pc_lq_abist_di_0_q,
|
|
pc_lq_abist_waddr_0_q,
|
|
pc_lq_abist_raddr_0_q})
|
|
);
|
|
|
|
//-----------------------------------------------
|
|
// Pervasive
|
|
//-----------------------------------------------
|
|
|
|
tri_plat #(.WIDTH(10)) perv_2to1_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.flush(pc_lq_ccflush_dc),
|
|
.din({func_nsl_thold_2,
|
|
func_sl_thold_2,
|
|
func_slp_sl_thold_2,
|
|
ary_nsl_thold_2,
|
|
abst_sl_thold_2,
|
|
time_sl_thold_2,
|
|
repr_sl_thold_2,
|
|
bolt_sl_thold_2,
|
|
sg_2,
|
|
fce_2}),
|
|
.q({func_nsl_thold_1,
|
|
func_sl_thold_1,
|
|
func_slp_sl_thold_1,
|
|
ary_nsl_thold_1,
|
|
abst_sl_thold_1,
|
|
time_sl_thold_1,
|
|
repr_sl_thold_1,
|
|
bolt_sl_thold_1,
|
|
sg_1,
|
|
fce_1})
|
|
);
|
|
|
|
|
|
tri_plat #(.WIDTH(10)) perv_1to0_reg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.nclk(nclk),
|
|
.flush(pc_lq_ccflush_dc),
|
|
.din({func_nsl_thold_1,
|
|
func_sl_thold_1,
|
|
func_slp_sl_thold_1,
|
|
ary_nsl_thold_1,
|
|
abst_sl_thold_1,
|
|
time_sl_thold_1,
|
|
repr_sl_thold_1,
|
|
bolt_sl_thold_1,
|
|
sg_1,
|
|
fce_1}),
|
|
.q({func_nsl_thold_0,
|
|
func_sl_thold_0,
|
|
func_slp_sl_thold_0,
|
|
ary_nsl_thold_0,
|
|
abst_sl_thold_0,
|
|
time_sl_thold_0,
|
|
repr_sl_thold_0,
|
|
bolt_sl_thold_0,
|
|
sg_0,
|
|
fce_0})
|
|
);
|
|
|
|
|
|
tri_lcbor perv_lcbor_func_sl(
|
|
.clkoff_b(clkoff_dc_b),
|
|
.thold(func_sl_thold_0),
|
|
.sg(sg_0),
|
|
.act_dis(tidn),
|
|
.force_t(func_sl_force),
|
|
.thold_b(func_sl_thold_0_b)
|
|
);
|
|
|
|
|
|
tri_lcbor perv_lcbor_func_slp_sl(
|
|
.clkoff_b(clkoff_dc_b),
|
|
.thold(func_slp_sl_thold_0),
|
|
.sg(sg_0),
|
|
.act_dis(tidn),
|
|
.force_t(func_slp_sl_force),
|
|
.thold_b(func_slp_sl_thold_0_b)
|
|
);
|
|
|
|
|
|
tri_lcbor perv_lcbor_func_nsl(
|
|
.clkoff_b(clkoff_dc_b),
|
|
.thold(func_nsl_thold_0),
|
|
.sg(fce_0),
|
|
.act_dis(tidn),
|
|
.force_t(func_nsl_force),
|
|
.thold_b(func_nsl_thold_0_b)
|
|
);
|
|
|
|
|
|
tri_lcbor perv_lcbor_abst_sl(
|
|
.clkoff_b(clkoff_dc_b),
|
|
.thold(abst_sl_thold_0),
|
|
.sg(sg_0),
|
|
.act_dis(tidn),
|
|
.force_t(abst_sl_force),
|
|
.thold_b(abst_sl_thold_0_b)
|
|
);
|
|
|
|
// LCBs for scan only staging latches
|
|
assign slat_force = sg_0;
|
|
assign abst_slat_thold_b = (~abst_sl_thold_0);
|
|
assign time_slat_thold_b = (~time_sl_thold_0);
|
|
assign repr_slat_thold_b = (~repr_sl_thold_0);
|
|
assign func_slat_thold_b = (~func_sl_thold_0);
|
|
|
|
|
|
tri_lcbs perv_lcbs_abst(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.nclk(nclk),
|
|
.force_t(slat_force),
|
|
.thold_b(abst_slat_thold_b),
|
|
.dclk(abst_slat_d2clk),
|
|
.lclk(abst_slat_lclk)
|
|
);
|
|
|
|
|
|
tri_slat_scan #(.WIDTH(4), .INIT(4'b0000)) perv_abst_stg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.dclk(abst_slat_d2clk),
|
|
.lclk(abst_slat_lclk),
|
|
.scan_in({abst_scan_in,
|
|
abst_scan_out_int[0],
|
|
abst_scan_out_int[1],
|
|
abst_scan_out_int[2]}),
|
|
.scan_out({abst_scan_in_q,
|
|
abst_scan_out_q[0],
|
|
abst_scan_out_q[1],
|
|
abst_scan_out_q[2]}),
|
|
.q(abst_scan_q),
|
|
.q_b(abst_scan_q_b)
|
|
);
|
|
|
|
|
|
tri_lcbs perv_lcbs_time(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.nclk(nclk),
|
|
.force_t(slat_force),
|
|
.thold_b(time_slat_thold_b),
|
|
.dclk(time_slat_d2clk),
|
|
.lclk(time_slat_lclk)
|
|
);
|
|
|
|
|
|
tri_slat_scan #(.WIDTH(3), .INIT(3'b000)) perv_time_stg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.dclk(time_slat_d2clk),
|
|
.lclk(time_slat_lclk),
|
|
.scan_in({time_scan_in,
|
|
time_scan_out_int[0],
|
|
time_scan_out_int[1]}),
|
|
.scan_out({time_scan_in_q,
|
|
time_scan_out_q[0],
|
|
time_scan_out_q[1]}),
|
|
.q(time_scan_q),
|
|
.q_b(time_scan_q_b)
|
|
);
|
|
|
|
|
|
tri_lcbs perv_lcbs_repr(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.nclk(nclk),
|
|
.force_t(slat_force),
|
|
.thold_b(repr_slat_thold_b),
|
|
.dclk(repr_slat_d2clk),
|
|
.lclk(repr_slat_lclk)
|
|
);
|
|
|
|
|
|
tri_slat_scan #(.WIDTH(3), .INIT(3'b000)) perv_repr_stg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.dclk(repr_slat_d2clk),
|
|
.lclk(repr_slat_lclk),
|
|
.scan_in({repr_scan_in,
|
|
repr_scan_out_int[0],
|
|
repr_scan_out_int[1]}),
|
|
.scan_out({repr_scan_in_q,
|
|
repr_scan_out_q[0],
|
|
repr_scan_out_q[1]}),
|
|
.q(repr_scan_q),
|
|
.q_b(repr_scan_q_b)
|
|
);
|
|
|
|
|
|
tri_lcbs perv_lcbs_func(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.nclk(nclk),
|
|
.force_t(slat_force),
|
|
.thold_b(func_slat_thold_b),
|
|
.dclk(func_slat_d2clk),
|
|
.lclk(func_slat_lclk)
|
|
);
|
|
|
|
|
|
tri_slat_scan #(.WIDTH(14), .INIT(14'b00000000000000)) perv_func_stg(
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.dclk(func_slat_d2clk),
|
|
.lclk(func_slat_lclk),
|
|
.scan_in({func_scan_in[0],
|
|
func_scan_in[1],
|
|
func_scan_in[2],
|
|
func_scan_in[3],
|
|
func_scan_in[4],
|
|
func_scan_in[5],
|
|
func_scan_in[6],
|
|
func_scan_out_int[0],
|
|
func_scan_out_int[1],
|
|
func_scan_out_int[2],
|
|
func_scan_out_int[3],
|
|
func_scan_out_int[4],
|
|
func_scan_out_int[5],
|
|
func_scan_out_int[6]}),
|
|
.scan_out({func_scan_in_q[0],
|
|
func_scan_in_q[1],
|
|
func_scan_in_q[2],
|
|
func_scan_in_q[3],
|
|
func_scan_in_q[4],
|
|
func_scan_in_q[5],
|
|
func_scan_in_q[6],
|
|
func_scan_out_q[0],
|
|
func_scan_out_q[1],
|
|
func_scan_out_q[2],
|
|
func_scan_out_q[3],
|
|
func_scan_out_q[4],
|
|
func_scan_out_q[5],
|
|
func_scan_out_q[6]}),
|
|
.q(func_scan_q),
|
|
.q_b(func_scan_q_b)
|
|
);
|
|
|
|
assign siv[0:scan_right] = {sov[1:scan_right], func_scan_in_q[5]};
|
|
assign func_scan_out_int[5] = sov[0];
|
|
|
|
assign func_scan_out_int[6] = func_scan_in_q[6];
|
|
|
|
assign abist_siv = {abist_sov[1:24], abst_scan_out_q[0]};
|
|
assign abst_scan_out_int[1] = abist_sov[0];
|
|
|
|
endmodule
|