[rtl,prim_reg_cdc] Allow write request folding
@matutem is already working on this.
Since Jun 24, 2024.
- Dominant language
- SystemVerilog
- Stars
- 3.6k
- Forks
- 1.1k
- Avg merge
- 2d 22h
- Merged PRs (30d)
- 141
Description
### Description
The prim_reg_cdc mechanism queues subsequent values to be read by SW for a CSR while arbitration is pending. This seems unnecessary, and causes some AON CSR reads to get the first write unless it waits for enough time. This can cause SW to get confused. See https://github.com/lowRISC/opentitan/issues/23303#issuecomment-2184532328 for a description of a specific case.
Interestingly, if there are multiple writes while the device is in deep sleep, all but the first write value is staged to become visible to SW, and all other wites get folded and will be visible together.
It seems if we fold any number of updates to become visible to SW this confusion will be eliminated. This would necessitate a change in the prim_reg_cdc and/or prim_reg_cdc_arb modules.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.