无符号表达式在赋值中与有符号表达式一起使用
Unsigned expression used with signed expression in assignment
我在 verilog 中有以下代码:
reg [5:0] a;
reg [5:0] shift_amt;
reg [63:0] mysig;
assign shift_amt = (a + 1) & 6'h3f;
assign mysig = 1 << shift_amt;
当我 运行 望远镜时,出现以下错误:
无符号表达式'mysig'在赋值中与有符号表达式'(1 << shift_amt)'一起使用。
我没有标记为 signed 或 unsigned,并且我尝试了几种重写此语句的方法,甚至包装尝试$unsigned(1 << shift_amt),但由于某种原因,我的 mysig 结果在测试用例 I 中变为 0正在使用 a = 39.
数字文字 1
隐含地是一个带符号的 32 位值。作为习惯,你应该写成
assign mysig = 64'b1 << shift_amt;
我在 verilog 中有以下代码:
reg [5:0] a;
reg [5:0] shift_amt;
reg [63:0] mysig;
assign shift_amt = (a + 1) & 6'h3f;
assign mysig = 1 << shift_amt;
当我 运行 望远镜时,出现以下错误:
无符号表达式'mysig'在赋值中与有符号表达式'(1 << shift_amt)'一起使用。
我没有标记为 signed 或 unsigned,并且我尝试了几种重写此语句的方法,甚至包装尝试$unsigned(1 << shift_amt),但由于某种原因,我的 mysig 结果在测试用例 I 中变为 0正在使用 a = 39.
数字文字 1
隐含地是一个带符号的 32 位值。作为习惯,你应该写成
assign mysig = 64'b1 << shift_amt;