Added an initial ready state to an mrvq entry that might be set to 1
This commit is contained in:
24
hw/rtl/cache/VX_bank.v
vendored
24
hw/rtl/cache/VX_bank.v
vendored
@@ -355,6 +355,7 @@ module VX_bank #(
|
||||
wire fill_saw_dirty_st1e;
|
||||
wire is_snp_st1e;
|
||||
wire snp_to_mrvq_st1e;
|
||||
wire mrvq_init_ready_state_st1e;
|
||||
|
||||
assign is_snp_st1e = is_snp_st1[STAGE_1_CYCLES-1];
|
||||
assign {tag_st1e, mem_read_st1e, mem_write_st1e, tid_st1e} = inst_meta_st1[STAGE_1_CYCLES-1];
|
||||
@@ -396,13 +397,14 @@ module VX_bank #(
|
||||
.is_snp_st1e (is_snp_st1e),
|
||||
|
||||
// Read Data
|
||||
.readword_st1e (readword_st1e),
|
||||
.readdata_st1e (readdata_st1e),
|
||||
.readtag_st1e (readtag_st1e),
|
||||
.miss_st1e (miss_st1e),
|
||||
.dirty_st1e (dirty_st1e),
|
||||
.fill_saw_dirty_st1e(fill_saw_dirty_st1e),
|
||||
.snp_to_mrvq_st1e (snp_to_mrvq_st1e)
|
||||
.readword_st1e (readword_st1e),
|
||||
.readdata_st1e (readdata_st1e),
|
||||
.readtag_st1e (readtag_st1e),
|
||||
.miss_st1e (miss_st1e),
|
||||
.dirty_st1e (dirty_st1e),
|
||||
.fill_saw_dirty_st1e (fill_saw_dirty_st1e),
|
||||
.snp_to_mrvq_st1e (snp_to_mrvq_st1e),
|
||||
.mrvq_init_ready_state_st1e(mrvq_init_ready_state_st1e)
|
||||
);
|
||||
|
||||
wire qual_valid_st1e_2 = valid_st1[STAGE_1_CYCLES-1] && !is_fill_st1[STAGE_1_CYCLES-1];
|
||||
@@ -420,16 +422,17 @@ module VX_bank #(
|
||||
wire [SNP_REQ_TAG_WIDTH-1:0] snrq_tag_st2;
|
||||
wire is_snp_st2;
|
||||
wire snp_to_mrvq_st2;
|
||||
wire mrvq_init_ready_state_st2;
|
||||
|
||||
VX_generic_register #(
|
||||
.N(1+ 1 + 1 + 1 + 1 + `LINE_ADDR_WIDTH + `BASE_ADDR_BITS + `WORD_WIDTH + `WORD_WIDTH + `BANK_LINE_WIDTH + `TAG_SELECT_BITS + 1 + 1 + `REQ_INST_META_WIDTH + SNP_REQ_TAG_WIDTH)
|
||||
.N(1+1+ 1 + 1 + 1 + 1 + `LINE_ADDR_WIDTH + `BASE_ADDR_BITS + `WORD_WIDTH + `WORD_WIDTH + `BANK_LINE_WIDTH + `TAG_SELECT_BITS + 1 + 1 + `REQ_INST_META_WIDTH + SNP_REQ_TAG_WIDTH)
|
||||
) st_1e_2 (
|
||||
.clk (clk),
|
||||
.reset(reset),
|
||||
.stall(stall_bank_pipe),
|
||||
.flush(0),
|
||||
.in ({snp_to_mrvq_st1e, is_snp_st1e, snrq_tag_st1[STAGE_1_CYCLES-1], fill_saw_dirty_st1e, is_fill_st1[STAGE_1_CYCLES-1] , qual_valid_st1e_2, addr_st1[STAGE_1_CYCLES-1], wsel_st1[STAGE_1_CYCLES-1], writeword_st1[STAGE_1_CYCLES-1], readword_st1e, readdata_st1e, readtag_st1e, miss_st1e, dirty_st1e, inst_meta_st1[STAGE_1_CYCLES-1]}),
|
||||
.out ({snp_to_mrvq_st2 , is_snp_st2 , snrq_tag_st2, fill_saw_dirty_st2 , is_fill_st2 , valid_st2 , addr_st2 , wsel_st2, writeword_st2 , readword_st2 , readdata_st2 , readtag_st2 , miss_st2 , dirty_st2 , inst_meta_st2 })
|
||||
.in ({mrvq_init_ready_state_st1e, snp_to_mrvq_st1e, is_snp_st1e, snrq_tag_st1[STAGE_1_CYCLES-1], fill_saw_dirty_st1e, is_fill_st1[STAGE_1_CYCLES-1] , qual_valid_st1e_2, addr_st1[STAGE_1_CYCLES-1], wsel_st1[STAGE_1_CYCLES-1], writeword_st1[STAGE_1_CYCLES-1], readword_st1e, readdata_st1e, readtag_st1e, miss_st1e, dirty_st1e, inst_meta_st1[STAGE_1_CYCLES-1]}),
|
||||
.out ({mrvq_init_ready_state_st2, snp_to_mrvq_st2 , is_snp_st2 , snrq_tag_st2, fill_saw_dirty_st2 , is_fill_st2 , valid_st2 , addr_st2 , wsel_st2, writeword_st2 , readword_st2 , readdata_st2 , readtag_st2 , miss_st2 , dirty_st2 , inst_meta_st2 })
|
||||
);
|
||||
|
||||
|
||||
@@ -484,6 +487,7 @@ module VX_bank #(
|
||||
.miss_add_is_snp (miss_add_is_snp),
|
||||
.miss_resrv_full (mrvq_full),
|
||||
.miss_resrv_stop (mrvq_stop),
|
||||
.mrvq_init_ready_state (mrvq_init_ready_state_st2),
|
||||
|
||||
// Broadcast
|
||||
.is_fill_st1 (is_fill_st1[STAGE_1_CYCLES-1]),
|
||||
|
||||
Reference in New Issue
Block a user