diff --git a/design/ifu/el2_ifu_ic_mem.sv b/design/ifu/el2_ifu_ic_mem.sv index 77faf2cd252..224c7d01656 100644 --- a/design/ifu/el2_ifu_ic_mem.sv +++ b/design/ifu/el2_ifu_ic_mem.sv @@ -17,6 +17,7 @@ //////////////////////////////////////////////////// // ICACHE DATA & TAG MODULE WRAPPER // ///////////////////////////////////////////////////// +`include "el2_ifu_ic_macros.svh" module el2_ifu_ic_mem import el2_pkg::*; #( @@ -201,22 +202,6 @@ import el2_pkg::*; // ----------- Logic section starts here -------------------- //----------------------------------------------------------- - // Expose the ICACHE DATA signals outside of the core. - always_comb begin - icache_export.ic_b_sb_wren = ic_b_sb_wren; - // TODO should this be inside some genblock? - // TODO define - // icache_export.ic_b_sb_bit_en_vec = ic_b_sb_bit_en_vec; - icache_export.ic_sb_wr_data = ic_sb_wr_data; - icache_export.ic_rw_addr_bank_q = ic_rw_addr_bank_q; - icache_export.ic_bank_way_clken_final = ic_bank_way_clken_final; - icache_export.ic_bank_way_clken_final_up = ic_bank_way_clken_final_up; - // TODO should these be inside some genblock? - // TODO define - // wb_packeddout_pre = icache_export.wb_packeddout_pre; - // wb_dout_pre_up = icache_export.wb_dout_pre_up; - end - assign ic_debug_rd_way_en[pt.ICACHE_NUM_WAYS-1:0] = {pt.ICACHE_NUM_WAYS{ic_debug_rd_en & ~ic_debug_tag_array}} & ic_debug_way[pt.ICACHE_NUM_WAYS-1:0] ; assign ic_debug_wr_way_en[pt.ICACHE_NUM_WAYS-1:0] = {pt.ICACHE_NUM_WAYS{ic_debug_wr_en & ~ic_debug_tag_array}} & ic_debug_way[pt.ICACHE_NUM_WAYS-1:0] ; @@ -267,6 +252,89 @@ import el2_pkg::*; ); if (pt.ICACHE_WAYPACK == 0 ) begin : PACKED_0 + logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS_WIDTH-1:0] wrptr_up; + logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS_WIDTH-1:0] wrptr_in_up; + logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0] sel_bypass_up; + logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][pt.ICACHE_NUM_BYPASS-1:0] sel_bypass_ff_up; + logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0][(71*pt.ICACHE_NUM_WAYS)-1:0] sel_bypass_data_up; + logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0] any_bypass_up; + logic [pt.ICACHE_NUM_WAYS-1:0][pt.ICACHE_BANKS_WAY-1:0] any_addr_match_up; + // TODO + // always_comb begin + // icache_export.ic_b_sb_wren[i] = ic_b_sb_wren[i]; + // // TODO is this valid only in PACKED_1? + // // icache_export.ic_b_sb_bit_en_vec = ic_b_sb_bit_en_vec; + // icache_export.ic_sb_wr_data[i] = ic_sb_wr_data[i]; + // icache_export.ic_rw_addr_bank_q[i] = ic_rw_addr_bank_q[i]; + // icache_export.ic_bank_way_clken_final[i] = ic_bank_way_clken_final[i]; + // icache_export.ic_bank_way_clken_final_up[i] = ic_bank_way_clken_final_up[i]; + // // TODO is this valid only in PACKED_1? + // // wb_packeddout_pre = icache_export.wb_packeddout_pre; + // wb_dout_pre_up[i] = icache_export.wb_dout_pre_up[i]; + // end + + for (genvar i=0; i