verilog VPI 回调
Posted
技术标签:
【中文标题】verilog VPI 回调【英文标题】:verilog VPI Call Back 【发布时间】:2011-10-26 14:13:23 【问题描述】:VPI 回调cbValueChange
应该做什么以及它是如何工作的?
假设我想在信号的posedge
处执行一个函数
X
(大约 2000 个周期)。我应该使用回调cbValueChange
还是从测试台调用代码?
always @posedge(X)
begin
$pli
end
哪个更有效?
【问题讨论】:
你用的是什么模拟器? 【参考方案1】:效率方面可能并不重要。如果没有更好地了解您的情况,很难给出可靠的建议,但我建议像您的示例一样使用 $pli 调用。使用 cbValueChange 意味着注册一些 C 代码,以便在变量的值更改时由模拟器执行。这发生在值更改时没有调用用户定义的 $pli 例程。由于这对于任何阅读 Verilog 代码的人来说是完全不可见的,如果您的 C 代码做出任何影响模拟的更改,您将让任何试图了解正在发生的事情的人感到沮丧。
【讨论】:
【参考方案2】:cbValueChange
是用于通过vpi_register_cb()
注册/接收已注册信号的值更改事件的原因。因此,当信号值翻转或改变时,模拟器将在适当的模拟阶段调用回调函数。如果您只想调用自己的 PLI/VPI 函数,可以查看http://www.asic-world.com/verilog/pli5.html 中的详细示例
【讨论】:
以上是关于verilog VPI 回调的主要内容,如果未能解决你的问题,请参考以下文章