From 1c77ee01a8448dd5dd22c0bbb4a6bd8526049450 Mon Sep 17 00:00:00 2001 From: Alban Gruin <alban.gruin@irit.fr> Date: Tue, 1 Mar 2022 16:14:04 +0100 Subject: [PATCH] scoreboard: don't commit pending instructions when when flushing Signed-off-by: Alban Gruin <alban.gruin@irit.fr> --- src/scoreboard.sv | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/scoreboard.sv b/src/scoreboard.sv index a53aacbb..c78897da 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 // ------------ -- GitLab