路科验证MCDF_svlab5笔记

收集覆盖率的软件操作

一、编译

在编译过程中,需要对于设计相关的文件设置额外的覆盖率编译选项,目的是通过工具自动统计你选中的代码覆盖率类型(功能覆盖率的收集需要写额外的代码)。注意,我们的关注点在于执行了设计中的多少代码,而不是测试平台,所以不需要对测试相关的文件进行覆盖率编译选项的设置。

1、只选中与设计相关的文件

在这里插入图片描述

2、点击右键,选择compile->compile properties,在弹出设置栏的coverage一栏中,如图选择以下选项,然后点击OK。

在这里插入图片描述

3、完成所有文件的编译“Compile All”。这一步将在编译DUT文件时生成代码覆盖率的模型。

二、仿真

在仿真窗口中,输入如下命令

vsim -i -classdebug -solvefaildebug -coverage -coverstore D:/Questasim64_10.6c/win64/project/svlab5/coverage -testname mcdf_full_random_test -sv_seed random +TESTNAME=mcdf_full_random_test -l mcdf_full_random_test.log work.tb
  • -coverage:添加这个命令能在仿真时产生代码覆盖率的数据。(功能覆盖率会默认生成,和此选项无关)
  • -coverstore COVERAGE_STORAGE_PATH:此命令用来在仿真结束时生成覆盖率数据并存储到你设定的COVERAGE_STORAGE_PATH位置。我自己是设在了下面这个位置:D:/Questasim64_10.6c/win64/project/svlab5/coverage。注意不要有中文
  • -testname TESTNAME:这个选项是你需要添加本次仿真的test名称,可以使用和+TESTNAME选项一样的test名称。仿真结束后,会在COVERAGE_STORAGE_PATH下产生一个覆盖率数据文件“{TESTNAME}_{SV_SEED}.data”。由于仿真时传入的种子是随机值,所以每次提交测试结束后,都会产生一个独一无二的覆盖率数据。

执行"run -all"。执行完后先不要退出仿真,可以利用仿真器查看代码和功能覆盖率。

  • 代码覆盖率:通过View->Coverage->Code Coverage Analysis,点击新添加的窗口,然后在sim窗口下选择dut下的某一个模块,查看代码的执行情况,如下图
    在这里插入图片描述
  • 功能覆盖率:通过View->Coverage->Covergroups打开窗口即可查看,如下图
    在这里插入图片描述
    执行"quit -sim"命令之后,可以发现文件下中多了一个data文件

三、合并覆盖率

仿真不同的测试,或者多次仿真同一个测试后,会产生多个.data覆盖率数据文件,我们就可以进行合并覆盖率的操作。
在这里插入图片描述
执行下述命令,会看到上述4个覆盖率文件被合并了:

vcover merge -out merged_coverage.ucdb D:/Questasim64_10.6c/win64/project/svlab5/coverage 

此处的地址就是之前设定.data文件放置的位置。
在这里插入图片描述

打开合并后的覆盖率文件的两种方式:
1、通过File->Open,选择UCDB Files格式即可看到合并后的覆盖率文件。
在这里插入图片描述

2、点击View->Verification Management->Browser,在打开的Browser窗口右击,选择Add File,将merged_coverage.ucdb添加进来即可。双击merged_coverage.ucdb即可打开合并后的覆盖率数据。
在这里插入图片描述

可以发现合并后的覆盖率比单次的覆盖率要高。
在这里插入图片描述

四、分析覆盖率

可以选择Tools->Coverage Report->HTML生成报告
下面这些选项就选择你关注的就行。
在这里插入图片描述

在这里插入图片描述
通过分析覆盖率,需要修改约束或者创建新的测试最终来达到验证完备性的要求。

举例:
比如我们在下图中发现翻转覆盖率只有15.71%,特别低。
在这里插入图片描述
于是我们如下图选择Toggle,可以看到没有翻转的位。其中,bit(31:6)不翻转是正常的,因为在描述文档中,读写寄存器的bit(31:6)是保留位,无法写入的(只读寄存器的bit(7:0)是可变的,bit(31:8)是保留位,复位值为0,也不翻转,那bit(8:7)这两位咋处理?待解决),
在这里插入图片描述
所以我们可以选中这几位,如下图操作:
在这里插入图片描述
写入你排除的原因,点击ok
在这里插入图片描述
结果如下:
在这里插入图片描述
再次通过Tools->Coverage Report->HTML生成报告,可以发现翻转覆盖率从原来的15.71%变成了现在的61.11%。
在这里插入图片描述
而被我们手动排除的部分可以通过Tools->Coverage Report->Exclusions来查看
在这里插入图片描述

代码细品

A、

参考:

SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注。 目录如下: 第一章 SV环境构建常识 1 1.1 数据类型 1 四、二值逻辑 4 定宽数组 9 foreach 13 动态数组 16 队列 19 关联数组 21 枚举类型 23 字符串 25 1.2 过程块和方法 27 initial和always 30 function逻辑电路 33 task时序电路 35 动态 静态变量 39 1.3 设计例化和连接 45 第二章 验证的方法 393 动态仿真 395 静态检查 397 虚拟模型 403 硬件加速 405 效能验证 408 性能验证 410 第三章 SV组件实现 99 3.1 接口 100 什么是interface 101 接口的优势 108 3.2 采样和数据驱动 112 竞争问题 113 接口中的时序块clocking 123 利于clocking的驱动 133 3.3 测试的开始和结束 136 仿真开始 139 program隐式结束 143 program显式结束 145 软件域program 147 3.4 调试方法 150 第四章 验证的计划 166 4.1 计划概述 166 4.2 计划的内容 173 4.3 计划的实现 185 4.4 计划的进程评估 194 第五章 验证的管理 277 6.1 验证的周期检查 277 6.2 管理三要素 291 6.3 验证的收敛 303 6.4 问题追踪 314 6.5 团队建设 321 6.6 验证的专业化 330 第六章 验证平台的结构 48 2.1 测试平台 49 2.2 硬件设计描述 55 MCDF接口描述 58 MCDF接口时序 62 MCDF寄存器描述 65 2.3 激励发生器 67 channel initiator 72 register initiator 73 2.4 监测器 74 2.5 比较器 81 2.6 验证结构 95 第七章 激励发生封装:类 209 5.1 概述 209 5.2 类的成员 233 5.3 类的继承 245 三种类型权限 protected/local/public 247 this super 253 成员覆盖 257 5.4 句柄的使用 263 5.5 包的使用 269 第八章 激励发生的随机化 340 7.1 随机约束和分布 340 权重分布 353 条件约束 355 7.2 约束块控制 358 7.3 随机函数 366 7.4 数组约束 373 7.5 随机控制 388 第九章 线程与通信 432 9.1 线程的使用 432 9.2 线程的控制 441 三个fork...join 443 等待衍生线程 451 停止线程disable 451 9.3 线程的通信 458 第十章 进程评估:覆盖率 495 10.1 覆盖率类型 495 10.2 功能覆盖策略 510 10.3 覆盖组 516 10.4 数据采样 524 10.5 覆盖选项 544 10.6 数据分析 550 第十一章 SV语言核心进阶 552 11.1 类型转换 552 11.2 虚方法 564 11.3 对象拷贝 575 11.4 回调函数 584 11.5 参数化的类 590 第十二章 UVM简介 392 8.2 UVM简介 414 8.3 UVM组件 420 8.4 UVM环境 425
SV Lab Guide是一个全面指南,旨在帮助用户理解和操作各种与存储虚拟化相关的技术、工具和实践。这类指导通常涉及从基础理论到高级应用的各种层面,包括但不限于: ### 存储虚拟化的概念 - **理解存储虚拟化**:首先,了解什么是存储虚拟化以及它如何将物理磁盘空间整合为一组统一的资源池,可以由多个主机访问,提高资源利用率和灵活性。 ### 技术概览 - **传统存储设备与现代虚拟化解决方案**:比较传统的存储阵列与基于软件的虚拟化平台的区别,如NAS(网络附加存储)、SAN(存储区域网络)等。 - **关键技术组件**:解释诸如快照、复制、分级存储、数据缩减、远程复制等技术是如何工作的,以及它们如何优化性能和成本。 ### 实践操作 - **配置步骤**:提供从安装虚拟化管理软件、配置存储池、设置策略到实际部署和管理环境的具体步骤。 - **安全性和合规性**:讨论如何保护存储资源免受攻击,并满足行业标准和法规要求,比如数据加密、访问控制和审计日志记录。 ### 性能优化与故障排除 - **性能监控与调优**:讲解如何监控存储系统的性能指标,识别瓶颈并采取措施进行优化。 - **常见错误及解决策略**:列举可能出现的问题及其解决办法,帮助快速定位和修复故障。 ### 迁移与集成 - **从传统架构向虚拟化迁移**:提供详细的规划、实施和验证过程,确保平稳过渡。 - **与其他系统集成**:探讨如何将存储虚拟化解决方案与现有的IT基础设施(如服务器、操作系统、云服务等)无缝连接。 ### 高级主题与未来趋势 - **人工智能与自动化**:展望AI如何应用于自动优化存储配置、预测维护需求等领域。 - **边缘计算与分布式存储**:讨论分布式存储架构如何支持边缘计算场景,以及其带来的挑战和机遇。 ### 结论 SV Lab Guide是一个动态文档,随新技术的发展不断更新完善。通过这个指南,用户能够深入理解存储虚拟化的价值,掌握其实现细节,并有效地利用其提升业务效率和安全性。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hardworking_IC_boy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值