在以下简化的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
我在这里错过了什么吗?
有人可以解释为什么~在+操作中这样做吗?或者这些模拟和综合中的哪一个是不同的情况?
非常感谢!!
威利