Struct 系统Verilog VPI中的压缩结构?

Struct 系统Verilog VPI中的压缩结构?,struct,verilog,system-verilog,Struct,Verilog,System Verilog,我有一些Verilog VPI代码,它在我的系统Verilog代码中打印关于给定模块的所有输入和输出的信息。然而,其中一些I/O是系统Verilog压缩结构,我希望能够让我的VPI代码打印结构中各个字段的值及其相关名称。不幸的是,“struct”在正式的VPI规范中没有出现(因为VPI是在System Verilog出现之前4年标准化的)。我所有的结构在VPI中都显示为普通的旧寄存器或网络 是否有一些特定于系统Verilog的VPI扩展我可以使用,或者我在这里运气不好?如果有帮助的话,我正在使用

我有一些Verilog VPI代码,它在我的系统Verilog代码中打印关于给定模块的所有输入和输出的信息。然而,其中一些I/O是系统Verilog压缩结构,我希望能够让我的VPI代码打印结构中各个字段的值及其相关名称。不幸的是,“struct”在正式的VPI规范中没有出现(因为VPI是在System Verilog出现之前4年标准化的)。我所有的结构在VPI中都显示为普通的旧寄存器或网络


是否有一些特定于系统Verilog的VPI扩展我可以使用,或者我在这里运气不好?如果有帮助的话,我正在使用vcs进行编译。

您需要
vpiStructVar
,它作为SystemVerilog的一部分引入,并在
sv\u vpi\u user.h
中定义

您可能会对一些代码感兴趣,这些代码的分支具有各种各样的特性。例如,我们可以从Python迭代设计中的所有对象:

@cocotb.test()
def discover_objects(dut):
    for thing in dut:
        print "Found %s.%s of type %s" % (dut._name, thing._name, type(thing))
您还可以递归地发现整个设计等


我们花费了大量精力来找出EDA工具中所有经常未记录的怪癖,当然还有bug,因此查看代码和/或注释可能会为您节省一些时间。

这是在哪里记录的?我阅读了Sutherland的verilog PLI手册以获得基本知识,但是systemverilog没有一本等效的手册。LRM本身有一些信息(IEEE标准1800)™-2012). 并非所有供应商都实现了整个规范,有些供应商的解释也有所不同。灰尘较多的角落无论如何都不起作用。希望你喜欢看你的工具;)