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” ,在物理内存中分配如下:
全部0条评论
快来发表一下你的评论吧 !