我有一些Verilog VPI代码,用于在我的System Verilog代码中打印有关给定模块的所有输入和输出的信息。但是,其中一些I / O是System Verilog打包的结构,我希望能够让我的VPI代码打印结构中各个字段的值及其相关名称。不幸的是,“struct”在官方VPI规范中没有显示出来(因为VPI在System Verilog成立之前4年被标准化,我假设)。我的所有结构都只是在VPI中显示为普通的寄存器或网络。
我可以使用VPI的一些System Verilog特定扩展,还是我运气不好?如果有帮助,我正在使用vcs进行编译。
答案 0 :(得分:3)
您希望vpiStructVar
作为SystemVerilog的一部分引入并在sv_vpi_user.h
中定义。
您可能会对Issue#17 Cocotb的vpi related fun分支感兴趣的代码有各种for detail。例如,我们可以从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工具中的错误,所以看看代码和/或评论可能会节省你一些时间。