lowRISC / lowRISC/sonata-system

SECDED errors from the SRAM can not be signalled for ReadModifyWrite operations.

Open
#179 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
54
Forks
37
PR merge metrics
No merged PRs in 30d

Description

As stated in [sonata-system/vendor/lowrisc_ip/ip/tlul/rtl/tlul_adapter_sram.sv](https://github.com/lowRISC/sonata-system/tree/main/vendor/lowrisc_ip/ip/tlul/rtl/tlul_adapter_sram.sv) the SRAM adapter does not wait for a response from the SRAM before sending able the d_valid for write operations, see lines 474-477:
```
// interleaved. So, to make it in-order (even TL-UL allows out-of-order
// responses), storing the request is necessary. And if the read entry
// is write op, it is safe to return the response right away. If it is
// read reqeust, then D response is waiting until read data arrives.
```
But for SRAM's with RMW, required for byte writing to a ECC protected SRAM for instance, the SRAM can signal a Double-Error-Dectect error on a write operation.

The current implementation, does not wait for the SRAM to return **rvalid_i/rerror_i** on write operations before sending the d_valid on the TL interface, so any SECDED error on a RMW operation will be lost.

My suggestion is to require **rvalid_i** assertion before sending **d_valid** on write operations.

Contributor guide

No contributing guide indexed for this repository

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.

Research direction

Start in vendor/lowrisc_ip/ip/tlul/rtl/tlul_adapter_sram.sv around lines 474-477 and trace how write operations handle rvalid_i/rerror_i before asserting TL d_valid. Compare the documented behavior with the ReadModifyWrite case and determine how SECDED errors are propagated. Done means write responses do not lose SRAM errors and the TL interface reports them correctly.

Written by the indexing model from the issue text.

Assessment

Domain
embedded-iot
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.