verilog VPI回电话

时间:2011-10-26 14:13:23

标签: verilog

什么是VPI回叫cbValueChange应该做什么以及它是如何工作的?

假设我想在posedge信号处执行函数 X(约2000个周期)。我应该使用回调cbValueChange还是从测试平台调用代码?

always @posedge(X) 
begin 
    $pli 
end 

哪个更有效率?

2 个答案:

答案 0 :(得分:0)

效率明智,它可能并不重要。如果没有更好地了解您的情况,很难给出可靠的建议,但我建议您在示例中使用$ pli调用。使用cbValueChange意味着当变量的值发生变化时,注册一些由模拟器执行的C代码。如果没有在值更改时调用用户定义的$ pli例程,则会发生这种情况。因为对于阅读Verilog代码的任何人来说,这是完全不可见的,如果您的C代码做出任何影响模拟的更改,那么任何试图了解正在发生的事情的人都会感到沮丧。

答案 1 :(得分:0)

cbValueChange是用于通过vpi_register_cb()为注册信号注册/接收值更改事件的原因。因此,当信号值被翻转或改变时,模拟器将在适当的模拟阶段调用回调函数。如果您只想调用自己的PLI / VPI函数,可以在http://www.asic-world.com/verilog/pli5.html

中看到详细示例