我已经在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 report
或coverage report -assert -detail
,但我需要解析输出
# NEVER FAILED: 97.0% ASSERTIONS: 105
答案 0 :(得分:1)
我相信Modelsim已经更改了新版本上断言的log参数的默认值。
在以前的版本中,似乎断言的默认配置是启用了日志选项,但是在10.4中,加载testbench时不会记录所有断言,并且当触发断言时会报告但是它是未在断言面板上注册(查看 - 覆盖范围 - 断言)
我修复了这个错误,调用了断言的日志记录功能:
断言失败-log on -recursive /
似乎在序列开始时调用此命令足以启用日志记录过程并解决了assertions count命令的问题。
答案 1 :(得分:1)
ModelSim支持的官方回复:
"断言计数"命令不适用于Modelsim PE, 因为它不应该启用断言覆盖度量。 请改为生成并解析覆盖率报告。