SystemVerilog基于覆盖率驱动验证技术(CDV)和生成-查看覆盖率报告
作者:小白蒋
所有的努力都是为了做个小白,单纯且快乐~
本文内容
- 基于覆盖率驱动的验证技术(CDV):
- 代码覆盖率:
- 断言覆盖率
- 定义功能覆盖率模型
- covergroup解释
- 功能覆盖率的采样事件
- 定义覆盖点:bins
- 定义覆盖点:条件覆盖
- 定义覆盖点:状态跳转覆盖
- 定义覆盖点:交叉覆盖
- 生成覆盖率报告和查看覆盖率报告:
基于覆盖率驱动的验证技术(CDV):
覆盖率是对RTL设计功能进行验证后达到的覆盖百分比
(1)检查过程需满足完整性,就是cover到文档中所有功能;
(2)满足正确性;
代码覆盖率:
衡量测试案例验证-覆盖了哪些设计规则在RTL中实现了,而不能衡量验证计划;
1、行(Line Coverage):RTL中的代码行;
2、有限状态机(FSM Coverage):RTL代码中的有限状态机的状态和状态之间的转换;
3、路径(Path Coverage):RTL代码中的路径分支(if-else语句);
4、信号翻转(Toggle Coverage):RTL代码中的一个信号从0跳变到1,以及1跳变到0;
5、表达式(Expression coverage):RTL代码中的条件表达式,例如if(a&b&c);
断言覆盖率
Assertion Coverage断言覆盖率:
1、断言是一种声明性的代码,一般插到RTL中,用于检查RTL代码中的信号之间的关系,也就是做时序检查;
定义功能覆盖率模型
covergroup解释
作用:
(1)封装覆盖率模型的规格,是用户定义的一种;结构类型
(2)每个covergroup包含以下内容:一个时钟事件,用于同步采样覆盖点;一组覆盖点;
(3)跟class类似,完成定义后,可以通过构造函数new()
生成covergroup
的实例;
(4)covergroup
可以定义在module
,program
,interface
,class
中;
功能覆盖率的采样事件
带有event
触发的covergroup
,当验证平台触发trans_ready
事件时,采样CovPort
;
event trans_ready;covergroup CovPort @(trans_ready);coverpoint ifc.cb.port;
endgroup
这里的trans_ready
可以换成ck.sample()
、@(posedge clk)
、@(port)
定义覆盖点:bins
定义bins时
(1)用户限制覆盖率统计时需要的数值;
(2)SystemVerilog不再自动创建bins,并且忽略非用户定义的bins值;
(3)只有用户定义的bins的值才可以用于计算机功能覆盖率;
covergroup CovKind;coverpoint tr.kind {bins zero = {0};bins lo = {[1:3],5};bins hi[] = {[8:$]};bins misc=default;}
endgroup
定义覆盖点:条件覆盖
(1)使用关键字 iff
为覆盖点添加条件
当reset=1时,不收集覆盖率
covergroup CoverPort;covergroup port iff(!bus_if.reset);
endgroup
(2)使用start和stop函数
在reset序列期间,停止收集覆盖率
initial beginCovPort ck=new;#1ns bus_if.reset=1;ck.stop();#100ns bus_if.reset=0;ck.start();...
end
定义覆盖点:状态跳转覆盖
(1)用户定义覆盖点的状态跳转,并收集相关的信息
covergroup CoverPort;coverpoint port{bins t1=(0=>1),(0=>2),(0=>3);bins t2=(1,2=>3,4)}
endgroup
(2)使用?等通配符表示状态和状态跳转
bit [2:0] port;covergroup CoverPort {wildcard bins even={3'b??0};wildcard bins odd={3'b??1};}
endgroup
定义覆盖点:交叉覆盖
在覆盖率组中,可以定义两个或多个覆盖点或者变量之间的交叉覆盖率
class Transaction;rand bit [3:0] kind;rand bit [2:0] port;
endclasscovergroup CovPortkind: coverpoint tr.kind; // 0~15port: coverpoint tr.port; // 0~7cross kind,port;
endgroup
也就是有16 x 8 个仓(bin)
生成覆盖率报告和查看覆盖率报告:
vcs -sverilog covergroup.sv -debug_all -R -Mupdate
(1)使用-Mupdate进行增量编译,再次编译时只编译改变的文件,提高速率;
(2)vcs仿真的2个步骤:
代码编译:如 vcs cpu.v
仿真运行:如 simv
或者通过-R选项将2个步骤合成一步:
编译运行:如vcs -R cpu.v,
-R :run after compilation,编译后继续执行run
sim.vdb
就是覆盖率文件
两种方法打开sim.vdb
查看覆盖率:
(1)dve -cov&
,然后打开覆盖率文件就可以查看
(2)urg -dir ./*.vdb -format both -report coverage
,这个就是生成html和text两种格式覆盖率报告,放在coverage文件夹里,然后进入coverage文件夹,firefox dashboard.html
和gvim dashboard.txt
两种方式都可以打开覆盖率报告。
Makefile
SystemVerilog基于覆盖率驱动验证技术(CDV)和生成-查看覆盖率报告相关推荐
- SV中基于覆盖率驱动验证技术(CDV)和生成-查看覆盖率报告
目录 基于覆盖率驱动的验证技术(CDV): 代码覆盖率 断言覆盖率 定义功能覆盖率模型 covergroup解释 功能覆盖率的采样事件 定义覆盖点:bins 定义覆盖点:条件覆盖 定义覆盖点:状态跳 ...
- 【SystemVerilog基础】基于覆盖率驱动(CDV)的验证方法快速上手指南
覆盖率驱动(CDV)可以用来衡量我们的验证进度,简而言之就是,看我们验了半天验到了什么程度.当然最核心的还是保证我们验证完备性,我们能识别到的点都要验证到.需要澄清的是,覆盖率达到要求,并不能说验证就 ...
- IC验证培训——解读《多线程向量处理器验证技术的研究》
rockeric.com 随着集成电路工艺水平以及计算机体系结构技术的不断发展,微处理器的性能在过去的几十年中呈指数级的增长,伴随而来的是微处理器设计规模以及复杂度也快速增加.随之而来就是验证的难度急 ...
- 15、Windows驱动开发技术详解笔记(11) 基本概念
9.Windows驱动程序的入口函数规定为_DriverEntry@8,所以用C++编写时要用extern. 驱动程序中,不能使用编译器运行时函数,甚至C语言中的malloc,C++的new函数都不能 ...
- DL之GAN:HighNewTech基于计算机视觉领域GAN技术—最新黑科技之秒变宝宝——回到最初的样子
DL之GAN:High&NewTech基于计算机视觉领域GAN技术-最新黑科技之秒变宝宝--回到最初的样子 导读 8月14日,快手APP上线名为"变小孩"的魔法表 ...
- 基于IAP和USB技术的嵌入式系统应用程序升级
对于内含IAP功能的嵌入式微控制器提出基于IAP和USB技术的系统应用程序升级的新方法.U盘被用作程序代码的存储设备,将微控制器的存储器Flash和SRAM进行有效的区间分配,经外部扩展接口USB,微 ...
- 符合ISO 26262标准的模型验证技术
2020年,疫情影响着我们每个人的生活. 这一年,终将被历史记住. 这一年,每个人戴上防护口罩,保护自己和家国. 这一年,很多人参与线上学习,get新技能为工作加油. 这一年,蛮多人关注汽车ISO26 ...
- 向技术的长征:一家中国互联网巨头从商业驱动转向技术驱动的努力
转载自得到App<李翔商业内参> 文/李翔 这篇一万多字的报道的内容,是一个中国互联网公司在技术上的努力.这个公司,是阿里巴巴--用马云自己的话说,正是因为他不懂技术,所以阿里巴巴在技术上 ...
- 极光笔记 | 极光基于元数据驱动数据治理浅谈
作者:极光数据平台部 计算平台组经理 --蔡祖光 前言 极光大数据平台目前支撑着公司开发者.广告.金融风控.行业洞察.公共安全在内的核心业务的数据生产活动,随着公司业务体量的增长,数据平台的规模也在 ...
最新文章
- CentOS7服务去Nginx使用-安装
- 寻找kernel32.dll的地址
- NOIP2003普及组第1题 乒乓球(Table.cpp)-- python3实现
- Android AlarmManager实现不间断轮询服务
- 2018双一流排名 计算机,2018年42所双一流大学本硕博录取人数排名,规模优势凸显!...
- git clone 遇到的坑
- 计算机控制系统编程语言,可编程控制器常用的几种编程语言
- Deep Adversarial Decomposition: A Unified Framework for Separating Superimposed Images
- Flink Table和SQL中Table和DataStream的相互转换(fromDataStream、toChangelogStream、attachAsDataStream)
- c语言编程中句柄无效怎么解决,Win7玩英雄联盟出现句柄无效怎么解决?
- MapboxGL 柱状图的绘制与展示
- BTRFS Defragmentation
- Mac OS关机/睡眠快捷键
- [渝粤教育] 西南科技大学 园艺作物高产栽培 在线考试复习资料
- Android aar格式库
- 车联网开发板_车联网开发.PDF
- 6-4 使用函数求素数和 (20 分)
- JAVA8 Stream的系列操作,Optional使用---- java养成
- java web中的中文乱码问题和解决方法
- 数据库客户端DBeaver官网下载地址