scoreboard 6600 experimentation
[soc.git] / src / scoreboard / fn_unit.py
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