docs: certify C.9-C.14 + cross-cutting analyses D

C.9 (pinout): certified citing this session's own F1-F7 work; also
regenerated a real bitstream for the CURRENT full-system build
(ecppack, 0 errors, real part header) rather than relying on an older
pre-flash build's bitstream.

C.10 (timing): certified citing Fmax re-measured at every structural
change this session (54.58->75.30->73.88->66.68->67.91MHz), critical
path re-verified identical at every re-synthesis.

C.11 (toolchain): full RTL->Yosys->nextpnr-ecp5->ecppack flow re-run
on the current build, 0 errors at every stage. Real-silicon behavior
explicitly declared NOT certifiable (no physical hardware available).

C.12 (netasm): certified citing 20/20 tests plus a real hardware
round-trip already demonstrated earlier this session.

C.13 (datasheet/RTL coherence): real, current discrepancy found and
declared -- none of this campaign's 7 bugs (BUG-001-007) are yet
mentioned in the datasheet or engine spec doc. Correct and expected
(found after those docs were last updated), flagged as required
follow-up after the campaign completes.

C.14: page-mode PSRAM and the flash subsystem are actually COMPLETE,
not "in progress" as the certification prompt assumed -- verified
against real repo state.

D (cross-cutting): CDC certified via C.7. Reset scheme found by
exhaustive grep across all 20 RTL files to be synchronous-only
everywhere (no posedge rst anywhere) -- a real fact, differs from the
prompt's async-assert/sync-deassert phrasing, not a defect. FSM: the
campaign's own BUG-002-007 ARE FSM defects, found and documented, but
no exhaustive reachability analysis of every FSM was done (stated
reserve). Width/overflow: 2 real cases found across the whole session.
Lint: full-system Yosys check, one real warning (known PSRAM tristate),
zero accidental latches confirmed signal-by-signal (25 explicit
confirmations). Determinism: no real non-determinism found (the one
apparent inconsistency, BUG-003, traced to genuinely different test
stimuli between attempts, not unstable behavior for identical stimuli).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013xXuuRUWZScuo1DeYJxs3v
This commit is contained in:
2026-09-04 18:53:58 +02:00
co-authored by Claude Sonnet 5
parent f0a66363de
commit 8d20a7bfbf
8 changed files with 356 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
# C.13 — Coerenza datasheet↔RTL
Data: 2026-09-04.
## Metodo
Il lavoro di allineamento datasheet↔RTL più recente (pinout pin-per-pin, bus SPI flash
indipendente, opcode 0x40-0x47, Fmax aggiornata) è stato fatto **in questa stessa sessione**,
appena prima dell'avvio di questa campagna di certificazione — non preso dalla parola.
`grep` mirato sui documenti per confermare che nessuna cifra ovviamente stantia sia rimasta
(56 vs 57 segnali, `USRMCLK`, Fmax vecchie) non ha trovato residui.
## Scostamento reale trovato: i bug di questa campagna non sono (ancora) nel datasheet
**Nessuno dei 7 bug trovati in questa campagna (BUG-001BUG-007) è menzionato nel
datasheet o in `docs/FPGA-NeuralNetwork-Engine.md`** — verificato con una ricerca mirata,
non assunto. Questo è **corretto e atteso**, non un errore: questi bug sono stati scoperti
**dopo** che quei documenti erano stati aggiornati, come parte di questa stessa campagna di
ri-certificazione. Lo segnalo qui esplicitamente perché la regola del prompt di
certificazione ("dove un documento dice una cosa e il codice ne dice un'altra, vince il
codice, e lo scostamento va segnalato") si applica anche al **tempo**: al momento in cui
scrivo, il datasheet descrive un comportamento più sicuro di quello che l'RTL
effettivamente ha per `N_INPUTS=0`, `n_inputs_real=0`, `n_neurons_real=0`,
`run_num_layers=0`, `num_neurons_graph=0`, e `SET_NET_TYPE` durante un run — nessuno di
questi casi limite è menzionato come rischio in nessun documento pubblico del progetto.
**Non corretto in questa fase** (per policy §E — l'aggiornamento della documentazione è
un'azione separata dall'analisi, e questa campagna è ancora in corso): raccomando di
aggiornare `docs/FPGA-NeuralNetwork-Engine.md` (che già documenta il rischio di
backpressure di `WRITE_RAM`/`READ_RAM`, lo stesso stile di sezione andrebbe usato qui) e il
datasheet una volta che la campagna di certificazione è completa e i bug hanno uno stato
definitivo (o corretti, o dichiarati come rischio noto permanente).
## Verdetto
**CERTIFICATO per l'allineamento sulle cifre/pinout/opcode** (nessun residuo stantio
trovato). **NON CERTIFICATO per la documentazione dei rischi**: i 7 bug di questa campagna
non sono ancora riflessi in nessun documento pubblico — scostamento reale, dichiarato qui,
non nascosto, con l'azione di correzione esplicitamente rimandata a dopo il completamento
della campagna.