IEEE已弃用tf_nodeinfo

use*_*376 3 verilog modelsim ieee

我想使用多年前使用PLI 1.0开发的PLI例程.之前工作得很好.但是当我尝试使用较新版本的ModelSim Verilog模拟器运行时,我收到以下错误消息:

#**警告:(vsim-8668)IEEE已弃用tf_nodeinfo.虽然仍然部分支持,但memoryval_p将始终设置为空指针.
#:PDK_top.v(102)

由于PLI例程使用tf_nodeinfo并且模拟失败.我试图弄清楚如何修复这个问题,但我找不到任何推荐的方法来替换过时的tf_nodeinfo.

任何人都可以给我一个我应该用来应对这种情况的策略吗?PLI例程的所有源代码都可用.

另外,我很好奇为什么IEEE决定放弃tf_nodeinfo.

Gre*_*reg 6

PLI 1.0已经过时了(根据LRM,它自20世纪80年代中期以来一直存在),它在IEEE Std 1364-2005中被弃用 §1.6 不推荐使用的条款:

IEEE Std 1364-2005弃用了本标准以前版本中包含的Verilog PLI TF和ACC例程.这些例程在第21章至第25章,附件E和附件F中有所描述.这些条款和附件的文本已从该版本的标准中删除.这些弃用条款和附件的文本可以在IEEE Std 1364-2001中找到.

我找不到任何描述为什么它从LRM中删除了.最好的猜测是:

  • 可能是旧的tf_acc_例程与SystemVerilog不具有前瞻性.在IEEE Std 1800-2005中没有提及tf_acc_例程,但是有vpi_例程.IEEE已经计划合并这两个标准(并且在IEEE Std 1800-2009中做过).
  • 或者可能是因为与VPI相比,它具有显着降低的性能或额外的开销.VPI在IEEE Std 1364-2001(§20,26和27)中引入,经常被称为PLI 2.0(但LRM说:"Verilog程序接口例程,称为VPI例程,是PLI的第三代" ).VPI仍然很强大; 它仍然有更多的头部然后DPI但功能能力不完全重叠.

你的选择:

  • 使用较旧的模拟器(暂时可以使用,但在某些时候你需要升级)
  • 找到另一个仍然支持它的模拟器(但可以在将来的版本中删除它)
  • 重写以下功能:
    1. SystemVerilog IEEE Std 1800-2012
      • 令人惊讶的是,可以通过类,多宗派队列和关联数组,结构和接口来完成这些工作.
    2. DPI(IEEE Std1800-2012§35)
    3. VPI(IEEE Std1800-2012§36)
      • vpi_get_data/ vpi_put_data可能是您的tf_nodeinfo更换,等待什么操作用它做.