2014-08-28 75 views
0

我想寫一個Tcl腳本,它在ModelSim中加載一個模擬,然後做一些其他的東西,所以它需要確定模擬加載是否成功。但vsim命令似乎沒有返回任何值,至少我可以弄清楚如何捕獲。作爲測試,我做:捕獲vsim退出代碼或當前模擬器狀態與腳本

set rv [vsim $sim_name] 

$rv總是空的,不管負載SIM卡或沒有,所以使用catch不起作用。我目前的解決方法是嘗試加載後只能在模擬環境下工作,確實返回一個值,然後捕獲該值。例如:

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

但這遠非理想。有沒有更好的方法來檢測vsim是否成功運行?

回答

1

若要在模擬啓動時處理精化錯誤,可以使用onElabError命令關聯回調。你的回調可以設置您稍後檢查一個全局變量:

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

這似乎做的正是我要找的,但我還是驚訝VSIM不返回任何值。 – fru1tbat 2014-08-28 19:40:29

+0

作爲進一步闡述,您可以將其封裝在vsim命令的包裝中,該命令返回狀態碼或根據需要拋出異常。 – 2014-08-30 01:13:29