google / google/xls

[enhancement] Support 1R/1W RAM Models (with RAM rewriting)

Open
#1,388 1 comment 0 reactions 1 assignee Claimed by @grebe View on GitHub
enhancement
Dominant language
C++
Stars
1.9k
Forks
283
Avg merge
2d 10h
Merged PRs (30d)
135

Description

### What's hard to do? (limit 100 words)

There is currently no ROM Model available in DSLX. Although a RamModel (1R1W RAM) can be used as a substitute in tests, it is impossible to use RAM rewriting for a proc that uses only the read-port of the RamModel. Also, we think that having a single 1W RAM could be beneficial if XLS is used to generate a module responsible for filling 1R1W RAM with data, while the read port is used by another part of the design (outside XLS)

### Current best alternative workaround (limit 100 words)

Use the 1R1W RAM model with fake accesses to the unused ports.
```rust
send_if(tok, ram_rd_req, false, ...)
recv_if(tok, ram_rd_resp, false, ...)
or
send_if(tok, ram_wr_req, false, ...)
recv_if(tok, ram_wr_resp, false, ...)
```
Then, leave the unused ports unconnected in the generated Verilog code.

### Your view of the "best case XLS enhancement" (limit 100 words)

The 1R and 1W RAM models could be available in XLS, and the RAM rewriting step could allow for rewriting their read/write port

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.