System Verilog视频学习笔记(11)- Functional converage
Functional converage(功能覆盖率)
内容来自启芯-System Verilog视频
==============================================================
目录结构:
1、验证流程
2、计算功能覆盖率
3、功能覆盖率建模
4、总结
==============================================================
本章目标:
1、定义功能覆盖结构
2、指定覆盖率采样机制
3、定义采样的信号和变量
4、定义采样值代表的功能
5、使用参数化使覆盖率实例唯一
6、使用覆盖率分配定义覆盖率结构
7、动态监测testcase
1、验证流程
图1、验证流程
验证目标何时达到?
如何切换到corner-case验证?当测试例子都到达预期目标时,设计边界用例
什么时候做直接测试?
图2、Coverage位置
图3、组合逻辑的验证例子
完备输入和输出,定义需要采样的信号
图4、功能覆盖率例子
(1)通过covergroup关键字,
coverpoint定义比特输入,比特输出
cross,交叉连接
option.goal验证目标
endgroup
(2)实例化
(3)查询结果
2、计算功能覆盖率
图5、计算覆盖率
3、功能覆盖率建模
状态和状态转移生成
图6、例子
对状态和状态转换建模。
coverage bin生成:VCS内自动生成crosscoverage bins,如cross sa;
采样:(1)指定采样事件,@([specified_edge] signals | variables)。(2)使用系统函数 cov_object.sample()更新采样比特。
控制覆盖率过程:$get_coverage()
coverage 属性:可在coveragegroup等处定义。
主要的coverage选项:
(1)at_least(1):至少一次覆盖
(2)auto_bi_max(64):自动生成最大数
(3)goal(100):100%覆盖率
(4)wight(1):coverage比特层数
(5)per_instance(0):每个instance对覆盖率的共享率
coverage结果报告:文件转换成html、txt和仿真工具自动生成的格式
参数化coverage group:
图7:、参数化例子
通过传递参数方式定义。
4、总结
本节介绍了功能覆盖率建模过程。
covergroup
coverpoint:采样信号定义
cross:信号关系
endgroup
实例化,采样、覆盖率统计