2011-10-26 68 views
0

什麼是VPI回撥cbValueChange應該做什麼,它是如何工作的?verilog VPI回電

假設我想執行信號 X(約2000個週期)的posedge的函數。我應該使用回撥cbValueChange還是從測試平臺調用代碼?

always @posedge(X) 
begin 
    $pli 
end 

哪種效率更高?

+0

中看到詳細示例。您使用的是什麼模擬器? – Andy

回答

0

效率明智可能無關緊要。如果沒有更好的瞭解你的情況,很難給出可靠的建議,但我建議在你的例子中的$ pli調用。使用cbValueChange表示當變量的值改變時,註冊一些由模擬器執行的C代碼。發生這種情況時,沒有在值更改時調用用戶定義的$ pli例程。由於這對任何閱讀Verilog代碼的人都是完全不可見的,所以如果你的C代碼做出任何影響仿真的改變,你都會挫敗試圖瞭解發生了什麼的人。

0

cbValueChange是通過vpi_register_cb()註冊/接收已註冊信號的值更改事件的原因。所以當信號值翻轉或改變時,模擬器將在適當的模擬階段調用回調函數。如果您只想調用您自己的PLI/VPI功能,您可以在http://www.asic-world.com/verilog/pli5.html