0.前言

覆盖率是用来衡量设计验证完备性,随着测试逐步覆盖各种合理的组合,覆盖率用来衡量测试进行的程度,覆盖率工具会在仿真过程中收集信息,然后进行后续处理并且得到覆盖率报告,通过报告找出覆盖盲区,然后修改现有test或者创建新的test来填补这些盲区,这个过程可以一直迭代进行,直到覆盖率达到100%。

一个覆盖率反馈环路如下:

可见通过随机和定向测试得到功能覆盖率,将RTL代码漏洞修复后再跑,如此往复最后得到100%的覆盖率。

1.覆盖率类型

1.1代码覆盖率

代码覆盖率是放在工具在仿真完成后自动收集的,不需要人工收集。

1.1.1line coverage

检查RTL代码的所以行是否都被覆盖到。

1.1.2branch coverage

检查RTL代码中所有条件分支是否都被运行到,如:

if(!rst_n)d<=0;
elsed<=q;

分支覆盖率会检测这个if else语句是否每个分支都被运行

1.1.3toggle coverage

检查所有变量是否都经过了0到1,1到0的翻转

1.1.4FSM coverage

若RTL代码中存在状态机,则检查状态机的所有状态是否都被执行过,不同状态之间的跳转是否都跳转过。

1.1.5condition coverage

指的是每个条件中的逻辑操作数被覆盖的情况。

Δ这里要区分condition coverage和branch coverage的区别:

if(a>0 || b>0)c=1;
elsec=0;

设置2组测试用例,第一组a=5,b=0;第二组a=0,b=0;这两组测试可以把这个if else每种情况都遍历到,这时 branch coverage为100%,但condition coverage不是100%,因为并没有把b>0的情况测试到。

在VCS中,上述5个代码覆盖率类型如下所示:

但代码覆盖率达到100%是否意味着验证完备了呢?

代码覆盖率最终的结果用于衡量所有testcase覆盖了设计中的多少代码,关注点在设计代码的分析上,而不是测试平台,未经测试的设计代码里可能隐藏硬件漏洞,也可能是冗余代码,代码覆盖率衡量的是测试对于硬件设计描述的“实现”究竟测试得有多彻底,而非针对验证 计划,所以代码覆盖率达到了100%,并不意味着验证的工作已经完成,但代码覆盖率100%是验证工作完 备性的必要条件。

2.功能覆盖率

功能覆盖率是为了衡量设计的各项功能是否都实现了并按照预期行为执行

功能覆盖率需要自己在验证平台中设计采样点

对于代码覆盖率和功能覆盖率之间的关系如下:

在验证初始阶段,往往处于代码/功能覆盖率都低的情况,当代码/功能覆盖率都达到100%时验证完成;但有时会出现代码覆盖率高功能覆盖率低的情况或者是相反,这往往反映了一些问题

代码覆盖率高功能覆盖率低:这意味着验证遍历了RTL大部分代码,但这大部分代码并没有实现Spec中的某些功能,说明RTL代码不完善

代码覆盖率低功能覆盖率高:这意味着你所定位的功能点都被覆盖了,而RTL代码并没有被全部执行完,这往往说明验证计划不完善,并没有把所有该验的点都采样到。

3.断言覆盖率

用于一次性地或在一段时间内核对两个设计信号之间关系的声明性代码,断言最常用于查找错误,例如两个信号间的相位关系,是否应该互斥或者请求与许可 信号之间的时序等,一旦检测到问题,仿真就可以立即停止。

