繁体   English   中英

带位选择器和不带位选择器的赋值有什么区别? (e/Specman)

[英]What is difference between assignment with and without bit selector? (e/Specman)

我正在使用 e(Specman)编程语言进行编码。 如果我想用常量分配整数变量,如果我使用位选择器(选择所有 32 位)有什么区别?

我想以以下形式分配具有负常量的整数变量:32'b1...但是这个值被自动转换为正数(大于MAX_INT)并且我得到了错误。 然后我尝试在变量上使用位选择器 ([31:0]),并且没有错误地通过赋值。 好的数字被分配给变量。 我不确定为什么会这样。 当我们不使用位选择器时自动转换负数的原因是什么,为什么不使用它。

有错误的代码:

int_variable = 32'b111111111111111111111111

没有错误的代码:

int_variable[31:0] = 32'b111111111111111111111111

文档说

在赋值 (lhs = rhs) 中,右侧 (rhs) 表达式继承左侧 (lhs) 表达式的上下文

因此,您的 rhs 表达式应该自动转换为 -1(假设您的代码包含 32 个或更多 1;对于 31 个 1,您将获得 MAX_INT)。

我不认为 Specman 对此有任何错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM