オープンソースソフトウェア(OSS)を使ってlinux上にverilogの開発環境(コンパイル/シミュレーション)を作成します
はじめに
HDL(ハードウェア言語)を自宅で学習するためオープンソースで開発環境を整備しました
コンパイラ/シミュレータにIcarusVerilog、波形ViewerにGTKWaveというものを使います
IcarusVerilogはコンパイルからシミュレータ、論理合成までを行えますが
波形を表示するGUIを持たないのでGTKWaveを使って波形を表示します
環境
OS:CentOS 7
必要なソフトをインストールする
IcarusVerilogをインストールする
以下、事前に必要なソフトです
・autoconf
・gperf
・git
それぞれインストールしましょう。
CentOSでは「yum」を使ってインストールできます
sudo yum install autoconf
sudo yum install gperf
sudo yum install git
では、実際にIcarusVerilogをインストールしましょう
まず、gitから必要ファイルを取得します
git clone https://github.com/steveicarus/iverilog.git
iverilogというディレクトリができているので、移動します
cd iverilog
autoconf.shというファイルがあるので実行します
sh autoconf.sh
configureというファイルができるので、下記を順番に実行します
./configure
make
sudo make install
以上でインストールが完了します。
GTKWaveをインストールする
GTKWaveに必要なファイルをダウンロードします
注)2020/12/27現在でgtkwaveのバージョンが3.3.107でした。
バージョンが変わった場合はファイル名が変わると思うので、公式サイトで確認してみてください。
wget http://gtkwave.sourceforge.net/gtkwave-3.3.107.tar.gz
取得したファイルを解凍します
tar -zxvf gtkwave-3.3.107.tar.gz
gtkwave-3.3.107というディレクトリができるので移動します
cd gtkwave-3.3.107
あとは以下を順番に実行することでインストールできます
./configure
make
sudo make install
以上でインストールが完了します
作成した環境の動作確認をする
IcarusVerilogとGTKWaveをインストールできたので、実際に動かしてみましょう
適当なRTLを作成します
counter.v
module counter(out, clk, reset);
parameter WIDTH = 8;
output [WIDTH-1 : 0] out;
input clk, reset;
reg [WIDTH-1 : 0] out;
wire clk, reset;
always @(posedge clk)
out <= out + 1;
always @reset
if (reset)
assign out = 0;
else
deassign out;
endmodule // counter
次にテストベンチを作成します
テストベンチには$dumpfile(“<vcdファイル名>”)と$dumpvars(0, <テストベンチ名>)を記述する必要があります
test.v
module test;
/* Make a reset that pulses once. */
reg reset = 0;
initial begin
$dumpfile("test.vcd");
$dumpvars(0,test);
# 17 reset = 1;
# 11 reset = 0;
# 29 reset = 1;
# 5 reset =0;
# 513 $finish;
end
/* Make a regular pulsing clock. */
reg clk = 0;
always #1 clk = !clk;
wire [7:0] value;
counter c1 (value, clk, reset);
initial
$monitor("At time %t, value = %h (%0d)",
$time, value, value);
endmodule // test
counter.vとtest.vをIcarusVerilogを用いてコンパイルします
iverilog sample.v test.v
コンパイルが成功するとa.outという名前のファイルが作成されています
IcarusVerilogでシミュレーションを実行します
vvp a.out
シミュレーションが完了するとtest.vcdという波形ファイルが作成されます
これをGTKWaveを用いてGUIで波形を表示させます
gtkwave test.vcd &
GUIが起動すれば成功です
まとめ
今回はlinux環境にOSSを使ってVerilogの環境を作成しました
IcarusVerilog,GTKWaveの詳しい使い方はまたの機会に解説したいと思います
コメント