SV学习笔记—覆盖率类型相关推荐

  1. SV学习笔记—结构体及枚举类型及字符串

    目录 1.结构体 1.1 压缩结构体 1.2 非压缩结构体 1.3联合结构体 2.枚举类型 3.字符串 1.结构体 Verilog的最大缺陷之一是没有数据结构,SV中可以使用struct语句创建结构, ...

  2. 20171220-python学习笔记--函数类型

    20171220-python学习笔记--函数类型 备注: #位置参数 #传入两个参数 def power(x, n):s = 1while n > 0:n = n - 1s = s * xre ...

  3. Python学习笔记之类型判断,异常处理,终止程序操作小结

    Python学习笔记之类型判断,异常处理,终止程序操作小结 运行结果: 这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发. 爬虫.数据分析.数据可视化.机 ...

  4. JavaScript学习笔记:类型检测

    JavaScript学习笔记:类型检测 1.利用typeof检测数据类型 注意:type of null,返回的不是"null",而是"object".type ...

  5. Java 学习笔记 - 数组类型互转

    Java 学习笔记 - 数组类型互转 数组类型转换 字符串数组 to (Integer.Long.Double)列表 传统方式 Java8 Stream方式 数组 to 数组 字符串数组 to (in ...

  6. SV学习笔记—类型转换

    1.静态转换 静态转换操作不对转换值进行检查,格式是type'(value): program test;initial begin$display("int'(42+1.1) is&quo ...

  7. SV学习笔记(17)

    学习目标: SV绿皮书第九章:功能覆盖率 学习内容: 1.覆盖率是衡量设计验证完备性的一个通用词语 2.覆盖率类型:代码覆盖率.断言覆盖率.漏洞率曲线.功能覆盖率 3.代码覆盖率:行覆盖率.路径覆盖率 ...

  8. python的程序异常类型,Python3.4学习笔记之类型判断,异常处理,终止程序操作小结...

    本文实例讲述了Python3.4类型判断,异常处理,终止程序操作.分享给大家供大家参考,具体如下: python3.4学习笔记 类型判断,异常处理,终止程序,实例代码: #idle中按F5可以运行代码 ...

  9. python数值类型的操作_Python学习笔记,数值类型及操作

    数值类型及操作 int类型数值大小不限: 整数的进制 1,整数类型正常为10进制 2,开头加0b or 0B 为二进制 3,加0o or 0O 为8进制 4,加0x 为16进制 浮点运算中存在不确定尾 ...

最新文章

  1. 前端入门 前端自学路线 web开发前端如何学习
  2. 玩Android微信小程序版
  3. 服务器看端口信息命令行,查看服务器进入端口命令行
  4. register_chrdev深入分析
  5. 火狐linux版更改语言,Selenium更改firefox浏览器语言python m
  6. 编写高质量代码改善C#程序的157个建议——建议157:从写第一个界面开始,就进行自动化测试...
  7. C++ 专题:陈皓:Why C++? 王者归来
  8. 为SQLMap配置WebUI界面
  9. matlab求解常微分方程组/传染病模型并绘制SIR曲线
  10. java addall equals_Java究极打基础之ArrayList篇
  11. (Windows和Linxu双系统)Alibaba套件sentinel1.7下载和nacos1.3和seate-server1.3下载
  12. “你什么色?”网易云人格主导色被刷屏后遭微信屏蔽:因包含互动测试内容...
  13. 隐藏a标签seo_百度SEO网站整体优化方案 - 蜘蛛池博客
  14. CMMI与Agile敏捷开发比较之一:两者的本质区别
  15. 无穷级数(四)函数的幂级数展开
  16. 怎样把孩子写的日记或作文制成电子版呢?
  17. 高通820(msm8996)camera hal源码分析
  18. 华为推送 坑点 自定义intent
  19. 学python可以从事什么工作,python是做什么的软件
  20. 程序员从初级到中级10个秘诀

热门文章

  1. Linux 中查询服务、查询端口、查询 PID、防火墙
  2. 华为鸿蒙实装,鸿蒙实装?推特博主爆料华为P40将推出两种系统机型
  3. loss值多少才算收敛_银行福利中的六险二金是怎么算的,到底值多少钱?
  4. Redis下分布式锁的实现
  5. java内存数据被篡改,初涉Java内存模型
  6. 微信平台开发与微信营销
  7. [从零开始]用python制作识图翻译器·三
  8. win10系统有没有比较好用的桌面待办软件或者便签推荐?
  9. 收藏!图解JVM经典五十问,这下面试稳了!
  10. 可调电源diy_DIY源图