当我在 Verilog 中做加法或减法时,一些编译器会发出警告。
// code example
logic [9 : 0] a, b, c;
always_ff @(posedge clk) begin
b <= a + 1;
c <= a - 1;
end
// warning example
Warning (13469): Verilog HDL assignment warning at xxx.sv(xxx): truncated value with size 11 to match size of target (10) File: xxx.sv Line: xxx
Warning (13469): Verilog HDL assignment warning at xxx.sv(xxx): truncated value with size 32 to match size of target (10) File: xxx.sv Line: xxx
我想找到清除这些警告的干净方法。我尝试了两种方法:
// method 1
b <= (a + 1)[9 : 0];
// method 2
logic [10 : 0] d;
d <= a + 1;
b <= d[9 : 0];
我认为第一种方法可以编译,但它在 verilog 中是无效的语法。第二种方法有效,但它过于冗长和肮脏。还有其他干净的方法吗?