diff --git a/CLAUDE.md b/CLAUDE.md index 8ee4dc6..1e7d388 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1443,6 +1443,15 @@ register; if a real-hardware reset ever turns out to depend on it, this is the place to add the side effect. The NCRA reset follows immediately in that sequence anyway, which is why ignoring it costs nothing today. +**Measured cost** (A/B on identical seeds, 2026-10-10): +104 `SB_DFFE`, ++141 `SB_LUT4`, and `clk` 27.04 → 26.39 MHz on seed 2 while seed 1 went +28.72 → 29.07, i.e. about −2.4% on the worst seed with the rest inside +placement noise. 8/8 seeds still close; best seed 3 at 29.74 MHz = 1.24×. The +storage is a full low nibble (`0x00`–`0x0F`) rather than only the registers +listed above, deliberately: a sparse decode would silently drop writes to +anything unlisted, which is the behaviour being fixed. If `clk` margin ever +needs reclaiming, this array is the obvious thing to narrow. + Test: `bba_register_file` **T14** covers the whole table — revision ID value and read-only-ness, write/read-back on `0x04`/`0x05`/`0x09`/`0x0B`/`0x0F`, and `0x20` still reading `0x00` so a stray high register cannot alias onto a real