パラメータに応じて変数インスタンシエーションを操作する方法はありますか?Verilog/SV条件変数定義
たとえば、ちょうどbit [WIDTH-1:0] a;
を入れてDEPTH == 1に設定すると、幅は0になり、bit [-1:0] a;
は意味をなさないでしょう。
以下の例のようにコードを書くと、2番目の$ディスプレイに "Undeclared identifier:a"というエラーが表示されます。 Verilog/SVでこれを達成する方法はありますか?またはコードにエラーがありますか?
module test #(
parameter DEPTH = 2,
parameter WIDTH = $clog2(DEPTH)
)();
generate
if (WIDTH == 0) begin
bit a;
end else begin
bit [WIDTH-1:0] a;
end
endgenerate
initial begin
$display("WIDTH: %d", WIDTH);
$display("Bit width of a: %d", $bits(a));
end
endmodule: test
wow:|それが可能であることを知りませんでした。素晴らしい答え、ありがとうございます。 – evilpascal