专栏首页根究FPGA代码覆盖率是什么?如何查看?

代码覆盖率是什么?如何查看?

覆盖率分为代码覆盖率和功能覆盖率,代码覆盖率常用来作为测试好坏的指标,包含:行覆盖率、条件覆盖率、fsm状态覆盖率、翻转覆盖率和分支(branch)覆盖率5种。

行覆盖率

又称为语句覆盖,用于度量被测量代码中的每个“可执行语句”是否被执行到了,“可执行语句”不会包括代码注释、空行等。

翻转覆盖率

翻转覆盖率的检测检查0-1,1-0跳变,确保每个节点都有0-1,1-0跳变,其检查的对象有:寄存器 、线网变量、 存储单元(需要在编译时打开+memcbk选项)

需要注意的是:x-1和x-0跳转不会做统计。此外,翻转覆盖率消耗更多的资源。

条件覆盖率

条件覆盖率会统计未覆盖到的条件。

状态覆盖率

会查看所有的状态是否被覆盖到,但所有的状态都覆盖到不代表状态之间的跳转覆盖了,还要看各个状态之间的跳转是否满足。

路径覆盖率

代码中一条令下有多个if语句时相当于&,这样的路径才能进一步往后走,if越多路径越长,此时需要判断所有路径都被覆盖到。

覆盖率的查看需要在编译(compile)和仿真(simulation)时设置开关选项,设置的开关选项核心为两个:

-cm <file_type>: -cm <file_type>

用于指定要统计的覆盖率类型,以下列指令为例:-cm line+tgl+fsm+branch+cond 添加该指令后,会统计指定类型的覆盖率信息。

-cm_dir <file_dir> -cm_dir <file_dir>

用于指定转储生成的统计文件的目录,以下列指令为例:-cm_dir ./{OUTPUT}.vdb目录,该目录中存放统计信息文件。如果不添加该指令的话,默认生成的保存覆盖率文件的目录为simv.vdb 在统计时需要的指令为:

dve -covdir simv.vdb &

接下来以一个代码工程为例(源代码后台回复:Coverage获取)进行演示说明:

首先是编译:

vcs ../tb/fsm_top.v ..tb/hello.c ../rtl/fsm_moore.v -debug_all -cm line+tgl+fsm+cond+branch -timescale=1ns/1ns

然后是仿真:

./simv -cm line+tgl+fsm+cond+branch

最后查看覆盖率:

dve -covdir simv.vdb &

演 示

(源代码获取方式,后台回复:Coverage

本文分享自微信公众号 - 根究FPGA(gh_08b5d93f8fa5),作者:叫什么好呢啊

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 干货 | 如何利用Xcode实现线上代码覆盖率的检查

    携程技术
  • 如何避免回表查询?什么是索引覆盖? | 1分钟MySQL优化系列

    强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

    Java架构师必看
  • 如何查看域名的ip 什么是域名

    平时大家想要进入一个网站时,都会通过域名然后来访问相对应的网址,然而域名和IP虽然都在网络上比较常见,有时候为了可以快速地对一个网址解析访问,会同时需要用到域名...

    用户8715145
  • 如何查看自己的eclipse是什么版本的

    打开eclipse的安装目录,里头有一个文件夹是D:\Eclipse\readme ,打开这个文件夹,有一个文件“readme_eclipse.html”,双击...

    瑞新
  • 什么是aPaaS?低代码与高生产率的aPaaS和RAD相比如何?

    aPaaS代表应用程序平台即服务,是一类云计算服务。aPaaS中的“a”=应用程序或商业软件。PaaS =平台即服务(PaaS)。PaaS是一个云环境,承载诸如...

    informat低代码
  • 关于代码覆盖率(Code Coverage)

    最近做了一些关于代码覆盖率工具的调查,对一些主流的代码覆盖率的工具比如 Gcov,JaCoCo,Istanbul 等都做了一些实践和持续集成的工作,也有了一定的...

    Peter Shen
  • 【日更计划126】数字IC基础题

    Branch/Decision coverage:分支覆盖率评估HDL代码中的条件,例如if-else,case语句和三元运算符(?:)语句,并检测是否同时包含...

    空白的贝塔
  • 2021-01-14:timsort是什么,如何用代码实现?

    timsort是一种混合、稳定高效的排序算法,源自合并排序和插入排序,旨在很好地处理多种真实数据。它由Tim Peters于2002年实施使用在Python编程...

    福大大架构师每日一题
  • 通过单元测试和 JaCoCo 提高 Java 代码覆盖率和质量

    作为一家技术公司,那么公司技术的快速发展是很有必要的。但同时,我们不能为了稍微快一点地交付代码质量而牺牲代码质量。编写测试是保证代码质量,同时保持快速发布计划的...

    breezedancer
  • Python单元测试框架覆盖率-Coverage

    覆盖率是用来衡量单元测试对功能代码的测试情况,通过统计单元测试中对功能代码中行、分支、类等模拟场景数量,来量化说明测试的充分度。

    Criss@陈磊
  • 干货 | 携程酒店360度Java质量控制

    作者简介 王幸福,携程酒店研发部资深测试开发工程师,负责酒店测试框架和测试工具的研发。技术狂热者,热衷于开源项目,利用创新去提高测试工作的效率。 一、前言 携程...

    携程技术
  • 什么是代码中的魔鬼数字,如何解决?

    魔鬼数字主要影响了代码可读性,读者看到的数字无法理解其含义,从而难以理解程序的意图。当程序中出现的魔鬼数字过多时,代码的可维护性将会急剧下降,代码变得难以修改,...

    ZhangXianSheng
  • 【Web技术】981- 手摸手之前端覆盖率实践

    https://juejin.cn/post/6959147556295180324

    pingan8787
  • [十八]Cracking Digital VLSI Verification Interview

    亚稳态是一种电路状态,在电路正常工作所需的时间内,电路无法稳定在的“ 0”或“ 1”逻辑电平的状态。通常在建立时间和保持时间违例时发生。

    空白的贝塔
  • Python 技术篇-如何查看文本用什么类型的编码,文本编码查看方法

    文件主要分为二进制文件和文本文件这两种,看你想要查看哪种文件的编码,如果是文本文件的话,open 函数里的就要用 r,二进制文件用的是 rb,别搞错哦!

    小蓝枣
  • 单元测试最佳实践:如何最大程度地利用测试自动化

    单元测试是一种众所周知的做法,但是还有很多改进的空间!在这篇文章中,最有效的单元测试最佳实践,包括一路最大化自动化工具的方法。我们还将讨论代码覆盖率、模拟...

    小老鼠
  • JAVA代码覆盖率工具JaCoCo-踩坑篇

    JAVA代码覆盖率工具JaCoCo-原理篇和JAVA代码覆盖率工具JaCoCo-实践篇已经给大家介绍过了,本篇为踩坑篇,这里的话题不是说明JaCoCo有什么问题...

    腾讯移动品质中心TMQ
  • 剧透:2020国内软件质量调查部分结果

    ? 软件质量报道公众号 联合 腾讯WeTest、ThoughtWorks社区发起 “2020年国内软件质量调查” 已经启动20天了,还有最后两天就结束了,...

    WeTest质量开放平台团队
  • 如何知道我们的E2E测试覆盖率?

    在单元测试中,很容易知道已经覆盖了哪些代码区域。但是我们能及时知道API调用的动态范围吗?我们一直在思考,既然已经编写了许多 E2E 测试用例,但是我们应该继续...

    ThoughtWorks

扫码关注云+社区

领取腾讯云代金券