continue
with m.If(dmi.din == 32+i):
sync += fast_index.eq(i)
+ sync += fast_en.eq(1)
# Log address
with m.Elif(dmi.addr_i == DBGCore.LOG_ADDR):
comb += d_fast.addr.eq(fast_index)
# Core control signals generated by the debug module
- comb += self.core_stop_o.eq((stopping & ~do_step) | self.terminate_i)
+ # Note: make stop and terminated synchronous, to help with timing
+ # however this *may* interfere with some of the DMI-based unit tests
+ # so has to be kept an eye on
+ sync += self.core_stop_o.eq((stopping & ~do_step) | self.terminate_i)
+ sync += self.terminated_o.eq(terminated | self.terminate_i)
comb += self.core_rst_o.eq(do_reset)
comb += self.icache_rst_o.eq(do_icreset)
- comb += self.terminated_o.eq(terminated | self.terminate_i)
# Logging RAM (none)