From 991342c0b5f9058e42e3a3bb6922b6ecd86c99a1 Mon Sep 17 00:00:00 2001 From: Dennis Brentjes Date: Sat, 10 Oct 2026 14:24:53 +0200 Subject: [PATCH] docs: geom_honoured is asserted but not wired anywhere yet The ring-geometry note claimed a rejected BP/RHBP is "observable rather than silent". That is overstated: geom_honoured exists on RXFrameAssembler and the tests check it, but BBATop wires it to nothing -- no status register, no LED, no UART line -- so a rejected geometry is silent to both the GC and the bench. Recorded as a loose end; the guarantee today is "rejected rather than obeyed", not "reported". Co-Authored-By: Claude Opus 5 --- docs/bba_compat_todo.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/docs/bba_compat_todo.md b/docs/bba_compat_todo.md index 0b977f1..c158098 100644 --- a/docs/bba_compat_todo.md +++ b/docs/bba_compat_todo.md @@ -66,10 +66,17 @@ driver's smaller ring is respected instead of ignored. **Garbage is rejected, not obeyed.** The bounds are used only when `bp >= 1` (page 0 is the TX buffer), `rhbp <= 0x0F` and `rhbp > bp`; -otherwise the hardcoded pages 1–15 stand and `geom_honoured` goes low, so a -mismatch is observable rather than silent. Without that check, `BP = 0` or an -`RHBP` below `BP` gives a zero or negative ring size and the assembler writes -outside it. +otherwise the hardcoded pages 1–15 stand and `geom_honoured` goes low. +Without that check, `BP = 0` or an `RHBP` below `BP` gives a zero or negative +ring size and the assembler writes outside it. + +⚠️ **`geom_honoured` is NOT yet observable from outside the FPGA.** It is +declared on `RXFrameAssembler` and asserted correctly (T7/T7b check it), but +`BBATop` does not wire it to anything — no status register, no LED, no UART +line. So a rejected geometry is currently silent to the GC and to the bench. +Wiring it to the `StatusPanel` or the UART console is a small loose end worth +closing; until then "rejected rather than obeyed" is the guarantee, not +"reported". ⚠️ **A ring must be LARGER than `_MAX_FRAME_PAGES` (6) or nothing is ever stored.** A frame's length is unknown until EOF, so the assembler reserves the