文章目录

  • 前言
  • 一、覆盖率
    • 1、覆盖率选项
  • 二、覆盖率查看
    • 1、dve查看
    • 2、verdi查看
    • 3、urg查看
  • 三、合并覆盖率urg

前言

2023.3.20 继续学习跑回归测试,以及查看覆盖率


一、覆盖率

有两类覆盖率

  • 代码覆盖率
  • 功能覆盖率

对于code coverage,在编译仿真需要加额外参数。对于function coverage,编译和仿真不需要加额外参数。

编译如果带有coverage选项,会在编译目录下,生成simv.vdb目录,里面包含了coverage model

1、覆盖率选项

使用的较多的是-cm, -cm_name, -cm_dir 这三个选项编译和仿真过程都要加上。

-cm:指定使能覆盖率的类型,包括:line、cond、fsm、tgl、path、branch和assert

-cm line+cond+fsm+tgl+branch+assert

-cm_count:在统计是否覆盖的基础上,进一步统计覆盖的次数
-cm_dir :指定覆盖率统计结果的存放路径,默认是simv.vdb,更改默认的coverage model生成的目录
-cm_log:指定保存覆盖率结果的文本文件的名称
-cm obc:使能可观察覆盖率的编译
-cm_name:修改默认的test目录。对于每一个test,生成的coverage数据,默认是在simv.vdb/snps/coverage/db/testdata/test目录下。比如-cm_name load_test,那么coverage数据,就会生成在simv.vdb/snps/coverage/db/testdata/load_test目录下。


-cm_hier:指定覆盖率统计的范围,可以指定是module名、层次名和源文件等。0表示统计所有,1表示只统计当前层,2表示统计当前层和下一层,之后依次类推。
-cm_tgl mda:为Verilog 2001和SystemVerilog未打包的多维数组启用翻转覆盖
-cm_noconst:告诉VCS不要监视由于信号始终为1或0值而永远无法满足的条件或永远无法执行的线路
-cm_noseqconst:(没找到啥意思)
-cm_cond:由一个或多个参数指定的修改后的条件覆盖率

  • basic:只有逻辑条件,没有多个条件
  • std:仅逻辑和敏感条件
  • allops:逻辑和非逻辑条件
  • full:完整的逻辑和非逻辑,多种情况,不敏感条件
  • event:事件控制的敏感列表位置中的信号都是条件
  • anywidth:启用需要超过32位的条件
  • for:如果启用for循环,则启用条件
  • tf:在用户定义的任务和功能中启用条件

-cm_fsmcfg :指定状态机覆盖率配置文件
-cm_line contassign:收集行覆盖率,并且忽略连续赋值语句
-cm_cond nocasedef:在统计case语句的条件覆盖率时,不考虑default条件未达到的情况

在编译代码的时候加上这些覆盖率选项
-cm line+cond+fsm+tgl+branch
-cm_linecontassign
-cm_cond allops+anywidth+event
-cm_noseqconst
-debug_all

参考链接:
VCS命令详解(一):编译命令
VCS 编译仿真方法总结

二、覆盖率查看

1、dve查看

dve -full64 -cov -dir simv.vdb

2、verdi查看

verdi -cov -covdir *.vdb/ &
verdi -cov -cov_dir simv.vdb

问题:不知道为啥没有license,目前只能用dve去看覆盖率,could not checkout verdi coverage license (未解决)
在eetop看到一个解决方法是,在src中添加license feature “VerdiCoverage”,再去生成license,我尝试过,dat文件里面有这个feature了,但是还是用verdi查看不了覆盖率

3、urg查看

在当前目录下,会生成 urgReport 目录,里面有生成的html文件,使用浏览器即可查看这些文件。

urg -dir simv.vdb
firefox urgReport  //表示用浏览器打开覆盖率,进行查看

三、合并覆盖率urg

urg:Unified Report Generator,将coverage数据转换为html格式
-dir:指定需要拿到的db的hier
-dbname:指定输出的merge db的hier
-elfile:指定exclusive的file,这样更好计算coverage
-elfilelist:忽略中每一个.el文件
-noreport:不输出最终的report,只是merge db
-report:输出report
-format text/both:指定report的输出格式,both意思是两种格式都输出
-matric [line,cond,fsm,tgl,branch,assert]:执行计算的coverage类型
-parallel:并行merge
-full64:以64bit的程序进行merge,如果是64位,也可以不加这个选项
-warn none:忽略warning信息
-metric:+line等等,意思位提取特定的coverage

这行代码的功能是,从当前目录下查找vdb文件,将其覆盖率进行合并,合并后的文件叫做merged.vdb,且是并行merge的,最后输出report,文件名叫做urgReport,里面有html格式的覆盖率。

urg -full64 -dir *.vdb -dbname merged -parallel -report urgReport

假如修改了覆盖率相关的代码,如新添加了coverpoint等等,希望把新收集的和以前的merge到一起,可以使用选项-flex_merge union,不希望合并就使用-flex_merge drop

urg -full64 -flex_merge union -dbname <merge_coverage_name>.vdb  -dir  simv.vdb &urg -full64 -flex_merge drop  -dbname <merge_coverage_name>.vdb  -dir  simv.vdb &

