VCS 覆盖率收集

2024-02-29 20:52
文章标签 收集 覆盖率 vcs

本文主要是介绍VCS 覆盖率收集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 覆盖率

        随着设计越来越复杂,采用受约束的随机测试方法对它们进行全面验证,它利用随机化产生一套定向测试向量集。此时就需要使用覆盖率来衡量测试进行的程度。

1.1 功能覆盖率

        衡量设计的是实现情况,工具自动帮你完成覆盖率的收集,这部分的数据的收集可以通过VCS功能设置一些选项完成。

        它主要包括如下三种:

  • 行覆盖率(line): 多少号代码被执行过。
  • 路径覆盖率:在穿过代码和表达式的路径中有那些已经被执行过。
  • 反转覆盖率(toggle):代码中寄存器变量是否发生1,0之间对的反转。
  • 状态机覆盖率(FSM):代码中的状态机对的状态的哪些已经被访问过。

首要的选择式使用更多的种子来运行现有的测试程序,其次是建立新的约束。只有在确实需要的时候才会创建定向测试

1.2 断言覆盖率

        断言是用于一次性或在一段时间对一个或多个设计信号在逻辑或者时序上的声明代码。可以使用cover property 来测量这些关系的信号值或者状态是否发生变化。

1.3 功能覆盖率

        功能覆盖率与设计意图紧密相连,衡量哪些设计特征已经被测试程序测试过的一个指标。如果设计者漏掉某些功能的开发,代码覆盖率即使达到100%也不能发现这个错误,但是功能覆盖率可以。

2 使用VCS完成覆盖率收集

        通常我们对项目只编译一次,然后使用不同seed进行多次仿真,每一个case都会产生一个回归结果,然后在对所有的case的回归结果进行收集。

2.1 仅需要在VCS命令行下添加一些option便可以产生覆盖率信息。

vcs -cm line+tgl \-cm_dir xxx_compile_path/xxx.vdb \-f xxx_path/xxx.fl \-l xxx_compile_path/xxx_compile.log-cm line+tgl :表示收集代码行覆盖率和翻转覆盖率,除此之外还有cond|fsm|branch|assert
-cm_dir xxx_compile_path/xxx.vdb:指定生成的编译设计及环境信息的路径和名称
-f xxx_path/xxx.fl:指定吃进去的设计和验证环境文件列表
-l xxx_compile_path/xxx_compile.log: 指定生成的编译日志的路径和名称

        当有多个测试用例,且如果同一个case 跑不同的seed的覆盖率信息需要单独保存,需要-cm_name 和 -cm_test 编译选项的搭配使用。默认的覆盖率信息的保存路径是./simv.vdb/snps/coverage/db/testdata/xxx_test_name,通过搭配使用便可以指定其覆盖率信息的具体路径。

simv -cm line+tgl \-cm_dir xxx_compile_path/xxx_testcase_path/xxx.vdb \-cm_name xxx_test_name \-cm_test xxx_compile_path/xxx_testcase_path/xxx_test_name \-l xxx_compile_path/xxx_testcase_path/sim.log-cm line+tgl :表示收集代码行覆盖率和反转覆盖率
-cm_dir xxx_compile_path/xxx_testcase_path/xxx.vdb:指定生成的仿真覆盖率信息的路径和名称
-cm_name xxx_test_name :用于指定覆盖率信息在simv.vdb文件中的所在目录名称
-cm_test xxx_compile_path/xxx_testcase_path/xxx_test_name :类似-cm_name,后面会解释
-l xxx_compile_path/xxx_testcase_path/sim.log: 指定生成的仿真日志的路径和名称

2.2 合并覆盖率 urg

        接着上面,如果要合并一次回归仿真的覆盖率,需要使用如下命令进行合并,可以看到这里将一次回归中的多个仿真用例下的xxx.vdb进行了合并,最终得到了合并后的覆盖率信息simv_merge.vdb.

