前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >代码覆盖率是什么?如何查看?

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

作者头像
根究FPGA
发布2020-08-10 10:21:07
3.4K0
发布2020-08-10 10:21:07
举报
文章被收录于专栏:根究FPGA根究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 在统计时需要的指令为:

代码语言:javascript
复制
dve -covdir simv.vdb &

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

首先是编译:

代码语言:javascript
复制
vcs ../tb/fsm_top.v ..tb/hello.c ../rtl/fsm_moore.v -debug_all -cm line+tgl+fsm+cond+branch -timescale=1ns/1ns

然后是仿真:

代码语言:javascript
复制
./simv -cm line+tgl+fsm+cond+branch

最后查看覆盖率:

代码语言:javascript
复制
dve -covdir simv.vdb &

演 示

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 根究FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档