// ========== Copyright Header Begin ==========================================
// OpenSPARC T2 Processor File: mmu.v
// Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
// 4150 Network Circle, Santa Clara, California 95054, U.S.A.
// * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; version 2 of the License.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// For the avoidance of doubt, and except that if any non-GPL license
// choice is available it will apply instead, Sun elects to use only
// the General Public License version 2 (GPLv2) at this time for any
// software where a choice of GPL license versions is made
// available with the language indicating that GPLv2 or any later version
// may be used, or where a choice of which version of the GPL is applied is
// otherwise unspecified.
// Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
// CA 95054 USA or visit www.sun.com if you need additional information or
// ========== Copyright Header End ============================================
wire [30:8] error_inject_unused;
wire [3:3] asi_rd_dtte_unused;
wire [1:0] asi_mra_rd_en_last;
wire [7:0] asi_rd_immu_tag_target;
wire [7:0] asi_rd_immu_tag_access;
wire [7:0] asi_rd_dmmu_tag_target;
wire [7:0] asi_rd_dmmu_tag_access;
wire [1:0] asi_rd_i_access_target;
wire [1:0] asi_rd_d_access_target;
wire [1:0] asi_rd_access_target;
wire [7:0] asi_rd_itte_tag;
wire [7:0] asi_rd_itte_data;
wire [7:0] asi_wr_immu_tag_access;
wire [7:0] asi_i_tag_access_en;
wire [7:0] asi_wr_itlb_data_in;
wire [7:0] asi_wr_itlb_data_access;
wire [7:0] asi_wr_immu_demap;
wire [7:0] asi_wr_immu_demap_p;
wire [7:0] asi_wr_immu_demap_n;
wire [7:0] asi_i_data_in_en;
wire [7:0] asi_wr_dmmu_tag_access;
wire [7:0] asi_d_tag_access_en;
wire [7:0] asi_wr_dtlb_data_in;
wire [7:0] asi_wr_dtlb_data_access;
wire [7:0] asi_wr_dmmu_demap;
wire [7:0] asi_wr_dmmu_demap_p;
wire [7:0] asi_wr_dmmu_demap_s_n;
wire [7:0] asi_d_data_in_en;
wire [7:0] asi_wr_p_context_0;
wire [1:0] asi_p_context_0_en;
wire [4:0] asi_mra_rd_addr_0;
wire [7:0] htc_wr_itlb_data_in;
wire [7:0] htc_wr_dtlb_data_in;
wire [81:0] asd0_rd_data;
wire [63:0] asd0_asi_rd_data;
wire [47:0] asd0_dtte_tag;
wire [54:0] asd0_dtte_data;
wire [47:0] asd0_itte_tag_data_;
wire [6:0] asd0_itte_index;
wire [12:0] asd_i_p_ctx_0_0;
wire [12:0] asd_i_p_ctx_0_1;
wire [12:0] asd_i_p_ctx_0_2;
wire [12:0] asd_i_p_ctx_0_3;
wire [47:0] asd0_tag_access;
wire asd0_asi_zero_context;
wire asd0_mra_rd_addr_bit_1;
wire [4:0] asi_mra_rd_addr_1;
wire [81:0] asd1_rd_data;
wire [63:0] asd1_asi_rd_data;
wire [47:0] asd1_dtte_tag;
wire [54:0] asd1_dtte_data;
wire [47:0] asd1_itte_tag_data_;
wire [6:0] asd1_itte_index;
wire [12:0] asd_i_p_ctx_0_4;
wire [12:0] asd_i_p_ctx_0_5;
wire [12:0] asd_i_p_ctx_0_6;
wire [12:0] asd_i_p_ctx_0_7;
wire [47:0] asd1_tag_access;
wire asd1_asi_zero_context;
wire asd1_mra_rd_addr_bit_1;
wire [81:0] ase_mra_wr_data;
wire meg1_parity_err_unused;
wire meg0_parity_err_unused;
wire [3:2] asi_mbist_ecc;
wire [1:0] mel0_crit_parity;
wire mel0_htc_parity_err;
wire med01_parity_out_unused;
wire med00_parity_out_unused;
wire [1:0] asi_mra_rd_en;
wire [4:0] asi_mra_wr_addr;
wire [1:0] asi_mra_wr_en;
wire [81:0] ase_mra_wr_data_minbuf;
wire [1:0] mel1_crit_parity;
wire mel1_htc_parity_err;
wire med11_parity_out_unused;
wire med10_parity_out_unused;
wire [63:0] asi_seg_wr_data;
wire [1:0] asi_scp_rd_en;
wire [1:0] asi_scp_wr_en;
wire [7:0] mmu_reload_done_unused;
wire [7:0] htc_itlb_clken;
wire [7:0] htc_dtlb_clken;
wire [63:0] ase_mra_rd_data;
wire [4:0] htc_mra_addr_in;
wire [1:0] htc_mra_rd_en;
wire [7:0] asi_error_mask;
wire asi_rd_physical_offset;
wire [7:0] asi_wr_partition_id;
wire [2:0] asi_tag_access_sel;
wire asi_tsb_ptr_req_valid;
wire [2:0] asi_tsb_ptr_req;
wire [1:0] asi_tsb_ptr_number;
wire [1:0] asi_tsb_hwtw_enable_0;
wire [1:0] asi_tsb_hwtw_enable_1;
wire [63:0] asi_mra_wr_data;
wire [1:0] asi_hwtw_config_0;
wire [1:0] asi_hwtw_config_1;
wire [1:0] asi_hwtw_config_2;
wire [1:0] asi_hwtw_config_3;
wire [1:0] asi_hwtw_config_4;
wire [1:0] asi_hwtw_config_5;
wire [1:0] asi_hwtw_config_6;
wire [1:0] asi_hwtw_config_7;
wire [7:0] asi_mbist_wdata;
wire [7:0] asi_ase_compare_data;
wire [7:0] asi_compare_data;
wire [31:0] asi_mbd_scp_data;
wire [7:0] asi_mbist_ecc_in;
wire [1:0] asi_ase_cmpsel_in;
wire [47:13] ase_lsu_va_w;
wire [12:0] ase_lsu_context_w;
wire [47:0] htd_tagaccess_din;
wire [38:0] htd_tlbdatain_din;
wire [31:0] ase_mbd_mbist_data;
wire htd_ra2pa_lower_hit_hw4;
wire htd_ra2pa_upper_hit_hw4;
wire [7:0] htd_zeroctx_m0;
wire [5:0] htd_pred0_idx_m0;
wire [5:0] htd_pred1_idx_m0;
wire [15:0] htd_pred0_m0;
wire [15:0] htd_pred1_m0;
wire [7:0] tsm_tsb_miss_hw2;
wire [7:0] trs_waitrr3_st;
wire [2:0] trs0_err_type;
wire [2:0] trs1_err_type;
wire [2:0] trs2_err_type;
wire [2:0] trs3_err_type;
wire [2:0] trs4_err_type;
wire [2:0] trs5_err_type;
wire [2:0] trs6_err_type;
wire [2:0] trs7_err_type;
wire [2:0] trs0_err_index;
wire [2:0] trs1_err_index;
wire [2:0] trs2_err_index;
wire [2:0] trs3_err_index;
wire [2:0] trs4_err_index;
wire [2:0] trs5_err_index;
wire [2:0] trs6_err_index;
wire [2:0] trs7_err_index;
wire [7:0] htc_core_running;
wire [5:3] htc_upd_pred_idx_hw2;
wire [7:0] htc_upd_grp_x;
wire [1:0] htc_new_pred_bit;
wire [7:0] htc_tlb_miss_m;
wire htc_wr_q0new_nogrant;
wire [1:0] htc_conf_index_m2;
wire [7:0] htc_vld_tsbptr_m2;
wire [7:0] htc_ra2pahit_hw5;
wire [7:0] htc_ranotpax_hw5;
wire [7:0] htc_cindex_bit0;
wire [7:0] htc_cindex_bit1;
wire [7:0] htc_rrindex_bit0;
wire [7:0] htc_rrindex_bit1;
wire [7:0] htc_tsbrd_valid_m0;
wire [7:0] htc_thr_valid_hw3;
wire [7:0] htc_thr_prevalid_hw3;
wire [7:0] htc_va_rd_m2_in;
wire [7:0] htc_data_rcvd_hw1;
wire [7:0] htc_tsb_hit_hw1;
wire [7:0] htc_tsb_done_hw2;
wire [7:0] htc_thr_valid_m1;
wire [7:0] htc_thr_valid_m0;
wire [7:0] htc_hwtw_burst;
wire [1:0] rr_ecc_err_type;
wire [1:0] cfg_ecc_err_type;
wire [1:0] l2_ecc_err_type;
wire [7:0] rr_ecc_err_hw5;
wire [7:0] cfg_ecc_err_m3;
wire [7:0] l2_ecc_err_hw1;
wire [7:0] htc_ep_miss_hw1;
wire [2:0] cfg_ecc_err_index;
wire [2:0] rr_ecc_err_index;
wire [7:0] trs_eccerr_st;
wire [7:0] tsm_waitfortte;
input tcu_array_wr_inhibit;
input tcu_se_scancollar_in;
input spc_aclk_wmr; // Warm reset (non)scan
input [1:0] tlu_tag_access_tid_0_b; // Tag access power management
input tlu_i_tag_access_0_b; // Tag access power management
input tlu_d_tag_access_0_b; // Tag access power management
input [1:0] tlu_tag_access_tid_1_b; // Tag access power management
input tlu_i_tag_access_1_b; // Tag access power management
input tlu_d_tag_access_1_b; // Tag access power management
input [7:0] spc_core_running_status;
input mbi_mra0_write_en; // MBIST write control
input mbi_mra1_write_en; // MBIST write control
input mbi_scp0_write_en; // MBIST write control
input mbi_scp1_write_en; // MBIST write control
input [4:0] mbi_addr; // 32 entry addressability for MBIST
input mbi_run; // Select MBIST controls
input [7:0] mbi_wdata; // MBIST write data
input mbi_mra0_read_en; // MBIST read control
input mbi_mra1_read_en; // MBIST read control
input mbi_scp0_read_en; // MBIST read control
input mbi_scp1_read_en; // MBIST read control
input [1:0] mbi_mmu_cmpsel; // Mux (DEC) between 32 bit chunks
input [64:0] lsu_rngf_cdbus;
input [12:0] lsu_context_b;
input [1:0] lsu_tlu_dsfsr_ct_b; // Indicates pri/sec context to HWTW
input [31:0] lsu_asi_error_inject; // 31:Enb 23:SCAU 20:MRAU 7:0 ECCMASK
input [7:0] tlu_load_i_tag_access_p;
input [7:0] tlu_load_i_tag_access_n;
input [7:0] tlu_load_d_tag_access;
input [7:0] tlu_load_d_tag_access_r;
input [7:0] tlu_release_tte;
input [47:13] tlu_pc_0_w;
input [47:13] tlu_pc_1_w;
input [7:0] tlu_iht_request; // ITLB hardware tablewalk request
input [7:0] tlu_dht_request; // DTLB hardware tablewalk request
input [7:0] tlu_mmu_tl_gt_0; // Load '0' as ITLB context
input [7:0] tlu_ceter_pscce;
input [127:0] l15_spc_data1; // 16 bytes of return data from L2
input [17:0] l15_mmu_cpkt; // Control part of cpx packet
output wmr_scan_out; // Warm reset (non)scan
output mmu_mbi_mra0_fail; // MBIST fail
output mmu_mbi_mra1_fail; // MBIST fail
output mmu_mbi_scp0_fail; // MBIST fail
output mmu_mbi_scp1_fail; // MBIST fail
output [4:0] mmu_l15_cpkt;
output [39:4] mmu_l15_addr;
output [7:0] mmu_write_itlb;
output [47:0] mmu_itte_tag_data;
output [64:0] mmu_asi_data; // ASI read data for fast bus
output mmu_asi_read; // Valid for MMU ASI read
output mmu_dae_req; // data_access_exception for bad pg size
output [2:0] mmu_dae_tid;
output mmu_dtlb_reload_stall;
output [7:0] mmu_hw_tw_enable;
output [7:0] mmu_reload_done;
output [7:0] mmu_i_unauth_access;
output [7:0] mmu_i_tsb_miss;
output [7:0] mmu_d_tsb_miss;
output [7:0] mmu_i_tte_outofrange; // RA out of range
output [7:0] mmu_d_tte_outofrange; // RA out of range
output [6:0] mmu_index; // Index and valid from idata_access
output mmu_asi_cecc; // Correctable ECC error on ASI read
output mmu_asi_uecc; // Uncorrectable ECC error on ASI read
output [2:0] mmu_asi_tid; // Thread for reported error
output [10:0] mmu_asi_index; // Syndrome and index of the failure
output mmu_asi_mra_not_sca; // 1: MRA error 0: Scratchpad error
output [7:0] mmu_i_l2cerr; // HW TW had L2 correctable error on I rld
output [7:0] mmu_d_l2cerr; // HW TW had L2 correctable error on D rld
output [7:0] mmu_i_eccerr; // HW TW had MRA or L2 error on I rld
output [7:0] mmu_d_eccerr; // HW TW had MRA or L2 error on D rld
output [2:0] mmu_thr0_err_type; // [2]: 1-MRA 0-L2 [1:0] ND U C - (3-0)
output [2:0] mmu_thr1_err_type; // [2]: 1-MRA 0-L2 [1:0] ND U C - (3-0)
output [2:0] mmu_thr2_err_type; // [2]: 1-MRA 0-L2 [1:0] ND U C - (3-0)
output [2:0] mmu_thr3_err_type; // [2]: 1-MRA 0-L2 [1:0] ND U C - (3-0)
output [2:0] mmu_thr4_err_type; // [2]: 1-MRA 0-L2 [1:0] ND U C - (3-0)
output [2:0] mmu_thr5_err_type; // [2]: 1-MRA 0-L2 [1:0] ND U C - (3-0)
output [2:0] mmu_thr6_err_type; // [2]: 1-MRA 0-L2 [1:0] ND U C - (3-0)
output [2:0] mmu_thr7_err_type; // [2]: 1-MRA 0-L2 [1:0] ND U C - (3-0)
output [2:0] mmu_thr0_err_index;
output [2:0] mmu_thr1_err_index;
output [2:0] mmu_thr2_err_index;
output [2:0] mmu_thr3_err_index;
output [2:0] mmu_thr4_err_index;
output [2:0] mmu_thr5_err_index;
output [2:0] mmu_thr6_err_index;
output [2:0] mmu_thr7_err_index;
output [2:0] mmu_pmu_tid;
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// Cannot send out a request to gkt, if in null state
/* 0in assert -var (~(tmc.tsm0.null_state & mmu_l15_valid & (mmu_l15_cpkt[2:0] == 3'b000)))
-message "mmu.mmu_tsm_ctl: Valid request sent to gkt in null state, thread 0" */
/* 0in assert -var (~(tmc.tsm1.null_state & mmu_l15_valid & (mmu_l15_cpkt[2:0] == 3'b001)))
-message "mmu.mmu_tsm_ctl: Valid request sent to gkt in null state, thread 1" */
/* 0in assert -var (~(tmc.tsm2.null_state & mmu_l15_valid & (mmu_l15_cpkt[2:0] == 3'b010)))
-message "mmu.mmu_tsm_ctl: Valid request sent to gkt in null state, thread 2" */
/* 0in assert -var (~(tmc.tsm3.null_state & mmu_l15_valid & (mmu_l15_cpkt[2:0] == 3'b011)))
-message "mmu.mmu_tsm_ctl: Valid request sent to gkt in null state, thread 3" */
/* 0in assert -var (~(tmc.tsm4.null_state & mmu_l15_valid & (mmu_l15_cpkt[2:0] == 3'b100)))
-message "mmu.mmu_tsm_ctl: Valid request sent to gkt in null state, thread 4" */
/* 0in assert -var (~(tmc.tsm5.null_state & mmu_l15_valid & (mmu_l15_cpkt[2:0] == 3'b101)))
-message "mmu.mmu_tsm_ctl: Valid request sent to gkt in null state, thread 5" */
/* 0in assert -var (~(tmc.tsm6.null_state & mmu_l15_valid & (mmu_l15_cpkt[2:0] == 3'b110)))
-message "mmu.mmu_tsm_ctl: Valid request sent to gkt in null state, thread 6" */
/* 0in assert -var (~(tmc.tsm7.null_state & mmu_l15_valid & (mmu_l15_cpkt[2:0] == 3'b111)))
-message "mmu.mmu_tsm_ctl: Valid request sent to gkt in null state, thread 7" */
// Cannot receive pkt from gkt, if in null state
/* 0in assert -var (~(tmc.tsm0.null_state & htc.load_ret_hw0 & htc.ret_tid_hw0[0]))
-message "mmu.mmu_htc_ctl: Pkt received from gkt in null state, thread 0" */
/* 0in assert -var (~(tmc.tsm1.null_state & htc.load_ret_hw0 & htc.ret_tid_hw0[1]))
-message "mmu.mmu_htc_ctl: Pkt received from gkt in null state, thread 1" */
/* 0in assert -var (~(tmc.tsm2.null_state & htc.load_ret_hw0 & htc.ret_tid_hw0[2]))
-message "mmu.mmu_htc_ctl: Pkt received from gkt in null state, thread 2" */
/* 0in assert -var (~(tmc.tsm3.null_state & htc.load_ret_hw0 & htc.ret_tid_hw0[3]))
-message "mmu.mmu_htc_ctl: Pkt received from gkt in null state, thread 3" */
/* 0in assert -var (~(tmc.tsm4.null_state & htc.load_ret_hw0 & htc.ret_tid_hw0[4]))
-message "mmu.mmu_htc_ctl: Pkt received from gkt in null state, thread 4" */
/* 0in assert -var (~(tmc.tsm5.null_state & htc.load_ret_hw0 & htc.ret_tid_hw0[5]))
-message "mmu.mmu_htc_ctl: Pkt received from gkt in null state, thread 5" */
/* 0in assert -var (~(tmc.tsm6.null_state & htc.load_ret_hw0 & htc.ret_tid_hw0[6]))
-message "mmu.mmu_htc_ctl: Pkt received from gkt in null state, thread 6" */
/* 0in assert -var (~(tmc.tsm7.null_state & htc.load_ret_hw0 & htc.ret_tid_hw0[7]))
-message "mmu.mmu_htc_ctl: Pkt received from gkt in null state, thread 7" */
//////////////////////////////////////////////////////////////////////////////
assign bist_clk_mux_sel = 1'b0;
assign tcu_scan_en_wmr = lb_scan_en_wmr;
assign error_inject_unused[30:24] =
lsu_asi_error_inject[30:24];
assign error_inject_unused[22:21] =
lsu_asi_error_inject[22:21];
assign error_inject_unused[19:8] =
lsu_asi_error_inject[19:8];
//////////////////////////////////////////////////////////////////////////////
mmu_asi_ctl asi ( // FS:wmr_protect
.wmr_scan_in(asi_wmr_scanin),
.wmr_scan_out(asi_wmr_scanout),
.error_inject_enable (lsu_asi_error_inject [31 ] ),
.error_inject_scau (lsu_asi_error_inject [23 ] ),
.error_inject_mrau (lsu_asi_error_inject [20 ] ),
.error_inject_mask (lsu_asi_error_inject [7:0] ),
.tcu_scan_en(tcu_scan_en),
.spc_aclk_wmr(spc_aclk_wmr),
.htc_itlb_clken(htc_itlb_clken[7:0]),
.htc_dtlb_clken(htc_dtlb_clken[7:0]),
.lsu_asi_clken(lsu_asi_clken),
.lsu_mmu_pmen(lsu_mmu_pmen),
.tlu_tag_access_tid_0_b(tlu_tag_access_tid_0_b[1:0]),
.tlu_i_tag_access_0_b(tlu_i_tag_access_0_b),
.tlu_d_tag_access_0_b(tlu_d_tag_access_0_b),
.tlu_tag_access_tid_1_b(tlu_tag_access_tid_1_b[1:0]),
.tlu_i_tag_access_1_b(tlu_i_tag_access_1_b),
.tlu_d_tag_access_1_b(tlu_d_tag_access_1_b),
.mbi_mra0_write_en(mbi_mra0_write_en),
.mbi_mra1_write_en(mbi_mra1_write_en),
.mbi_scp0_write_en(mbi_scp0_write_en),
.mbi_scp1_write_en(mbi_scp1_write_en),
.mbi_addr(mbi_addr[4:0]),
.mbi_wdata(mbi_wdata[7:0]),
.mbi_mra0_read_en(mbi_mra0_read_en),
.mbi_mra1_read_en(mbi_mra1_read_en),
.mbi_scp0_read_en(mbi_scp0_read_en),
.mbi_scp1_read_en(mbi_scp1_read_en),
.mbi_mmu_cmpsel(mbi_mmu_cmpsel[1:0]),
.mbd_compare(mbd_compare),
.lsu_rngf_cdbus(lsu_rngf_cdbus[64:0]),
.tlu_iht_request(tlu_iht_request[7:0]),
.tlu_dht_request(tlu_dht_request[7:0]),
.tlu_release_tte(tlu_release_tte[7:0]),
.tlu_ceter_pscce(tlu_ceter_pscce[7:0]),
.scp0_data(scp0_data[63:0]),
.scp1_data(scp1_data[63:0]),
.scp0_ecc(scp0_ecc[7:0]),
.scp1_ecc(scp1_ecc[7:0]),
.ase_mra_rd_data(ase_mra_rd_data[63:0]),
.mel0_parity(mel0_parity[1:0]),
.mel1_parity(mel1_parity[1:0]),
.mel0_parity_err(mel0_parity_err),
.mel1_parity_err(mel1_parity_err),
.asd0_asi_rd_data(asd0_asi_rd_data[63:0]),
.asd1_asi_rd_data(asd1_asi_rd_data[63:0]),
.asd0_dtte_tag(asd0_dtte_tag[47:0]),
.asd1_dtte_tag(asd1_dtte_tag[47:0]),
.asd0_dtte_data(asd0_dtte_data[54:0]),
.asd1_dtte_data(asd1_dtte_data[54:0]),
.asd0_itte_index(asd0_itte_index[6:0]),
.asd1_itte_index(asd1_itte_index[6:0]),
.asd0_asi_zero_context(asd0_asi_zero_context),
.asd1_asi_zero_context(asd1_asi_zero_context),
.htd_tsbptr(htd_tsbptr[39:4]),
.htc_mra_addr_in(htc_mra_addr_in[4:0]),
.htc_mra_rd_en(htc_mra_rd_en[1:0]),
.htc_wr_itlb_data_in(htc_wr_itlb_data_in[7:0]),
.htc_wr_dtlb_data_in(htc_wr_dtlb_data_in[7:0]),
.mmu_i_unauth_access(mmu_i_unauth_access[7:0]),
.mmu_i_tsb_miss(mmu_i_tsb_miss[7:0]),
.mmu_d_tsb_miss(mmu_d_tsb_miss[7:0]),
.mmu_i_tte_outofrange(mmu_i_tte_outofrange[7:0]),
.mmu_d_tte_outofrange(mmu_d_tte_outofrange[7:0]),
.mmu_i_eccerr(mmu_i_eccerr[7:0]),
.mmu_d_eccerr(mmu_d_eccerr[7:0]),
.asi_error_scau(asi_error_scau),
.asi_error_mrau(asi_error_mrau),
.asi_error_mask(asi_error_mask[7:0]),
.asi_scp_addr(asi_scp_addr[4:0]),
.asi_scp_wr_en(asi_scp_wr_en[1:0]),
.asi_scp_rd_en(asi_scp_rd_en[1:0]),
.asi_rd_scp0(asi_rd_scp0),
.asi_mra_rd_addr_0(asi_mra_rd_addr_0[4:0]),
.asi_mra_rd_addr_1(asi_mra_rd_addr_1[4:0]),
.asi_mra_rd_en(asi_mra_rd_en[1:0]),
.asi_mra_wr_addr(asi_mra_wr_addr[4:0]),
.asi_mra_wr_en(asi_mra_wr_en[1:0]),
.asi_mra_rd_en_last(asi_mra_rd_en_last[1:0]),
.asi_rd_tsb_cfg_0_2(asi_rd_tsb_cfg_0_2),
.asi_rd_tsb_cfg_1_3(asi_rd_tsb_cfg_1_3),
.asi_rd_tsb_ptr_(asi_rd_tsb_ptr_),
.asi_rd_real_range(asi_rd_real_range),
.asi_rd_physical_offset(asi_rd_physical_offset),
.asi_sel_mra_0_in(asi_sel_mra_0_in),
.asi_mra_wr_en_next(asi_mra_wr_en_next),
.asi_rd_immu_tag_target(asi_rd_immu_tag_target[7:0]),
.asi_rd_immu_tag_access(asi_rd_immu_tag_access[7:0]),
.asi_rd_dmmu_tag_target(asi_rd_dmmu_tag_target[7:0]),
.asi_rd_dmmu_tag_access(asi_rd_dmmu_tag_access[7:0]),
.asi_rd_i_access_target(asi_rd_i_access_target[1:0]),
.asi_rd_d_access_target(asi_rd_d_access_target[1:0]),
.asi_rd_access_target(asi_rd_access_target[1:0]),
.asi_rd_itte_tag(asi_rd_itte_tag[7:0]),
.asi_rd_itte_data(asi_rd_itte_data[7:0]),
.asi_rd_dtte(asi_rd_dtte[6:0]),
.asi_wr_immu_tag_access(asi_wr_immu_tag_access[7:0]),
.asi_wr_itlb_data_in(asi_wr_itlb_data_in[7:0]),
.asi_wr_itlb_data_access(asi_wr_itlb_data_access[7:0]),
.asi_wr_immu_demap(asi_wr_immu_demap[7:0]),
.asi_wr_immu_demap_p(asi_wr_immu_demap_p[7:0]),
.asi_wr_immu_demap_n(asi_wr_immu_demap_n[7:0]),
.asi_wr_dmmu_tag_access(asi_wr_dmmu_tag_access[7:0]),
.asi_wr_dtlb_data_in(asi_wr_dtlb_data_in[7:0]),
.asi_wr_dtlb_data_access(asi_wr_dtlb_data_access[7:0]),
.asi_wr_partition_id(asi_wr_partition_id[7:0]),
.asi_wr_dmmu_demap(asi_wr_dmmu_demap[7:0]),
.asi_wr_dmmu_demap_p(asi_wr_dmmu_demap_p[7:0]),
.asi_wr_dmmu_demap_s_n(asi_wr_dmmu_demap_s_n[7:0]),
.asi_dmmu_demap_s(asi_dmmu_demap_s),
.asi_wr_p_context_0(asi_wr_p_context_0[7:0]),
.asi_p_context_0_en(asi_p_context_0_en[1:0]),
.asi_tag_access_sel(asi_tag_access_sel[2:0]),
.asi_tsb_ptr_req_valid(asi_tsb_ptr_req_valid),
.asi_tsb_ptr_req(asi_tsb_ptr_req[2:0]),
.asi_tsb_ptr_number(asi_tsb_ptr_number[1:0]),
.asi_tsb_hwtw_enable_0(asi_tsb_hwtw_enable_0[1:0]),
.asi_tsb_hwtw_enable_1(asi_tsb_hwtw_enable_1[1:0]),
.asi_data_in_real(asi_data_in_real),
.asi_seg_wr_data(asi_seg_wr_data[63:0]),
.asi_wr_data(asi_wr_data[63:0]),
.asi_mra_wr_data(asi_mra_wr_data[63:0]),
.asi_mra_req_grant(asi_mra_req_grant),
.asi_demap_r_bit(asi_demap_r_bit),
.asi_rd_data(asi_rd_data[63:0]),
.asi_hwtw_config_0(asi_hwtw_config_0[1:0]),
.asi_hwtw_config_1(asi_hwtw_config_1[1:0]),
.asi_hwtw_config_2(asi_hwtw_config_2[1:0]),
.asi_hwtw_config_3(asi_hwtw_config_3[1:0]),
.asi_hwtw_config_4(asi_hwtw_config_4[1:0]),
.asi_hwtw_config_5(asi_hwtw_config_5[1:0]),
.asi_hwtw_config_6(asi_hwtw_config_6[1:0]),
.asi_hwtw_config_7(asi_hwtw_config_7[1:0]),
.asi_i_tag_access_en(asi_i_tag_access_en[7:0]),
.asi_d_tag_access_en(asi_d_tag_access_en[7:0]),
.asi_i_data_in_en(asi_i_data_in_en[7:0]),
.asi_d_data_in_en(asi_d_data_in_en[7:0]),
.asi_mbist_wdata(asi_mbist_wdata[7:0]),
.asi_ase_compare_data(asi_ase_compare_data[7:0]),
.asi_compare_data(asi_compare_data[7:0]),
.asi_mbd_scp_data(asi_mbd_scp_data[31:0]),
.asi_mbd_sel_scp(asi_mbd_sel_scp),
.asi_mbist_ecc_in(asi_mbist_ecc_in[7:0]),
.asi_mbist_ecc(asi_mbist_ecc[3:2]),
.asi_mbist_run(asi_mbist_run),
.asi_ecc_cmpsel_in(asi_ecc_cmpsel_in),
.asi_ase_cmpsel_in(asi_ase_cmpsel_in[1:0]),
.mmu_asi_data(mmu_asi_data[64:0]),
.mmu_asi_read(mmu_asi_read),
.mmu_write_itlb(mmu_write_itlb[7:0]),
.mmu_dtlb_reload_stall(mmu_dtlb_reload_stall),
.mmu_dtlb_reload(mmu_dtlb_reload),
.mmu_hw_tw_enable(mmu_hw_tw_enable[7:0]),
.mmu_asi_cecc(mmu_asi_cecc),
.mmu_asi_uecc(mmu_asi_uecc),
.mmu_asi_tid(mmu_asi_tid[2:0]),
.mmu_asi_index(mmu_asi_index[2:0]),
.mmu_asi_mra_not_sca(mmu_asi_mra_not_sca),
.mmu_dae_req(mmu_dae_req),
.mmu_dae_tid(mmu_dae_tid[2:0]),
.mmu_reload_done(mmu_reload_done[7:0]),
.mmu_index(mmu_index[6:0]),
.mmu_mbi_mra0_fail(mmu_mbi_mra0_fail),
.mmu_mbi_mra1_fail(mmu_mbi_mra1_fail),
.mmu_mbi_scp0_fail(mmu_mbi_scp0_fail),
.mmu_mbi_scp1_fail(mmu_mbi_scp1_fail)
assign asi_rd_dtte_unused[3] =
mmu_asd_dp asd0 ( // FS:wmr_protect
.wmr_scan_in(asd0_wmr_scanin),
.wmr_scan_out(asd0_wmr_scanout),
.asd_pc_w (asd_pc_0_w [47:13] ),
.asi_mra_rd_en_last (asi_mra_rd_en_last [0 ] ),
.asi_rd_immu_tag_target (asi_rd_immu_tag_target [3:0] ),
.asi_rd_immu_tag_access (asi_rd_immu_tag_access [3:0] ),
.asi_rd_dmmu_tag_target (asi_rd_dmmu_tag_target [3:0] ),
.asi_rd_dmmu_tag_access (asi_rd_dmmu_tag_access [3:0] ),
.asi_rd_i_access_target (asi_rd_i_access_target [0 ] ),
.asi_rd_d_access_target (asi_rd_d_access_target [0 ] ),
.asi_rd_access_target (asi_rd_access_target [0 ] ),
.asi_rd_itte_tag (asi_rd_itte_tag [3:0] ),
.asi_rd_itte_data (asi_rd_itte_data [3:0] ),
.asi_rd_dtte (asi_rd_dtte [2:0] ),
.asi_wr_immu_tag_access (asi_wr_immu_tag_access [3:0] ),
.asi_i_tag_access_en (asi_i_tag_access_en [3:0] ),
.asi_wr_itlb_data_in (asi_wr_itlb_data_in [3:0] ),
.asi_wr_itlb_data_access(asi_wr_itlb_data_access[3:0] ),
.asi_wr_immu_demap (asi_wr_immu_demap [3:0] ),
.asi_wr_immu_demap_p (asi_wr_immu_demap_p [3:0] ),
.asi_wr_immu_demap_n (asi_wr_immu_demap_n [3:0] ),
.asi_i_data_in_en (asi_i_data_in_en [3:0] ),
.asi_wr_dmmu_tag_access (asi_wr_dmmu_tag_access [3:0] ),
.asi_d_tag_access_en (asi_d_tag_access_en [3:0] ),
.asi_wr_dtlb_data_in (asi_wr_dtlb_data_in [3:0] ),
.asi_wr_dtlb_data_access(asi_wr_dtlb_data_access[3:0] ),
.asi_wr_dmmu_demap (asi_wr_dmmu_demap [3:0] ),
.asi_wr_dmmu_demap_p (asi_wr_dmmu_demap_p [3:0] ),
.asi_wr_dmmu_demap_s_n (asi_wr_dmmu_demap_s_n [3:0] ),
.asi_d_data_in_en (asi_d_data_in_en [3:0] ),
.asi_wr_p_context_0 (asi_wr_p_context_0 [3:0] ),
.asi_p_context_0_en (asi_p_context_0_en [0 ] ),
.tlu_load_i_tag_access_p(tlu_load_i_tag_access_p[3:0] ),
.tlu_load_i_tag_access_n(tlu_load_i_tag_access_n[3:0] ),
.asi_mra_rd_addr_bit_1 (asi_mra_rd_addr_0 [1 ] ),
.mra_data (mra0_data [81:0] ),
.tlu_pc_w (tlu_pc_0_w [47:13] ),
.tlu_load_d_tag_access (tlu_load_d_tag_access [3:0] ),
.tlu_load_d_tag_access_r(tlu_load_d_tag_access_r[3:0] ),
.htc_wr_itlb_data_in (htc_wr_itlb_data_in [3:0] ),
.htc_wr_dtlb_data_in (htc_wr_dtlb_data_in [3:0] ),
.asd_rd_data (asd0_rd_data [81:0] ),
.asd_asi_rd_data (asd0_asi_rd_data [63:0] ),
.asd_dtte_tag (asd0_dtte_tag [47:0] ),
.asd_dtte_data (asd0_dtte_data [54:0] ),
.asd_itte_tag_data_ (asd0_itte_tag_data_ [47:0] ),
.asd_itte_index (asd0_itte_index [6:0] ),
.asd_iht_p_ctx_0_0 (asd_i_p_ctx_0_0 [12:0] ),
.asd_iht_p_ctx_0_1 (asd_i_p_ctx_0_1 [12:0] ),
.asd_iht_p_ctx_0_2 (asd_i_p_ctx_0_2 [12:0] ),
.asd_iht_p_ctx_0_3 (asd_i_p_ctx_0_3 [12:0] ),
.asd_tag_access (asd0_tag_access [47:0] ),
.asd_zero_context (asd0_zero_context ),
.asd_asi_zero_context (asd0_asi_zero_context ),
.asd_mra_rd_addr_bit_1 (asd0_mra_rd_addr_bit_1 ),
.tcu_scan_en(tcu_scan_en),
.tcu_scan_en_wmr(tcu_scan_en_wmr),
.spc_aclk_wmr(spc_aclk_wmr),
.ase_lsu_va_w(ase_lsu_va_w[47:13]),
.ase_lsu_context_w(ase_lsu_context_w[12:0]),
.asi_wr_data(asi_wr_data[63:0]),
.asi_dmmu_demap_s(asi_dmmu_demap_s),
.asi_data_in_real(asi_data_in_real),
.asi_tag_access_sel(asi_tag_access_sel[2:0]),
.asi_mra_wr_data(asi_mra_wr_data[39:0]),
.asi_demap_r_bit(asi_demap_r_bit),
.asi_rd_tsb_ptr_(asi_rd_tsb_ptr_),
.htd_tagaccess_din(htd_tagaccess_din[47:0]),
.htd_tlbdatain_din(htd_tlbdatain_din[38:0]),
.mmu_use_context_0(mmu_use_context_0),
.mmu_use_context_1(mmu_use_context_1),
.mmu_sec_context(mmu_sec_context)
mmu_asd_dp asd1 ( // FS:wmr_protect
.wmr_scan_in(asd1_wmr_scanin),
.wmr_scan_out(asd1_wmr_scanout),
.asd_pc_w (asd_pc_1_w [47:13] ),
.asi_mra_rd_en_last (asi_mra_rd_en_last [1 ] ),
.asi_rd_immu_tag_target (asi_rd_immu_tag_target [7:4] ),
.asi_rd_immu_tag_access (asi_rd_immu_tag_access [7:4] ),
.asi_rd_dmmu_tag_target (asi_rd_dmmu_tag_target [7:4] ),
.asi_rd_dmmu_tag_access (asi_rd_dmmu_tag_access [7:4] ),
.asi_rd_i_access_target (asi_rd_i_access_target [1 ] ),
.asi_rd_d_access_target (asi_rd_d_access_target [1 ] ),
.asi_rd_access_target (asi_rd_access_target [1 ] ),
.asi_rd_itte_tag (asi_rd_itte_tag [7:4] ),
.asi_rd_itte_data (asi_rd_itte_data [7:4] ),
.asi_rd_dtte (asi_rd_dtte [6:4] ),
.asi_wr_immu_tag_access (asi_wr_immu_tag_access [7:4] ),
.asi_i_tag_access_en (asi_i_tag_access_en [7:4] ),
.asi_wr_itlb_data_in (asi_wr_itlb_data_in [7:4] ),
.asi_wr_itlb_data_access(asi_wr_itlb_data_access[7:4] ),
.asi_wr_immu_demap (asi_wr_immu_demap [7:4] ),
.asi_wr_immu_demap_p (asi_wr_immu_demap_p [7:4] ),
.asi_wr_immu_demap_n (asi_wr_immu_demap_n [7:4] ),
.asi_i_data_in_en (asi_i_data_in_en [7:4] ),
.asi_wr_dmmu_tag_access (asi_wr_dmmu_tag_access [7:4] ),
.asi_d_tag_access_en (asi_d_tag_access_en [7:4] ),
.asi_wr_dtlb_data_in (asi_wr_dtlb_data_in [7:4] ),
.asi_wr_dtlb_data_access(asi_wr_dtlb_data_access[7:4] ),
.asi_wr_dmmu_demap (asi_wr_dmmu_demap [7:4] ),
.asi_wr_dmmu_demap_p (asi_wr_dmmu_demap_p [7:4] ),
.asi_wr_dmmu_demap_s_n (asi_wr_dmmu_demap_s_n [7:4] ),
.asi_d_data_in_en (asi_d_data_in_en [7:4] ),
.asi_wr_p_context_0 (asi_wr_p_context_0 [7:4] ),
.asi_p_context_0_en (asi_p_context_0_en [1 ] ),
.tlu_load_i_tag_access_p(tlu_load_i_tag_access_p[7:4] ),
.tlu_load_i_tag_access_n(tlu_load_i_tag_access_n[7:4] ),
.asi_mra_rd_addr_bit_1 (asi_mra_rd_addr_1 [1 ] ),
.mra_data (mra1_data [81:0] ),
.tlu_pc_w (tlu_pc_1_w [47:13] ),
.tlu_load_d_tag_access (tlu_load_d_tag_access [7:4] ),
.tlu_load_d_tag_access_r(tlu_load_d_tag_access_r[7:4] ),
.htc_wr_itlb_data_in (htc_wr_itlb_data_in [7:4] ),
.htc_wr_dtlb_data_in (htc_wr_dtlb_data_in [7:4] ),
.asd_rd_data (asd1_rd_data [81:0] ),
.asd_asi_rd_data (asd1_asi_rd_data [63:0] ),
.asd_dtte_tag (asd1_dtte_tag [47:0] ),
.asd_dtte_data (asd1_dtte_data [54:0] ),
.asd_itte_tag_data_ (asd1_itte_tag_data_ [47:0] ),
.asd_itte_index (asd1_itte_index [6:0] ),
.asd_iht_p_ctx_0_0 (asd_i_p_ctx_0_4 [12:0] ),
.asd_iht_p_ctx_0_1 (asd_i_p_ctx_0_5 [12:0] ),
.asd_iht_p_ctx_0_2 (asd_i_p_ctx_0_6 [12:0] ),
.asd_iht_p_ctx_0_3 (asd_i_p_ctx_0_7 [12:0] ),
.asd_tag_access (asd1_tag_access [47:0] ),
.asd_zero_context (asd1_zero_context ),
.asd_asi_zero_context (asd1_asi_zero_context ),
.asd_mra_rd_addr_bit_1 (asd1_mra_rd_addr_bit_1 ),
.tcu_scan_en(tcu_scan_en),
.tcu_scan_en_wmr(tcu_scan_en_wmr),
.spc_aclk_wmr(spc_aclk_wmr),
.ase_lsu_va_w(ase_lsu_va_w[47:13]),
.ase_lsu_context_w(ase_lsu_context_w[12:0]),
.asi_wr_data(asi_wr_data[63:0]),
.asi_dmmu_demap_s(asi_dmmu_demap_s),
.asi_data_in_real(asi_data_in_real),
.asi_tag_access_sel(asi_tag_access_sel[2:0]),
.asi_mra_wr_data(asi_mra_wr_data[39:0]),
.asi_demap_r_bit(asi_demap_r_bit),
.asi_rd_tsb_ptr_(asi_rd_tsb_ptr_),
.htd_tagaccess_din(htd_tagaccess_din[47:0]),
.htd_tlbdatain_din(htd_tlbdatain_din[38:0]),
.mmu_use_context_0(mmu_use_context_0),
.mmu_use_context_1(mmu_use_context_1),
.mmu_sec_context(mmu_sec_context)
.tcu_scan_en(tcu_scan_en),
.tcu_dectest(tcu_dectest),
.tcu_muxtest(tcu_muxtest),
.lsu_va_b(lsu_va_b[47:0]),
.lsu_context_b(lsu_context_b[12:0]),
.asi_rd_tsb_cfg_0_2(asi_rd_tsb_cfg_0_2),
.asi_rd_tsb_cfg_1_3(asi_rd_tsb_cfg_1_3),
.asi_rd_real_range(asi_rd_real_range),
.asi_rd_physical_offset(asi_rd_physical_offset),
.asi_sel_mra_0_in(asi_sel_mra_0_in),
.asi_mra_wr_en_next(asi_mra_wr_en_next),
.asi_mra_wr_data(asi_mra_wr_data[63:0]),
.asd0_rd_data(asd0_rd_data[81:0]),
.asd1_rd_data(asd1_rd_data[81:0]),
.asd0_itte_tag_data_(asd0_itte_tag_data_[47:0]),
.asd1_itte_tag_data_(asd1_itte_tag_data_[47:0]),
.asi_mbist_run(asi_mbist_run),
.asi_ecc_cmpsel_in(asi_ecc_cmpsel_in),
.asi_ase_cmpsel_in(asi_ase_cmpsel_in[1:0]),
.asi_mbist_wdata(asi_mbist_wdata[7:0]),
.asi_ase_compare_data(asi_ase_compare_data[7:0]),
.mel0_parity(mel0_parity[1:0]),
.mel1_parity(mel1_parity[1:0]),
.ase_mra_wr_data(ase_mra_wr_data[81:0]),
.ase_mra_wr_data_minbuf(ase_mra_wr_data_minbuf[81:0]),
.ase_mra_rd_data(ase_mra_rd_data[63:0]),
.ase_lsu_va_w(ase_lsu_va_w[47:13]),
.ase_lsu_context_w(ase_lsu_context_w[12:0]),
.ase_mbd_mbist_data(ase_mbd_mbist_data[31:0]),
.mmu_itte_tag_data(mmu_itte_tag_data[47:0])
// Parity generation for both MRAs (only one write source: ASI bus)
.data_in (ase_mra_wr_data [81:41] ),
.parity_in ({1 {1'b0}} ),
.parity_out (meg_parity [1 ] ),
.parity_err (meg1_parity_err_unused )
.data_in (ase_mra_wr_data [40:0] ),
.parity_in ({1 {1'b0}} ),
.parity_out (meg_parity [0 ] ),
.parity_err (meg0_parity_err_unused )
.asi_error_inject (asi_error_mrau ),
.asi_mbist_ecc (asi_mbist_ecc [3 ] ),
.parity_in (meg_parity [1 ] ),
.parity_out (mem_parity [1 ] ),
.asi_mbist_run(asi_mbist_run)
.asi_error_inject (asi_error_mrau ),
.asi_mbist_ecc (asi_mbist_ecc [2 ] ),
.parity_in (meg_parity [0 ] ),
.parity_out (mem_parity [0 ] ),
.asi_mbist_run(asi_mbist_run)
// Parity error detection for MRA
.mra_parity (mra0_parity [1:0] ),
.med0_parity_err (med00_parity_err ),
.med1_parity_err (med01_parity_err ),
.mel_crit_parity (mel0_crit_parity [1:0] ),
.mel_parity (mel0_parity [1:0] ),
.mel_parity_err (mel0_parity_err ),
.mel_htc_parity_err (mel0_htc_parity_err ),
.tcu_scan_en(tcu_scan_en),
.tlu_cerer_mrau(tlu_cerer_mrau),
.tlu_cerer_hwtwmu(tlu_cerer_hwtwmu)
.data_in (asd0_rd_data [81:41] ),
.parity_in (mel0_crit_parity [1 ] ),
.parity_out (med01_parity_out_unused ),
.parity_err (med01_parity_err )
.data_in (asd0_rd_data [40:0] ),
.parity_in (mel0_crit_parity [0 ] ),
.parity_out (med00_parity_out_unused ),
.parity_err (med00_parity_err )
n2_com_dp_32x84_cust mra0 (
.rd_adr ({asi_mra_rd_addr_0 [4:2],
asi_mra_rd_addr_0 [0 ]}),
.rd_en (asi_mra_rd_en [0 ] ),
.wr_adr (asi_mra_wr_addr [4:0] ),
.wr_en (asi_mra_wr_en [0 ] ),
ase_mra_wr_data_minbuf [81:0]}),
.dout ({mra0_parity [1:0],
.tcu_array_wr_inhibit(tcu_array_wr_inhibit),
.tcu_se_scancollar_in(tcu_se_scancollar_in),
.bist_clk_mux_sel(bist_clk_mux_sel),
// ECC error detection for MRA
.mra_parity (mra1_parity [1:0] ),
.med0_parity_err (med10_parity_err ),
.med1_parity_err (med11_parity_err ),
.mel_crit_parity (mel1_crit_parity [1:0] ),
.mel_parity (mel1_parity [1:0] ),
.mel_parity_err (mel1_parity_err ),
.mel_htc_parity_err (mel1_htc_parity_err ),
.tcu_scan_en(tcu_scan_en),
.tlu_cerer_mrau(tlu_cerer_mrau),
.tlu_cerer_hwtwmu(tlu_cerer_hwtwmu)
.data_in (asd1_rd_data [81:41] ),
.parity_in (mel1_crit_parity [1 ] ),
.parity_out (med11_parity_out_unused ),
.parity_err (med11_parity_err )
.data_in (asd1_rd_data [40:0] ),
.parity_in (mel1_crit_parity [0 ] ),
.parity_out (med10_parity_out_unused ),
.parity_err (med10_parity_err )
n2_com_dp_32x84_cust mra1 (
.rd_adr ({asi_mra_rd_addr_1 [4:2],
asi_mra_rd_addr_1 [0 ]}),
.rd_en (asi_mra_rd_en [1 ] ),
.wr_adr (asi_mra_wr_addr [4:0] ),
.wr_en (asi_mra_wr_en [1 ] ),
ase_mra_wr_data_minbuf [81:0]}),
.dout ({mra1_parity [1:0],
.tcu_array_wr_inhibit(tcu_array_wr_inhibit),
.tcu_se_scancollar_in(tcu_se_scancollar_in),
.bist_clk_mux_sel(bist_clk_mux_sel),
// ECC generation for scratchpad arrays
asi_seg_wr_data [63:0]}),
.ecc_out (seg_ecc [7:0] )
.asi_error_inject (asi_error_scau ),
.ecc_in (seg_ecc [7:0] ),
.ecc_out (sem_ecc [7:0] ),
.asi_error_mask(asi_error_mask[7:0]),
.asi_mbist_ecc_in(asi_mbist_ecc_in[7:0]),
.asi_mbist_run(asi_mbist_run)
// ECC error detection for scratchpad arrays
.sel_syndrome (mmu_asi_index [10:3] ),
.tcu_scan_en(tcu_scan_en),
.tlu_cerer_scac(tlu_cerer_scac),
.tlu_cerer_scau(tlu_cerer_scau),
.asi_rd_scp0(asi_rd_scp0),
.sed_syndrome(sed_syndrome[7:0]),
.scp0_ecc(scp0_ecc[7:0]),
.scp1_ecc(scp1_ecc[7:0]),
.sed_cecc_err(sed_cecc_err),
.sed_uecc_err(sed_uecc_err),
.sel_crit_ecc(sel_crit_ecc[7:0]),
.ecc_in (sel_crit_ecc [7:0] ),
.syndrome (sed_syndrome [7:0] ),
.cecc_err (sed_cecc_err ),
.uecc_err (sed_uecc_err )
n2_com_dp_32x72_cust scp0 (
.rd_adr (asi_scp_addr [4:0] ),
.rd_en (asi_scp_rd_en [0 ] ),
.wr_adr (asi_scp_addr [4:0] ),
.wr_en (asi_scp_wr_en [0 ] ),
.tcu_array_wr_inhibit(tcu_array_wr_inhibit),
.tcu_se_scancollar_in(tcu_se_scancollar_in),
.bist_clk_mux_sel(bist_clk_mux_sel),
n2_com_dp_32x72_cust scp1 (
.rd_adr (asi_scp_addr [4:0] ),
.rd_en (asi_scp_rd_en [1 ] ),
.wr_adr (asi_scp_addr [4:0] ),
.wr_en (asi_scp_wr_en [1 ] ),
.tcu_array_wr_inhibit(tcu_array_wr_inhibit),
.tcu_se_scancollar_in(tcu_se_scancollar_in),
.bist_clk_mux_sel(bist_clk_mux_sel),
mmu_htc_ctl htc ( // FS:wmr_protect
.wmr_scan_in(htc_wmr_scanin),
.wmr_scan_out(htc_wmr_scanout),
.mel0_parity_err (mel0_htc_parity_err),
.mel1_parity_err (mel1_htc_parity_err),
.mmu_reload_done (mmu_reload_done_unused [7:0] ),
.htc_thr0_err_type (mmu_thr0_err_type [2:0] ),
.htc_thr1_err_type (mmu_thr1_err_type [2:0] ),
.htc_thr2_err_type (mmu_thr2_err_type [2:0] ),
.htc_thr3_err_type (mmu_thr3_err_type [2:0] ),
.htc_thr4_err_type (mmu_thr4_err_type [2:0] ),
.htc_thr5_err_type (mmu_thr5_err_type [2:0] ),
.htc_thr6_err_type (mmu_thr6_err_type [2:0] ),
.htc_thr7_err_type (mmu_thr7_err_type [2:0] ),
.htc_thr0_err_index (mmu_thr0_err_index [2:0] ),
.htc_thr1_err_index (mmu_thr1_err_index [2:0] ),
.htc_thr2_err_index (mmu_thr2_err_index [2:0] ),
.htc_thr3_err_index (mmu_thr3_err_index [2:0] ),
.htc_thr4_err_index (mmu_thr4_err_index [2:0] ),
.htc_thr5_err_index (mmu_thr5_err_index [2:0] ),
.htc_thr6_err_index (mmu_thr6_err_index [2:0] ),
.htc_thr7_err_index (mmu_thr7_err_index [2:0] ),
.tcu_scan_en(tcu_scan_en),
.lsu_mmu_pmen(lsu_mmu_pmen),
.spc_core_running_status(spc_core_running_status[7:0]),
.l15_mmu_cpkt(l15_mmu_cpkt[17:0]),
.l15_mmu_valid(l15_mmu_valid),
.asi_tsb_ptr_req_valid(asi_tsb_ptr_req_valid),
.asi_tsb_ptr_req(asi_tsb_ptr_req[2:0]),
.asi_tsb_ptr_number(asi_tsb_ptr_number[1:0]),
.asd0_zero_context(asd0_zero_context),
.asd1_zero_context(asd1_zero_context),
.asi_wr_partition_id(asi_wr_partition_id[7:0]),
.asi_wr_data(asi_wr_data[2:0]),
.asi_hwtw_config_0(asi_hwtw_config_0[1:0]),
.asi_hwtw_config_1(asi_hwtw_config_1[1:0]),
.asi_hwtw_config_2(asi_hwtw_config_2[1:0]),
.asi_hwtw_config_3(asi_hwtw_config_3[1:0]),
.asi_hwtw_config_4(asi_hwtw_config_4[1:0]),
.asi_hwtw_config_5(asi_hwtw_config_5[1:0]),
.asi_hwtw_config_6(asi_hwtw_config_6[1:0]),
.asi_hwtw_config_7(asi_hwtw_config_7[1:0]),
.asi_tsb_hwtw_enable_0(asi_tsb_hwtw_enable_0[1:0]),
.asi_tsb_hwtw_enable_1(asi_tsb_hwtw_enable_1[1:0]),
.htd_ra2pa_lower_hit_hw4(htd_ra2pa_lower_hit_hw4),
.htd_ra2pa_upper_hit_hw4(htd_ra2pa_upper_hit_hw4),
.htd_razero_hw4(htd_razero_hw4),
.htd_range_en_hw4(htd_range_en_hw4),
.htd_zeroctx_m0(htd_zeroctx_m0[7:0]),
.htd_zeroctx_hw1(htd_zeroctx_hw1),
.htd_usectx0_hw1(htd_usectx0_hw1),
.htd_usectx1_hw1(htd_usectx1_hw1),
.htd_ranotpa_hw1(htd_ranotpa_hw1),
.htd_ptr_hit0_hw1(htd_ptr_hit0_hw1),
.htd_ptr_hit1_hw1(htd_ptr_hit1_hw1),
.htd_ptr_hit2_hw1(htd_ptr_hit2_hw1),
.htd_ctx_hit_hw1(htd_ctx_hit_hw1),
.htd_tte_ep_hw1(htd_tte_ep_hw1),
.htd_dmiss_hw1(htd_dmiss_hw1),
.htd_pred0_idx_m0(htd_pred0_idx_m0[5:0]),
.htd_pred1_idx_m0(htd_pred1_idx_m0[5:0]),
.htd_pred0_m0(htd_pred0_m0[15:0]),
.htd_pred1_m0(htd_pred1_m0[15:0]),
.htd_dmiss(htd_dmiss[7:0]),
.htd_sec_ctx(htd_sec_ctx[7:0]),
.tlu_iht_request(tlu_iht_request[7:0]),
.tlu_dht_request(tlu_dht_request[7:0]),
.l15_mmu_grant(l15_mmu_grant),
.asi_mra_req_grant(asi_mra_req_grant),
.tsm_tsb_miss_hw2(tsm_tsb_miss_hw2[7:0]),
.trs_null_st(trs_null_st[7:0]),
.trs_waitrr3_st(trs_waitrr3_st[7:0]),
.trs_ecc_err(trs_ecc_err[7:0]),
.trs_ep_err(trs_ep_err[7:0]),
.trs0_err_type(trs0_err_type[2:0]),
.trs1_err_type(trs1_err_type[2:0]),
.trs2_err_type(trs2_err_type[2:0]),
.trs3_err_type(trs3_err_type[2:0]),
.trs4_err_type(trs4_err_type[2:0]),
.trs5_err_type(trs5_err_type[2:0]),
.trs6_err_type(trs6_err_type[2:0]),
.trs7_err_type(trs7_err_type[2:0]),
.trs0_err_index(trs0_err_index[2:0]),
.trs1_err_index(trs1_err_index[2:0]),
.trs2_err_index(trs2_err_index[2:0]),
.trs3_err_index(trs3_err_index[2:0]),
.trs4_err_index(trs4_err_index[2:0]),
.trs5_err_index(trs5_err_index[2:0]),
.trs6_err_index(trs6_err_index[2:0]),
.trs7_err_index(trs7_err_index[2:0]),
.tlu_cerer_hwtwl2(tlu_cerer_hwtwl2),
.tlu_cerer_hwtwmu(tlu_cerer_hwtwmu),
.htc_core_running(htc_core_running[7:0]),
.htc_m1_clken(htc_m1_clken),
.htc_hw3_clken(htc_hw3_clken),
.htc_hw4_clken(htc_hw4_clken),
.mmu_i_unauth_access(mmu_i_unauth_access[7:0]),
.mmu_i_tsb_miss(mmu_i_tsb_miss[7:0]),
.mmu_d_tsb_miss(mmu_d_tsb_miss[7:0]),
.mmu_use_context_0(mmu_use_context_0),
.mmu_use_context_1(mmu_use_context_1),
.mmu_sec_context(mmu_sec_context),
.htc_mra_addr_in(htc_mra_addr_in[4:0]),
.htc_mra_rd_en(htc_mra_rd_en[1:0]),
.htc_wr_itlb_data_in(htc_wr_itlb_data_in[7:0]),
.htc_wr_dtlb_data_in(htc_wr_dtlb_data_in[7:0]),
.htc_dtlb_clken(htc_dtlb_clken[7:0]),
.htc_itlb_clken(htc_itlb_clken[7:0]),
.htc_zero_ctx_m2(htc_zero_ctx_m2),
.htc_upd_pred_idx_hw2(htc_upd_pred_idx_hw2[5:3]),
.htc_upd_grp(htc_upd_grp[7:0]),
.htc_upd_grp_x(htc_upd_grp_x[7:0]),
.htc_new_pred_bit(htc_new_pred_bit[1:0]),
.htc_wrpred0_hw2(htc_wrpred0_hw2),
.htc_wrpred1_hw2(htc_wrpred1_hw2),
.htc_wrpred2_hw2(htc_wrpred2_hw2),
.htc_wrpred3_hw2(htc_wrpred3_hw2),
.htc_tlb_miss_m(htc_tlb_miss_m[7:0]),
.mmu_l15_cpkt(mmu_l15_cpkt[4:0]),
.mmu_l15_valid(mmu_l15_valid),
.htc_wr_q0new_nogrant(htc_wr_q0new_nogrant),
.htc_wr_q0new_grant(htc_wr_q0new_grant),
.htc_wr_q1new(htc_wr_q1new),
.htc_shift_q1_grant(htc_shift_q1_grant),
.htc_wr_m3new(htc_wr_m3new),
.htc_wr_m3q0(htc_wr_m3q0),
.htc_mra_sel_0(htc_mra_sel_0),
.htc_sel_mra_lo(htc_sel_mra_lo),
.htc_conf_index_m2(htc_conf_index_m2[1:0]),
.htc_vld_tsbptr_m2(htc_vld_tsbptr_m2[7:0]),
.htc_rd_tteq(htc_rd_tteq[7:0]),
.htc_ra2pahit_hw5(htc_ra2pahit_hw5[7:0]),
.htc_ranotpax_hw5(htc_ranotpax_hw5[7:0]),
.htc_cindex_bit0(htc_cindex_bit0[7:0]),
.htc_cindex_bit1(htc_cindex_bit1[7:0]),
.htc_rrindex_bit0(htc_rrindex_bit0[7:0]),
.htc_rrindex_bit1(htc_rrindex_bit1[7:0]),
.htc_pid0_m0(htc_pid0_m0[2:0]),
.htc_pid1_m0(htc_pid1_m0[2:0]),
.htc_tsbrd_valid_m0(htc_tsbrd_valid_m0[7:0]),
.htc_thr_valid_hw3(htc_thr_valid_hw3[7:0]),
.htc_thr_prevalid_hw3(htc_thr_prevalid_hw3[7:0]),
.htc_va_rd_m2_in(htc_va_rd_m2_in[7:0]),
.htc_ranotpa_hw4(htc_ranotpa_hw4),
.htc_data_rcvd_hw1(htc_data_rcvd_hw1[7:0]),
.htc_tsb_hit_hw1(htc_tsb_hit_hw1[7:0]),
.htc_tsb_done_hw2(htc_tsb_done_hw2[7:0]),
.htc_thr_valid_m1(htc_thr_valid_m1[7:0]),
.htc_thr_valid_m0(htc_thr_valid_m0[7:0]),
.htc_hwtw_burst(htc_hwtw_burst[7:0]),
.mmu_i_tte_outofrange(mmu_i_tte_outofrange[7:0]),
.mmu_d_tte_outofrange(mmu_d_tte_outofrange[7:0]),
.rr_ecc_err_type(rr_ecc_err_type[1:0]),
.cfg_ecc_err_type(cfg_ecc_err_type[1:0]),
.l2_ecc_err_type(l2_ecc_err_type[1:0]),
.rr_ecc_err_hw5(rr_ecc_err_hw5[7:0]),
.cfg_ecc_err_m3(cfg_ecc_err_m3[7:0]),
.l2_ecc_err_hw1(l2_ecc_err_hw1[7:0]),
.htc_ep_miss_hw1(htc_ep_miss_hw1[7:0]),
.cfg_ecc_err_index(cfg_ecc_err_index[2:0]),
.rr_ecc_err_index(rr_ecc_err_index[2:0]),
.mmu_i_eccerr(mmu_i_eccerr[7:0]),
.mmu_d_eccerr(mmu_d_eccerr[7:0]),
.mmu_i_l2cerr(mmu_i_l2cerr[7:0]),
.mmu_d_l2cerr(mmu_d_l2cerr[7:0]),
.mmu_pmu_l2ret(mmu_pmu_l2ret),
.mmu_pmu_l2miss(mmu_pmu_l2miss),
.mmu_pmu_dtlb(mmu_pmu_dtlb),
.mmu_pmu_tid(mmu_pmu_tid[2:0]),
.spc_aclk_wmr(spc_aclk_wmr)
.tlu_pc_0_w(asd_pc_0_w[47:13]),
.tlu_pc_1_w(asd_pc_1_w[47:13]),
.tcu_scan_en(tcu_scan_en),
.tcu_muxtest(tcu_muxtest),
.tcu_dectest(tcu_dectest),
.htc_core_running(htc_core_running[7:0]),
.htc_m1_clken(htc_m1_clken),
.htc_hw3_clken(htc_hw3_clken),
.htc_hw4_clken(htc_hw4_clken),
.asd0_tag_access(asd0_tag_access[47:0]),
.asd1_tag_access(asd1_tag_access[47:0]),
.htc_tsbrd_valid_m0(htc_tsbrd_valid_m0[7:0]),
.ase_lsu_va_w(ase_lsu_va_w[47:13]),
.lsu_context_b(lsu_context_b[12:0]),
.lsu_tlu_dsfsr_ct_b(lsu_tlu_dsfsr_ct_b[1:0]),
.l15_spc_data1(l15_spc_data1[127:0]),
.l15_mmu_cpkt(l15_mmu_cpkt[8:3]),
.l15_mmu_grant(l15_mmu_grant),
.htc_zero_ctx_m2(htc_zero_ctx_m2),
.htc_ranotpa_hw4(htc_ranotpa_hw4),
.htc_pid0_m0(htc_pid0_m0[2:0]),
.htc_pid1_m0(htc_pid1_m0[2:0]),
.htc_thr_prevalid_hw3(htc_thr_prevalid_hw3[7:0]),
.htc_va_rd_m2_in(htc_va_rd_m2_in[7:0]),
.htc_vld_tsbptr_m2(htc_vld_tsbptr_m2[7:0]),
.trs_null_st(trs_null_st[7:0]),
.htc_mra_sel_0(htc_mra_sel_0),
.htc_sel_mra_lo(htc_sel_mra_lo),
.mra0_data(mra0_data[81:0]),
.mra1_data(mra1_data[81:0]),
.htc_conf_index_m2(htc_conf_index_m2[1:0]),
.htc_upd_pred_idx_hw2(htc_upd_pred_idx_hw2[5:3]),
.htc_upd_grp(htc_upd_grp[7:0]),
.htc_upd_grp_x(htc_upd_grp_x[7:0]),
.htc_new_pred_bit(htc_new_pred_bit[1:0]),
.htc_wrpred0_hw2(htc_wrpred0_hw2),
.htc_wrpred1_hw2(htc_wrpred1_hw2),
.htc_wrpred2_hw2(htc_wrpred2_hw2),
.htc_wrpred3_hw2(htc_wrpred3_hw2),
.htc_wr_q0new_nogrant(htc_wr_q0new_nogrant),
.htc_wr_q0new_grant(htc_wr_q0new_grant),
.htc_wr_q1new(htc_wr_q1new),
.htc_shift_q1_grant(htc_shift_q1_grant),
.htc_wr_m3new(htc_wr_m3new),
.htc_wr_m3q0(htc_wr_m3q0),
.htc_rd_tteq(htc_rd_tteq[7:0]),
.tlu_iht_request(tlu_iht_request[7:0]),
.tlu_dht_request(tlu_dht_request[7:0]),
.tlu_mmu_tl_gt_0(tlu_mmu_tl_gt_0[7:0]),
.asd_i_p_ctx_0_0(asd_i_p_ctx_0_0[12:0]),
.asd_i_p_ctx_0_1(asd_i_p_ctx_0_1[12:0]),
.asd_i_p_ctx_0_2(asd_i_p_ctx_0_2[12:0]),
.asd_i_p_ctx_0_3(asd_i_p_ctx_0_3[12:0]),
.asd_i_p_ctx_0_4(asd_i_p_ctx_0_4[12:0]),
.asd_i_p_ctx_0_5(asd_i_p_ctx_0_5[12:0]),
.asd_i_p_ctx_0_6(asd_i_p_ctx_0_6[12:0]),
.asd_i_p_ctx_0_7(asd_i_p_ctx_0_7[12:0]),
.htd_range_en_hw4(htd_range_en_hw4),
.htd_zeroctx_hw1(htd_zeroctx_hw1),
.htd_usectx0_hw1(htd_usectx0_hw1),
.htd_usectx1_hw1(htd_usectx1_hw1),
.htd_ranotpa_hw1(htd_ranotpa_hw1),
.htd_ptr_hit0_hw1(htd_ptr_hit0_hw1),
.htd_ptr_hit1_hw1(htd_ptr_hit1_hw1),
.htd_ptr_hit2_hw1(htd_ptr_hit2_hw1),
.htd_ctx_hit_hw1(htd_ctx_hit_hw1),
.htd_tte_ep_hw1(htd_tte_ep_hw1),
.htd_dmiss_hw1(htd_dmiss_hw1),
.htd_ra2pa_lower_hit_hw4(htd_ra2pa_lower_hit_hw4),
.htd_ra2pa_upper_hit_hw4(htd_ra2pa_upper_hit_hw4),
.htd_razero_hw4(htd_razero_hw4),
.htd_tagaccess_din(htd_tagaccess_din[47:0]),
.htd_tlbdatain_din(htd_tlbdatain_din[38:0]),
.mmu_l15_addr(mmu_l15_addr[39:4]),
.htd_dmiss(htd_dmiss[7:0]),
.htd_sec_ctx(htd_sec_ctx[7:0]),
.htd_pred0_idx_m0(htd_pred0_idx_m0[5:0]),
.htd_pred1_idx_m0(htd_pred1_idx_m0[5:0]),
.htd_pred0_m0(htd_pred0_m0[15:0]),
.htd_pred1_m0(htd_pred1_m0[15:0]),
.htd_tsbptr(htd_tsbptr[39:4]),
.htd_zeroctx_m0(htd_zeroctx_m0[7:0])
.tcu_scan_en(tcu_scan_en),
.htc_data_rcvd_hw1(htc_data_rcvd_hw1[7:0]),
.htc_tlb_miss_m(htc_tlb_miss_m[7:0]),
.htc_tsb_done_hw2(htc_tsb_done_hw2[7:0]),
.htc_vld_tsbptr_m2(htc_vld_tsbptr_m2[7:0]),
.htc_thr_valid_m1(htc_thr_valid_m1[7:0]),
.htc_thr_valid_m0(htc_thr_valid_m0[7:0]),
.htc_hwtw_burst(htc_hwtw_burst[7:0]),
.htc_cindex_bit0(htc_cindex_bit0[7:0]),
.htc_cindex_bit1(htc_cindex_bit1[7:0]),
.trs_eperr_st(trs_eperr_st[7:0]),
.trs_eccerr_st(trs_eccerr_st[7:0]),
.tsm_tsb_miss_hw2(tsm_tsb_miss_hw2[7:0]),
.tsm_waitfortte(tsm_waitfortte[7:0])
.tcu_scan_en(tcu_scan_en),
.htc_tsb_hit_hw1(htc_tsb_hit_hw1[7:0]),
.htc_thr_valid_hw3(htc_thr_valid_hw3[7:0]),
.htc_ra2pahit_hw5(htc_ra2pahit_hw5[7:0]),
.htc_ranotpax_hw5(htc_ranotpax_hw5[7:0]),
.tsm_waitfortte(tsm_waitfortte[7:0]),
.htc_ep_miss_hw1(htc_ep_miss_hw1[7:0]),
.htc_rrindex_bit0(htc_rrindex_bit0[7:0]),
.htc_rrindex_bit1(htc_rrindex_bit1[7:0]),
.l2_ecc_err_hw1(l2_ecc_err_hw1[7:0]),
.cfg_ecc_err_m3(cfg_ecc_err_m3[7:0]),
.rr_ecc_err_hw5(rr_ecc_err_hw5[7:0]),
.l2_ecc_err_type(l2_ecc_err_type[1:0]),
.cfg_ecc_err_type(cfg_ecc_err_type[1:0]),
.rr_ecc_err_type(rr_ecc_err_type[1:0]),
.cfg_ecc_err_index(cfg_ecc_err_index[2:0]),
.rr_ecc_err_index(rr_ecc_err_index[2:0]),
.trs_null_st(trs_null_st[7:0]),
.trs_waitrr3_st(trs_waitrr3_st[7:0]),
.trs_ep_err(trs_ep_err[7:0]),
.trs_ecc_err(trs_ecc_err[7:0]),
.trs0_err_type(trs0_err_type[2:0]),
.trs1_err_type(trs1_err_type[2:0]),
.trs2_err_type(trs2_err_type[2:0]),
.trs3_err_type(trs3_err_type[2:0]),
.trs4_err_type(trs4_err_type[2:0]),
.trs5_err_type(trs5_err_type[2:0]),
.trs6_err_type(trs6_err_type[2:0]),
.trs7_err_type(trs7_err_type[2:0]),
.trs0_err_index(trs0_err_index[2:0]),
.trs1_err_index(trs1_err_index[2:0]),
.trs2_err_index(trs2_err_index[2:0]),
.trs3_err_index(trs3_err_index[2:0]),
.trs4_err_index(trs4_err_index[2:0]),
.trs5_err_index(trs5_err_index[2:0]),
.trs6_err_index(trs6_err_index[2:0]),
.trs7_err_index(trs7_err_index[2:0]),
.trs_eccerr_st(trs_eccerr_st[7:0]),
.trs_eperr_st(trs_eperr_st[7:0])
//////////////////////////////////////////////////////////////////////////////
.asi_mbd_scp_data(asi_mbd_scp_data[31:0]),
.asi_compare_data(asi_compare_data[7:0]),
.asi_mbd_sel_scp(asi_mbd_sel_scp),
.ase_mbd_mbist_data(ase_mbd_mbist_data[31:0]),
.mbd_compare(mbd_compare));
////////////////////////////////////////////////////////////////////////////////
assign asi_scanin = scan_in ;
assign asd0_scanin = asi_scanout ;
assign asd1_scanin = asd0_scanout ;
assign ase_scanin = asd1_scanout ;
assign mel0_scanin = ase_scanout ;
assign mra0_scanin = mel0_scanout ;
assign mel1_scanin = mra0_scanout ;
assign mra1_scanin = mel1_scanout ;
assign sel_scanin = mra1_scanout ;
assign scp0_scanin = sel_scanout ;
assign scp1_scanin = scp0_scanout ;
assign htc_scanin = scp1_scanout ;
assign htd_scanin = htc_scanout ;
assign tmc_scanin = htd_scanout ;
assign trc_scanin = tmc_scanout ;
assign scan_out = trc_scanout ;
assign asi_wmr_scanin = wmr_scan_in ;
assign asd0_wmr_scanin = asi_wmr_scanout ;
assign asd1_wmr_scanin = asd0_wmr_scanout ;
assign htc_wmr_scanin = asd1_wmr_scanout ;
assign wmr_scan_out = htc_wmr_scanout ;