作者:小白蒋
所有的努力都是为了做个小白,单纯且快乐~

本文内容

  • 基于覆盖率驱动的验证技术(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.htmlgvim dashboard.txt两种方式都可以打开覆盖率报告。

Makefile

SystemVerilog基于覆盖率驱动验证技术(CDV)和生成-查看覆盖率报告相关推荐

  1. SV中基于覆盖率驱动验证技术(CDV)和生成-查看覆盖率报告

    目录 ​基于覆盖率驱动的验证技术(CDV): 代码覆盖率 断言覆盖率 定义功能覆盖率模型 covergroup解释 功能覆盖率的采样事件 定义覆盖点:bins 定义覆盖点:条件覆盖 定义覆盖点:状态跳 ...

  2. 【SystemVerilog基础】基于覆盖率驱动(CDV)的验证方法快速上手指南

    覆盖率驱动(CDV)可以用来衡量我们的验证进度,简而言之就是,看我们验了半天验到了什么程度.当然最核心的还是保证我们验证完备性,我们能识别到的点都要验证到.需要澄清的是,覆盖率达到要求,并不能说验证就 ...

  3. IC验证培训——解读《多线程向量处理器验证技术的研究》

    rockeric.com 随着集成电路工艺水平以及计算机体系结构技术的不断发展,微处理器的性能在过去的几十年中呈指数级的增长,伴随而来的是微处理器设计规模以及复杂度也快速增加.随之而来就是验证的难度急 ...

  4. 15、Windows驱动开发技术详解笔记(11) 基本概念

    9.Windows驱动程序的入口函数规定为_DriverEntry@8,所以用C++编写时要用extern. 驱动程序中,不能使用编译器运行时函数,甚至C语言中的malloc,C++的new函数都不能 ...

  5. DL之GAN:HighNewTech基于计算机视觉领域GAN技术—最新黑科技之秒变宝宝——回到最初的样子

    DL之GAN:High&NewTech基于计算机视觉领域GAN技术-最新黑科技之秒变宝宝--回到最初的样子 导读      8月14日,快手APP上线名为"变小孩"的魔法表 ...

  6. 基于IAP和USB技术的嵌入式系统应用程序升级

    对于内含IAP功能的嵌入式微控制器提出基于IAP和USB技术的系统应用程序升级的新方法.U盘被用作程序代码的存储设备,将微控制器的存储器Flash和SRAM进行有效的区间分配,经外部扩展接口USB,微 ...

  7. 符合ISO 26262标准的模型验证技术

    2020年,疫情影响着我们每个人的生活. 这一年,终将被历史记住. 这一年,每个人戴上防护口罩,保护自己和家国. 这一年,很多人参与线上学习,get新技能为工作加油. 这一年,蛮多人关注汽车ISO26 ...

  8. 向技术的长征:一家中国互联网巨头从商业驱动转向技术驱动的努力

    转载自得到App<李翔商业内参> 文/李翔 这篇一万多字的报道的内容,是一个中国互联网公司在技术上的努力.这个公司,是阿里巴巴--用马云自己的话说,正是因为他不懂技术,所以阿里巴巴在技术上 ...

  9. 极光笔记 | 极光基于元数据驱动数据治理浅谈

    作者:极光数据平台部  计算平台组经理 --蔡祖光 前言 极光大数据平台目前支撑着公司开发者.广告.金融风控.行业洞察.公共安全在内的核心业务的数据生产活动,随着公司业务体量的增长,数据平台的规模也在 ...

最新文章

  1. CentOS7服务去Nginx使用-安装
  2. 寻找kernel32.dll的地址
  3. NOIP2003普及组第1题 乒乓球(Table.cpp)-- python3实现
  4. Android AlarmManager实现不间断轮询服务
  5. 2018双一流排名 计算机,2018年42所双一流大学本硕博录取人数排名,规模优势凸显!...
  6. git clone 遇到的坑
  7. 计算机控制系统编程语言,可编程控制器常用的几种编程语言
  8. Deep Adversarial Decomposition: A Unified Framework for Separating Superimposed Images
  9. Flink Table和SQL中Table和DataStream的相互转换(fromDataStream、toChangelogStream、attachAsDataStream)
  10. c语言编程中句柄无效怎么解决,Win7玩英雄联盟出现句柄无效怎么解决?
  11. MapboxGL 柱状图的绘制与展示
  12. BTRFS Defragmentation
  13. Mac OS关机/睡眠快捷键
  14. [渝粤教育] 西南科技大学 园艺作物高产栽培 在线考试复习资料
  15. Android aar格式库
  16. 车联网开发板_车联网开发.PDF
  17. 6-4 使用函数求素数和 (20 分)
  18. JAVA8 Stream的系列操作,Optional使用---- java养成
  19. java web中的中文乱码问题和解决方法
  20. 数据库客户端DBeaver官网下载地址

热门文章

  1. 山东省各2021高考成绩查询,山东省教育招生考试院:2021年山东高考成绩查询入口、查分系统...
  2. java for each 空的_使用foreach需要判空。
  3. linux 读取u盘数据恢复,Linux 数据恢复
  4. 我要考华为认证,需不需要培训?
  5. 图片旋转python
  6. 【c#】Fedex官方API对接过程
  7. 离散型随机变量的概率密度(概率质量)
  8. 807 保持城市天际线
  9. 抗扰度试验--EMS--静电放电--ESD
  10. 逍遥安卓模拟器卡android,逍遥安卓模拟器不流畅的具体解决方法介绍