noted that zeroing on RA is possible
added, untested, however may have a block when both zero and immediate set.
(In reply to Luke Kenneth Casson Leighton from comment #1)
> added, untested, however may have a block when both zero and immediate set.
it's fine. unit test modified as follows:
+ rd = 0b00
+ if not imm_ok:
+ rd |= 0b10
+ if not zero_a:
+ rd |= 0b01
+ if rd:
+ yield dut.rd.go.eq(rd)
+ yield from wait_for(dut.rd.rel)
+ yield dut.rd.go.eq(0)
cesar this one likewise needs similar tests to the MultiCompUnit, might even
be able to share the same base classes at some point.
again it needs that "multi-process" simulation model:
* one function doing setup, setting oper_i, issue_i, then monitoring busy_o
* another that checks busy_o and, when set, proceeds to monitor a single
bit of rd.req, sets the corresponding bit of rd.go for one cycle, then
monitors busy_o before exiting
* likewise for write requests.
this is exactly the same as needed for MultiCompUnit (up to this point).
the additions obviously are to have extra functions that:
* monitor req_adr_o and set go_adr_i
* monitor req_st_o and set go_st_i
* check the address and the data afterwards