[BUGFIX] Set mem_req_mask to 0 for fence
Fence instructions have address field set to X's which propagates to cache_req_ready, causing issue stalls. Fix this by setting req_mask to all-zero so that they can be handled unaffected by x-propagation. Setting req_valid to 0 does not fix the problem because the LSU only commits instructions when they have a matching response coming back.
This commit is contained in:
@@ -160,7 +160,7 @@ module VX_lsu_unit import VX_gpu_pkg::*; #(
|
||||
&& (~mem_req_rw || st_rsp_ready); // writes commit directly
|
||||
|
||||
for (genvar i = 0; i < NUM_LANES; ++i) begin
|
||||
assign mem_req_mask[i] = execute_if[0].data.tmask[i] && (~lsu_is_dup || (i == 0));
|
||||
assign mem_req_mask[i] = is_fence ? 1'b0 : (execute_if[0].data.tmask[i] && (~lsu_is_dup || (i == 0)));
|
||||
end
|
||||
|
||||
assign mem_req_rw = ~execute_if[0].data.wb;
|
||||
|
||||
Reference in New Issue
Block a user