VPI回调cbValueChange应该做什么?它是如何工作的?
假设我想在信号X的posedge (大约2000个周期)执行一个函数。我应该使用回调cbValueChange还是从测试台调用代码?
always @posedge(X)
begin
$pli
end 哪一个更有效率?
发布于 2012-03-01 11:58:25
效率方面,这可能并不重要。如果不能更好地了解您的情况,就很难给出可靠的建议,但我建议使用示例中的$pli调用。使用cbValueChange意味着注册一些C代码,以便在变量的值发生变化时由模拟器执行。在值更改时,如果没有调用用户定义的$pli例程,就会发生这种情况。由于这对于任何阅读Verilog代码的人来说都是完全不可见的,如果您的C代码做了任何影响模拟的更改,那么您将使任何试图理解发生了什么的人感到沮丧。
发布于 2013-03-10 18:01:21
cbValueChange是用于通过vpi_register_cb()注册/接收已注册信号的值更改事件的原因。因此,当信号值发生翻转或更改时,模拟器将在适当的模拟阶段调用回调函数。如果只想调用自己的PLI/VPI函数,可以在http://www.asic-world.com/verilog/pli5.html中查看详细示例
https://stackoverflow.com/questions/7903931
复制相似问题