在SV中可以使用結(jié)構(gòu)體作為模塊的輸入或輸出,這使得它可以更加清晰地傳遞更多的信號,以簡化RTL代碼,類似于interface。
typedef struct { bit [7:0] intr = 'h AA; logic [23:0] addr = 'h FF_FF_FF; } ext; module SU ( output ext extOut); assign extOut = '{intr: 8'hFF, addr:24'haa_aa_aa}; initial begin #1; $display($stime,,, "extOut = %p", extOut); end endmodule module top; ext extIn; //connect extOut of 'SU' with extIn of 'top' SU SUInst(.extOut(extIn)); initial begin #2; $display($stime,,, "extIn = %p", extIn); end endmodule
仿真log:
1 extOut = '{intr:'hff, addr:'haaaaaa} 2 extIn = '{intr:'hff, addr:'haaaaaa} V C S S i m u l a t i o n R e p o r t
在上面的例子中,我們首先定義了一個名為“ext”的unpacked struct,然后直接作為module的output。
再聲明一個moudle top,連接到這個struct。最后打印表明這個結(jié)構(gòu)體確實完成了連接,打印相同的信息。
struct可以作為參數(shù)傳遞給task或function,前提是這個struct需要先使用typedef聲明為用戶自定義類型
typedef struct { logic [31:0] addr; logic [63:0] data; logic [3:0] BEnable; } control; function Dbus (input control ct1); …. endfunction
-
Module
+關(guān)注
關(guān)注
0文章
68瀏覽量
12860 -
SV
+關(guān)注
關(guān)注
0文章
6瀏覽量
13937 -
Struct
+關(guān)注
關(guān)注
0文章
31瀏覽量
10880
原文標(biāo)題:SV Structure作為module的input/output
文章出處:【微信號:芯片驗證工程師,微信公眾號:芯片驗證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論