diff --git a/src/scoreboard.sv b/src/scoreboard.sv index a53aacbb2292075b972de64c224c2fa47b8ded0e..c78897da17055ad20532c554ba231d40d12ac9a6 100644 --- a/src/scoreboard.sv +++ b/src/scoreboard.sv @@ -143,19 +143,19 @@ module scoreboard #( if (mem_q[i].pending) begin mem_n[i].pending = 1'b0; mem_n[i].issued = 1'b0; + mem_n[i].sbe.valid = 1'b0; flushed[i] = 1'b1; has_mem_access_n[i] = 1'b0; end end - end - - // ------------ - // FU NONE - // ------------ - for (int unsigned i = 0; i < NR_ENTRIES; i++) begin + end else if (mem_q[issue_pointer_q].sbe.fu == ariane_pkg::NONE && + mem_q[issue_pointer_q].issued && + ~mem_q[issue_pointer_q].pending) begin + // ------------ + // FU NONE + // ------------ // The FU is NONE -> this instruction is valid immediately - if (mem_q[i].sbe.fu == ariane_pkg::NONE && mem_q[i].issued && ~mem_q[i].pending) - mem_n[i].sbe.valid = 1'b1; + mem_n[issue_pointer_q].sbe.valid = 1'b1; end // ------------