SystemVerilog学习之路(8)— QuestaSim里覆盖率的查看

2023-05-16

SystemVerilog学习之路(8)— QuestaSim里覆盖率的查看

一、前言

“覆盖率”是衡量设计验证完成程度的一个通用词,随着测试逐步覆盖各种合理的组合,仿真过程会慢慢勾画出你的设计情况。覆盖率工具会在仿真过程中收集信息,然后进行后续处理并得到覆盖率报告。

二、创建工程

代码链接在文章末尾,我们新建一个工程,将代码添加到工程中,如下所示
在这里插入图片描述

三、编译设置

按住【Ctrl】键,点选中所有的设计文件及verilog文件,然后右键点击选择【Compile】->【Compile Properties…】
在这里插入图片描述
点开【Coverage】即覆盖率一栏,点击选中如下项目,然后点击【OK】即可
在这里插入图片描述接下来调整编译顺序,让设计代码先编译,让底层代码先编译,在空白处点击右键,选择【Compile】->【Compile Order…】
在这里插入图片描述

我们可以让其自动识别一下,点击【Auto Generate】
在这里插入图片描述
然后等待其自动识别完成
在这里插入图片描述
然后我们可以看到其并不能完全自动识别,所以我们需要进行调整,如下所示,然后点击【OK】
在这里插入图片描述
接下来就可以对其全部编译了
在这里插入图片描述
然后可以看到其全编译成功,由于我们刚才对设计文件(Verilog文件)选中了代码覆盖率选项,所以这次在编译DUT文件时会生成代码覆盖率的模型。
在这里插入图片描述

四、开始仿真

使用如下命令开始编译

vsim -i -novopt -classdebug -solvefaildebug -coverage -coverstore ./mti_covdb -testname mcdf_full_random -sv_seed random +TESTNAME=mcdf_full_random_test work.tb

其中部分编译选项如下所示

  • -coverage: 会在仿真时产生代码覆盖率数据
  • -coverstore ./mti_covdb: 在当前的mti_covdb文件夹下生成一个覆盖率数据文件
  • -testname mcdf_full_random: 本次仿真的名称,后续生成的覆盖率数据文件名为{testname}_{Sv_Seed}
  • +TESTNAME=mcdf_full_random_test:TESTNAME参数,我们会在tb.sv文件中用到,作为传入参数选择不同的测试用例

编译完成后如下所示,并获得随机化的种子975244233,这样我们得到的覆盖率数据文件为mcdf_full_random_975244233.data
在这里插入图片描述
使用run -all命令让其跑完整个测试,然后会弹出询问是否结束测试,我们选择【否】,因为选择是会退出软件,这不是我们想要的

接着我们点击【Simulate】->【End Simulation】来手动结束仿真,因为结束仿真才能得到覆盖率数据文件
在这里插入图片描述
这时候我们就可以看到在【mti_covdb】文件夹下有一个mcdf_full_random_975244233.data覆盖率数据文件
在这里插入图片描述

五、查看覆盖率

因为我们已经关闭了仿真,所以没有当前的覆盖率了,我们再次运行仿真,仿真完成后我们不关闭,打开【Analysis】窗口可以看到当前的代码覆盖情况
在这里插入图片描述
如果没有自动打开【Analysis】窗口,我们点击【View】->【Coverage】->【Code Coverage Analysis】就可以打开【Analysis】窗口了
在这里插入图片描述
点击打开【Covergroups】窗口即可看到当前的覆盖率
在这里插入图片描述
同样的,如果没有自动打开【Covergroups】窗口,我们点击【View】->【Coverage】->【【Covergroups】就可以打开【Covergroups】窗口了
在这里插入图片描述

六、合并覆盖率

我们可以多跑几次仿真或者使用不同的测试用例跑仿真,每一次仿真都会得到一个覆盖率文件,最后我们可以将这些覆盖率都合并,输入如下代码

vcover merge -out merged.ucdb ./mti_covdb

