cache merge optimization
This commit is contained in:
21
hw/rtl/cache/VX_cache_core_rsp_merge.v
vendored
21
hw/rtl/cache/VX_cache_core_rsp_merge.v
vendored
@@ -85,25 +85,34 @@ module VX_cache_core_rsp_merge #(
|
|||||||
end else begin
|
end else begin
|
||||||
|
|
||||||
reg [NUM_REQS-1:0][CORE_TAG_WIDTH-1:0] core_rsp_tag_unqual;
|
reg [NUM_REQS-1:0][CORE_TAG_WIDTH-1:0] core_rsp_tag_unqual;
|
||||||
|
reg [NUM_REQS-1:0][NUM_BANKS-1:0] bank_select_table;
|
||||||
|
|
||||||
wire [NUM_REQS-1:0] core_rsp_ready_unqual;
|
wire [NUM_REQS-1:0] core_rsp_ready_unqual;
|
||||||
|
|
||||||
always @(*) begin
|
always @(*) begin
|
||||||
core_rsp_valid_unqual = 0;
|
core_rsp_valid_unqual = 0;
|
||||||
core_rsp_tag_unqual = 'x;
|
core_rsp_tag_unqual = 'x;
|
||||||
core_rsp_data_unqual = 'x;
|
core_rsp_data_unqual = 'x;
|
||||||
core_rsp_bank_select = 0;
|
bank_select_table = 'x;
|
||||||
|
|
||||||
for (integer i = 0; i < NUM_BANKS; i++) begin
|
for (integer i = NUM_BANKS-1; i >= 0; --i) begin
|
||||||
if (per_bank_core_rsp_valid[i]
|
if (per_bank_core_rsp_valid[i]) begin
|
||||||
&& !core_rsp_valid_unqual[per_bank_core_rsp_tid[i]]) begin
|
|
||||||
core_rsp_valid_unqual[per_bank_core_rsp_tid[i]] = 1;
|
core_rsp_valid_unqual[per_bank_core_rsp_tid[i]] = 1;
|
||||||
core_rsp_tag_unqual[per_bank_core_rsp_tid[i]] = per_bank_core_rsp_tag[i];
|
core_rsp_tag_unqual[per_bank_core_rsp_tid[i]] = per_bank_core_rsp_tag[i];
|
||||||
core_rsp_data_unqual[per_bank_core_rsp_tid[i]] = per_bank_core_rsp_data[i];
|
core_rsp_data_unqual[per_bank_core_rsp_tid[i]] = per_bank_core_rsp_data[i];
|
||||||
core_rsp_bank_select[i] = core_rsp_ready_unqual[per_bank_core_rsp_tid[i]];
|
bank_select_table[per_bank_core_rsp_tid[i]] = (1 << i);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
always @(*) begin
|
||||||
|
core_rsp_bank_select = 0;
|
||||||
|
for (integer i = 0; i < NUM_BANKS; i++) begin
|
||||||
|
core_rsp_bank_select[i] = core_rsp_ready_unqual[per_bank_core_rsp_tid[i]]
|
||||||
|
&& bank_select_table[per_bank_core_rsp_tid[i]][i];
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
for (genvar i = 0; i < NUM_REQS; i++) begin
|
for (genvar i = 0; i < NUM_REQS; i++) begin
|
||||||
VX_skid_buffer #(
|
VX_skid_buffer #(
|
||||||
.DATAW (CORE_TAG_WIDTH + `WORD_WIDTH),
|
.DATAW (CORE_TAG_WIDTH + `WORD_WIDTH),
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ set_global_assignment -name VERILOG_MACRO SYNTHESIS
|
|||||||
set_global_assignment -name VERILOG_MACRO NDEBUG
|
set_global_assignment -name VERILOG_MACRO NDEBUG
|
||||||
set_global_assignment -name MESSAGE_DISABLE 16818
|
set_global_assignment -name MESSAGE_DISABLE 16818
|
||||||
set_global_assignment -name TIMEQUEST_DO_REPORT_TIMING ON
|
set_global_assignment -name TIMEQUEST_DO_REPORT_TIMING ON
|
||||||
set_global_assignment -name OPTIMIZATION_TECHNIQUE SPEED
|
set_global_assignment -name OPTIMIZATION_TECHNIQUE BALANCED
|
||||||
|
|
||||||
set_global_assignment -name OPTIMIZATION_MODE "AGGRESSIVE PERFORMANCE"
|
set_global_assignment -name OPTIMIZATION_MODE "AGGRESSIVE PERFORMANCE"
|
||||||
set_global_assignment -name FITTER_EFFORT "STANDARD FIT"
|
set_global_assignment -name FITTER_EFFORT "STANDARD FIT"
|
||||||
|
|||||||
Reference in New Issue
Block a user