在Systemverilog中,union可以被声明为tagged unions。
union tagged {
int a;
byte b;
bit [15:0] c;
} data;
tagged union包含一个隐式成员,该成员存储tag,也就是标记,它表示这个union最终存储的到底是哪一个成员。
tagged union 是一种类型检查(type-checked)union.
这意味着你不能写入union中的一个成员,而读取另外一个成员。因为在这期间,tagged union会进行读写类型检查
data = tagged a 32'hffff_ffff;
如果从不同的union成员中读取值,仿真器则会报错:
module tagged_union_example; logic [31:0] x; typedef union tagged { int a; byte b; bit [15:0] c; } data; data d1; initial begin d1 = tagged a 32'hffff_ffff; //write to 'a' //read from 'b'. Since 'a' was written last, cannot access //'b'. - Error x = d1.b; $display("x = %h",x); end endmodule
在上面的例子中,我们创建了一个tagged union " data ",并声明" d1 "为" data "类型。然后我们写入成员a:
d1 = tagged a 32'hffff_ffff;
然后我们读取值“d1.b”。因为读写的成员类型不同,所以会打印错误信息:
Error-[TU-INVMEMUSG] Invalid member usage of a tagged union. testbench.sv, 15 Member of a tagged union referred is not valid since a different member is in use. The expected tag is 'a', but tag 'b' is used. Please check which member of the tagged union is in use. V C S S i m u l a t i o n R e p o r t
审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
仿真器
+关注
关注
14文章
1054浏览量
88389 -
Verilog语言
+关注
关注
0文章
113浏览量
8851
原文标题:SystemVerilog中的tagged Unions
文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
SystemVerilog中的“const”类属性
SystemVerilog中可以将类属性声明为常量,即“只读”。目的就是希望,别人可以读但是不能修改它的值。
发表于 11-29 10:25
•2626次阅读
SystemVerilog的断言手册
SystemVerilog Assertion Handbook1 ROLE OF SYSTEMVERILOG ASSERTIONSIN A VERIFICATION METHODOLOGY
发表于 07-22 14:12
•20次下载
Tagged Image File Format (TIFF) Decoder - Download Production Code
Tagged Image File Format (TIFF) Decoder - Download Production Code
发表于 02-01 12:45
•0次下载
SystemVerilog中$cast的应用
SystemVerilog casting意味着将一种数据类型转换为另一种数据类型。在将一个变量赋值给另一个变量时,SystemVerilog要求这两个变量具有相同的数据类型。
SystemVerilog中的package
SystemVerilog packages提供了对于许多不同数据类型的封装,包括变量、task、function、assertion等等,以至于可以在多个module中共享。
SystemVerilog中的Semaphores
SystemVerilog中Semaphore(旗语)是一个多个进程之间同步的机制之一,这里需要同步的原因是这多个进程共享某些资源。
Systemverilog中的Driving Strength讲解
在systemverilog中,net用于对电路中连线进行建模,driving strength(驱动强度)可以让net变量值的建模更加精确。
SystemVerilog中的tagged Unions是什么
评论