SystemVerilog union允許單個存儲空間以不同的數(shù)據(jù)類型存在,所以union雖然看起來和struct一樣包含了很多個成員,實際上物理上共享相同的存儲區(qū)域。
結(jié)構(gòu)體占用的內(nèi)存空間是其中所有成員的存儲空間之和,而聯(lián)合體所占用的存儲空間是等于其中所有成員中最大的存儲空間。
union { int a; byte b; bit [15:0] c; } data;
在上面的例子中,由于占用最大存儲空間的成員是int a,所以這個聯(lián)合體的存儲空間是32bit,示意圖如下
而對于結(jié)構(gòu)體
struct { int a; byte b; bit [15:0] c; } data;
所占用的存儲空間是所有成員之和。示意圖如下
審核編輯:湯梓紅
-
Verilog
+關(guān)注
關(guān)注
28文章
1343瀏覽量
109925 -
System
+關(guān)注
關(guān)注
0文章
165瀏覽量
36847 -
結(jié)構(gòu)體
+關(guān)注
關(guān)注
1文章
129瀏覽量
10823 -
union
+關(guān)注
關(guān)注
0文章
10瀏覽量
4244
原文標題:Systemverilog中的union
文章出處:【微信號:芯片驗證工程師,微信公眾號:芯片驗證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論