Skip to content

[rtl] Refactor mem_downsizer for full throughput + min latency - #692

Draft
thomas6785 wants to merge 1 commit into
lowRISC:mainfrom
thomas6785:mem_downsizer_refactor
Draft

[rtl] Refactor mem_downsizer for full throughput + min latency#692
thomas6785 wants to merge 1 commit into
lowRISC:mainfrom
thomas6785:mem_downsizer_refactor

Conversation

@thomas6785

@thomas6785 thomas6785 commented Jul 28, 2026

Copy link
Copy Markdown

mem_downsizer no longer pipelines requests, allowing minimal latency.
Downstream transactions are are now pipelined to allow full throughput.
An optional parameter CUT() can be set to add a pipeline stage if timing closure becomes an issue

This reduces ROM read latency from 10 to 6 cycles and increases maximum throughput from 2 to 4 bytes per cycle

Some reservations I hold about this:

  • The design is split into some submodules which I've put in the same file - I don't see much value in creating separate files for a single-purpose module, but Verilator dislikes it. Hoping someone can advise if it's really necessary to place these in a separate file; for now I've put in an inline waiver
  • I've included the testbench in this commit, which I used as a sanity check. However it's very messy and large sections are AI-generated, so it may be best to leave this without a testbench as it is sufficiently exercised by the toplevel anyway.

Would appreciate if somebody could weigh in on these points then I will remove draft status 😄

Mem downsizer no longer pipelines requests, allowing minimal latency
Downstream transactions are are now pipelined to allow full throughput
An optional parameter CUT() can be set to add a pipeline stage to ease timing

This reduces ROM read latency from 10 to 6 cycles
and increases throughput from 2 to 4 bytes per cycle
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant