docs: consolidate all V2 datasheets into one current, complete document

The repository had accumulated multiple, contradictory "current state"
documents for V2 hardware: an old V1 IT/EN datasheet copy nested inside
hardware/v2/docs/datasheet/, a stray untracked duplicate at repo root
(docs/DatasheetLatex/), and a second, much older documentation track
(hardware/v2/docs/*.md: PRE_PCB_VERIFICATION.md, PRE_PCB_CLOSURE_4POINT.md,
MEMORY_UPGRADE_64MB_N8.md, and 10 more) describing an earlier PSRAM/
N_SLOTS<=2 milestone alongside the real, current SDRAM/N_SLOTS=4 board.
The LaTeX datasheet's own front matter (features/pinout cover pages) and
chapter 9 (benchmarks) were themselves still describing that obsolete
architecture, contradicting the real, current chapters 5/7/10 elsewhere
in the same document.

This commit:
- Flattens hardware/v2/docs/datasheet/files/docs/datasheet/v2-en/* up to
  hardware/v2/docs/datasheet/ (was 4 levels of redundant nesting).
- Removes the old V1 IT/EN LaTeX copies and the stray root-level
  duplicate entirely (recoverable from git history, not from disk).
- Preserves the real component reference PDFs (ECP5 eval board, ISSI
  PSRAM, programming cables) under datasheet/references/.
- Removes 13 superseded hardware/v2/docs/*.md status documents after
  folding every real, unique fact they contained into the datasheet:
  SPI max verified clock (12MHz, exact 12.8MHz CDC edge), SDRAM directed
  boundary test (21/21 PASS), 16MHz oscillator MPN (ECS-3225MV-160-BN-TR),
  and the real FPGA<->SDRAM ball mapping cross-check.
- Rewrites the datasheet's own front matter, ch.4 (parameters), ch.8
  (top-level module -- was documenting the wrong, non-physical top
  entirely), and ch.9 (benchmarks) to describe the current, real SDRAM/
  N_SLOTS=4 production board, while keeping the real PSRAM-era chapters
  as clearly-labeled history rather than deleting correctly-measured
  work.
- Fixes a title-page tikzpicture that was clipped off the page edge
  (pre-existing, unrelated to this change) by scaling it to fit.

Net: 85 files changed, -8814/+498 lines. hardware/v2/docs/ now contains
exactly one current datasheet plus FIRST_POWER_ON.md (a bring-up
runbook, not a duplicate spec).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013xXuuRUWZScuo1DeYJxs3v
This commit is contained in:
2026-09-09 00:41:06 +02:00
co-authored by Claude Sonnet 5
parent b7b4ada99f
commit 07f8ec0460
69 changed files with 494 additions and 5896 deletions
+62
View File
@@ -0,0 +1,62 @@
\chapter{Roadmap and development status}
\label{ch:roadmap}
\section{Milestones M1--M10}
\begin{tabularx}{\textwidth}{C{1.0cm} L{3.6cm} C{1.3cm} Y}
\toprule
\rowh \thd{M} & \thd{Title} & \thd{Status} & \thd{Content} \\
\midrule
1 & Neural Processor & \OK & Bit-exact 8-stage pipeline vs.\ V1, 7/7 tests; 183.12~MHz isolated. \\
\rowa 2 & Processor Array & \OK & 1/2/4/8 processors, real concurrent-slot simulation; DSP (not LUT/FF) found to saturate first. \\
3 & Buffers & \OK & \code{activation\_buffer}/\code{weight\_buffer}/\code{result\_buffer}, real \code{DP16KD} inference --- superseded in the real datapath by the Activation Cache (\S\ref{sec:roadmapcache}). \\
\rowa 4 & Memory Manager & \OK & Double-buffered prefetch, real V1 PSRAM chain, 3 real RTL bugs found/fixed. \\
5 & Neural Director & \OK & First-free dispatch, real backpressure, 4/4 tests. \\
\rowa 6 & Dependency Manager & \OK & Multi-dependency/shared-producer wake-up, 4/4 tests. \\
7 & Dataflow Core & \OK & Full M1--M6 integration, wake-up loop closed end-to-end. \\
\rowa 8 & PSRAM integration & \OK & Real, shared PSRAM across concurrent slots; 1 real arbiter bug found/fixed (dropped request under contention). \\
9 & Full benchmark & \OK & V1 vs.\ V2 comparison, every number classified. \\
\rowa 10 & Optimization & \OK & N\_SLOTS ceiling (DSP), ACC\_WIDTH 6-seed sweep, real stall/utilization instrumentation. \\
\bottomrule
\end{tabularx}
\section{Post-campaign: targeted optimizations}
\label{sec:roadmapcache}
Following M9/M10's own final benchmark campaign
(\code{hardware/v2/docs/benchmarks/final-benchmark.md}), two concrete
optimizations were implemented and measured against the real toolchain:
\begin{enumerate}
\item \textbf{Word-level burst reads} (ch.~\ref{ch:mem}, \S\ref{sec:burst}):
real 2.24--2.37$\times$ wall-clock speedup, negligible Fmax cost.
\item \textbf{Shared activation cache} (ch.~\ref{ch:mem},
\S\ref{sec:cache}): a further real 1.66--2.00$\times$ cycle
reduction, at a real, steep Fmax cost that makes
\code{N\_SLOTS}=4 fail 80\,MHz outright.
\end{enumerate}
Combined: \textbf{2.45$\times$} real wall-clock speedup at
\code{N\_SLOTS}=2 (recommended) over the pre-optimization baseline, which
was itself already 2.6$\times$ faster than V1.
\section{Open work items (real, not hidden)}
\begin{tabularx}{\textwidth}{L{3.6cm} Y}
\toprule
\rowh \thd{Item} & \thd{Why it is open} \\
\midrule
Activation cache pipelining & The concrete fix for \code{N\_SLOTS}=4's Fmax failure: register the hit-detection/broadcast logic to break its single-cycle combinational path. Not attempted this round --- \code{N\_SLOTS}=4 delivers no real throughput benefit anyway (memory-bound), so this protects \code{N\_SLOTS}=2's own margin rather than making 4 useful. \\
\rowa Dependency Manager node-slot reclamation & \code{ST\_DISPATCHED} is terminal; a real long-running system will eventually exhaust \code{N\_NODES}. \\
Scheduler fairness & Fixed lowest-index priority shows real, measured per-slot imbalance under sustained contention (ch.~\ref{ch:sched}); no fairness-aware alternative has been measured yet. \\
\rowa Second physical PSRAM bank & The only real way to raise the memory-bandwidth ceiling itself, rather than use existing bandwidth more efficiently --- a board-level change, not attempted this round. \\
Real host driver \& pinout & No physical transport or placed pin assignment exists for the node-registration bus (ch.~\ref{ch:host}, ch.~\ref{ch:hw}). \\
\rowa Per-node bias/activation & Every job currently hardcodes \code{bias=0}/\code{ACT\_RELU}; not yet exposed by the Dependency Manager's own job descriptor. \\
Power/energy characterization & No ECP5 power estimator available in this toolchain; honestly reported as \textsc{Not measured}, not invented. \\
\bottomrule
\end{tabularx}
\begin{fnnote}[Every claim in this datasheet traces to a log entry]
\code{hardware/v2/logs/}: \code{development.log}, \code{simulation.log},
\code{synthesis.log}, \code{timing.log}, \code{benchmark.log},
\code{decisions.log} (\code{DEC-\textit{NNNN}}), \code{experiments.log}
(\code{EXP-\textit{NNNN}}), \code{errors.log} (\code{ERR-\textit{NNNN}}).
IDs are never reused, past results are never overwritten, even failed
ones --- the same discipline V1's own \code{docs/validation/} campaign
followed.
\end{fnnote}