在以下简化的Verilog代码中:
wire [31:0] depth;
wire mode_u2 = 1'h0;
assign depth = 'h80 + (~mode_u2);
Run Code Online (Sandbox Code Playgroud)
如果我在深度上进行显示,并用VCS进行模拟(2014.12-1)
$display("depth is 0x%2x", depth);
Run Code Online (Sandbox Code Playgroud)
我得到了0x7f
,而不是预期的0x81
.好像~mode_u2被视为减1.
如果我换~mode_u2
到!mode_u2
.我按预期得到0x81.
更有趣的是,如果我做wire mode = ~mode_u2
,然后assign depth = 'h80 + (~mode)
而不是0x80
,我得到0x7e
我在这里错过了什么吗?
有人可以解释为什么~
在+
操作中这样做吗?或者这些模拟和综合中的哪一个是不同的情况?
非常感谢!!
威利