我正在尝试编写一个Tcl脚本,该脚本在ModelSim中加载模拟,然后执行其他一些操作,因此需要确定模拟是否成功加载。但vsim
命令似乎没有返回任何值,至少我可以弄清楚如何捕获。作为测试,我做了:
set rv [vsim $sim_name]
$rv
始终为空,无论是否加载了SIM卡,因此使用catch
无法正常工作。我目前的解决方法是在加载后尝试一些只在模拟上下文中工作并且 返回一个值,然后捕获它。例如:
vsim $sim_name
if {[catch {log *} ...
但这远非理想。有没有更好的方法来检测vsim
是否成功运行?
答案 0 :(得分:1)
为了在模拟启动时处理精化错误,您可以使用onElabError
命令关联回调。您的回调可以设置您稍后检查的全局变量:
onElabError {global vsim_init_failure; set vsim_init_failure 1}
...
set vsim_init_failure 0
vsim $sim_name
if {$vsim_init_failure} ...