私はiverilogを使ってシミュレーションを行う方法が適切でないことを知りました。合成できない設計をシミュレートすることができ、逆も同様に合成するだけでなく、物理的なハードウェアを対象としており、シミュレーションのためにiverilogと合成しません。私は理想的yosysの出力(BLIFファイル)をとり行うと、私はより良い自信を持つことができるシミュレーション波形(VCD)を作成しているよ何yosysの出力からシミュレーション波形を作成することは可能ですか?
。
私はiverilogを使ってシミュレーションを行う方法が適切でないことを知りました。合成できない設計をシミュレートすることができ、逆も同様に合成するだけでなく、物理的なハードウェアを対象としており、シミュレーションのためにiverilogと合成しません。私は理想的yosysの出力(BLIFファイル)をとり行うと、私はより良い自信を持つことができるシミュレーション波形(VCD)を作成しているよ何yosysの出力からシミュレーション波形を作成することは可能ですか?
。
ですから、合成後に実行したいですiCE40 BLIFネットリストのシミュレーション
module test(input clk, resetn, output reg [3:0] y);
always @(posedge clk)
y <= resetn ? y + 1 : 0;
endmodule
とそのテストベンチ(test_tb.v
):
module testbench;
reg clk = 1, resetn = 0;
wire [3:0] y;
always #5 clk = ~clk;
initial begin
repeat (10) @(posedge clk);
resetn <= 1;
repeat (20) @(posedge clk);
$finish;
end
always @(posedge clk) begin
$display("%b", y);
end
test uut (
.clk(clk),
.resetn(resetn),
`ifdef POST_SYNTHESIS
. \y[0] (y[0]),
. \y[1] (y[1]),
. \y[2] (y[2]),
. \y[3] (y[3])
`else
.y(y)
`endif
);
endmodule
合成前のシミュレーションを実行しているもちろん、単純なのです:
$ iverilog -o test_pre test.v test_tb.v
$ ./test_pre
は、次の簡単な例デザイン(test.v
は)考えてみましょう
合成後のシミュレーションでは、最初にシンセを実行する必要がありますESIS:
$ yosys -o test_syn.v test.blif
今では合成され、テストベンチからシミュレーションバイナリをビルドすることができます:それはイカルスのVerilogで読み取ることができるよう
$ yosys -p 'synth_ice40 -top test -blif test.blif' test.v
その後、我々は、VerilogネットリストにBLIFのネットリストを変換する必要がありますデザイン、およびiCE40シミュレーションモデル、およびそれを実行します。
$ iverilog -o test_post -D POST_SYNTHESIS test_tb.v test_syn.v \
`yosys-config --datdir/ice40/cells_sim.v`
$ ./test_post
[..]シミュレーションのためのiverilogを合成することはありません。
これは、Verilog規格の適用に関して、Yosysがiverilogほど厳密ではないためです。たとえば、多くの場合、YosysはVerilog標準に基づいてreg
キーワードを必要とする電線にキーワードreg
がないVerilogファイルを除きます。例えば、yosysは、それが有効なVerilogコードでなくても、以下の入力を受け入れます:
module test(input a, output y);
always @* y = !a;
endmodule
イカルスVerilogのためにあなたが不足しているreg
を追加する必要があります。
module test(input a, output reg y);
always @* y = !a;
endmodule
正直言って、iverilogのポスト合成チップ(ありがとう、素晴らしいツールはありません!)に感謝します。他の方法と同じように、有効なiverilogコードを合成しないと円形! (これは、私があなたのつま先をカールするようなVerilogの無知を介して物事をしているからです!)BTWはice40/cells_sim.vです.8kのボードは大丈夫ですか? –
@ChrisCamacho動作しているはずだが、yosysによって拒否されていると思われるVerilogコードがある場合は、githubのチケットを開くか、ここでstackoverflowの質問を開きます。そして、yes、 'ice40/cells_sim.v'はiCE40 1K、4K、8KのデバイスでOKです。 – CliffordVienna
たぶんofftopicが、VHDLの場合オプション、私はghdl波形に問題がなかった。 – xvan
yosysとは何ですか?聞いたことがない。 – Paebbels
yosysはiCEstick&boardのオープンソースVerilogツールチェーンの一部です –