4

現在、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」を計算するにはどうすればよいですか?

4

1 に答える 1