Altifigence Academy

12 / 37 · 概念

MUX 验证:穷举检查与属性

分别检查组合输入覆盖率与存储行为,并最小化反例。

什么才算验证正确

单比特数据 a、b 加选择信号 sel,共有八种组合。对于这样的规模,检查全部情况很高效。W 位 MUX多路选择器 根据选择信号,把多个输入之一连接到输出的组合电路。必须规定选择位与输入编号的对应关系。了解更多若对全部输入直接穷举,连同选择信号共有 22W+12^{2W+1} 种,位宽稍大就需要其他策略。

输出位宽为 W 时,每一位的选择规则如下。

∀i∈{0,…,W−1},yi=s‾ai+sbi\forall i\in\{0,\ldots,W-1\},\quad y_i=\overline s a_i+s b_i

按错误类型选择激励

待检查的错误有效输入或观察方式
a/b 连接反向令 a、b 不同,比较 sel=0 与 1
位顺序反向只有一位为 1 的 walking-one 模式
固定为 0/1 的故障全 0、全 1、交替位模式
存储边沿错误在边沿之间改变输入,检查 q 是否保持
差一个周期的延迟错误使连续边沿的预期值不同

测试数量多,并不自动等于验证质量好。必须能够解释每个测试打算检测哪类缺陷。

这里仅选择 a 与 b 不同的情况比较。每列是一个测试向量。错误选择式在四列中都会产生与 expected 相反的值。

检测选择反向错误的四种组合
查看波形数据
波形数据:每个字符表示一个区间,点表示保持前一状态,p 表示一个时钟周期。
信号波形总线值
a0.1.
b1.0.
sel0101
expected01.0
swapped bug10.1

参考模型应独立于实现

把 DUT 代码原样复制,可能只是把相同错误实现了两遍。应根据规格的真值表真值表 完整列出所有可能输入组合及每种组合输出的表格。随时间的变化需要另行通过波形检查。了解更多或索引选择生成预期值,并单独追踪 q 的先前捕获状态。发生 mismatch 时,缩减为仍能保留失败的最短输入序列,并解释原因。

不要只比较最终状态,应在每个观察点记录实际值、预期值与输入。这些记录能区分“仿真运行过”和“满足了规格”。

自己试试

八位 MUX 只用 a=0x00、b=0xFF 检查两个选择值,能否发现输出位顺序反向的错误?

阅读解释

不能。0x00 与 0xFF 即使位顺序反向也不变。应选择 0x01、0x02 等能体现位置的模式,并逐位比较输出。

你的选择适用于此浏览器,可随时在页脚更改。