“断言计数”在不同ModelSim版本中的行为

时间:2015-03-27 10:36:39

标签: tcl assert fpga modelsim

我已经在TCL中为ModelSim编写了测试自动化脚本,该脚本在其本体中运行

vcom -work work -2002 -explicit -source -cover sbce3 something.vhd
# ...
vsim -assertcover -t 10ps -cover -displaymsgmode both -msgmode both "work.something" -quiet

模拟结束后,我验证所有断言都是通过

传递的
set assertion_count [ assertion count -fails -r / ]
if {$assertion_count} {
    # failed...
} else {
    # success
}

这适用于一些较旧的ModelSim版本(特别是PE 6.5b),但在切换到PE 10.4之后,assertion_count总是0,因此我的测试始终"通过" !

现在,不幸的是,ModelSim PE命令参考手册( modelsim_pe_ref.pdf 在Mentor登录墙后面),甚至没有提到assertion ...命令,HTML手册(例如{{ 3}})确实提到了它。

最近ModelSim中的某些内容发生了变化,突破了上述模式,我是否错误地使用了它(例如,缺少vsim的参数)还是有更好的选择?

我可以使用coverage reportcoverage report -assert -detail,但我需要解析输出

# NEVER FAILED: 97.0%  ASSERTIONS: 105

2 个答案:

答案 0 :(得分:1)

我相信Modelsim已经更改了新版本上断言的log参数的默认值。

在以前的版本中,似乎断言的默认配置是启用了日志选项,但是在10.4中,加载testbench时不会记录所有断言,并且当触发断言时会报告但是它是未在断言面板上注册(查看 - 覆盖范围 - 断言)

我修复了这个错误,调用了断言的日志记录功能:

断言失败-log on -recursive /

似乎在序列开始时调用此命令足以启用日志记录过程并解决了assertions count命令的问题。

答案 1 :(得分:1)

ModelSim支持的官方回复:

  

"断言计数"命令不适用于Modelsim PE,   因为它不应该启用断言覆盖度量。   请改为生成并解析覆盖率报告。