| Summary: | LDSTCompUnit also needs to support zeroing on RA | ||
|---|---|---|---|
| Product: | Libre-SOC's first SoC | Reporter: | Luke Kenneth Casson Leighton <lkcl> |
| Component: | Source Code | Assignee: | Cesar Strauss <cestrauss> |
| Status: | CONFIRMED --- | ||
| Severity: | enhancement | CC: | libre-soc-bugs |
| Priority: | Normal | ||
| Version: | unspecified | ||
| Hardware: | Other | ||
| OS: | Linux | ||
| See Also: |
https://bugs.libre-soc.org/show_bug.cgi?id=318 https://bugs.libre-soc.org/show_bug.cgi?id=336 https://bugs.libre-soc.org/show_bug.cgi?id=356 https://bugs.libre-soc.org/show_bug.cgi?id=1036 |
||
| NLnet milestone: | NLnet.2019.02.012 | total budget (EUR) for completion of task and all subtasks: | 0 |
| budget (EUR) for this task, excluding subtasks' budget: | 0 | parent task for budget allocation: | |
| child tasks for budget allocation: | The table of payments (in EUR) for this task; TOML format: | ||
| Bug Depends on: | |||
| Bug Blocks: | 383 | ||
|
Description
Luke Kenneth Casson Leighton
2020-05-25 01:13:41 BST
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 before exiting * 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 |