2014-01-07 18 views
0

我想重新使用PLI我的模擬。我使用VCS。PLI的Verilog:如何重新啓動模擬

我寫了這個: vpi_control(vpiReset,1);

cbEndOfSimulation 模擬器得到復位呼叫,但因爲它是寫在文件中不使用額外的參數釣到一個回調函數:模擬重新啓動,但在互動模式! 我還測試了3個參數...

這是重新啓動模擬的正確方法嗎?

在此先感謝

回答

1

你在做什麼相貌端正根據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_valuereset_valuediagnostic_level

我知道這是明顯的,但你檢查返回值是1(表示成功)而不是0(表示失敗)?

唯一的其他建議,我可以有:

  1. 嘗試調用來自Verilog的等價$reset系統任務,看看是否可以按預期正常
  2. 嘗試針對不同的模擬運行測試程序

如果這些證明VCS有缺陷,那麼至少你有一個好的測試用例來提高支持票據,並希望Synopsys能夠相對及時地爲你提供一個補丁。

如果這是您可能能夠通過引起$reset解決它通過的Verilog被稱爲VCS錯誤 - 假設$reset按預期工作 - 或者有可能是一些你可以在一個cbEnterInteractive回調做採取糾正措施。

0

謝謝您的回答。

不幸的是,我已經測試了$ reset;常規。

當我用$reset;$reset(0);調用它時,仿真在交互模式下重置。 當我打電話$reset(1)$reset(1,0,0),模擬是在交互模式下不復位(如文檔中所述)。

對於第二個建議,我沒有進入到另一個模擬器......

+0

[伊卡洛斯](http://iverilog.icarus.com/)支持VPI和是免費的,所以你可以試試。由於如預期,你也可以嘗試調用回落到Verilog的從你的C代碼,並要求從Verilog的'$ reset'的建議的解決方法'$ reset'作品? – Chiggs

+0

當然,$重置是一個可行的解決方法。 但我想我的VPI接口從Verilog代碼中最獨立的。 – user1059422