pub fn slimmed_costs() -> CostsExpand description
Specialized modules: the memory layout of
MachineMemory::SPECIALIZED (banks M
and A in UltraRAM, constants in a LUT ROM, the compress machine’s input
bank in UltraRAM), as built and routed: Vivado 2023.2 out of context
at 4.878 ns, every block meeting timing, on the fix9 RTL (the timing
fixes through e0c9caa; measure/results.tsv, 2026-10-18):
| Block | LUT | DSP | BRAM36 | URAM | WNS (ns) |
|---|---|---|---|---|---|
| fixed-base machine | 14,615 | 225 | 24.5 | 32 | +0.848 |
| compress machine | 16,569 | 225 | 1.5 | 64 | +0.679 |
| known-key verify machine | 13,863 | 225 | 24.5 | 56 | +0.609 |
| aux machine (key loader) | 14,518 | 225 | 9.5 | 48 | +0.863 |
| SHA ring | 4,315 | 0 | 0 | 0 | +1.995 |
| small signer (1/1/1/0, fix4) | 29,055 | 248 | 40 | 32 | +0.306 |
| 150-DSP Karatsuba variants (before the fixes) | +4,367..4,441 | −75 | = | = | +0.056..+0.470 |
BRAM18 halves are rounded up. The scalar ring and the controllers are fitted to routed whole cores (signers, verifiers; see the entries). Still derived, not built: the strict verify machine (fixed-base machine plus 2,500 LUT and 22 BRAM36); the reduce-only verify scalar ring is not built, so verifiers are costed with the built signing ring.