0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SystemVerilog中的Packed Union

芯片验证工程师 来源:芯片验证工程师 作者:芯片验证工程师 2022-11-12 09:05 次阅读

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

f010f73a-61db-11ed-8abf-dac502259ad0.png

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    28

    文章

    1351

    浏览量

    110154
  • System
    +关注

    关注

    0

    文章

    165

    浏览量

    36988
  • union
    +关注

    关注

    0

    文章

    10

    浏览量

    4287

原文标题:SystemVerilog中的Packed Union

文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    SystemVerilog 各种不同的联合解析

    联合分两种类型:打包 (packed) 和解包 (unpacked)。在上述示例,我们指定的是打包联合。
    的头像 发表于 11-19 15:16 2115次阅读
    <b class='flag-5'>SystemVerilog</b> <b class='flag-5'>中</b>各种不同的联合解析

    SystemVerilog的Virtual Methods

    SystemVerilog多态能够工作的前提是父类的方法被声明为virtual的。
    发表于 11-28 11:12 713次阅读

    SystemVerilog的联合(union)介绍

    SystemVerilog ,联合只是信号,可通过不同名称和纵横比来加以引用。
    的头像 发表于 10-08 15:45 1422次阅读
    <b class='flag-5'>SystemVerilog</b><b class='flag-5'>中</b>的联合(<b class='flag-5'>union</b>)介绍

    请问UNIONUNION ALL的区别是什么?

    UNIONUNION ALL的区别
    发表于 11-17 07:25

    union 的概念及在嵌入式编程的应用

    union 在中文的叫法又被称为共用体,联合或者联合体,它定义的方式与 struct 是相同的,但是意义却与 struct 完全不同,下面是 union ...
    发表于 02-07 11:30 0次下载
    <b class='flag-5'>union</b> 的概念及在嵌入式编程<b class='flag-5'>中</b>的应用

    SpinalHDLBundle数据类型的转换

    SpinalHDLBundle与SystemVerilogpacked struct很像,在某些场景下,与普通数据类型之间的连接赋值可以通过asBits,assignFromBi
    的头像 发表于 10-17 09:51 1338次阅读

    unpacked数组和packed数组的主要区别

    unpacked数组和packed数组的主要区别是unpacked数组在物理存储时不能保证连续,而packed数组则能保证在物理上连续存储。
    的头像 发表于 10-18 09:13 2864次阅读

    SystemVerilogPacked Structure

    一个packed structure有很多的bits组成,这些bit在物理上连续存储。packed structure只允许包含packed数据类型。
    的头像 发表于 11-07 10:17 2298次阅读

    SystemVerilog的struct

    SystemVerilog“struct”表示相同或不同数据类型的集合。
    的头像 发表于 11-07 10:18 2478次阅读

    Systemverilogunion

    SystemVerilog union允许单个存储空间以不同的数据类型存在,所以union虽然看起来和struct一样包含了很多个成员,实际上物理上共享相同的存储区域。
    的头像 发表于 11-09 09:41 946次阅读

    SystemVerilog的tagged Unions是什么

    tagged union包含一个隐式成员,该成员存储tag,也就是标记,它表示这个union最终存储的到底是哪一个成员。
    的头像 发表于 11-10 10:02 1481次阅读

    SystemVerilog的Unpacked Unions

    unpacked union各个成员的大小可以是不同的。
    的头像 发表于 11-11 09:33 692次阅读

    SystemVerilog的Shallow Copy

    SystemVerilog的句柄赋值和对象复制的概念是有区别的。
    的头像 发表于 11-21 10:32 927次阅读

    SystemVerilog的Semaphores

    SystemVerilogSemaphore(旗语)是一个多个进程之间同步的机制之一,这里需要同步的原因是这多个进程共享某些资源。
    的头像 发表于 12-12 09:50 3397次阅读

    unionunion all有什么区别

    UnionUnion All是SQL的两个关键字,它们用于将两个或多个SELECT语句的结果集合并在一起。这两个关键字虽然有相似的功能,但在实际使用中有一些重要的区别。下面将详细介绍Uni
    的头像 发表于 12-06 10:22 1123次阅读