Windows版 Icarus Verilog のインストールについて

Windowsにおいて,FPGA/CPLDなどの論理回路を記述する言語Verilog HDL(リンク先は Wikipedia)をコンパイル出来るようになるまでの試行錯誤.

結論だけ見たい方は「まとめ」まで飛ばしてしまって構いません.

コトの発端:VerilogをWindowsで!

私はVerilog HDLを使ったディジタル回路設計の授業をとっている.

この授業では,LinuxマシンでIcarus VerilogというVerilog HDLのコンパイラ,シミュレータを使っている.Icarus VerilogはGPL準拠のフリーソフトウェアで,主にLinux向けに開発が行われている.先生から聞いたところによれば,Windows版もちゃん と用意されているらしい.Linux環境を用意せずとも課題を自宅でやれるならしめたものだ.

さっそくIcarus Verilogの公式サイト(http://www.icarus.com/eda/verilog/) へ飛んでみる.WindowsやらLinuxやらのおのおのの環境で動作するIcarus Verilogは,IcarusのFTPディレクトリ(ftp://ftp.icarus.com/pub/eda/verilog/v0.8/) から取得することが出来るよ,と紹介されている.

The Current release is available in source and a variety of binary forms in the FTP directory <ftp://icarus.com/pub/eda/verilog/v0.8/ >.

実際にFTP接続すると,MacOSか らはじまり,RedHatSolarisSUSEに続い て,Windowsと いう名前のディレクトリが存在している.

Windowsディレクトリ内にはWindows版のインストーラらしきファイル(iverilog-0.8-setup.exe)が置いてある.

最初の躓き:IcarusのFTPサイトから取得できない!

さっそくダウンロード,というところでさっそく躓いた.2008-12-26現在もWindows版インストーラをダウンロードすることが出来ない. 550エラーが発生しているので,パーミッション設定がおかしいためにファイル取得に失敗するようだ.

他にWindows版インストーラを提供しているところがないか,グー グルで検索してみると,Icarus Verilog for Windows(http://bleyer.org/icarus/)というサイトが見 つかった.こちらのサイトでは比較的日付の新しいWindows版インストーラが提供されている.

今回は最新安定版とされているiverilog-0.8.6_setup.exeを使うことにした.

# iverilog-0.8.6_setup.exe [1.29MB] iverilog-0.8.6.7z [800kB] (last stable release)

二つ目の躓き:インストールまではすんなり成功!・・・でもコンパイルが通らないぞ編

インストーラは至って普通のもので,英語だけれども難しいことはない.親切にもめんどくさいパスの設定までやってくれる.

(なお,パス設定はWindowsの再起動するまで有効にならないので注意.)

インストール終了後,Windowsを再起動し,コマンドプロンプトでiverilogと入力すると……っと通った!

C:\WINDOWS\system32>iverilog
iverilog: no source files.

Usage: iverilog [-ESvV] [-B base] [-c cmdfile|-f cmdfile] [-g1|-g2|-g2x]
[-D macro[=defn]] [-I includedir] [-M depfile] [-m module]
[-N file] [-o filename] [-p flag=value]
[-s topmodule] [-t target] [-T min|typ|max]
[-W class] [-y dir] [-Y suf] source_file(s)

See the man page for details.

きちんとパスも通っているようだ.

では,さっそくこれまでに作成したVerilog HDLのソース(c:\test.v)をコンパイルしてみる……と,なぜかコンパイルに失敗.

C:\>iverilog test.v
'C:\Program' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

なるエラーが発生した.どうも,iverilog <source_file> としてコンパイルを行うことが出来ないらしい.

エラー文「'C:\Program' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」から察するにiverilogの実行ファイ ルまでのパスに半角が含まれているのが問題なようだ.

つまり,本来,'C:\Program Files\Icarus Verilog\bin'と指定されているところが,半角スペースが存在することで'C:\Program'で途切れてしまったと考えられる.

Windowsではファイル名やディレクトリ名に半角スペースを利用することが可能だが,Windows以外の多くのOSではこれを許していない.このた め,もともとWindows向けに作られていないアプリケーションなどではしばしばこのようなことが起こるようだ.Icarus Verilogも基本的にはLinux向けに開発されているアプリケーションなので,ファイルパスやディレクトリパスに半角スペースが存在している場合を 考慮していない可能性が高い.

二度目のインストール:半角スペースが存在しないディレクトリパス

仕方がないのでいったんアンインストールして,再度インストールを試みる.

インストーラが示す,デフォルトのインストール先は"c:\program files\Icarus verilog\"となっている.一回目のインストールでは深く考えずにそのままインストールしてしまったわけだ.この絶対パスには二つも半角スペースが 存在している.

先述したように「半角スペースが悪さをしている」と思われるので,絶対パスに半角スペースを含まないディレクトリへインストールを行うことにする.

今回,インストール先は"c:\icarus_verilog\"とした.

ようやくコンパイル成功,シミュレーションも問題なく行える

パス設定を有効にするため,再びWindowsを再起動する.さっそく先ほどのソースファイルのコンパイルを試行する.

C:\>iverilog test.v

何もエラー文がないところを見ると,コンパイルに無事成功したようだ.ソースファイル名以外に何も指定しなかった場合は,"a.out"としてカレント ディレクトリにVerilogの実行ファイルが生成される.

次に,シミュレーションを実行してみる.シミュレーションは「vvp <Verilogの実行ファイル>」という形で実行する.

C:\vvp a.out
VCD info: dumpfile test.vcd opened for output.
0 clk=0 in=00 out=0
100 clk=1 in=01 out=1
200 clk=0 in=10 out=0
300 clk=1 in=11 out=1
400 clk=0 in=01 out=0

シミュレーションも無事成功した.

まとめ



Back to home


Author : gakyo <rustflem.g[at]gmail.com>  Last modified : 2008/12/26