其中merged.ucdb表示合并后的文件名,./mti_covdb表示需要合并的文件的存放路径,执行成功如下所示
在这里插入图片描述
接下来我们直接用仿真器即可打开这个合并后的UCDB覆盖率数据库,点击【File】->【Open…】
在这里插入图片描述
选择UCDB文件打开
在这里插入图片描述
然后同样的,打开【Analysis】窗口可以看到代码覆盖情况
在这里插入图片描述
打开【Covergroups】窗口可看到覆盖率
在这里插入图片描述
另外我们也可以查看单个覆盖率文件的,点击【View】->【Verification Management】->【Browser】打开【Browser】窗口

然后再其窗口中右击选择【Add File…】
在这里插入图片描述
将【merged】添加进来可以看到其下的每个覆盖率文件
在这里插入图片描述

七、生成HTML报告

点击【Tools】->【Coverage Report】->【HTML…】
在这里插入图片描述
然后勾选如下所示选项
在这里插入图片描述

然后就会在浏览器打开如下所示的HTML文件了
在这里插入图片描述

八、分析覆盖率

我们可以看到覆盖率类型中【Toggles】是最低的
在这里插入图片描述
然后我们点击【List of Design Units included in report…】

在这里插入图片描述
我们可以进一步看到【Toggles】覆盖率低可以细分至【ctrl_regs】
在这里插入图片描述

然后我们点击【Design】选项,选择到【ctrl_reg_inst】,点击【Toggles】进入详细
在这里插入图片描述
进入后点击【Show Missing】可以看到如下所示
在这里插入图片描述

九、设置忽略选项

重新回到QuestaSim软件,打开【Analysis】窗口,选中【ctrl_regs_inst】打开
在这里插入图片描述
然后将关注点转为【Toggle】
在这里插入图片描述
可以看到,【cmd_data_reg】的5-31位都是没有覆盖到的,而且实际的设计上【cmd_data_reg】的6-31位就是没有使用的,我们可在覆盖率分析时将其忽略,如下所示,选中6-31位,右键选中【Exclude with Comment…】将其忽略掉
在这里插入图片描述
然后输入提交信息【reasonable for register value boundary limit】表示该忽略是合理的
在这里插入图片描述
接下来我们再次生成一次网页,可以看到覆盖率是上升了的
在这里插入图片描述

十、附录

代码下载:【lab5 】【mcdf 】

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SystemVerilog学习之路(8)— QuestaSim里覆盖率的查看 的相关文章

