我正在使用GUI和.tcl在命令行(vsim -c)中使用的.do文件,用于在Modelsim 10.3c中进行模拟
exec vsim -c -do DoFile.do
我需要的是:
如果发生错误,应退出modelsim并返回.tcl
。否则它应该模拟项目。
如果我将行onerror { quit -f }
放在我的.do
文件中,则GUI会在第一个错误时退出。所以,这不舒服。
我没有设法在tcl中使用onerror
(warning: onerror command for use within macro
)或$error
(未知变量)
答案 0 :(得分:3)
我需要有关DO和Tcl脚本的更多信息,但您可以在vcom(用于编译VHDL)或vlog(用于编译Verilog / SystemVerilog)上使用try-catch。 这是一个如何使用它的简短示例:
# set variable for compile error
set comperror ""
# compile files
catch "vcom -quiet -93 -work work name.vhd" comperror
catch "vcom -quiet -93 -work work name2.vhd" comperror
# ... and futher files..
if [expr {${comperror}!=""}] then {
# quit modelsim or do anything else
} else {
# do simulation or execute further commands
}
您可以编译所有文件,如果发生错误,您可以退出。如果成功,您可以运行模拟。
答案 1 :(得分:1)
我找到了一个解决方法。我在.tcl中创建了一个文件,并将以下行放入.do脚本中:
cellForRow
因此,如果未生成该文件,GUI将不会退出。