20 / 20 · 概念
RTL 集成审查与扩展
将教学模型连接到 RTL 接口及验证证据。
课时内容可免费阅读,选课后可保存学习进度。
划分核心与封装职责
阵列核心负责寄存器操作数转发、有符号 MAC、valid/标签和全局 advance。封装逻辑负责 start/clear、矩阵维度、分块坐标、错位边界供数、带掩码的结果收集和输出握手。为每项职责定义信号名称和时钟沿约定。
简单封装使用 IDLE、CLEAR、RUN、COLLECT 和 SEND。CLEAR 保证数据之前有一个初始化时钟沿。RUN 推进从零到 K+2N−3 的逻辑步骤。结果在最后 RUN 时钟沿后立即完成;COLLECT 在随后的时钟沿复制结果。这样可避免在最终非阻塞更新的同一个时钟沿复制旧累加器。
集成延迟计算示例
N=K=2 时,clear 发生在 E−1,计算发生在 E0..E3。假定 E4 将四个结果并行复制到结果缓冲。每沿一个结果、ready 始终为真的输出,在 E5..E8 按行优先顺序发送十九、二十二、四十三和五十。从 clear 到最终传送的测量包含 E−1..E8 共十个上升沿,而计算只有四个沿。输出阻塞会延长 SEND,但不改变已完成数值。
结果载荷需要 job 和全局坐标,以及明确的原始或量化表示。结果未安全复制或使用之前,不能清除累加器。将下一次计算与 SEND 重叠,需要明确缓冲所有权和任务分隔。
扩展设计时重新审视约定
流水线乘法器会改变累加、标签和完成时序。归约分块需要保留部分和并重新分析位宽。重叠任务需要独立累加状态。FIFO 将 value、valid 和标签作为一份载荷存储,需要溢出/下溢检查。
Gemmini 架构文档提供了阵列配合本地存储和数据移动的一手示例。本课程状态机和时序示例是独立规定的教学约定。
提交维度、位宽、边界调度、完成定义、暂停/复位策略、输出顺序和记分板日志。Node 检查证明参考模型行为。RTL 仿真、综合、时序收敛和产品集成需要各自实际执行的命令和证据,才能宣称成功。
自己试试
集成示例中,在 E6 之后阻塞 ready 两个时钟沿。最终传送沿和总测量沿数变为多少?
阅读解释
E7 和 E8 等待,然后在 E9 和 E10 发送剩余两个结果。最后传送为 E10;测量 E−1..E10 共十二个时钟沿。计算仍为 E0..E3 四个沿,受阻数据必须保持。