どうもkohaniiです
普段使っているAlteraのCPLD、FPGAのプログラムを書くときに開発環境がWindowsとUbuntuしか無く、
macOS上でVerilogを書いて実行することができません。
せめてMacにVerilogを書いてシミュレーションができる環境があれば、Mac上で書いてWindowsでデバイス用にコンパイルすることができます。
そして調べてみるとIcarus VerilogというオープンソースのVerilogシミュレーターがあることがわかりました。
このソフトウェアはCLIでMacだけでなくUnix系、Linux、Windowsにも対応しているのでさまざまな環境でVerilogをシミュレーションできます。
ただこのソフトでシミュレーションしたところで内部の動作は分かりません。
調べてみるとVerilogコード内で$dumpfileコマンドなどを使用してValue change dump(VCD)ファイルを作成し、
そのファイルを専用のビューアで見ることで信号を確認するようです。
ビューアとなると画面表示などかなりハードウェア的な処理をするのでMacに対応したソフトは難しいと思ったのですが、GTKWaveというソフトがあるそうです。
このソフトもMacだけでなくUnix系 Linux Windowsに対応しています。
GUIはGTKという画像編集ソフトのGIMPのために開発されたツールキットを使用しているので様々な環境で動作するようです。
あとはテキストエディタさえあればいいのでこれで開発できます。
Icarus Verilogのインストール
Homebrewがインストールされている環境で
brew install icarus-verilog
と入力すればインストールされます。簡単ですね。
Homebrewは何かとよく使うのでインストールしておくのをお勧めします。
GTKWaveのインストール
このURLのDownload Latest Versionからzipをダウンロードします。
zipを解凍するとアプリケーションが出てくるので、アプリケーションフォルダにでも入れておきます。
試してみる
まずテストに使うtopモジュールのプログラムです。
top.v
`timescale 1s/1ms
module top;
reg clk = 1'd0;
initial begin
forever #1 clk = ~clk;
end
initial begin
#16 $finish;
end
wire dff1_Q;
dff dff1(
.clk(clk),
.reset(1'd0),
.D(~dff1_Q),
.Q(dff1_Q)
);
wire dff2_Q;
dff dff2(
.clk(dff1_Q),
.reset(1'd0),
.D(~dff2_Q),
.Q(dff2_Q)
);
wire dff3_Q;
dff dff3(
.clk(dff2_Q),
.reset(1'd0),
.D(~dff3_Q),
.Q(dff3_Q)
);
initial begin
$dumpfile("top.vcd");
$dumpvars(0, top);
end
endmodule
そしてサブモジュールのdffです。
dff.v
module dff (
input clk,
input reset,
input D,
output reg Q
);
initial begin
Q <= 0;
end
always @(posedge clk or posedge reset) begin
if(reset) begin
Q <= 0;
end else begin
Q <= D;
end
end
endmodule
これをまずコンパイルします。
ターミナルで以下を実行します。
iverilog -o top.out -s top dff.v top.v
そうするとtop.outファイルが作成されます。
そしてtop.outファイルを実行します。
vvp -n top.out
そうするとtop.vファイル内の$dumpfileで指定されているtop.vcdファイルが作成されます。
このtop.vcdファイルを起動したGTKWaveウィンドウにドラックアンドドロップすると、
このように左上のSSTにtopが表示されるはずです。
このtopを選択すると、下のSignalsにtop内のwireとregが表示されるはずです。
このSignalsにある要素をダブルクリックすると右のWavesに追加されていきます。
追加しても波形が止まっているように見えますが、ズームアウトすると波形全体が見えるはずです。
SSTタブのtopの左の三角からその中の使われているモジュールの内部も見る事ができます。
これで開発がずいぶん楽になるはずです。
おわり
コメント