packed union相比unpacked union最大的一个区别就是,在packed union中,所有成员的大小必须相同,这就保证了不管union中存储了哪一个成员,最终这个union的大小是一样的。也正是加了这个限制,所以packed union是可综合的。
类似于packed struct,我们可以对这个union整体进行算法、切分等运算。
typedef union packed {
int a;
bit [31:0] c;
} data;
上面的union声明加入了packed关键字。因为两个成员的大小相同:“int”是32位,“bit [31:0] c”是32位。所以声明为unpacked union是没问题的。
typedef union packed {
logic [9:0] data;
struct packed {
bit p1;
bit [2:0] p2;
bit [1:0] p3;
bit p4;
bit [2:0] p5;
} p_modes;
} myUnion
myUnion Union1;
在上面的union中有2个成员,分别都是10比特大小 “struct” “p_modes” 和“data” ,在物理内存中分配如下:

-
Verilog
+关注
关注
30文章
1370浏览量
114145 -
System
+关注
关注
0文章
166浏览量
38460 -
union
+关注
关注
0文章
10浏览量
4589
原文标题:SystemVerilog中的Packed Union
文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
union 的概念及在嵌入式编程中的应用

SystemVerilog中的Packed Union
评论