2015-11-02 64 views
2

我有一些Verilog VPI代碼,它打印有關我係統Verilog代碼中給定模塊的所有輸入和輸出的信息。但是,其中一些I/O是System Verilog壓縮結構,我希望能夠讓我的VPI代碼打印結構中各個字段的值及其相關名稱。不幸的是,「struct」在官方VPI規範中並沒有出現(因爲VPI在System Verilog誕生之前已經標準化了四年,我認爲)。我所有的結構都以普通的舊寄存器或網絡形式出現在VPI中。系統Verilog VPI中的打包結構?

是否有一些可以使用的VPI的系統Verilog特定擴展,或者我在這裏運氣不好?如果有幫助,我使用vcs編譯。

回答

2

您想要vpiStructVar作爲SystemVerilog的一部分引入並在sv_vpi_user.h中定義。

您可能有興趣的Issue#17分支Cocotb有一些代碼,它有各種各樣的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工具中的錯誤,所以仔細查看代碼和/或註釋可能會爲您節省一些時間。

+0

這是記錄在哪裏?我讀過Sutherland的Verilog PLI手冊以獲取基礎知識,但是沒有與systemverilog等價的內容。 –

+0

LRM本身有一些信息(IEEE Std 1800™-2012)。並非所有的供應商都已經實施了整個規格,而且一些供應商的解釋也不同。無論如何,沙沙的角落往往不起作用。希望你喜歡看到你的工具段錯誤;) – Chiggs