diff --git a/hw/ip/spatz/src/spatz_controller.sv b/hw/ip/spatz/src/spatz_controller.sv index ac5795f7..755d5fcc 100644 --- a/hw/ip/spatz/src/spatz_controller.sv +++ b/hw/ip/spatz/src/spatz_controller.sv @@ -820,7 +820,9 @@ module spatz_controller running_insn_d = running_insn_q; // New instruction! - if (spatz_req_valid && spatz_req.ex_unit != CON) + // A vl=0 op retires with no response, so tracking it would never clear + if (spatz_req_valid && spatz_req.ex_unit != CON && + (spatz_req.vl != '0 || spatz_req.op_arith.is_reduction)) running_insn_d[next_insn_id] = 1'b1; // Finished a instruction