首页|资源下载
登录|注册

您现在的位置是:首页 > 技术阅读 >  SystemVerilog中的Packed Union

SystemVerilog中的Packed Union

时间:2024-07-17

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” ,在物理内存中分配如下: