在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
審核編輯 :李倩
-
模塊
+關(guān)注
關(guān)注
7文章
2626瀏覽量
47212 -
RTL
+關(guān)注
關(guān)注
1文章
384瀏覽量
59623 -
結(jié)構(gòu)體
+關(guān)注
關(guān)注
1文章
127瀏覽量
10812
發(fā)布評論請先 登錄
相關(guān)推薦
評論