我想重新使用PLI我的模擬。我使用VCS。PLI的Verilog:如何重新啓動模擬
我寫了這個: vpi_control(vpiReset,1);
由cbEndOfSimulation
模擬器得到復位呼叫,但因爲它是寫在文件中不使用額外的參數釣到一個回調函數:模擬重新啓動,但在互動模式! 我還測試了3個參數...
這是重新啓動模擬的正確方法嗎?
在此先感謝
我想重新使用PLI我的模擬。我使用VCS。PLI的Verilog:如何重新啓動模擬
我寫了這個: vpi_control(vpiReset,1);
由cbEndOfSimulation
模擬器得到復位呼叫,但因爲它是寫在文件中不使用額外的參數釣到一個回調函數:模擬重新啓動,但在互動模式! 我還測試了3個參數...
這是重新啓動模擬的正確方法嗎?
在此先感謝
你在做什麼相貌端正根據VPI規格:
PLI_INT32 vpi_control(
PLI_INT32 operation, /* constant representing the operation to perform */
...) /* variable number of arguments as required by the
operation */
如果操作vpiReset相當於$reset
系統任務,因此需要三個參數,stop_value
,reset_value
和diagnostic_level
。
我知道這是明顯的,但你檢查返回值是1(表示成功)而不是0(表示失敗)?
唯一的其他建議,我可以有:
$reset
系統任務,看看是否可以按預期正常如果這些證明VCS有缺陷,那麼至少你有一個好的測試用例來提高支持票據,並希望Synopsys能夠相對及時地爲你提供一個補丁。
如果這是您可能能夠通過引起$reset
解決它通過的Verilog被稱爲VCS錯誤 - 假設$reset
按預期工作 - 或者有可能是一些你可以在一個cbEnterInteractive
回調做採取糾正措施。
謝謝您的回答。
不幸的是,我已經測試了$ reset;常規。
當我用$reset;
或$reset(0);
調用它時,仿真在交互模式下重置。 當我打電話$reset(1)
或$reset(1,0,0)
,模擬是在交互模式下不復位(如文檔中所述)。
對於第二個建議,我沒有進入到另一個模擬器......
[伊卡洛斯](http://iverilog.icarus.com/)支持VPI和是免費的,所以你可以試試。由於如預期,你也可以嘗試調用回落到Verilog的從你的C代碼,並要求從Verilog的'$ reset'的建議的解決方法'$ reset'作品? – Chiggs
當然,$重置是一個可行的解決方法。 但我想我的VPI接口從Verilog代碼中最獨立的。 – user1059422