[英]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.