3

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

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

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

谁能给我一个我应该用来处理这种情况的策略?PLI 例程的所有源代码均可用。

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

4

1 回答 1

6

PLI 1.0 很旧(根据 LRM,它自 1980 年代中期以来一直存在),它在 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 标准 1800-2012
      • 使用类、多宗派队列和关联数组、结构和接口可以做的事情令人惊讶)
    2. DPI(IEEE 标准 1800-2012 § 35)
    3. VPI(IEEE 标准 1800-2012 § 36)
      • vpi_get_data/vpi_put_data可能是您的替代tf_nodeinfo品,等待操作对其进行的操作。
于 2015-05-21T20:19:28.937 回答