It's the best we can do without parallel processes.
yield dut.issue_i.eq(1)
yield
yield dut.issue_i.eq(0)
- yield
+
if imm_ok:
- yield dut.rd.go.eq(0b101)
+ active_rel = 0b101
else:
- yield dut.rd.go.eq(0b111)
- yield from wait_for(dut.rd.rel)
+ active_rel = 0b111
+ # wait for all active rel signals to come up
+ while True:
+ rel = yield dut.rd.rel
+ if rel == active_rel:
+ break
+ yield
+ yield dut.rd.go.eq(active_rel)
+ yield
yield dut.rd.go.eq(0)
yield from wait_for(dut.adr_rel_o, False, test1st=True)