Tcl 出现错误时从命令行退出Modelsim

Tcl 出现错误时从命令行退出Modelsim,tcl,command-line-arguments,modelsim,Tcl,Command Line Arguments,Modelsim,我正在使用一个.do文件,GUI和命令行(vsim-c)中的.tcl使用该文件在Modelsim 10.3c中进行模拟 exec vsim -c -do DoFile.do 我需要的是: 如果发生错误,应退出modelsim并返回.tcl。否则,它应该模拟项目 如果我将行onerror{quit-f}放在我的.do文件中,GUI将在第一个错误时退出。所以,这并不舒服 我没有设法在tcl中使用onerror(警告:在宏中使用onerror命令)或$error(未知变量)我需要有关DO和tcl脚本

我正在使用一个.do文件,GUI和命令行(vsim-c)中的.tcl使用该文件在Modelsim 10.3c中进行模拟

exec vsim -c -do DoFile.do
我需要的是: 如果发生错误,应退出modelsim并返回
.tcl
。否则,它应该模拟项目

如果我将行
onerror{quit-f}
放在我的
.do
文件中,GUI将在第一个错误时退出。所以,这并不舒服


我没有设法在tcl中使用
onerror
警告:在宏中使用onerror命令)或
$error
(未知变量)

我需要有关DO和tcl脚本的更多信息,但您可以在vcom上使用try catch(用于编译VHDL)或vlog(用于编译Verilog/SystemVerilog)。 下面是一个如何使用它的简短示例:

# 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
}

您可以编译所有文件,如果发生错误,您可以退出。如果成功,您可以运行模拟

我需要有关DO和Tcl脚本的更多信息,但您可以使用vcom上的try-catch(用于编译VHDL)或vlog(用于编译Verilog/SystemVerilog)。 下面是一个如何使用它的简短示例:

# 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
}

您可以编译所有文件,如果发生错误,您可以退出。如果成功,您可以运行模拟

我找到了一份工作。我在.tcl中创建了一个文件,并将以下行放入.do脚本中:

if [file exists ../Command_Line_Enable.txt] {
     onerror { quit -f }
}

因此,如果没有生成该文件,GUI将不会退出

我找到了一份工作。我在.tcl中创建了一个文件,并将以下行放入.do脚本中:

if [file exists ../Command_Line_Enable.txt] {
     onerror { quit -f }
}

因此,如果没有生成该文件,GUI将不会退出

您的建议很好,但我有几个文件,其中包含大量的
vcom
行。不,我只有一个.tcl脚本,用于启动多个模拟,每个模拟都有一个.do文件。您的建议很好,但我有几个文件,其中包含大量的
vcom
行。不,我只有一个.tcl脚本,用于启动多个模拟,每个模拟都有一个.do文件。