Icarus Verilogのインストール

設計

Mac OS X YosemiteにIcarus Verilogをインストールしました。Icarus Verilogはオープンソース(GNU General Public License)のVerilogシミュレータです。

インストール手順は次の2ステップです。
1. autoconfのインストール
2. Icarus Verilogソースコードの入手とコンパイル
インストールの手順はLinuxの場合と基本的に同じです。

1. autoconfのインストール

Icarus Verilogのコンパイルにはautoconfが必要ですが、OS X Yosemiteにはインストールされていないようです。このため、最初にautoconfをインストールします。
まず、Applications->Utilitiesからターミナルを開きます。

ターミナルを開く

ターミナルを開く

ターミナルから次の手順でauroconfをインストールします。

$mkdir temp
$cd temp
$curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-2.68.tar.gz
$tar xvzf autoconf-2.68.tar.gz
$cd autoconf-2.68
$./configure
$make
$sudo make install

2. Icarus Verilogソースコードの入手とコンパイル

ソースコードの入手

適当なディレクトリでgitを使ってIcarus Verilogのソースコードを入手します。

$git clone git://github.com/steveicarus/iverilog.git

コンパイル

iverilogディレクトリに移動してautoconfを実行後、congiureとmakeを実行します。

$cd iverilog
$autoconf
$./configure
$make

テストとインストール

make checkで動作確認後、make installでインストールします。

$make check
(途中経過省略)
:
test -r check.conf || cp ./check.conf .
driver/iverilog -B. -BPivlpp -tcheck -ocheck.vvp ./examples/hello.vl
vvp/vvp -M- -M./vpi ./check.vvp | grep 'Hello, World'
Hello, World

make installを行うと、デフォルトの設定では/usr/local/binに実行ファイルがインストールされます。

$sudo make install
(途中経過省略)
:
./../mkinstalldirs "/usr/local/bin" "/usr/local/lib/ivl"
/usr/bin/install -c ./sizer.tgt "/usr/local/lib/ivl/sizer.tgt"
./../mkinstalldirs "/usr/local/bin" "/usr/local/share/man/man1"
/usr/bin/install -c ./iverilog "/usr/local/bin/iverilog"
/usr/bin/install -c -m 644 iverilog.man "/usr/local/share/man/man1/iverilog.1"

簡単な使い方

Icarus VerilogのQUICK_START.txtに記載されている通り、iverilogというプログラムを使ってVerilogファイルをコンパイルし、その結果をvvpというプログラムに渡すとシミュレーションが始まります。iverilogのオプション詳細は、ターミナルで”man iverilog”と入力すると表示されます。
Icarus Verilogのシミュレーションサンプルは、必要なVerilogファイルをコマンドファイルに列挙したものが多く見られますが、他のシミュレータと同様に-yオプションでモジュールのサーチパスを指定することも可能です。

次の例では、トップモジュール(テストベンチ)以外はVerilogファイルを指定していません。コマンドファイルには拡張子指定の最低限のコマンドのみ記述しています。(この例のサンプルはこちら)

#!/bin/sh

# RTL directory
RTL_DIR="../rtl"
TOP_MODULE=test_module

sim_file=$1
echo "Test Scenario=" $sim_file

# compile
iverilog -c ../bin/cmd.txt \
    -y ${RTL_DIR} \
    -o ${TOP_MODULE} \
    ${sim_file}

# simulation
vvp ${TOP_MODULE}

コマンドファイル(cmd.txt)の内容

+libext+.v

シミュレーション実行ログ

$../bin/run_iv.sh ../scenario/test_1.v 
Test Scenario= ../scenario/test_1.v
Hello Icarus Verilog!!
VCD info: dumpfile dump.vcd opened for output.
Input Data: 24
Input Data: 81
Input Data: 09
Input Data: 63
Input Data: 0d
Input Data: 8d
Input Data: 65
Input Data: 12
Input Data: 01
Input Data: 0d

Icarus VerilogでVPIを使う場合の手順はこちら

タイトルとURLをコピーしました