Real synthesis and place-and-route of the actual final board-level
top (fpga_neural_v2_top.v -- SPI bridge, real EHXPLLL, reset_sync,
compute+memory core), against a real, fully ball-assigned LPF. Also
ports the V2 datasheet to LaTeX using V1's own preamble/macros/
typography, and records a real (non-ESP32, honestly labeled) software
reference comparison.
Synthesis (Yosys, real run): 0 CHECK-pass problems, 38 unique warnings
(43 total), all matching this project's own previously-reviewed benign
set (neural_processor.v's known genvar multi-driver artifact, small-
array-to-register unrolling, the real SDRAM DQ tristate bus) -- no new
warnings from the SPI bridge, PLL, or reset synchronizer.
TRELLIS_FF=6322, TRELLIS_COMB=7084, MULT18X18D=32, EHXPLLL=1 (real PLL
confirmed present), DP16KD=0 (all small SRAMs -> distributed RAM).
Place-and-route (nextpnr-ecp5, real runs, 8 seeds, new
v2_board_top.lpf with all 44 top-level signals ball-assigned from the
official Lattice pinout CSV -- no placeholders): 8/8 PASS at 64MHz.
Worst 68.51MHz (seed 4), best 74.17MHz (seed 7), mean 71.16MHz. Zero
unrouted nets, zero placement/routing errors, TRELLIS_IO=44/245 (17%).
Critical path alternates between dependency_manager's own priority
encoder and sdram_unified_backend's own weight-cache hit-index logic,
matching this project's own prior documented timing investigations --
not a new defect.
New: hardware/v2/constraints/v2_board_top.lpf (final LPF, supersedes
v2_unified.lpf for the board-level top), hardware/v2/reports/
step_final_{synthesis,pnr_worst_seed4,timing}.* (raw evidence),
hardware/v2/docs/DatasheetLatex/ (V2 datasheet, real LaTeX build,
16 pages, visually inspected, ported from hardware/v1/docs/
DatasheetLatex/'s own preamble and macros).
Real, honestly-labeled software baseline: the D-Stress arithmetic
(256 neurons x 128 INT8 MACs) compiled and run on THIS development
machine (Apple M4, arm64, NOT an embedded target, NOT ESP32) --
1.28us/inference, included in the datasheet with an explicit
disclosure that no physical ESP32 hardware was available for a real
embedded-target comparison.
Remaining, disclosed, NOT-yet-closed items (this commit does NOT
claim silicon readiness): real KiCad schematic + ERC, PCB layout,
sourced BOM, real power current-budget estimate, SDRAM-datasheet-
parameter cross-check, configuration-flash selection, and (necessarily)
physical fabrication/bring-up. See hardware/v2/docs/DatasheetLatex/
chapters/08-status-roadmap.tex for the complete, itemized checklist.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013xXuuRUWZScuo1DeYJxs3v
121 lines
5.1 KiB
TeX
121 lines
5.1 KiB
TeX
% ======================================================================
|
|
% FPGA-Neural V2 -- INT8 Neural Network Engine, single-SDRAM architecture
|
|
% Datasheet / Technical reference manual
|
|
% Repository: github.com/manvalan/FPGA-Neural
|
|
% Ported from the V1 LaTeX datasheet (hardware/v1/docs/DatasheetLatex/):
|
|
% same preamble, macros, typography, and title-page/features-page
|
|
% structure -- content rewritten for the V2 architecture throughout.
|
|
% ======================================================================
|
|
\documentclass[11pt,a4paper,openany]{report}
|
|
|
|
\newcommand{\datasheetrev}{B0}
|
|
\newcommand{\datasheetdate}{September 2026}
|
|
|
|
\input{preamble}
|
|
|
|
\begin{document}
|
|
\sloppy
|
|
|
|
% ======================================================================
|
|
% TITLE PAGE
|
|
% ======================================================================
|
|
\begin{titlepage}
|
|
\thispagestyle{empty}
|
|
\begin{tikzpicture}[remember picture,overlay]
|
|
\fill[fnDark] (current page.north west) rectangle
|
|
([yshift=-4.3cm]current page.north east);
|
|
\fill[fnTeal] ([yshift=-4.3cm]current page.north west) rectangle
|
|
([yshift=-4.55cm]current page.north east);
|
|
\node[anchor=north west,text=white,font=\Huge\bfseries]
|
|
at ([xshift=2.2cm,yshift=-1.15cm]current page.north west)
|
|
{FPGA\,--\,Neural V2};
|
|
\node[anchor=north west,text=fnLight,font=\large]
|
|
at ([xshift=2.25cm,yshift=-2.15cm]current page.north west)
|
|
{INT8 Neural Multiprocessor, unified single-SDRAM architecture};
|
|
\node[anchor=north west,text=fnLight2,font=\normalsize]
|
|
at ([xshift=2.25cm,yshift=-2.85cm]current page.north west)
|
|
{Parametric N-processor hardware accelerator -- Datasheet and reference manual};
|
|
\node[anchor=north east,text=white,font=\ttfamily\small]
|
|
at ([xshift=-2.2cm,yshift=-3.55cm]current page.north east)
|
|
{Rev.~\datasheetrev~~\textbullet~~\datasheetdate};
|
|
\end{tikzpicture}
|
|
|
|
\vspace*{5.0cm}
|
|
|
|
% --- compact block diagram on the title page ---
|
|
\begin{center}
|
|
\begin{tikzpicture}[node distance=7mm and 12mm]
|
|
\node[fnblockD,minimum width=30mm] (host) {HOST\\{\scriptsize MCU / PC (SPI master)}};
|
|
\node[fnblockT,right=18mm of host,minimum width=34mm] (fpga)
|
|
{FPGA\\{\scriptsize Neural Multiprocessor, N=4}};
|
|
\node[fnblock,right=18mm of fpga,minimum width=26mm] (ram)
|
|
{SDRAM\\{\scriptsize 8\,MB, unified}};
|
|
\draw[fnbus] (host) -- node[fnlbl,above]{SPI Mode 0} (fpga);
|
|
\draw[fnbus] (fpga) -- node[fnlbl,above]{16-bit, single chip} (ram);
|
|
\node[below=1mm of fpga,font=\scriptsize\itshape,text=fnGrey]
|
|
{weights + activations + results, ONE physical memory};
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
|
|
\vfill
|
|
\begin{center}
|
|
\begin{tikzpicture}
|
|
\node[draw=fnRule,rounded corners=3pt,inner sep=10pt,fill=fnLight,text width=15.5cm]{
|
|
\footnotesize
|
|
\textbf{\color{fnDark}Reference target device:} Lattice ECP5 \code{LFE5U-45F-8BG381}
|
|
(speed grade $-8$, CABGA381, 72$\times$MULT18X18D, $\approx$44k LUT).\\[2pt]
|
|
\textbf{\color{fnDark}Baseline configuration:} INT8/INT32, \code{N\_PROCESSORS}=4,
|
|
\code{P\_IN}=8, single external SDRAM Alliance Memory \code{AS4C4M16SA-6TIN}
|
|
(weights + activations + results, unified). No PSRAM anywhere in the V2
|
|
physical path.\\[2pt]
|
|
\textbf{\color{fnDark}Clock:} 16\,MHz board oscillator $\rightarrow$ real
|
|
ECP5 \code{EHXPLLL} $\rightarrow$ 64\,MHz system clock, timing-closed
|
|
across 8 real place-and-route seeds (worst 68.51\,MHz, best 74.17\,MHz).\\[2pt]
|
|
\textbf{\color{fnDark}Host:} real SPI protocol engine
|
|
(\code{spi\_host\_bridge.v}) -- WRITE\_JOB / WRITE\_MEM / READ\_MEM /
|
|
STATUS / RESET.\\[2pt]
|
|
\textbf{\color{fnDark}Status:} RTL verified in simulation (Verilator,
|
|
bit-exact), real synthesis (Yosys) and real place-and-route
|
|
(nextpnr-ecp5). No fabricated hardware exists -- see \S\ref{ch:status}
|
|
for the precise, itemized readiness state. Document describing the
|
|
project as of \datasheetdate.
|
|
};
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
\vspace{0.6cm}
|
|
{\footnotesize\color{fnGrey}\raggedright
|
|
Project author: Michele Bigi \textbullet{} MIKILAB / manvalan.\\
|
|
This datasheet documents the RTL code, documentation and benchmarks
|
|
present in the repository \texttt{github.com/manvalan/FPGA-Neural},
|
|
ported from the V1 datasheet's own LaTeX structure (same preamble and
|
|
macros, content rewritten for V2).\par}
|
|
\end{titlepage}
|
|
|
|
% ======================================================================
|
|
% "FEATURES" PAGE (datasheet style)
|
|
% ======================================================================
|
|
\input{chapters/00-features}
|
|
|
|
% ======================================================================
|
|
% TABLE OF CONTENTS
|
|
% ======================================================================
|
|
\newpage
|
|
\pagenumbering{roman}
|
|
{\color{fnDark}\tableofcontents}
|
|
\newpage
|
|
\pagenumbering{arabic}
|
|
|
|
% ======================================================================
|
|
% CHAPTERS
|
|
% ======================================================================
|
|
\include{chapters/01-overview}
|
|
\include{chapters/02-architecture}
|
|
\include{chapters/03-clock-reset}
|
|
\include{chapters/04-host-interface}
|
|
\include{chapters/05-pinout-timing}
|
|
\include{chapters/06-power-configuration}
|
|
\include{chapters/07-benchmarks}
|
|
\include{chapters/08-status-roadmap}
|
|
|
|
\end{document}
|