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
41 lines
2.4 KiB
Markdown
41 lines
2.4 KiB
Markdown
# 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-001–BUG-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.
|