SystemVerilog union允许单个存储空间以不同的数据类型存在,所以union虽然看起来和struct一样包含了很多个成员,实际上物理上共享相同的存储区域。
结构体占用的内存空间是其中所有成员的存储空间之和,而联合体所占用的存储空间是等于其中所有成员中最大的存储空间。
union { int a; byte b; bit [15:0] c; } data;
在上面的例子中,由于占用最大存储空间的成员是int a,所以这个联合体的存储空间是32bit,示意图如下
而对于结构体
struct { int a; byte b; bit [15:0] c; } data;
所占用的存储空间是所有成员之和。示意图如下
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
Verilog
+关注
关注
28文章
1351浏览量
110077 -
System
+关注
关注
0文章
165浏览量
36929 -
结构体
+关注
关注
1文章
130浏览量
10840 -
union
+关注
关注
0文章
10浏览量
4259
原文标题:Systemverilog中的union
文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
SystemVerilog中的“const”类属性
SystemVerilog中可以将类属性声明为常量,即“只读”。目的就是希望,别人可以读但是不能修改它的值。
发表于 11-29 10:25
•2135次阅读
union 的概念及在嵌入式编程中的应用
union 在中文的叫法中又被称为共用体,联合或者联合体,它定义的方式与 struct 是相同的,但是意义却与 struct 完全不同,下面是 union ...
发表于 02-07 11:30
•0次下载
SystemVerilog中$cast的应用
SystemVerilog casting意味着将一种数据类型转换为另一种数据类型。在将一个变量赋值给另一个变量时,SystemVerilog要求这两个变量具有相同的数据类型。
SystemVerilog中的tagged Unions是什么
tagged union包含一个隐式成员,该成员存储tag,也就是标记,它表示这个union最终存储的到底是哪一个成员。
SystemVerilog中的Packed Union
packed union相比unpacked union最大的一个区别就是,在packed union中,所有成员的大小必须相同,这就保证了不管un
SystemVerilog中的Semaphores
SystemVerilog中Semaphore(旗语)是一个多个进程之间同步的机制之一,这里需要同步的原因是这多个进程共享某些资源。
Systemverilog中的Driving Strength讲解
在systemverilog中,net用于对电路中连线进行建模,driving strength(驱动强度)可以让net变量值的建模更加精确。
union和union all有什么区别
Union和Union All是SQL中的两个关键字,它们用于将两个或多个SELECT语句的结果集合并在一起。这两个关键字虽然有相似的功能,但在实际使用中有一些重要的区别。下面将详细介绍Uni
评论