首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SystemVerilog 0和'0有什么不同?

SystemVerilog 0和'0有什么不同?
EN

Stack Overflow用户
提问于 2017-04-12 14:29:11
回答 1查看 6.8K关注 0票数 4

在执行以下SystemVerilog代码时(编译并使用Questa运行)

代码语言:javascript
运行
复制
bit [7:0] test = 255;
$display("%b %b %b", test,        test == 255,      test == '1);
$display("%b %b %b", ~test,       ~test == 0,       ~test == '0);
$display("%b %b %b", 8'b00000000, 8'b00000000 == 0, 8'b00000000 == '0);

输出是

代码语言:javascript
运行
复制
11111111 1 1
00000000 0 1
00000000 1 1

我的问题是关于第二输出行的第二个数字:二进制00000000与0有什么不同?为什么只有当它是~test的结果,而不是当它是文字时,它才是不同的呢?这是Questa错误还是语言的属性?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-12 15:12:57

区别在于没有任何宽度前缀的0默认为32位值。在相等的情况下,操作数在计算LHS表达式和RHS表达式之间的最大宽度时才计算这些表达式。试试~test == 9'h0~test == 9'h100,看看你得到了什么。

'0的大小取决于它的上下文。因此,在这种情况下,~test =='0变成了~test == 8'b0

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43372468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档