lowRISC / lowRISC/opentitan

[rtl,prim_reg_cdc] Allow write request folding

Open
#23,790 0 comments 0 reactions 2 assignees View on GitHub

@matutem is already working on this.

Since Jun 24, 2024.

Component:CDC Component:RTL IP:prim Type:FutureRelease
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.