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