System Verilog VPI 中的打包结构?
Packed Structs in System Verilog VPI?
我有一些 Verilog VPI 代码可以在我的 System Verilog 代码中打印有关给定模块的所有输入和输出的信息。然而,其中一些 I/Os 是 System Verilog 打包结构,我希望能够让我的 VPI 代码打印结构中各个字段的值及其相关名称。不幸的是 "struct" 没有出现在官方 VPI 规范中(因为 VPI 在 System Verilog 出现之前 4 年就已经标准化了,我想)。我所有的结构都在 VPI 中显示为普通的旧寄存器或网络。
是否有一些我可以使用的 VPI 的 System Verilog 特定扩展,或者我在这里运气不好?如果有帮助,我正在使用vcs编译。
您需要 vpiStructVar
,它作为 SystemVerilog 的一部分引入并在 sv_vpi_user.h
中定义。
Issue#17 branch of Cocotb which has all sorts of vpi related fun 上有一些您可能感兴趣的代码。例如,我们可以从 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 工具中的错误,因此查看代码 and/or 注释可能会节省您一些时间。
我有一些 Verilog VPI 代码可以在我的 System Verilog 代码中打印有关给定模块的所有输入和输出的信息。然而,其中一些 I/Os 是 System Verilog 打包结构,我希望能够让我的 VPI 代码打印结构中各个字段的值及其相关名称。不幸的是 "struct" 没有出现在官方 VPI 规范中(因为 VPI 在 System Verilog 出现之前 4 年就已经标准化了,我想)。我所有的结构都在 VPI 中显示为普通的旧寄存器或网络。
是否有一些我可以使用的 VPI 的 System Verilog 特定扩展,或者我在这里运气不好?如果有帮助,我正在使用vcs编译。
您需要 vpiStructVar
,它作为 SystemVerilog 的一部分引入并在 sv_vpi_user.h
中定义。
Issue#17 branch of Cocotb which has all sorts of vpi related fun 上有一些您可能感兴趣的代码。例如,我们可以从 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 工具中的错误,因此查看代码 and/or 注释可能会节省您一些时间。