oper_r = CompLDSTOpSubset(name="oper_r") # Dest register
with m.If(self.issue_i):
sync += oper_r.eq(self.oper_i)
+ with m.If(self.done_o):
+ sync += oper_r.eq(0)
# and for LD
ldd_r = Signal(self.data_wid, reset_less=True) # Dest register
from nmigen.utils import log2_int
from nmutil.latch import SRLatch, latchregister
+from nmutil.util import rising_edge
from soc.decoder.power_decoder2 import Data
from soc.scoreboard.addr_match import LenExpand
comb += busy_edge.eq(pi.busy_o & ~busy_delay)
# activate mode: only on "edge"
- comb += ld_active.s.eq(lds & busy_edge) # activate LD mode
- comb += st_active.s.eq(sts & busy_edge) # activate ST mode
+ comb += ld_active.s.eq(rising_edge(m, lds)) # activate LD mode
+ comb += st_active.s.eq(rising_edge(m, sts)) # activate ST mode
# LD/ST requested activates "busy" (only if not already busy)
with m.If(self.pi.is_ld_i | self.pi.is_st_i):