tensor: Fix race in inflight_tensor counter

This commit is contained in:
Hansung Kim
2024-10-29 14:10:04 -07:00
parent 1013a74abd
commit ef902614ff

View File

@@ -262,6 +262,13 @@ module VX_scoreboard import VX_gpu_pkg::*; #(
$time, CORE_ID, wis_to_wid(ibuffer_if[i].data.wis, i))
)
wire tensor_issue_fire;
wire tensor_writeback_fire;
// 'tensor' bit is only contained in the ghost commit/writebacks
// generated by the tensor unit
assign tensor_issue_fire = ibuffer_if[i].valid && ibuffer_if[i].ready && hgmma_start;
assign tensor_writeback_fire = writeback_fire && writeback_if[i].data.tensor;
always @(posedge clk) begin
if (reset) begin
inuse_regs <= '0;
@@ -274,11 +281,13 @@ module VX_scoreboard import VX_gpu_pkg::*; #(
inuse_regs[ibuffer_if[i].data.wis][ibuffer_if[i].data.rd] <= 1;
end
`ifdef EXT_T_HOPPER
if (writeback_fire && writeback_if[i].data.tensor) begin
if (tensor_writeback_fire) begin
// ensure no race condition
if (!tensor_issue_fire) begin
inflight_tensor[writeback_if[i].data.wis] <=
inflight_tensor[writeback_if[i].data.wis] - INFLT_WIDTH'(1);
end
if (ibuffer_if[i].valid && ibuffer_if[i].ready && hgmma_start) begin
end else if (tensor_issue_fire) begin
inflight_tensor[ibuffer_if[i].data.wis] <=
inflight_tensor[ibuffer_if[i].data.wis] + INFLT_WIDTH'(1);
end