什么是VPI回叫cbValueChange
应该做什么以及它是如何工作的?
假设我想在posedge
信号处执行函数
X
(约2000个周期)。我应该使用回调cbValueChange
还是从测试平台调用代码?
always @posedge(X)
begin
$pli
end
哪个更有效率?
答案 0 :(得分:0)
效率明智,它可能并不重要。如果没有更好地了解您的情况,很难给出可靠的建议,但我建议您在示例中使用$ pli调用。使用cbValueChange意味着当变量的值发生变化时,注册一些由模拟器执行的C代码。如果没有在值更改时调用用户定义的$ pli例程,则会发生这种情况。因为对于阅读Verilog代码的任何人来说,这是完全不可见的,如果您的C代码做出任何影响模拟的更改,那么任何试图了解正在发生的事情的人都会感到沮丧。
答案 1 :(得分:0)
cbValueChange
是用于通过vpi_register_cb()
为注册信号注册/接收值更改事件的原因。因此,当信号值被翻转或改变时,模拟器将在适当的模拟阶段调用回调函数。如果您只想调用自己的PLI / VPI函数,可以在http://www.asic-world.com/verilog/pli5.html