前言:随着验证方法学的发展,覆盖率作为一种判断验证充分性的手段已成为验证工作的主导。绝大多数验证工程师会将覆盖率分为两大类:代码覆盖率和功能覆盖率。本文主要介绍有关代码覆盖率的概念。

代码覆盖率

代码覆盖率是衡量验证进展的最简易的方式。它的作用是检查代码是否冗余,设计要点是否遍历,被检测的对象是RTL代码,而代码覆盖率的检测一般由工具自动生成的,不需要自定义收集条件。代码覆盖率主要包括以下几种:

1.行覆盖率(Line coverage)

行覆盖率度量的是多少行代码已经被执行过。比如,你有100行代码,执行了90行,那么覆盖率就是90%。

2.分支覆盖率(Branch coverage)

分支覆盖率衡量的是代码中的分支覆盖的情况,包括:
if-else语句覆盖情况
case语句覆盖情况
三元操作符("?:")覆盖情况

3.路径覆盖率(Path Coverage)

路径覆盖率衡量的是在穿过代码和表达式的路径中有哪些已经被执行过,表明代码中数据通路的覆盖情况。

4.条件覆盖率(Conditional coverage)

判定式中有多个条件时,要求每个条件的取值均得到验证。这里的条件覆盖率很容易与分支覆盖率产生混淆,为了方便大家区别,下面举一个例子:


if ((test1() || test2()) {//在只有test1()为false的情况下,这个地方有一个BUG
}
else {do_something_benign;
}

假设我们有如下两种情况:

  1. test1()为true
  2. test1()和test2()都为false

如果只是为了验证分支覆盖率,以上的两种情况就足够了,因为if语句中两种分支条件都有了,但是对于第一条分支中的只有在test1()为false情况下的BUG,这里并没有覆盖到。

而在条件覆盖率下,还需要验证test1()为false且test2()为true这种情况,只有这三种情况都验证到了,才算是满足了条件覆盖率。

5.翻转覆盖率(Toggle coverage)

翻转覆盖率衡量的是哪些单比特变量的值为0或1,表明代码中信号的0到1和1到0的翻转情况。

6.有限状态机覆盖率(FSM coverage)

有限状态机覆盖率衡量的是状态机中哪些状态和状态转换已经被访问过。表明状态机中各个状态的覆盖情况。

验证方法学覆盖率(一):代码覆盖率相关推荐

  1. 验证方法学的发展历程及比较

    2000年, Verisity Design(现在的Cadence Design System公司)引进了Verification Advisor(vAdvisor)采用了e语言,包含了激励的产生,自 ...

  2. UVM验证方法学之一验证平台

    UVM验证方法学之一验证平台 在现代IC设计流程中,当设计人员根据设计规格说明书完成RTL代码之后,验证人员开始验证这些代码(通常称其为DUT,Design Under Test).验证工作主要保证从 ...

  3. 验证方法学的历史及比较

    2000年, Verisity Design(现在的Cadence Design System公司)引进了Verification Advisor(vAdvisor)采用了e语言,包含了激励的产生,自 ...

  4. 深入浅出FPGA-12-VMM(验证方法学)

    引言 验证方法学手册即为<Verification Methodology Manual>的直译. VMM是大规模集成电路(IC)设计验证领域的一种高级验证方法学. VMM验证方法学主要由 ...

  5. 通用验证方法学(Universal Verification Methodology, UVM):简介及内容导航

    目录 1. 介绍 1.1. 数字集成电路(Integrated Circuit, IC)设计 1.2. 数字集成电路(Integrated Circuit, IC)验证 2. 一个简易UVM验证平台例 ...

  6. 入门UVM验证方法学

    文章目录 1.验证概述: 2.如何实现验证 3.验证方法学 4.简单的UVM平台 5.较为完整的UVM平台 6.一个实例 7. UVM树 8.phase机制 9.验证步骤([参考](https://b ...

  7. 【数字IC验证快速入门】45、UVM项目实践之APB_SPI(13)UVM 验证方法学总结

    导读:作者有幸在中国电子信息领域的排头兵院校"电子科技大学"攻读研究生期间,接触到前沿的数字IC验证知识,旁听到诸如华为海思.清华紫光.联发科技等业界顶尖集成电路相关企业面授课程, ...

  8. UVM 验证方法学之interface学习系列文章

    本系列文章,针对 interface 做了较全面的剖析,并结合实际工作中遇到的一些问题,以简单的例子形式,展示给读者,方便读者自行下载和修改,加深对interface的理解.文章中的例子,几乎涵盖了i ...

  9. VMM验证方法学学习随笔

    1,计分板(scoreboard) 记分板用来动态预测设计的响应,施加给DUT的激励同时施加给记分板,记分板中的转换函数把输入的激励全部转换成最后响应的形式,并保存在数据结构中,以传递给检查器,记分板 ...

最新文章

  1. 你的机器学习模型为什么会出错?奉上四大原因解析及五条改进措施
  2. Python 字符串前面加u,r,b的含义
  3. AtCoder Grand Contest 002 (AGC002) F - Leftmost Ball 动态规划 排列组合
  4. accessors 作用_lombok @Accessors用法详解(一看就能就懂)
  5. AI攻城狮,你需要那个数据集的种子么?
  6. java 输入输出流知识_Java知识点总结(JavaIO-字节流)
  7. win10主机前置耳机孔无声音,但是后置有声音,按照下面的设置进行设计即可
  8. Scrapy(1) 爬取起点中文网小说,并保存到数据库
  9. Alfred效率神器
  10. C语言面试题---数组
  11. 2019/第十届蓝桥杯国赛/Java-B
  12. PHP-FPM(PHP进程管理器)
  13. 学习笔记(十四):基于位置无关感知策略的WIFI手势识别
  14. python心得总结知识点和收获,千锋Python培训心得 在总结中收获提升
  15. 谈谈我的信息安全学习经历
  16. Teranex AV标准转换器
  17. HTML网页实现自动刷新
  18. 多线程 or 多进程?
  19. emplace_back深度剖析
  20. [转载]ExtJs4 笔记(2) ExtJs对js基本语法扩展支持

热门文章

  1. 【java.lang.ref】FinalReference Finalizer FinalizerThread
  2. 《算法》中的红黑树实现
  3. 微信小程序毕业设计——社区老人互助管理平台
  4. 微信小程序中进行地图导航
  5. ubuntu16.04使用阿路比-LPMS-IG1进行ros数据发布
  6. 吉林省注册公司流程:第一步 企业名称预先核准流程。
  7. 配置文件和日志文件导出方法
  8. java音频剪辑_Java混剪音频
  9. 查找数字的下标--二分法
  10. [c语言]c语言中的#和##作用、参数表省略号作用