功能验证
Functional Verification也称 仿真验证
以可追踪规格为判据,系统寻找设计实现与预期行为之间不一致的活动。
速览
约 1 分钟验证不是“跑几个波形”,而是把需求拆成场景、激励、检查器、断言和覆盖目标,并用回归持续证明已检查到哪些风险。
系统理解
约 2 分钟功能验证围绕DUT、参考模型、激励生成、协议监视、检查器和覆盖模型建立闭环。定向仿真适合已知场景,受约束随机有助于探索组合空间,断言表达局部时序性质,形式方法在有限模型和假设下搜索反例。代码覆盖率只说明结构被执行,功能覆盖率只说明预先定义的场景被观察;两者都不能单独证明没有缺陷。
与RTL开发并行,并贯穿综合前后、系统集成和硅后验证。
公式提示
覆盖率可写为C=Ncovered/Neligible,但分母如何定义决定指标含义;未纳入覆盖模型的需求不会因C=100%而自动被验证。
关键参数
| 参数 | 单位 | 含义 |
|---|---|---|
| 需求覆盖 | % | 有明确验证目标和结果证据的规格条款比例 |
| 功能覆盖 | % | 覆盖模型中已命中的场景、交叉项和边界值比例 |
| 回归通过率 | % | 同一版本与环境下通过检查的测试比例 |
| 未关闭缺陷 | — | 尚未修复、豁免或确认不可达的有效问题数量 |
常见误区
- 把测试平台没有报错当成设计已被证明正确
- 把代码覆盖率100%等同于规格覆盖完整
- 混淆设计前功能验证、流片后硅验证与制造测试
- 只追求随机用例数量而不保留种子、检查机制和需求追踪
工程深入
12 条结论 · 1 道例题规格、对象与验证闭环
激励、检查与反例
覆盖率与收敛
覆盖率取决于分母的工程定义
覆盖率是已覆盖目标与纳入统计目标的比值;如果遗漏重要场景、交叉项或边界值,即使数值达到100%也不能推出规格完整。12
C = Ncovered / Neligible
- C
- 给定覆盖模型下的覆盖比例
- Ncovered
- 已满足关闭条件的覆盖项数量
- Neligible
- 纳入统计且未被批准豁免的覆盖项数量
成立条件 分子和分母需采用同一覆盖模型版本;不可达项应通过审查后豁免而不是静默删除
例题:动手算一次教学假设,可复算
某一版功能覆盖模型有1000个纳入统计且未豁免的覆盖项,本轮回归关闭了920项;该版覆盖率和仍未关闭的项数是多少?
已知
- Neligible=1000
- Ncovered=920
- 所有数量来自同一覆盖模型版本
- 未把未建模需求计入分母
步骤
- C=920/1000=0.92=92%,用已关闭覆盖项除以纳入统计的有效覆盖项
- Nopen=1000−920=80,列出仍需生成激励、补检查器或评审豁免的覆盖缺口
结果 该模型版本的覆盖率为92%,仍有80个覆盖项未关闭。
92%只回答当前覆盖模型内的收敛程度;下一步应逐项判断80个缺口是激励不足、检查器缺失、不可达还是规格遗漏。
不能外推到 该数值不能证明设计有92%正确,更不能覆盖模型之外的需求、错误检查器或硅后制造缺陷。
方法边界与实现衔接
出处
2 本教材 · 2 处引用- 1
CMOS超大规模集成电路设计(第4版)
- 第 15 章 §§15.1–15.8,第 561–592, 页 支持:功能验证寻找实现与规格的不一致;验证计划把规格拆成可关闭目标;测试环境由激励、观察和判定共同构成;定向与随机激励解决不同搜索问题;断言把局部时序规则变成持续检查;参考模型与记分板检查端到端数据;代码覆盖与功能覆盖回答不同问题;覆盖率取决于分母的工程定义;回归必须能够重现失败;形式验证的完备性受模型和假设限制;等价检查不替代规格验证;功能验证与制造测试处于不同生命周期
- 2
数字集成电路:电路、系统与设计(第2版)
- 第 8 章 §§8.1–8.8,第 276–313 页 支持:功能验证寻找实现与规格的不一致;验证计划把规格拆成可关闭目标;测试环境由激励、观察和判定共同构成;定向与随机激励解决不同搜索问题;断言把局部时序规则变成持续检查;参考模型与记分板检查端到端数据;代码覆盖与功能覆盖回答不同问题;覆盖率取决于分母的工程定义;回归必须能够重现失败;形式验证的完备性受模型和假设限制;等价检查不替代规格验证;功能验证与制造测试处于不同生命周期