fru1tbat
fru1tbat

Reputation: 1625

capture vsim exit code or current simulator state with script

I'm trying to write a Tcl script which loads a simulation in ModelSim and then does some other stuff, so it needs to determine if the simulation loaded successfully or not. But the vsim command does not seem to return any value, at least that I can figure out how to capture. As a test, I did:

set rv [vsim $sim_name]

$rv is always empty, regardless of whether the sim loaded or not, so using catch doesn't work. My current workaround is to try something after loading that only works in a simulation context and that does return a value, and catch that instead. For example:

vsim $sim_name
if {[catch {log *} ...

But that's far from ideal. Is there a better way to detect whether or not vsim ran successfully?

Upvotes: 0

Views: 969

Answers (1)

Kevin Thibedeau
Kevin Thibedeau

Reputation: 3421

For handling elaboration errors at the startup of simulations you can associate a callback using the onElabError command. Your callback can set a global variable that you examine later:

onElabError {global vsim_init_failure; set vsim_init_failure 1}
...
set vsim_init_failure 0
vsim $sim_name
if {$vsim_init_failure} ...

Upvotes: 1

Related Questions