[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:
Hansung Kim
2024-02-01 21:16:54 -08:00
parent 4643edf3e9
commit a15f4fd483

View File

@@ -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;