功能覆盖率方法
作者:互联网
功能覆盖方法包含三个组成部分。两个是基于语言特征的,而第三个是方法论组件。
cover
功能覆盖方法的第一个组成部分是“cover”(SystemVerilog 断言语言的一部分)。“cover”使用 SVA 时间语法。
“cover”提供的覆盖率。只能放在模块、程序和接口中,不能放在类中。
Covergroup, Coverpoint, Bins
功能覆盖方法的第二个组成部分是基于功能覆盖率语言的覆盖组、覆盖点、仓等。 Covergroups 提供设计变量的覆盖范围。它们记录指定为(设计变量的)覆盖点的各种值的出现次数。 Coverpoints 查询设计变量的某些值或场景是否已经发生。覆盖点的“交叉”是一个非常重要的特性,它对于覆盖同时发生的事件(写和读周期并行发生)至关重要。
Testbench and Test Plan
第三个组件(更高级别的方法组件)是测试台和测试计划。
我们的测试计划(显然)基于要测试的功能。根据测试计划创建一个功能覆盖矩阵,其中包括要测试的每个功能(控制和数据):
• 在功能覆盖矩阵中确定所有功能覆盖组/覆盖点/仓。
• 在验证/仿真过程中测量它们的覆盖率范围。
• 从覆盖率报告中衡量测试的有效性:
—例如:我们的测试主要访问缓存行中的 32 - byte 单位;如果看到byte、word和quad-word的覆盖率很低或未被覆盖,就可以更改或添加新 test 以命中byte/word等。使用受约束的随机方法来缩小测试目标。
• “cover”时序断言。
• 通过设计为关键功能路径添加更多覆盖点:
– 例如,对 L2(二级缓存) 的写入之后是从同一地址读取的,并且这发生在所有可能的写入/读取组合中。
• 随着验证的进行更新功能覆盖率计划:
– 仅仅因为在项目开始时创建了一个计划并不意味着测试完它就结束了。
– 随着对设计及其边界case的了解,测试计划和功能覆盖计划的详尽程度也应该增加。
– 继续为一开始没有想到的任何功能添加覆盖点。
标签:测试计划,功能,覆盖,覆盖率,cover,测试,方法 来源: https://www.cnblogs.com/fuqiangblog/p/16648496.html