项目方案
首版锁定 4-die YOLO26n,而非将更大模型或 CIM 作为基本功能前提。
四芯粒流水与角色分区
CPU 只负责启动、配置、遥测和异常恢复;帧内执行由每个 die 的本地调度器、描述符和 scoreboards 驱动。
512 RGB/A8 输入
Stem / P3
P4 / P5
SPPF / PSA / FPN
PAN / PSA / Detect
反向回 bridge
关键边界:D0-D1 1.00 MiB/frame,D1-D2 0.6875 MiB/frame,D2-D3 0.50 MiB/frame。静态载荷投影远低于 350 MB/s 的目标有效带宽,但尚非实测链路预算。
- 模型与数值YOLO26n e2e;Conv/DWConv 使用 W8 + B32 + A8,累加 INT32;PSA、Softmax 与尾部仍有待完成的精度与硬件闭环。
- 存储边界每 die 规划 1.45 MiB 可用 SRAM、16 个 bank;运行时不使用 DDR。四个 frame context 仅保存元数据,不代表四帧 activation 常驻。
- 互连边界双端口、x8、源同步 D2D;128-bit flit、最大 256 B payload、VC packet credit、CRC 与逐跳转发。
- 输入边界摄像头置于外部 bridge;D0 按行/band 接收,不物化完整 RGB 帧。ZCU106 无 DDR 路径是后续板级验证对象。
新手导览
先理解数据怎样流动,再理解算子怎样计算。
把它想成一条有四个加工工位的流水线
摄像头送入像素,输入层把它整理成 tensor;D0 到 D3 依次处理 YOLO26n 的不同阶段;D2D 是工位之间的传送带;SRAM 是每个工位旁边的小仓库;调度器决定什么时候计算、发送或释放空间。RTL 是这条流水线在每个时钟周期的真实电路描述。
输入层
DVP 摄像头先经过外部 bridge,完成颜色解码、640x480 到 512x384 的缩放、上下 letterbox,再输出 RGB888 或 A8 的连续数据带。
四个 die
D0 处理早期 backbone,D1 处理 P4/P5,D2 处理 SPPF/PSA/FPN,D3 处理 PAN、检测头和 Top-300。
SRAM 与 band
整帧特征图放不进 1.45 MiB 片上 SRAM,所以只保留例如 32 行的 HWC16 band,算完就发送或释放。
调度与保护
micro-op scheduler 等待依赖、DMA、D2D 和 frame slot 就绪后发射;CRC、序号、超时或越界会触发当前 frame 的 abort。
算子词典:每个动作在做什么
模型里的算子是数学动作;硬件模块负责用有限的 MAC、bank、line buffer 和时钟把它们实现出来。
| 算子 | 数学作用 | 硬件实现重点 |
|---|---|---|
| Conv 1x1 | 同一像素的输入通道与权重相乘并求和,改变通道数。 | HWC16 连续读,MAC 阵列并行输出多个通道。 |
| Conv 3x3 | 对当前像素周围的 3x3 邻域和所有通道求和,提取局部纹理。 | 两行以上 line buffer + 滑动窗口,避免 im2col 复制。 |
| Depthwise Conv | 每个通道独立做卷积,不跨通道混合。 | 复用空间窗口,按 lane 并行处理通道和边界。 |
| Bias / Requant | INT32 累加先加 bias,再按 scale、mult、shift 压回 A8 并饱和。 | 舍入规则、位宽和 [-128,127] 饱和必须与 Python reference 一致。 |
| SiLU / Sigmoid | SiLU 是 x·sigmoid(x);Sigmoid 把 logit 变成 0 到 1 的概率。 | 用定点 LUT/SFU 逼近指数,控制输入范围和量化误差。 |
| Add / Multiply | 逐元素残差相加或门控相乘。 | 不同 A8 scale 不能直接混算,需要对齐或在 accumulator 域处理。 |
| MaxPool / SPPF | 窗口取最大值;SPPF 连续池化并合并多路上下文。 | line buffer 和比较器树,几乎不需要乘法。 |
| Resize / Concat | Resize nearest 复制邻近像素;Concat 沿通道拼接多个 tensor。 | 优先做地址 view,减少整块复制;descriptor 负责通道偏移。 |
| PSA | QK 点积得相似度,Softmax 得概率,再用概率加权 V 得到 O。 | Q/K/V/O 分 tile 放 SRAM,在线维护 max/sum,不存完整概率矩阵。 |
| Box decode / Top-K | 把候选编码变成真实框,并从 5376 候选保留分数最高的 300 个。 | D3 流式解码和小型候选堆,避免保存完整 score tensor。 |
建议的学习入口
完整的新手知识库已写入 know_4yolo26/ 并随站点发布:结构与基本原理、模块详解、算子详解、验证方法与当前进展。
证据账本
模型、图与边界 ABI
已验证固定 512 ONNX;384 nodes、629 tensors;D0-D3 分区与六个真实跨 die tensor 已生成并受 manifest 约束。
tools/inspect_yolo26n_onnx.py · generate_yolo26n_e2e_artifacts.pyW8A8 编译与精度
烟雾级102 个 Conv/DWConv 常量、非 Conv 合约与 e2e Top-300 参考已建立;校准仅来自两张本地图像,不能作为部署精度结论。
tools/compile_yolo26n_conv_w8a8.py · compile_yolo26n_nonconv_w8a8.pyBand SRAM 分配
条件可行16 个候选中 9 个可放入。选定 32 行、双 ping-pong,单活跃帧 + 四 context 元数据在 1.45 MiB 限额内。
multidie/yolo26n_band_streaming_sram_allocation.mdD2D 包与控制面
XSim 通过Header/Trailer/CRC32C、VC credit、路由、RX policy、序列保护与帧上下文调度器有独立回归。
rtl/d2d/ · rtl/scheduler/ · multidie/test_d2d_packet.py计算与算子原语
局部证据真实 Conv/DW 像素向量、banked SRAM Conv、SiLU/Add/SPPF/resize 与 PSA 子模块存在 XSim 证据;全图 traversal 未完成。
rtl/target/ · rtl/operators/ · rtl/integration/可扩展 D2D 数据面
未闭环多 slot、CDC FIFO、bounded DMA 与 watchdog 已验证,但 ABORT 包、descriptor/FIFO 清理、重放与 PHY retrain 尚未完成。
multidie/STATUS.md / D2D scalable data plane无 DDR 板级路径
部分完成ZCU106 no-DDR 的 BD 预检、静态 guard 与 frame ingress XSim 已通过;尚无 XSA、ELF、camera bridge、bitstream 或板上运行。
zcu106_noddr/ · multidie/STATUS.mdASIC 物理签核
尚未开始没有 SRAM macro、综合、布局布线、STA、功耗、热或封装/D2D 约束签核。3 x 3 mm 与 20 FPS 因此不能视为已证明。
multidie/yolo26n_full_frame_capacity_audit.md资源与吞吐约束
所示为已绑定审计的容量余量,不是时序或帧率结果。
从“无法放下整帧”到 band streaming
全帧审计显示 D1/D2 的同时 inbound/outbound 物化超过 1.45 MiB,且 D0 的首层输出就达 1.00 MiB。因此项目不再以整帧 tensor 常驻为前提。
当前 32 行方案把动态张量改为 HWC16 band,并为本地、D2D、输入各保留双缓冲。该设计必须继续落实为逐层 micro-op、bank 时序与实际 DMA/链路调度。
| Die | 组合峰值 | 1.45 MiB 占用 | 余量 |
|---|---|---|---|
| D0 | 1.020 MiB | 0.430 MiB | |
| D1 | 1.009 MiB | 0.441 MiB | |
| D2 | 1.143 MiB | 0.307 MiB | |
| D3 | 1.255 MiB | 0.195 MiB |
下一关与退出条件
按风险优先级排序,完成前不能将项目标记为端到端可交付。
证据索引
监控台快照的主要来源。
| 当前总账 | yolo26_accelerator/multidie/STATUS.md | 截至 2026-09-05 的工程证据、回归命令与立即退出条件。 |
|---|---|---|
| 全帧容量审计 | yolo26_accelerator/multidie/yolo26n_full_frame_capacity_audit.md | 明确给出 NOT_PROVEN 与完整缺口清单。 |
| Band 分配审计 | yolo26_accelerator/multidie/yolo26n_band_streaming_sram_allocation.md | 32 行候选、每 die 峰值和适用假设。 |
| 银行冲突审计 | yolo26_accelerator/multidie/yolo26n_band_bank_conflict_audit.md | Conv 读/写/D2D DMA 的 bank-role witness。 |
| 芯片系统方案 | four_die_yolo26n_integrated_system_plan_20260904.md | 目标、边界、D2D、相机 bridge 与执行方案。 |