MCDF_SV_lab5

  • Post author:
  • Post category:其他


交叉覆盖率cross中需要交叉的俩变量,应该先各自定义并声明其覆盖点coverpoint和各个bins,然后在交叉覆盖率中,直接引用一个覆盖点中的哪个bins和另一个覆盖点中的哪个bins来交叉;

如果没有声明两者各自的覆盖点的话,那么在交叉覆盖率中可以用“bins a0b0 = binsof(a) intersect {0} && binsof(b) intersect {0}”等,来选择俩变量中需要交叉的。

且求交叉覆盖率时,将被交叉俩变量的覆盖点权重等于0——“option.weight = 0”,即不计算俩变量各自的覆盖率,只计算两者的交叉覆盖率。声明覆盖点权重等于0——该coverpoint不会生成默认的bins,即你声明了几个就是几个bins。

默认的寄存器地址:0,2,4,8循环

二进制 十六进制
0000_0000 8’h00
0000_0010 8’h02
0000_0100 8’h04
0000_1000 8’h08
0001_0000 8’h10
0001_0010 8’h12
0001_0100 8’h14
0001_1000 8’h18
0010_0000 8’h20

mcdf_base_test中,增加了“do_watchdog看门狗”任务,它和do_data一起fork…join_any开始运行,并在timeout * 1ms时结束仿真。作用就是:如果测试不会正常结束,那么该任务会在规定的时间结束仿真。

收集覆盖率运行指令:

vsim -i -classdebug -solvefaildebug -coverage -coverstore /home/verifier/project/rkv_labs/hsy_sv/v2.1_lab/lab5 -testname mcdf_full_random_test -sv_seed random +TESTNAME=mcdf_full_random_test -l mcdf_full_random_test.log work.tb

合并覆盖率指令:

vcover merge -out merged_coverage.ucdb /home/verifier/project/rkv_labs/hsy_sv/v2.1_lab/lab5

将lab4的6个测试跑了一边,加上mcdf_full_random_test跑了多次,最后得到合并覆盖率:

功能覆盖率100%:

代码覆盖率87.7%:



版权声明:本文为Hsykl原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。