IEEE已弃用tf_nodeinfo

时间:2015-05-21 18:03:52

标签: 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。

1 个答案:

答案 0 :(得分:6)

PLI 1.0已经过时了(根据LRM自1980年代中期以来一直存在),它在IEEE Std1364-2005§1.0弃用条款中被弃用

  

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 Std 1800-2012§35)
    3. VPI(IEEE Std 1800-2012§36)
      • vpi_get_data / vpi_put_data可能是您的tf_nodeinfo替代品,等待操作对其进行操作。