whoops use global vector correctly
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sat, 18 May 2019 07:47:29 +0000 (08:47 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sat, 18 May 2019 07:47:29 +0000 (08:47 +0100)
src/experiment/cscore.py
src/scoreboard/fn_unit.py
src/scoreboard/fu_picker_vec.py

index 5585580dfe994f55a2c2b6a1ddb252f5de217fc7..7f692aac3ba414249f467b5941435e4532c51e1a 100644 (file)
@@ -181,8 +181,8 @@ class Scoreboard(Elaboratable):
 
         # Connect INT Fn Unit global wr/rd pending
         for fu in if_l:
-            m.d.comb += fu.g_int_wr_pend_i.eq(intfu_wr_pend_v)
-            m.d.comb += fu.g_int_rd_pend_i.eq(intfu_rd_pend_v)
+            m.d.comb += fu.g_int_wr_pend_i.eq(g_int_wr_pend_v.g_pend_o)
+            m.d.comb += fu.g_int_rd_pend_i.eq(g_int_rd_pend_v.g_pend_o)
 
         # Connect FU-FU Matrix, NOTE: FN Units readable/writable considered
         # to be unit "read-pending / write-pending"
index 306694291224eb84c7a7e31bc6e764673512ae75..3edabbde16eb2c2dc41eb4b5f9e8a4d508835090 100644 (file)
@@ -164,8 +164,8 @@ class FnUnit(Elaboratable):
         g_rd = Signal(self.reg_width, reset_less=True)
         ro = Signal(reset_less=True)
         m.d.comb += g_rd.eq(self.g_wr_pend_i & self.rd_pend_o)
-        m.d.comb += ro.eq(~g_rd.bool() & rd_l.q)
-        m.d.comb += self.readable_o.eq(ro)
+        m.d.comb += ro.eq(~g_rd.bool())
+        m.d.comb += self.readable_o.eq(ro & rd_l.q)
 
         # writable output signal
         g_wr_v = Signal(self.reg_width, reset_less=True)
@@ -173,7 +173,7 @@ class FnUnit(Elaboratable):
         wo = Signal(reset_less=True)
         m.d.comb += g_wr_v.eq(g_pend_i & xx_pend_o)
         m.d.comb += g_wr.eq(~g_wr_v.bool())
-        m.d.comb += wo.eq(g_wr & rd_l.q & shadown)
+        m.d.comb += wo.eq(g_wr & rd_l.qn & self.req_rel_i & shadown)
         m.d.comb += writable_o.eq(wo)
 
         return m
index fd44c45ff5a95db3e1a66cb6a5903f47704d0b01..21ed7fc2ddf0d015b34956a806ec3d4e41b90cda 100644 (file)
@@ -16,6 +16,6 @@ class FU_Pick_Vec(Elaboratable):
     def elaborate(self, platform):
         m = Module()
         m.d.comb += self.readable_o.eq(self.rd_pend_i.bool())
-        m.d.comb += self.writable_o.eq(self.wr_pend_i.bool())
+        m.d.comb += self.writable_o.eq(~self.wr_pend_i.bool())
         return m