不同 ModelSim 版本中“断言计数”的行为
Behaviour of `assertion count` in different ModelSim versions
我已经在 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
,因此我的测试总是 "pass"!
现在 ModelSim PE 命令参考手册(不幸的是,modelsim_pe_ref.pdf 在 Mentor 登录墙后面),甚至没有提到 assertion ...
命令, HTML 手册(例如 here)确实提到了它。
最近 ModelSim 中有什么改变打破了上述模式,我是否错误地使用了它(例如,缺少 vsim 的参数)或者是否有更好的选择?
例如,我可以使用 coverage report
或 coverage report -assert -detail
,但随后我需要解析输出
# NEVER FAILED: 97.0% ASSERTIONS: 105
我相信 Modelsim 已经更改了新版本断言的日志参数的默认值。
在以前的版本中,断言的默认配置似乎是启用了日志选项,但是在10.4中,所有断言在加载测试台时都不会记录,并且在触发断言时会报告但是它没有在断言面板上注册(视图 – 覆盖率 – 断言)
我通过调用断言的日志功能修复了这个错误:
断言失败-登录-递归/
似乎在序列开始时调用此命令足以启用日志记录进程,并且它修复了断言计数命令的问题。
ModelSim支持官方回复:
The "assertion count" command is not expected to work on Modelsim PE,
as it is not supposed to have assertion coverage metrics enabled.
Generate and parse a coverage report instead.
我已经在 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
,因此我的测试总是 "pass"!
现在 ModelSim PE 命令参考手册(不幸的是,modelsim_pe_ref.pdf 在 Mentor 登录墙后面),甚至没有提到 assertion ...
命令, HTML 手册(例如 here)确实提到了它。
最近 ModelSim 中有什么改变打破了上述模式,我是否错误地使用了它(例如,缺少 vsim 的参数)或者是否有更好的选择?
例如,我可以使用 coverage report
或 coverage report -assert -detail
,但随后我需要解析输出
# NEVER FAILED: 97.0% ASSERTIONS: 105
我相信 Modelsim 已经更改了新版本断言的日志参数的默认值。
在以前的版本中,断言的默认配置似乎是启用了日志选项,但是在10.4中,所有断言在加载测试台时都不会记录,并且在触发断言时会报告但是它没有在断言面板上注册(视图 – 覆盖率 – 断言)
我通过调用断言的日志功能修复了这个错误:
断言失败-登录-递归/
似乎在序列开始时调用此命令足以启用日志记录进程,并且它修复了断言计数命令的问题。
ModelSim支持官方回复:
The "assertion count" command is not expected to work on Modelsim PE, as it is not supposed to have assertion coverage metrics enabled. Generate and parse a coverage report instead.