12 / 37 · 概念
MUX 验证:穷举检查与属性
分别检查组合输入覆盖率与存储行为,并最小化反例。
课时内容可免费阅读,选课后可保存学习进度。
什么才算验证正确
单比特数据 a、b 加选择信号 sel,共有八种组合。对于这样的规模,检查全部情况很高效。W 位 MUX多路选择器 根据选择信号,把多个输入之一连接到输出的组合电路。必须规定选择位与输入编号的对应关系。了解更多若对全部输入直接穷举,连同选择信号共有 种,位宽稍大就需要其他策略。
输出位宽为 W 时,每一位的选择规则如下。
按错误类型选择激励
| 待检查的错误 | 有效输入或观察方式 |
|---|---|
| a/b 连接反向 | 令 a、b 不同,比较 sel=0 与 1 |
| 位顺序反向 | 只有一位为 1 的 walking-one 模式 |
| 固定为 0/1 的故障 | 全 0、全 1、交替位模式 |
| 存储边沿错误 | 在边沿之间改变输入,检查 q 是否保持 |
| 差一个周期的延迟错误 | 使连续边沿的预期值不同 |
测试数量多,并不自动等于验证质量好。必须能够解释每个测试打算检测哪类缺陷。
这里仅选择 a 与 b 不同的情况比较。每列是一个测试向量。错误选择式在四列中都会产生与 expected 相反的值。
查看波形数据
| 信号 | 波形 | 总线值 |
|---|---|---|
| a | 0.1. | |
| b | 1.0. | |
| sel | 0101 | |
| expected | 01.0 | |
| swapped bug | 10.1 |
参考模型应独立于实现
把 DUT 代码原样复制,可能只是把相同错误实现了两遍。应根据规格的真值表真值表 完整列出所有可能输入组合及每种组合输出的表格。随时间的变化需要另行通过波形检查。了解更多或索引选择生成预期值,并单独追踪 q 的先前捕获状态。发生 mismatch 时,缩减为仍能保留失败的最短输入序列,并解释原因。
不要只比较最终状态,应在每个观察点记录实际值、预期值与输入。这些记录能区分“仿真运行过”和“满足了规格”。
自己试试
八位 MUX 只用 a=0x00、b=0xFF 检查两个选择值,能否发现输出位顺序反向的错误?
阅读解释
不能。0x00 与 0xFF 即使位顺序反向也不变。应选择 0x01、0x02 等能体现位置的模式,并逐位比较输出。
✓ 已学习