urg -dir xxx_compile_path/xxx.vdb \-dir xxx_compile_path/xxx_testcase_path1/xxx.vdb \-dir xxx_compile_path/xxx_testcase_path2/xxx.vdb \...-dir xxx_compile_path/xxx_testcase_pathN/xxx.vdb \-dbname simv_merge.vdb

如果测试用例很多,也可以将这些测试用例覆盖率信息路径整合到filelist,并通过如下命令合并:

urg -f xxx_path/xxx_vdb.fl \-dbname simv_merge.vdb-noreport # 不产生urgReport的报告

firefox urgReport //表示用浏览器打开覆盖率,进行查看

2.3 查看覆盖率

dev 工具的查看命令是

dve -cov -dir simv_merge.vdb &

verdi工具的查看命令

verdi -cov -covdir simv_merge.vd

     https://zhuanlan.zhihu.com/p/620471082icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/620471082

https://www.cnblogs.com/Alfred-HOO/articles/17589481.htmlicon-default.png?t=N7T8https://www.cnblogs.com/Alfred-HOO/articles/17589481.html

这篇关于VCS 覆盖率收集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/760045

相关文章

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

理解java虚拟机内存收集

学习《深入理解Java虚拟机》时个人的理解笔记 1、为什么要去了解垃圾收集和内存回收技术? 当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就必须对这些“自动化”的技术实施必要的监控和调节。 2、“哲学三问”内存收集 what?when?how? 那些内存需要回收?什么时候回收?如何回收? 这是一个整体的问题,确定了什么状态的内存可以

Linux使用收集--持续更新

linux查看目录文件数》》》 查看当前目录大小: [root@xker.com]# du -sh 查看指定目录大小: [root@xker.com]# du -sh /www/xker.com 查看当前目录文件总数: [root@xker.com]# find . -type f |wc -l 查看指定目录文件总数: [root@xker.com]# fi

后台开发 知识点收集

原知识点总结连接,由于有些问题比较熟悉,所以就没有在自己文章中再列出来了 计算机网络 tcp/udp区别http状态码http协议报头字段osi模型、tcp/ip模型以及各层对应的协议session机制、cookie机制tcp三次握手,四次挥手打开网页到页面显示之间的过程https和http的区别post和get的区别ip子网划分两个网络MTU不同时如何通信 数据库 常见问题mysql的两

prometheus删除指定metrics下收集的值

Prometheus 删除指定 Metric 官方文档: ​ - https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis Prometheus 的管理 API 接口,官方到现在一共提供了三个接口,对应的分别是快照功能、数据删除功能、数据清理功能,想要使用 API 需要先添加启动参数 --web.en

复杂SQL集合(不断收集中)

1.一道SQL语句面试题,关于group by 表内容: 2005-05-09 胜 2005-05-09 胜 2005-05-09 负 2005-05-09 负 2005-05-10 胜 2005-05-10 负 2005-05-10 负 如果要生成下列结果, 该如何写sql语句?             胜 负 2005-05-09 2 2 2005-05-10 1 2 --------

ELK系列之四---如何通过Filebeat和Logstash优化K8S集群的日志收集和展示

前 言 上一篇文章《日志不再乱: 如何使用Logstash进行高效日志收集与存储》介绍了使用ELK收集通用应用的日志,在目前大多应用都已运行在K8S集群上的环境,需要考虑怎么收集K8S上的日志,本篇就介绍一下如何使用现有的ELK平台收集K8S集群上POD的日志。 K8S日志文件说明 一般情况下,容器中的日志在输出到标准输出(stdout)时,会以.log的命名方式保存在/var/log/po

97.WEB渗透测试-信息收集-Google语法(11)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:96.WEB渗透测试-信息收集-Google语法(10) 2 、找上传类漏洞地址: • site:xxx.com inurl:file 打开搜索引擎搜索 site:qimai.cn inurl:file 搜索不到就是不存在 • site:xxx.com in

收集几种解决:The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or t

1、web项目出现如上问题,可能是版本问题: JSTL 1.0 的声明是: <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core " %> JSTL1.1 的声明是: <%@ taglib prefix="c" uri=http://Java.sun.com/jsp/jstl/core %> 目前项目版本为Java