路科验证MCDT实验5学习笔记

在Questasim软件上验证代码的覆盖率

一、编译

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

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

选中所需要的文件,先进行文件编译的顺序调整如下,一般情况下,先编译.v设计文件,再编译.sv文件,其中mcdf文件放到.v文件的最后一个编译,report文件放在.sv文件第一个进行编译,tb测试文件放在最后编译。

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

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

二、仿真

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

vsim -i -classdebug -solvefaildebug -coverage -coverstore F:/IC/project1/sv5/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 F:/IC/project1/sv5/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来查看

转载:路科验证MCDF_svlab5笔记_路科验证讲义_Hardworking_IC_boy的博客-CSDN博客

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MCDT实验3 1.1是指对于MCDT实验3的第一个子实验,其主要目的是研究使用不同颜色的物体对人眼的识别能力产生的影响。 在这个实验中,被试者将会被要求辨别不同颜色的物体。实验过程中,被试者可能会遇到不同的颜色,如红色、蓝色、绿色等,并要求通过按键或其他方式指示物体的颜色。实验会记录被试者的反应时间和准确度,以分析不同颜色对于人眼识别的影响。 这个实验的目的是探究人眼对不同颜色的物体的感知和辨别能力。通过对比不同颜色下的反应时间和准确度,可以了解不同颜色在人眼观察和识别中的作用。这对于设计颜色,如交通信号灯的颜色选择、产品标签颜色的设计等有着重要的参考价值。 实验过程中,可能会使用一些心理学或实验设计的方法,如随机化、对照组等,以保证实验的科学性和结果的可靠性。 通过这个实验,可以得出一些结论,例如不同颜色对于人眼的刺激程度不同,某些颜色可能具有更高的可见度和识别能力,或者某些颜色可能会产生视觉疲劳或混淆。这将对各种领域的设计和实践有着实际意义,例如广告设计、交通信号灯、产品包装等。 总之,MCDT实验3 1.1是一个研究人眼对于不同颜色物体识别能力的实验,通过分析实验结果可以对颜色的选择和使用提供参考和指导。 ### 回答2: MCDT是Memory-Constrained Decision Tree的缩写,它是一种用于学习和预测的机器学习算法。实验3.1是指在进行MCDT实验时的第三个实验,即使用MCDT算法进行决策树学习和预测的第一个实验。 在实验3.1中,我们首先需要准备用于训练和测试的数据集。数据集应包含已知的输入和相应的输出。这些输入可以是数字、文本等形式,而输出通常是对应于输入的一个类别标签或数值。 然后,我们使用MCDT算法对准备的数据集进行训练。MCDT算法通过递归地将数据集分成子集,并在每个子集中选择最佳的分割方式来构建一个决策树。这个决策树可以帮助我们对新的未知输入进行预测。 训练完成后,我们可以使用训练好的决策树对测试集中的输入进行预测。预测过程中,输入会按照决策树的分割规则逐级判断,最终得到一个预测的输出。 实验3.1的结果可以包括准确率、精确率、召回率、F1分数等评估指标。准确率是指预测正确的样本数与总样本数的比例;精确率是指预测为正类别的样本中实际为正类别的比例;召回率是指实际为正类别的样本中被预测为正类别的比例;F1分数是综合衡量精确率和召回率的指标。这些指标可以帮助我们评估MCDT算法的性能和预测结果的准确度。 总之,实验3.1中我们使用MCDT算法进行决策树学习和预测。通过训练和测试数据集,我们可以评估算法的性能并得到预测结果。 ### 回答3: MCDT实验3 1.1是指微控制器与显示器的连接实验。 在这个实验中,我们将学习如何将微控制器与显示器进行连接,并通过控制微控制器来控制显示器的工作。这是一个非常基础的实验,在很多电子产品中都会用到。 首先,我们需要准备一个微控制器和一个显示器。微控制器可以是Arduino、树莓派等开源硬件平台,而显示器可以是LCD显示屏、LED模块或其他类似的设备。 接下来,我们需要连接微控制器和显示器。这通常需要使用一些连接线,如杜邦线或焊接线。具体的连接方式取决于使用的微控制器和显示器的接口类型,一般在微控制器和显示器的技术文档或规格书中能找到详细的连接图。 在完成连接之后,我们需要编写一段程序来控制显示器。这个程序可以使用微控制器的编程语言(如C、Python等)编写。通过编写程序,我们可以实现一些基本的功能,比如在显示器上显示文字、数字或图形等。 完成程序编写后,我们需要将程序上传到微控制器,并与显示器一起工作。这通常需要使用一个开发板或编程器来实现。 最后,我们可以测试我们的实验。通过控制程序,我们可以在显示器上看到我们想要的结果。我们可以通过按下微控制器上的按钮或使用其他输入设备来测试程序的不同状态。 总的来说,MCDT实验3 1.1是一个介绍微控制器与显示器连接的基础实验。通过学习这个实验,我们可以了解到如何连接不同类型的显示器,并通过编写程序来控制显示器的工作。这个实验能够帮助我们在日后的项目中更好地应用和掌握这些技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值