Files
FPGA-Neural-Datasheet/files/docs/datasheet/chapters/12-roadmap.tex
T
micheleandClaude Sonnet 5 0e73eb4726 docs: bring datasheet/ into the main repo under hardware/v2/docs
Was a separate, untracked directory (DataSheet/) outside the repo.
Renamed to lowercase and moved in as hardware/v2/docs/datasheet/, with
its own .gitignore for LaTeX build byproducts (compiled PDFs stay
tracked, .aux/.log/.toc/etc do not). Now versioned and shares this
repo's own remote instead of living untracked on disk.

Content: IT+EN LaTeX chapter sources, reference manufacturer PDFs, and
compiled datasheet PDFs including the 2026-09-07 SDRAM upgrade
addendum (AS4C32M16SB-7BIN part/pinout/timing) in the v2-en chapters.

Note: hardware/v2/docs/DatasheetLatex/ (and the v1 sibling) is a
separate, already-tracked, differently-structured LaTeX document that
predates this move -- left untouched, not merged, since its chapter
set and content differ and merging was not requested.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013xXuuRUWZScuo1DeYJxs3v
2026-09-07 05:09:14 +02:00

66 lines
4.0 KiB
TeX

\chapter{Roadmap e stato di sviluppo}
\label{ch:roadmap}
\section{Fasi di sviluppo}
\begin{tabularx}{\textwidth}{C{1.2cm} L{4.6cm} C{1.8cm} Y}
\toprule
\rowh \thd{Fase} & \thd{Titolo} & \thd{Stato} & \thd{Contenuto} \\
\midrule
1 & Layer parametrico & \OK & ingressi/neuroni/parallelismo, accumulo, bias, ReLU; test 32$\times$4/P=8. \\
\rowa 2 & Parameter sweep & \OK & configurazioni multiple incl. non-multiple e degeneri; guard di elaborazione aggiunto. \\
3 & Architettura di memoria & \OK & \code{neuron\_memory} mono/multi-neurone, PSRAM reale testata; buffer multi-layer $\to$ Fase~5. \\
\rowa 4 & Interfaccia SPI & \OK & \code{spi\_slave}+\code{spi\_engine}, 17 opcode incl. sottosistema flash, Fmax controllata a livello di sistema completo. \\
5 & Rete multi-layer & \OK$^\dagger$ & \code{layer\_sequencer}, attivazioni configurabili, larghezza runtime; toolchain reale controllata. \\
\rowa 6 & Software host & pianificata & driver Linux ed ESP32 sullo stesso protocollo. \\
7 & Ottimizzazione & in corso & timing closure fatta (55$\to$75~MHz); page-mode PSRAM fatto (banda gather +42\%); resta block RAM per $x$/$w$. \\
\rowa 8 & Training hardware (opz.) & futura & backprop, gradienti, aggiornamento pesi. \\
9 & Sottosistema flash (F1-F7) & \OK & SPI master dedicato, copy engine flash$\leftrightarrow$PSRAM, catalogo a 16 slot con CRC32, bus SPI a 4 fili indipendente (F7), 8 opcode (\op{0x40}--\op{0x47}, cap.~\ref{ch:spi} §\ref{sec:flashspi}); sintesi reale 0 errori. \\
\bottomrule
\end{tabularx}
\begin{center}\footnotesize\itshape\color{fnGrey}
$\dagger$ RTL, unit test ed end-to-end su SPI simulato completi; timing closure eseguita:
75.30~MHz (P2) / 60.26~MHz (P8) al tempo della Fase~5, bit-esatta su tutta la regressione;
Fmax del sistema completo dopo Fase~9 (incl. sottosistema flash indipendente): \textbf{67.91~MHz}
(cap.~\ref{ch:impl}).\end{center}
\section{Stato dei componenti}
\begin{tabularx}{\textwidth}{Y C{4.2cm}}
\toprule
\rowh \thd{Componente} & \thd{Stato} \\
\midrule
Layer neurale parametrico & \OK{} funzionante \\
\rowa Ingressi/neuroni/parallelismo parametrici & \OK \\
Accumulo, bias, ReLU & \OK \\
\rowa Validazione 32$\times$4 / P=8 & \OK \\
RAM dedicata (interfaccia + controller + accesso INT8) & \OK{} testata su PSRAM reale \\
\rowa Interfaccia SPI (17 opcode incl. RUN\_NETWORK + flash) & \OK{} Fmax a livello di sistema completo \\
Dual SPI & futura \\
\rowa Motore multi-layer & \OK{} timing closure 75.30~MHz (P2) al tempo della Fase~5 \\
Attivazioni configurabili (ACT\_NONE/ACT\_RELU) & \OK \\
\rowa Larghezza rete runtime (un bitstream, ogni topologia) & \OK{} risparmio misurato \\
Rete a grafo Tipo \#2 (act\_buffer, graph\_engine, netasm) & \OK{} RTL + test + sintesi \\
\rowa Pinout CABGA381 (\code{.lpf} reale, 57 segnali incl. flash) & \OK{} place\&route-verified 0 errori \\
Page-mode PSRAM (G7) & \OK{} fatto (37.53 cicli/edge, banda +42\%) \\
\rowa Sottosistema flash (SPI master, copy engine, catalogo CRC32, bus indipendente F7) & \OK{} sintesi reale 0 errori, Fmax 67.91~MHz \\
Bitstream reale (\code{ecppack}, P2/P8) & \OK{} 0 errori, part LFE5U-45F-8CABGA381 \\
\rowa Driver host Linux / ESP32 & pianificato \\
Training hardware & futuro \\
\bottomrule
\end{tabularx}
\section{Principio architetturale (sintesi)}
\begin{fnspec}[Fondamento del progetto]
L'FPGA implementa la macchina neurale e possiede la propria RAM; l'host configura e usa
la macchina. Una build fissa il \emph{soffitto} (max layer, max larghezza, PARALLEL);
l'host configura la rete \emph{reale} --- numero di layer, larghezza per-layer,
attivazione per-layer, parametri addestrati --- interamente a runtime, via SPI, nella
memoria locale dell'FPGA. Un solo bitstream serve qualunque topologia fino a quel
soffitto.
\end{fnspec}
\section{Visione a lungo termine}
L'obiettivo finale è un blocco hardware riusabile integrabile in progetti futuri
diversi: la piattaforma host può cambiare (Linux, ESP32, MCU, PC) senza cambiare
l'architettura fondamentale dell'engine. L'FPGA diventa una periferica di computazione
neurale dedicata, ottimizzata per la topologia richiesta da ciascuna applicazione.