459 lines
21 KiB
TeX
459 lines
21 KiB
TeX
\documentclass[11pt,a4paper,twoside]{ctexart}
|
||
|
||
\usepackage[top=2.45cm,bottom=2.45cm,left=2.65cm,right=2.65cm]{geometry}
|
||
\usepackage{graphicx}
|
||
\usepackage{booktabs}
|
||
\usepackage{tabularx}
|
||
\usepackage{array}
|
||
\usepackage{amsmath,amssymb}
|
||
\usepackage{xcolor}
|
||
\usepackage{enumitem}
|
||
\usepackage{fancyhdr}
|
||
\usepackage{hyperref}
|
||
\usepackage{caption}
|
||
\usepackage{placeins}
|
||
\usepackage{float}
|
||
\usepackage{listings}
|
||
\usepackage[normalem]{ulem}
|
||
|
||
\definecolor{accent}{HTML}{1F4E79}
|
||
\definecolor{lightblue}{HTML}{EAF2F8}
|
||
\definecolor{lightgray}{HTML}{F3F4F6}
|
||
\hypersetup{colorlinks=true,linkcolor=accent,urlcolor=accent,citecolor=accent}
|
||
\captionsetup{font=small,labelfont=bf,skip=5pt}
|
||
\setlength{\parindent}{2em}
|
||
\setlength{\parskip}{3pt plus 1pt minus 1pt}
|
||
\setlength{\emergencystretch}{2em}
|
||
\setlength{\textfloatsep}{12pt plus 3pt minus 2pt}
|
||
\setlength{\intextsep}{10pt plus 2pt minus 2pt}
|
||
\renewcommand{\arraystretch}{1.18}
|
||
\setlist[itemize]{leftmargin=2em,itemsep=2pt,topsep=3pt}
|
||
\pagestyle{fancy}
|
||
\fancyhf{}
|
||
\fancyhead[LO,RE]{龙芯 SoC 异构加速系统设计报告}
|
||
\fancyhead[RO,LE]{\thepage}
|
||
\setlength{\headheight}{14pt}
|
||
\lstset{basicstyle=\ttfamily\small,breaklines=true,frame=single,backgroundcolor=\color{lightgray},numbers=none}
|
||
\newcolumntype{Y}{>{\raggedright\arraybackslash}X}
|
||
\newcommand{\code}[1]{\texttt{#1}}
|
||
\newcommand{\pending}{\textcolor{red!70!black}{待当前版本复测}}
|
||
|
||
\input{report_metrics.tex}
|
||
|
||
\begin{document}
|
||
|
||
\begin{titlepage}
|
||
\thispagestyle{empty}
|
||
\begin{center}
|
||
\vspace*{20pt}
|
||
\includegraphics[width=0.42\textwidth]{logo_cicc.png}
|
||
\vspace{28pt}
|
||
|
||
{\fontsize{20pt}{28pt}\selectfont\bfseries 第十届全国大学生集成电路创新创业大赛\par}
|
||
\vspace{54pt}
|
||
{\fontsize{25pt}{34pt}\selectfont\bfseries 基于龙芯 SoC 的后量子密码与矩阵运算加速系统\par}
|
||
\vspace{16pt}
|
||
{\fontsize{17pt}{24pt}\selectfont 系统设计与验证报告\par}
|
||
\end{center}
|
||
|
||
\vfill
|
||
\noindent\begin{tabularx}{\textwidth}{>{\bfseries}p{3.2cm}X}
|
||
参赛杯赛 & 龙芯中科杯 \\
|
||
队伍编号 & CICC1008439 \\
|
||
团队名称 & 碳基生物 \\
|
||
目标器件 & Xilinx Artix-7 XC7A200T-1 \\
|
||
证据版本 & \EvidenceRevision \\
|
||
报告日期 & \EvidenceDate \\
|
||
\end{tabularx}
|
||
\vspace{22pt}
|
||
\end{titlepage}
|
||
|
||
\pagenumbering{Roman}
|
||
\section*{摘要}
|
||
\addcontentsline{toc}{section}{摘要}
|
||
本项目在赛事提供的 LoongArch32r SoC 框架上集成 ML-KEM、1024 点 FFT 和
|
||
4$\times$4 矩阵乘法三类专用加速器,并以四通道 DMA 和矩阵乘法批处理序列器降低
|
||
CPU 搬运与调度开销。系统采用 CPU、系统总线和 ML-KEM 三时钟域架构;跨域控制、
|
||
状态和数据通过显式 CDC 结构传递。矩阵乘法器使用四路 LUT 乘法器,每拍并行产生
|
||
一个输出元素点积所需的四项乘积,并用双 Bank、流水 CRC32 与本地 DMA endpoint
|
||
支撑 5000 组连续任务。报告重点说明设计边界、关键决策及可复现证据,不把参考 SoC
|
||
基础设施误列为本项目贡献。
|
||
|
||
现有证据显示,历史实现的总体 WNS 为 +\OverallWNS\,ns,资源占用为
|
||
\SliceLUTs{} LUT、\SliceFFs{} FF、\BramTiles{} BRAM Tile 和 \DspCount{} DSP;
|
||
板级 5000 组矩阵乘法耗时为 \MatmulBoardMs\,ms,CRC 校验通过。由于当前分支经历
|
||
PLL 与实现报告合并,所有 PPA 和板级性能必须按附带清单重新生成后再作为最终结论。
|
||
|
||
\noindent\textbf{关键词:} LoongArch32r;ML-KEM;DMA;矩阵乘法;FFT;跨时钟域;FPGA
|
||
|
||
\section*{主要贡献}
|
||
\addcontentsline{toc}{section}{主要贡献}
|
||
\begin{itemize}
|
||
\item 在固定 AXI 端口预算内完成三类加速器集成,并用二级地址译码共享 FFT/ML-KEM 窗口;
|
||
\item 构建 mem2mem、mem2ep、ep2mem 三类 DMA 路径及矩阵乘法硬件批处理序列器;
|
||
\item 将 ML-KEM 计算域提升至独立时钟,并为命令、数据、状态和复位建立明确 CDC 边界;
|
||
\item 建立从 RTL 静态检查、SoC 仿真、布局布线到板级评测的版本化证据链。
|
||
\end{itemize}
|
||
|
||
\tableofcontents
|
||
\clearpage
|
||
\pagenumbering{arabic}
|
||
|
||
\section{需求、约束与设计边界}
|
||
|
||
\subsection{需求分解}
|
||
表~\ref{tab:req}把竞赛目标转化为可验证的工程要求。每项要求都绑定明确证据,避免以
|
||
“能够综合”替代功能、时序或板级行为验证。
|
||
|
||
\begin{table}[H]
|
||
\centering
|
||
\small
|
||
\caption{系统需求与验收证据}
|
||
\label{tab:req}
|
||
\begin{tabularx}{\textwidth}{p{1.2cm}Y Y p{2.1cm}}
|
||
\toprule
|
||
编号 & 要求 & 验收证据 & 当前状态 \\
|
||
\midrule
|
||
R1 & 4$\times$4 无符号矩阵乘法,5000 组连续输入,结果 CRC32 正确 & 官方板级评测日志:CRC 匹配且收到 \code{MATMUL\_DONE} & 已有基线,待复测 \\
|
||
R2 & 复位释放前不得产生 UART、DMA 或加速器事务 & ILA/测试平台断言与板级观察 & \pending \\
|
||
R3 & 矩阵乘法路径不使用 DSP48E1 & 布局布线后 utilization 与自动 DSP 检查 & 已有基线,待复测 \\
|
||
R4 & ML-KEM-512/768/1024 的 KeyGen、Encaps、Decaps 正确 & 3 个固定 KAT 向量,SW/CPU/DMA 三路径各 100 次 & 已有基线,待复测 \\
|
||
R5 & FFT CPU 与 DMA 路径结果和软件参考一致 & 1024 点逐点最大误差及端到端耗时 & 需补全最大误差日志 \\
|
||
R6 & 所有同步时钟域 setup/hold 收敛,CDC 结构可审计 & timing、clock interaction、CDC、DRC 报告 & 已有基线,待复测 \\
|
||
\bottomrule
|
||
\end{tabularx}
|
||
\end{table}
|
||
|
||
\subsection{软硬件边界}
|
||
赛事框架提供 CPU、基础存储控制器、UART、DVI、confreg 和 AXI 基础互连。本项目的
|
||
主要工作是加速器 RTL、DMA 数据路径、批处理控制、共享地址窗口、CDC 集成以及配套
|
||
软件。CPU 只负责配置、启动、完成检测和结果判定;NTT、Keccak、多项式乘法、FFT
|
||
蝶形和矩阵乘积累加均在硬件内部执行。
|
||
|
||
\begin{figure}[tbp]
|
||
\centering
|
||
\includegraphics[width=\textwidth,height=0.53\textheight,keepaspectratio]{figures/system_boundary.pdf}
|
||
\caption{系统组成、贡献边界与主要数据通路}
|
||
\label{fig:boundary}
|
||
\end{figure}
|
||
|
||
\FloatBarrier
|
||
\section{系统架构}
|
||
|
||
\subsection{互连与地址空间}
|
||
如图~\ref{fig:boundary},CPU 和 DMA 分别作为 AXI Master 0/1 接入 Crossbar。DMA
|
||
通过 AXI 访问存储器,同时通过本地 endpoint 直接访问矩阵乘法双 Bank,避免把内部
|
||
缓冲搬运再次送入 Crossbar。关键地址窗口见表~\ref{tab:addr};完整寄存器定义以 RTL
|
||
和 BSP 头文件为准。
|
||
|
||
\begin{table}[tbp]
|
||
\centering
|
||
\footnotesize
|
||
\caption{关键物理地址窗口}
|
||
\label{tab:addr}
|
||
\begin{tabularx}{\textwidth}{p{4.6cm}p{3.2cm}Y}
|
||
\toprule
|
||
物理地址 & 模块 & 说明 \\
|
||
\midrule
|
||
\code{0x1C00\_0000--0x1C7F\_FFFF} & BaseRAM/ExtRAM & 程序、源数据和结果存储 \\
|
||
\code{0x1F00\_0000} & UART 16550 & 串口输出 \\
|
||
\code{0x1F20\_0000} & confreg & GPIO、定时器与中断 \\
|
||
\code{0x1F30\_0000} & DMA / 序列器 & DMA 通道位于低 0x200 B;matmul 序列器从 0x200 开始 \\
|
||
\code{0x1F40\_0000} & ML-KEM / FFT & 由地址位二次译码的共享 Slave 6 窗口 \\
|
||
\code{0x1F50\_0000} & matmul & 控制、CRC 和双 Bank 数据窗口 \\
|
||
\bottomrule
|
||
\end{tabularx}
|
||
\end{table}
|
||
|
||
\subsection{时钟、复位与 CDC}
|
||
系统由 50\,MHz 输入时钟经 PLL 产生三个同步逻辑域:CPU 域、系统总线域和 ML-KEM
|
||
计算域,拓扑见图~\ref{fig:cdc}。CPU--SYS 之间跨越完整 AXI 通道;SYS--ML-KEM
|
||
之间跨越命令、窗口数据、完成状态和中断。设计原则是:多位数据只随握手或稳定窗口
|
||
跨域,单比特状态经过同步器,脉冲采用保持/应答结构,复位采用异步置位、同步释放。
|
||
|
||
复位约束比普通功能复位更严格:PLL 锁定且各域同步器完成释放前,AXI valid、DMA
|
||
请求、加速器 start 和 UART 写使能必须保持为零。这一约束需要通过专门的复位前监控
|
||
测试确认,不能由“复位后程序正常运行”间接推出。
|
||
|
||
\begin{figure}[tbp]
|
||
\centering
|
||
\includegraphics[width=\textwidth,height=0.43\textheight,keepaspectratio]{figures/clock_cdc.pdf}
|
||
\caption{时钟、复位与跨时钟域边界}
|
||
\label{fig:cdc}
|
||
\end{figure}
|
||
|
||
\subsection{中断与完成通知}
|
||
DMA 完成、matmul 完成和 ML-KEM 完成信号经同步后接入 CPU 中断系统。当前性能程序在
|
||
短热路径中采用状态轮询,减少中断现场开销;功能回归仍需验证 done 的置位、W1C 清除、
|
||
连续任务不丢失以及错误状态可恢复。
|
||
|
||
\FloatBarrier
|
||
\section{关键设计决策}
|
||
|
||
\subsection{DMA 本地 endpoint 与批处理序列器}
|
||
通用 DMA 提供 4 个独立通道,每通道包含源地址、目的地址、长度、模式和 endpoint
|
||
配置。对普通内存或 FFT/ML-KEM 窗口使用 AXI burst;对 matmul 双 Bank 使用本地
|
||
valid/ready endpoint。后者减少地址译码和总线仲裁,但必须单独验证 backpressure、
|
||
Bank 选择和非满 burst 长度。
|
||
|
||
矩阵乘法序列器把“读 128 B 输入、启动计算、等待完成、写回 192 B 结果、递增组号”
|
||
固化为硬件循环。CPU 仅配置源/目的基址、组数和 stride。图~\ref{fig:matmulflow}
|
||
描述单组事务;双 Bank 允许搬运与计算在相邻组之间重叠。当前竞赛快速路径可关闭结果
|
||
写回,改由硬件流水 CRC 对整批结果判定,从而消除不参与最终评分的存储流量。
|
||
|
||
\begin{figure}[tbp]
|
||
\centering
|
||
\includegraphics[width=\textwidth,height=0.34\textheight,keepaspectratio]{figures/matmul_pipeline.pdf}
|
||
\caption{矩阵乘法批处理事务与 CRC 路径}
|
||
\label{fig:matmulflow}
|
||
\end{figure}
|
||
|
||
\subsection{共享 FFT/ML-KEM AXI 窗口}
|
||
Crossbar Slave 6 内部按地址高位将事务分发到 ML-KEM 或 FFT。该方案节省一个顶层
|
||
从端口,但会把二级译码放入共同路径。读写响应必须与请求目标绑定,不能在 AW/W
|
||
独立握手时重新按瞬时地址选择从机。验证重点包括 AW/W 不同拍到达、读写并发、从机
|
||
反压及非法空洞地址响应。
|
||
|
||
\subsection{ML-KEM 独立计算时钟}
|
||
ML-KEM 的关键通路与系统 AXI 通路性质不同。将计算核心放入独立的
|
||
\MlkemFreqMHz\,MHz 时钟域,可在不提高 CPU 和 SRAM 压力的情况下缩短算法计算段。
|
||
代价是增加 CDC 延迟与验证复杂度,因此性能比较必须报告端到端 CPU 周期,而不是仅
|
||
报告核心 busy 周期;CDC 报告也必须作为实现准入条件。
|
||
|
||
\FloatBarrier
|
||
\section{加速器实现}
|
||
|
||
\subsection{矩阵乘法与流水 CRC}
|
||
加速器支持最大 4$\times$4 的 32-bit 无符号矩阵,66-bit 结果元素按三个 32-bit
|
||
字输出。四个 32$\times$32-bit LUT 乘法器在同一拍分别计算一个输出元素点积中的
|
||
四项乘积,之后进入累加和写回流水;它们并非分别负责四行。A/B/C 缓冲采用双 Bank,
|
||
控制器通过 Bank 所有权避免 DMA 与计算阵列同时写同一缓冲。
|
||
|
||
CRC32 与结果产生流水同步更新。对 5000 组评测,软件只输出起止标记和最终 CRC,
|
||
减少 UART 对计时窗口的扰动。硬件 \code{dma\_cycles} 记录批处理内部周期,板级主机
|
||
计时则覆盖复位释放后协议观察与外部通信,两者用途不同,不应混为一个指标。
|
||
|
||
\subsection{1024 点 FFT}
|
||
FFT 数据通路由 5 个 Radix-$2^2$ SDF 单元串联,每个单元包含两个蝶形阶段,而不是
|
||
“五级普通 radix-2 FFT”。延迟反馈结构以 BRAM/移位存储保存历史样本,旋转因子由
|
||
ROM 提供。输入输出窗口按 32-bit AXI word 编址,低 16 bit 承载有符号定点样本。
|
||
CPU 路径用于接口诊断,DMA 路径反映系统实际吞吐。
|
||
|
||
\subsection{ML-KEM}
|
||
ML-KEM 核支持 FIPS 203 的三个参数集及 KeyGen、Encaps、Decaps。主要计算模块包括
|
||
Keccak/SHA3、采样、NTT/INTT、多项式乘法、压缩/解压和片上存储。AXI 包装器提供
|
||
控制寄存器与 EK、DK、CT 数据窗口;DMA 路径批量搬运密钥和密文,CPU 路径保留为
|
||
可观测的接口基线。
|
||
|
||
\section{验证策略与判定标准}
|
||
|
||
\begin{figure}[tbp]
|
||
\centering
|
||
\includegraphics[width=\textwidth,height=0.31\textheight,keepaspectratio]{figures/verification_flow.pdf}
|
||
\caption{从 RTL 到板级结果的分层证据链}
|
||
\label{fig:verifyflow}
|
||
\end{figure}
|
||
|
||
\subsection{验证层次}
|
||
验证按图~\ref{fig:verifyflow}推进。静态检查发现语法、位宽和不可达集成;模块级仿真
|
||
覆盖握手和边界;SoC 仿真覆盖 CPU、缓存、AXI 和软件驱动;实现报告检查时序、CDC、
|
||
DRC、DSP 与资源;板级测试确认真实 PLL、SRAM、串口和复位行为。任何一层通过都不能
|
||
替代后一层。
|
||
|
||
\begin{table}[tbp]
|
||
\centering
|
||
\small
|
||
\caption{必须重跑的验证矩阵}
|
||
\label{tab:matrix}
|
||
\begin{tabularx}{\textwidth}{p{2.35cm}Y Y}
|
||
\toprule
|
||
测试 & 判定标准 & 证据文件 \\
|
||
\midrule
|
||
Verilator lint & 无 Error;集成顶层可达性检查通过 & \path{evidence/lint.log} \\
|
||
指定软件构建 & asm、fft、fft\_dma、mlkem\_test、mlkem\_hello 均成功链接 & \path{evidence/build/*.log} \\
|
||
FFT CPU 路径 & 1024 点完成;记录端到端 ns 与逐点最大误差 & \path{evidence/board/fft.log} \\
|
||
FFT DMA 路径 & 四次搬运无死锁;最大误差和性能均输出 & \path{evidence/board/fft_dma.log} \\
|
||
ML-KEM 三路径 & k=2/3/4、SW/CPU/DMA 各 100 次,FAILS=0 & \path{evidence/soc/mlkem_test.log} \\
|
||
ML-KEM 示例 & 共享密钥一致且明文恢复,输出 RESULT=PASS & \path{evidence/soc/mlkem_hello.log} \\
|
||
完整实现 & setup/hold WNS$\ge0$,unconstrained=0,DSP=0,DRC 无关键错误 & \path{evidence/vivado/*.rpt} \\
|
||
CDC 审计 & 预期跨域结构已约束;无未知组合跨域或未同步脉冲 & \path{evidence/vivado/cdc.rpt} \\
|
||
matmul 官方板测 & 5000 组 CRC 匹配、收到 DONE、记录耗时和分数 & \path{evidence/board/matmul_official.log} \\
|
||
复位前零操作 & 复位释放前 UART/AXI/DMA/start 均无事务 & ILA 截图或断言日志 \\
|
||
\bottomrule
|
||
\end{tabularx}
|
||
\end{table}
|
||
|
||
\subsection{ML-KEM 样本数量解释}
|
||
当前日志的 \code{STATIC\_KAT\_COUNT\_0} 表示每个参数集使用一个固定向量,因此是
|
||
3 个不同 KAT 向量。每个向量在 SW、CPU、DMA 三条路径各运行 100 次,总计
|
||
$3\times3\times100=900$ 次执行;不能表述为“360 个不同 KAT”。现有日志没有注入
|
||
篡改密文,故本报告不宣称已覆盖隐式拒绝。若要加入该结论,应新增负向用例并保存
|
||
独立证据。
|
||
|
||
\FloatBarrier
|
||
\section{已有结果与复测状态}
|
||
|
||
\noindent\colorbox{lightblue}{\parbox{0.96\textwidth}{
|
||
\textbf{证据状态:}以下数值由脚本从当前仓库可用日志/报告提取,证据版本为
|
||
\EvidenceRevision。PLL 与实现产物合并后必须执行完整复测;在新 \code{evidence/}
|
||
生成前,这些数字只作为历史基线,不作为最终提交结论。}}
|
||
|
||
\subsection{矩阵乘法板级结果}
|
||
现有官方评测基线见表~\ref{tab:matresult}。外部耗时包含评测端从观察到
|
||
\code{MATMUL\_START} 至收到 \code{MATMUL\_DONE} 的时间;内部 \code{dma\_cycles}
|
||
应在复测日志中同时记录,用于区分硬件批处理时间与 UART/软件尾部时间。
|
||
|
||
\begin{table}[H]
|
||
\centering
|
||
\caption{5000 组矩阵乘法板级基线}
|
||
\label{tab:matresult}
|
||
\begin{tabular}{lc}
|
||
\toprule
|
||
指标 & 结果 \\
|
||
\midrule
|
||
组数 & \MatmulGroups \\
|
||
外部计时 & \MatmulBoardMs\,ms \\
|
||
CRC32 & \MatmulCrcStatus \\
|
||
评分 & \MatmulScore \\
|
||
满分目标 & 4.9\,ms \\
|
||
\bottomrule
|
||
\end{tabular}
|
||
\end{table}
|
||
|
||
\subsection{ML-KEM 性能与正确性}
|
||
表~\ref{tab:mlkem}给出一次 KeyGen+Encaps+Decaps 往返的平均 CPU 周期。每个单元格
|
||
对应 100 次执行且现有日志 FAILS=0。DMA 相比寄存器路径的收益来自批量窗口搬运;
|
||
它不表示密码核心本身获得相同比例的加速。
|
||
|
||
\begin{table}[H]
|
||
\centering
|
||
\small
|
||
\caption{ML-KEM 三路径平均周期(历史基线)}
|
||
\label{tab:mlkem}
|
||
\begin{tabular}{lrrr}
|
||
\toprule
|
||
参数集 & 软件参考 & CPU 寄存器 & DMA 窗口 \\
|
||
\midrule
|
||
ML-KEM-512 & \MlkemFiveTwelveSW & \MlkemFiveTwelveCPU & \MlkemFiveTwelveDMA \\
|
||
ML-KEM-768 & \MlkemSevenSixtyEightSW & \MlkemSevenSixtyEightCPU & \MlkemSevenSixtyEightDMA \\
|
||
ML-KEM-1024 & \MlkemTenTwentyFourSW & \MlkemTenTwentyFourCPU & \MlkemTenTwentyFourDMA \\
|
||
\bottomrule
|
||
\end{tabular}
|
||
\end{table}
|
||
|
||
\subsection{FFT 结果}
|
||
现有 CPU 与 DMA 日志使用相同 1024 点多音输入。表~\ref{tab:fft}中的最大误差尚未由
|
||
旧日志完整输出;当前测试程序已增加全 1024 点统计,复测后指标脚本会自动更新。
|
||
|
||
\begin{table}[H]
|
||
\centering
|
||
\small
|
||
\caption{FFT 端到端性能(历史基线)}
|
||
\label{tab:fft}
|
||
\begin{tabularx}{\textwidth}{lrrY}
|
||
\toprule
|
||
路径 & 硬件端到端时间 & 相对软件加速比 & 正确性 \\
|
||
\midrule
|
||
CPU 寄存器 & \FftCpuNs\,ns & \FftCpuSpeedup$\times$ & 已显示能量 bin 一致;需重跑全量误差 \\
|
||
DMA & \FftDmaNs\,ns & \FftDmaSpeedup$\times$ & \FftMaxError \\
|
||
软件参考 & \FftSoftwareNs\,ns & 1$\times$ & 浮点参考 \\
|
||
\bottomrule
|
||
\end{tabularx}
|
||
\end{table}
|
||
|
||
\subsection{时序、资源与功耗}
|
||
当前可用布局布线报告的汇总见表~\ref{tab:ppa}。三个域的 setup WNS 均为正;最终
|
||
复测还必须检查 hold、未约束路径、clock interaction 和 CDC,而不能只引用一行 WNS。
|
||
|
||
\begin{table}[H]
|
||
\centering
|
||
\small
|
||
\caption{实现结果基线}
|
||
\label{tab:ppa}
|
||
\begin{tabular}{lrr}
|
||
\toprule
|
||
类别 & 指标 & 当前可用值 \\
|
||
\midrule
|
||
时序 & cpu\_clk / WNS & \CpuFreqMHz\,MHz / +\CpuWNS\,ns \\
|
||
时序 & sys\_clk / WNS & \SysFreqMHz\,MHz / +\SysWNS\,ns \\
|
||
时序 & mlkem\_clk / WNS & \MlkemFreqMHz\,MHz / +\MlkemWNS\,ns \\
|
||
资源 & Slice LUT & \SliceLUTs{}(\SliceLUTPct) \\
|
||
资源 & Slice Register & \SliceFFs{}(\SliceFFPct) \\
|
||
资源 & BRAM Tile & \BramTiles{}(\BramPct) \\
|
||
资源 & DSP48E1 & \DspCount \\
|
||
功耗 & 动态 / 静态 / 总计 & \DynamicPower{} / \StaticPower{} / \TotalPower{} W \\
|
||
\bottomrule
|
||
\end{tabular}
|
||
\end{table}
|
||
|
||
Vivado 功耗置信度为 \PowerConfidence。由于没有回标 SAIF/VCD 活动率,总功耗只能作为
|
||
向量无关估算,不宜用于细粒度模块功耗排名。若评审要求功耗结论,应以代表性 ML-KEM
|
||
和 matmul 负载生成活动文件后重新运行 \code{report\_power}。
|
||
|
||
\section{局限、风险与下一步}
|
||
\begin{itemize}
|
||
\item 当前 PPA 与板级日志不是 PLL/CDC 合并后的同一提交证据,必须按清单重跑并记录 commit;
|
||
\item 通用 SoC 仿真 testbench 以程序返回地址结束,尚未对复位前零事务写成自动断言;
|
||
\item ML-KEM 固定向量覆盖正确性和重复稳定性,但不等价于大量独立随机 KAT,也未覆盖隐式拒绝;
|
||
\item FFT 旧日志仅打印有能量的 bin,当前程序虽已统计全量最大误差,仍需生成新日志;
|
||
\item 功耗报告没有活动率回标,置信度低;模块级功耗百分比不作为本报告结论;
|
||
\item 层次化资源表容易因层次重叠而重复计数,因此正文只报告顶层非重叠总量。若需模块占比,必须用同一层次深度并增加“其他/未归属”项。
|
||
\end{itemize}
|
||
|
||
\section{结论}
|
||
本项目的核心价值不只是增加三个 AXI 外设,而是形成了可持续工作的异构数据路径:
|
||
CPU 负责控制,DMA 负责搬运,序列器负责批处理,加速器负责计算,CDC 负责隔离不同
|
||
性能目标的时钟域。共享窗口和本地 endpoint 在端口与延迟约束之间取得平衡;双 Bank
|
||
和流水 CRC 则面向 5000 组矩阵任务消除了不必要的软件与写回开销。
|
||
|
||
已有基线证明方案具备功能与性能潜力,但最终报告应只引用同一 commit 下重新生成的
|
||
功能、时序、资源、CDC、功耗和板级证据。附带脚本已将这一过程标准化:执行完整回归、
|
||
保存日志并运行 \code{make metrics all} 后,正文表格和 PDF 会随证据同步更新。
|
||
|
||
\appendix
|
||
\section{关键寄存器摘要}
|
||
|
||
\begin{table}[H]
|
||
\centering
|
||
\small
|
||
\caption{DMA 与 matmul 序列器寄存器}
|
||
\begin{tabularx}{\textwidth}{p{2.4cm}p{3cm}Y}
|
||
\toprule
|
||
偏移 & 名称 & 含义 \\
|
||
\midrule
|
||
\code{n*0x40+0x00} & SRC\_ADDR & DMA 通道 $n$ 源物理地址 \\
|
||
\code{n*0x40+0x04} & DST\_ADDR & DMA 通道 $n$ 目的物理地址 \\
|
||
\code{n*0x40+0x08} & LENGTH & 字节数 \\
|
||
\code{n*0x40+0x10} & CTRL & start、AxSIZE、AxLEN \\
|
||
\code{n*0x40+0x14} & STATUS & busy、done(W1C) \\
|
||
\code{n*0x40+0x18} & MODE & mem2mem / mem2ep / ep2mem \\
|
||
\code{0x200} & SEQ\_CTRL & 批处理 start \\
|
||
\code{0x204} & SEQ\_STATUS & busy、done(W1C) \\
|
||
\code{0x208--0x21C} & SEQ 参数 & 源/目的基址、组数、matmul 基址、stride \\
|
||
\bottomrule
|
||
\end{tabularx}
|
||
\end{table}
|
||
|
||
\section{复现入口}
|
||
详细顺序、预期输出和文件放置方式见同目录
|
||
\code{REPORT\_RERUN\_CHECKLIST.md}。常用入口如下:
|
||
|
||
\begin{lstlisting}[language=bash]
|
||
cd doc/reports/system
|
||
./tools/run_report_tests.sh lint
|
||
./tools/run_report_tests.sh soc
|
||
./tools/run_report_tests.sh implement
|
||
./tools/run_report_tests.sh refresh
|
||
\end{lstlisting}
|
||
|
||
\begin{thebibliography}{9}
|
||
\bibitem{fips203} National Institute of Standards and Technology,
|
||
\emph{FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard}, 2024.
|
||
\bibitem{loongson} 龙芯中科技术有限公司,\emph{龙芯 SoC 实验平台开发手册},2024。
|
||
\bibitem{xilinxcdc} AMD Xilinx, \emph{UG906: Vivado Design Analysis and Closure Techniques}.
|
||
\bibitem{sdf} S. He and M. Torkelson, ``Designing pipeline FFT processor for OFDM,''
|
||
URSI International Symposium on Signals, Systems, and Electronics, 1998.
|
||
\end{thebibliography}
|
||
|
||
\end{document}
|