我試圖實現一個路由器。在合成和非合成模塊之間傳遞一個類作爲數據 - SystemVerilog
在測試臺中,我使用一個Class來表示SystemVerilog中的一個包,它包含整型變量和一些例程。
現在我試圖將一個數據包對象轉換爲邏輯向量。
我試過使用靜態和動態鑄造,它沒有工作。
我也嘗試將數據包數據轉換爲結構,然後將結構轉換爲邏輯向量,但是當我需要將向量轉換回結構時,它失敗了。
這是臨時的結構:
typedef struct {
integer data;
integer address;
integer source;
integer counter;
integer failure;
} Packed_packet;
這是我想要做的轉換:
logic [$bits(Packed_packet)-1:0] i;
Packed_packet packet1;
Packed_packet packet2;
assign i = packet1;
assign packet2 = i;//fails
你能幫助我處理這件事?
我想你的意思 (typedef的** **邏輯[$位(Packed_packet)-1:0] temp_t;) 它仍然沒有奏效雖然 我收到以下消息: __結構分配/取消分配不受結構支持。請考慮使用強制/釋放代替.__ 這與我以前得到的編譯錯誤基本相同... 有什麼建議嗎? – DirtyBit
已嘗試__i = {>> {p.data,p.address,p.source,p.counter,p.failure}}; __和它的工作非常感謝你:) – DirtyBit
是的。我在我的例子中加入了'logic'。 「不支持」消息通常意味着代碼是正確的,但是你的模擬器尚未實現該功能。 –