18 / 20 · 概念
设计有符号和边界测试
结合算术、形状和控制边界,超越单一正常示例。
课时内容可免费阅读,选课后可保存学习进度。
选择能区分故障的输入
正数 2×2 示例揭示输入错位和索引问题,但无法检查符号扩展或饱和。全一矩阵有助于检查计数,却可能掩盖转置。应使用非对称值、负数、零以及不同的行和列。
A=[[2,−1],[0,3]] 和 B=[[4,5],[−2,1]] 产生 [[10,9],[−6,3]],包含正输出、负输出和有效零。B 为单位矩阵时必须重现 A。B 为零矩阵时必须产生零输出,同时每个 PE 仍使用 K 项。
W=8、K=4 时,重复最小值×最小值得到 65536;重复最小值×最大值得到 −65024;重复最大值×最大值得到 64516。它们都可用 AW=18 表示。仅测试最大的正操作数,会漏掉最大的正乘积。
对于 A 行 [−128,−128,127,127] 和 B 列 [−128,127,−128,127],乘积为 [16384,−16256,−16256,16129]。其和为一,前缀和为 [16384,128,−16128,1]。最终结果较小,不足以证明中间累加器可以较窄。
覆盖形状与控制边界
N=1、K=1 在 E0 后完成。N=3、K=1 仍在 E4 后完成,因为操作数需要穿过网格。N=1、K=5 是没有空间错位的五时钟沿点积。测试 K=1,2,3,4,可覆盖计数器位宽边界,尤其是存储 K−1 与存储 K 的差别。
在首个 MAC 之前、归约中途和最后 MAC 之前插入暂停。完成后阻塞输出。在清零后、任务中途以及有效结果待交付时复位。复位后出现旧任务输出属于失败。比较尺寸恰好整除的分块形状与只剩一行或一列的形状;按坐标验证掩码。
对于每个通过的用例,记录矩阵、精确使用项列表、推进沿数、暂停次数和已交付输出坐标。负面测试需要预期错误类别。精确累加器检查应与输出量化分开。固定边界测试数据结合带种子的随机测试,使故障可复现,并把覆盖扩展到单一示例之外。
自己试试
N=3、K=1 时,求最终时钟沿编号和沿数。同时求 W=8、K=4 时四项最小值×最大值的和。
阅读解释
最终沿编号为 1+6−3=4,即 E0..E4 共五个时钟沿。一个最小值×最大值乘积为 −16256;四项之和为 −65024。