Skip to content

Register the read mux select - #203

Open
7FM wants to merge 1 commit into
AUCOHL:mainfrom
7FM:registered-mux-select
Open

7FM wants to merge 1 commit into
AUCOHL:mainfrom
7FM:registered-mux-select

Conversation

@7FM

@7FM 7FM commented Oct 1, 2026

Copy link
Copy Markdown

The output muxes above the 16-word slices (RAM32 and up) selected by the current address, while the slices register their output at the rising edge. A read was only correct if the upper address bits stayed the same in the next cycle. Register the select at the rising edge as well, so the output is the word addressed at that edge (read latency 1).

  • MUX2x1/MUX4x1 (sky130, gf180): CLK input and a select register (SELREG); every output mux gets its module's clock
  • placeram: place SELREG in front of the select buffers
  • clock tree: the select registers load the clock nets, which made the input hold times worse. Stronger root clock buffer (CLKBUF_16) in RAM128/RAM1024/RAM2048, and a root clock buffer in RAM256/RAM512, where the clock pin drove the whole macro directly

@donn
donn requested a review from shalan October 1, 2026 23:00
The output muxes above the 16-word slices (RAM32 and up) selected by the
current address, while the slices register their output at the rising
edge. A read was only correct if the upper address bits stayed the same
in the next cycle. Register the select at the rising edge as well, so
the output is the word addressed at that edge (read latency 1).

- MUX2x1/MUX4x1 (sky130, gf180): CLK input and a select register
  (SELREG); every output mux gets its module's clock
- placeram: place SELREG in front of the select buffers
- clock tree: the select registers load the clock nets, which made
  the input hold times worse. Stronger root clock buffer (CLKBUF_16)
  in RAM128/RAM1024/RAM2048, and a root clock buffer in RAM256/RAM512,
  where the clock pin drove the whole macro directly
@7FM
7FM force-pushed the registered-mux-select branch from fa3d964 to 6ebaec5 Compare October 2, 2026 08:43
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