随机推荐

  • 实用工具合集

    工作中遇到的比较好用的网站 xff0c 记录一下 数学 1 3D Rotation converter 这是一个欧拉角 xff0c 旋转矩阵 xff0c 旋转向量相互转换的网站 2 坐标系 实时显示函数的一个网站 xff0c 功能强大 xf
  • Opencv3.2安装opencv_contrib-3.2

    在open3 x的版本中 xff0c 图像特征提取的算法并未在源码中 xff0c 需要从OpenCV contrib 3 2编译安装 xff0c 下面就是记录一下编译安装的过程 下载 opencv contrib 3 2下载地址 编译 cm
  • vector的成员函数解析

    vector是线性容器 它的元素严格的按照线性序列排序 和动态数组很相似 和数组一样 它的元素存储在一块连续的存储空间中 这也意味着我们不仅可以使用迭代器 iterator 访问元素 还可以使用指针的偏移方式访问 和常规数组不一样的是 ve
  • ROS编程遇到的错误小结

    1 终端出现MD5值不匹配问题 这种情况 xff0c 是由于通信双方的数据内容不同 持续更新
  • HTML 和 XML 数据的分析与解析

    引言 目前在 Java 中 xff0c 解析 HTML 工具主要包含以下几种 xff1a jsoup xff1a 强大的 HTML 解析工具 xff0c 支持以 jQuery 中 CSS Selector 的方式提取 HTML 中的元素 x
  • 【掌控板】0、基础教程

    环境搭建 软件 xff1a mind 43 硬件 xff1a 掌控板2 0 mind 43 使用界面 项目 新建项目 连接掌控板和pc 我的显示有问题 xff0c 是因为我原先代码出错了 xff0c 正常情况下会显示掌控板 驱动更新好了在m
  • 方波的产生——运算放大器LM324产生方波

    方波的产生 运算放大器LM324产生方波 双电源供电 xff08 1 xff09 搭建振荡电路如图所示 xff0c 先采用双电源供电讲解 xff0c 需要两个滑动变阻器RP1和RP2 xff0c 一个固定电阻R1和一个电容C1 xff0c
  • Android Studio开发手机APP(一)

    Day1 新建工程 软件安装可以参考Android第一天 安装Android Studio 3 5 一 打开Android Studio xff0c 新建工程 xff08 Android Studio版本 xff1a Version 3 5
  • 在Win10上使用Linux子系统和VSCode搭建C语言开发环境

    在Win10上使用Linux子系统和VSCode搭建C语言开发环境 一 启动Windows下的Linux子系统 打开控制面板 xff0c 点击卸载程序 点击右侧的 启用和关闭Windows功能 找到适用于Linux的Windows子系统 x
  • C语言网络编程(3)— 通过DNS连接到百度

    C语言网络编程 xff08 3 xff09 通过DNS连接到百度 一 gethostbyname 函数 我们现在认知一台计算机主机通常采用直观可读的名字 例如百度我们会记住 www baidu com 而不是他的IP地址 对于大多数的应用程
  • C语言网络编程(4)— 通过DNS连接到百度-优化

    C语言网络编程 xff08 4 xff09 通过DNS连接到百度 优化 一 gethostbyname和getaddrinfo 之前我们使用gethostbyname 函数完成了主机名到地址的解析 xff0c 但这个函数仅仅支持IPv4 x
  • C语言网络编程(5)— MQTT通信

    C语言网络编程 xff08 5 xff09 MQTT通信 一 下载mqtt C语言库 首先我们要下载支持MQTT的C语言库 xff0c 直接使用git命令拉取 xff1a span class token function git span
  • 转:DSP28335使用FIFO的串口中断总结

    版权声明 xff1a 本文为CSDN博主 E ROAD BY U 的原创文章 xff0c 遵循CC 4 0 BY SA版权协议 xff0c 转载请附上原文出处链接及本声明 原文链接 xff1a https blog csdn net E R
  • ESP8266 RTOS2.0学习之旅(4)— UDP通信和TCP客户端通信

    UDP通信和TCP客户端通信 一 前言 在之前的基础上开始 xff1a ESP8266 RTOS学习之旅 xff08 3 xff09 连接到WiFi 在user文件夹下新建一个文件app main c xff0c 然后再wifi连接成功后创
  • Cadence 17.2 软件使用(1)— 软件安装

    Cadence 17 2 软件使用 xff08 1 xff09 软件安装 一 软件介绍 参考自 xff1a Cadence17 2软件安装与介绍 Cadence 目前使用量比较大的版本是16 6 17 2 Cadence在2019年年底也推
  • 小熊派gd32f303学习之旅(9)— 使用硬件I2C读写EEPROM

    小熊派gd32f303学习之旅 xff08 9 xff09 使用硬件I2C读写EEPROM 一 前言 在上一篇中 xff0c 我们使用软件模拟IIC对AT24C02进行了读写 xff0c 通过查看GD32F30X的参考手册可以知道 xff0
  • AD学习之旅(1)— Altium Designer 20 软件下载与安装

    AD学习之旅 xff08 1 xff09 Altium Designer 20 软件下载与安装 一 前言 本次软件安装参考自 xff1a Altium Designer 20 AD20软件安装详解教程 凡亿 Altium公司推荐的系统配置如
  • AD学习之旅(1)— Altium Designer 16 软件下载与安装

    AD学习之旅 xff08 1 xff09 Altium Designer 16 软件下载与安装 一 前言 Altium Designer是目前EDA行业中使用最方便 xff0c 操作最快捷 xff0c 人性化界面最好的辅助工具 本次软件安装
  • AD学习之旅(16)— 差分线规则的设置及走线

    AD学习之旅 xff08 16 xff09 差分线规则的设置及走线 一 前言 差分线的定义 xff1a 两条存在耦合且平行等长的两根传输线 xff0c 用来传输相位差180度的信号 差分线从理论上说 xff0c 可以是任意两根普通的传输线
  • SystemVerilog学习之路(8)— QuestaSim里覆盖率的查看

    SystemVerilog学习之路 xff08 8 xff09 QuestaSim里覆盖率的查看 一 前言 覆盖率 是衡量设计验证完成程度的一个通用词 xff0c 随着测试逐步覆盖各种合理的组合 xff0c 仿真过程会慢慢勾画出你的设计情况