我目前正在通过使用 Yosys 将代码合成到 iCE40 开发板来学习 Verilog。我坚持在verilog中使用参数。我有以下代码:
module tst;
parameter clkspd=12000000;
parameter baudrate=115200;
localparam bitperiod=$floor(clkspd/baudrate-0.5);
localparam bittmrwidth=$clog2(bitperiod);
//localparam bittmrwidth=$clog2(103);
initial begin
$display("Hello World!");
$display("width=%d",bittmrwidth);
end
endmodule
当我编译代码时:
yosys -p 'synth_ice40 -top tst -blif tst.blif' tst.v
我收到一个错误:
ERROR: Failed to evaluate system function `\$clog2' with non-constant value at tst.v:5.
但是,如果我使用注释掉的行,一切都会按预期工作。
如何使用给定的参数计算“bittmrwidth”?