Verilog-HDL 入門

 私は,LSI に関する研究をしているため,回路をテキストで記述する(ネットリストを書く)ことがあります。これが,結構面倒くさい!!
 ある時ふと「Verilog」で回路を設計してみようと思い,記述してみると Verilog で記述する方が“ん10倍”楽でした(← 専門の人からすると,当然だと思いますが…)。
 今回,Verilog に関する自分用のメモとしてこのページに残すことにしました。ただし,私は Verilog-HDL の専門家ではないので,誤った記述が多々存在するかもしれません。その場合には,ぜひご一報ください。

(注:プログラムも表も,キャプションを全て“図”としています)

メインメニュー

  1. Verilog-HDL とは
  2. Verilog シミュレータと波形表示ソフトのインストール
  3. いりなり Verilog を書いて,シミュレーションしてみる
  4. Verilog-HDL の基本− 3章の解説
    4.1 Verilog-HDL 記述の解説
    4.2 コンパイル
    4.3 シミュレーションの実行
    4.4 シミュレーションの波形を表示する
  5. Verilog-HDL の文法
    5.1 識別子
    5.2 数値表現
    5.3 モジュール宣言(module, endmodule)
    5.4 ポート宣言(input, output)
    5.5 ネット宣言,レジスタ宣言(wire, reg)
    5.6 パラメータ宣言(parameter)
    5.7 組合せ回路(assing 文)
    5.8 always 文
    5.9 ブロッキング代入文とノンブロッキング代入文
  6. 機能別の記述例

付録 A. Technical Terms (用語)
付録 B. 演算子や組み込みプリミティブ
付録 C. 勘違い編

1. Verilog-HDL とは

 Verilog-HDL の "HDL" は, Hardware Description Language の略で,日本語に訳すと「ハードウェア記述言語」です。HDL には私の知っている限り,Verilog-HDL, VHDL, SFL, UDL/I の4種類存在する。Verilog-HLD はその中の一つです。主に,アメリカや日本国内の半導体メーカで普及しているようです。

 HDL(ハードウェア記述言語)とは,ハードウェアを作製するための言語。ハードウェアを設計するのにソフトウェアを用います。回路を設計するというと,普通の人は回路図を描くことを思い浮かべると思います。ですが大きな回路を設計する場合,回路図を描いて行うより,HDL を用いて設計する(プログラムのように書いて設計する)方が楽なんです。例えば携帯に組み込まれているチップ(DSP)は,大規模なもので 500 万ゲートにもなります。500万ゲートを回路図で設計していくことが困難なことは想像に及ばないと思います。
 図 1.1 と 図 1.2 にその違いを示します。このくらいの回路規模であるとそう違いは分かりませんが,設計する規模が大きくなってくるとその差は歴然となります。

module a684 (a, b, c, d, e, f, f1, f2, f3, f4);

input a, b, c, d, e, f;
output f1, f2, f3, f4;

   assign f1 = a&b|c&d;
   assign f2 = (a&b|c&d)&c&d&(e|f);
   assign f3 = c&d&(e|f)&(a|b);
   assign f4 = a|b;

endmodule
図 1.1 a684 の回路図 図 1.2 Verilog-HDL による a864 の記述


2. Verilog シミュレータと波形表示ソフトのインストール

 Verilog シミュレータとして Icarus Verilog Simulator, 波形表示ソフトとして GTKWave を利用する。以下に,私が Verilog を利用している環境を示します。

Icarus Verilog Simulator のインストール先 C:\iverilog
GTKWave のインストール先 C:\GTKWave
Verilog ファイルの保存先 D:\My Document\Verilog

 私は,システム(Window 2000)やプログラムを C ドライブに,データ(マイドキュメント)を D ドライブに保存するようにしているので,上記のような設定にしています。

 なお,神戸大学工学部電気電子工学科の人は,沼先生の講義サポートページにインストール方法など役に立つ詳しい情報が掲載されているので,そちらを参照することをお勧めします。

2.1 Icarus Verilog Simulator のインストール
(1) ftp://ftp.icarus.com/pub/eda/verilog/v0.8 に行って Windows をクリック。
(2) iverilog-0.8-setup.exe (2.57 MB)というアイコンがあるので,そのアイコン上で右クリック
(3) フォルダにコピーをクリックし,保存先(私の場合だと C:\iverilog)を指定するとダウンロードが始まります。
(4) ダウンロード後,そのアイコンをWクリックするとセットアップが始まります。インストール先などを指定するとインストールは完了します。

2.2 GTKWave のインストール GTKWave のページはこちら
(1) GTKWave-win32-1.3.19.zip (139 KB),DLL-19990828.zip (1.36MB),そして zlib114.zip (26.4 KB)をダウンロード。(ダウンロードの仕方は,2.1 (2)-(3)と同様)
(2) それらのファイルを解凍すると,解凍したフォルダごとに winwave.exe , *.dll ,zlib.dll というファイルが生成されます。
(3) GTKWave を格納したいフォルダ(私の場合だと,C:\GTKWave)を作成し,作成したフォルダに解凍したファイルを全てコピーします。これで GTKWave のインストールは終了です。

2.3 Path 変数の設定
 上記ソフトのインストール先(C:\iverilog\bin と C:\GTKWave)をパス変数に追加します。こうすることで,わざわざ Icarus Verilog Simulator や GTKWave を実行するときに,それらをインストールしたディレクトリに移らなくて済みます。
(A) Windows 98 以前の OS の場合
(A-1) C:\AUTOEXEC.BAT をメモ帳などで開きます。
(A-2) PATH=C:\iverilog\bin;C:\GTKWave;%%PATH%% を最後に追加して上書き保存します。これで設定は終了。

(B) Windows 2000/XP の場合
(B-1) マイコンピュータを右クリックし,プロパティ をクリック。
(B-2) 開いたウィンドウの 詳細 というタブをクリックし,環境変数 をクリック。
(B-3) 開いたウィンドウの システム環境変数 の中から Path を探し,それをクリックして 編集 をクリック。
(B-4) 変数値;C:\iverilog\bin;C:\GTKWave を追加。これで設定は終わり。


図 2.1 システム環境変数の設定

 正しくインストールできたを調べましょう。 [スタート]−[(すべての)プログラム]−[アクセサリ]−[コマンドプロンプト(MS-DOSプロンプト)]をクリックし,コマンドプロンプトを表示させます。([ファイル名を指定して実行]で cmd と入力して起動させても可)

Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

C:\Documents and Settings\Administrator>

図 2.2 コマンドプロンプトを起動したときの表示

 ここで,iverilog と入力して Enter を押します。また,winwave と入力して Enter を押します。それぞれ以下のようなメッセージが表示されれば,インストールは正確に行われています。図2.2 では,黄色が入力部分,水色が表示されるメッセージを示します。

Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

C:\Documents and Settings\Administrator>
iverilog
iverilog: Noinput files.
Usage: iverilog …

(省略しています)

See man page for details.


C:\Documents and Settings\Administrator>
winwave
Usage:
------
winwave …

(省略しています)

See the accompanying documentation for more information.



C:\Documents and Settings\Administrator>

図 2.3 インストールの確認

このページの先頭へ戻る
新居良祐サポートページの先頭へ戻る