vcs 覆盖率收集2——覆盖率选项 + 合并覆盖率相关推荐

  1. jacoco收集探针结果时机_Jacoco覆盖率使用总结

    tags: Java 前阵子使用 Jacoco 进行代码覆盖率测试,由于项目特殊遇到了不少坑,网上搜到的教程感觉也不够全面,特此记录. 所用到的工具软件的版本信息如下 Jacoco 版本:0.8.0 ...

  2. Cadence IMC(Integrate Metrics Cener) tools 覆盖率收集配置

    Cadence以前覆盖率收集的工具是Incisive Comprehensive Coverage (ICC),现在整合到IMC中了. 使用IMC首先要加载 mdv(MDVMAIN)模块 或者加载vm ...

  3. nodejs 获取文件路径_Qunar 酒店 Nodejs 覆盖率收集实践

    作者介绍 马涛,2013 年加入去哪儿网技术团队,目前在目的地事业部,负责 H5.小程序类应用开发.个人对移动端技术领域和前后端工程化有浓厚兴趣,勇于探索实践追求极致. 概述 一般来讲我们是通过写单元 ...

  4. 如何成为一名高级数字 IC 设计工程师(6-5)数字 IC 验证篇:覆盖率收集

    一.覆盖率定义 覆盖率,指的是验证工作中不可或缺的一个重要环节,通过覆盖率驱动的方式,不仅可以量化验证的进度,还能够保证验证的完备性: CDV,指的是覆盖率驱动验证. 二.覆盖率类型 代码覆盖率:UT ...

  5. SonarQube +Jenkins +JaCoCo 实现Java单元测试,单节点集成覆盖率测试,集群集成覆盖率测试(三)~集成测试篇

    写在最前: 本文主要讲解SonarQube实现对Java代码的集成覆盖率扫描,代码质量扫描. 其中,集成覆盖率分为单节点,集群两种模式,文内都有详解. 参考链接: 环境版本和安装 SonarQube单 ...

  6. testng查看覆盖率_使用Cobertura统计单元测试覆盖率

    学习Cobertura的起因是前天晚上媳妇儿(终于有出场机会了)突然问我有没有用过一些可以统计单元测试覆盖率的工具,答曰:木有...感觉比较丢人,于是昨天晚上研究了一把,今天顺便share一下. 因为 ...

  7. 覆盖率选项,覆盖率分析

    covergroup选项提供不同的覆盖率选项,来计算覆盖率. 单独列出每个covergroup实例的覆盖率 一个covergroup可能会被多个地方例化使用,默认情况下sv会将所有的实例的覆盖率合并到 ...

  8. 生成jacoco报告_测开技能之如何利用ant jacoco 合并覆盖率报告

    在之前的文章,利用JaCoCo统计接口测试中代码覆盖率  和 ant+Jacoco 统计tomcat远程部署后项目接口自动化测试或者功能测试代码覆盖率  文章中介绍了如何获取测试代码的覆盖率,但是我们 ...

  9. java代码实现单元测试jacoco覆盖率收集生成多模块聚合报告

    文章目录 背景 一.准备工作 - 生成exec文件 二.准备工作 - 引入依赖 三.利用jenkins-jacoco插件源码收集覆盖率结果 四.生成jacoco报告文件,聚合多模块 附赠相关知识点 背 ...

最新文章

  1. JavaScript 返回多个值
  2. 回文子串—leetcode647
  3. 监控工具—Prometheus—安装部署
  4. P1372 又是毕业季I
  5. RabbitMQ镜像策略set_policy
  6. Java 产生随机数:Java 中产生随机数的方法及应用汇总
  7. 一道滴滴的产品面试题
  8. 吴恩达深度学习CNN作业:Convolutional Neural Networks: Step by Step
  9. mysql optimize 用法_mysql中OPTIMIZE TABLE的作用
  10. Jeff Dean的神话
  11. 大数据和云计算的区别
  12. 五大领域总目标指南_五大领域总目标记忆口诀
  13. 华三模拟器的错误使用方法
  14. 汉字风格迁移篇---个人手写体汉字字体的学习与生成*
  15. sorry, the application has stop excepted
  16. redis下载(windows版)
  17. 字节跳动核心竞争力到底是什么?
  18. 局域网的基本概念与体系结构
  19. P1719 最大加权矩形(最大连续子段和+矩形二维降一维+前缀和)
  20. 求超定方程组最小二乘解的三种方法

热门文章

  1. bison flex
  2. 【基金学习】学习基本概念
  3. 2010考研数学二第(15)题——导数应用:单调区间与极值
  4. windows 文件夹属性全部都为只读。怎么解决?
  5. ORACLE EXP命令
  6. LDAP应用:OpenLDAP集成到Jumpserver
  7. 计算机wps系统的造字程序在哪里,Windows10系统自带造字程序在哪
  8. ElasticSearch 全文搜索引擎;ES 搜索引擎
  9. node.js -v15.0.0下载安装配置教程笔记
  10. 在校大学生学业预警系统java_关于学业预警系统上线使用的通知