Tech と Culture

テクノロジーとカルチャー

ライブラリ化

これまで、モジュールの開発は、$GRLIB_HOME/designe/work で行っていましたが、ここはテクノロジーを指定したトップモジュールとシミュレーションテストベンチを開発する場所ですので、ライブラリ化してライブラリを置くべき場所にVHDLファイルを移動します。
(前回のエントリに書いたように今のところGHDLでうまくシミュレーションがこうしないとできません。。。)

基本的に $GRLIB_HOME/lib/****/****/****.vhdl のようにlib ディレクトリの下にすべてのライブラリが集まっています。
$GRLIB_HOME/lib/kuri/mjpeg/yccrgb.vhd
のような階層をつくりファイルを置きます。また、ライブラリ化するので、component宣言を行っているpackage宣言したVHDLファイルを作り同じディレクトリに置きます。
 $GRLIB_HOME/lib/kuri/mjpeg/mjpeg.vhd
中身は単なるcomponent宣言のみのpackageのみです。今後モジュール設計数が増えてきたときcomponent宣言はここに追加していきます。
GRLIBは以前にも記述しましたが、非常にうまいシステムでできていて、検証、インプリ等が単なるMakeで実行できるようになっています。そのためにいくつかファイルを変更、追加します。

$GRLIB_HOME/lib/libs.txtの中にその下のディレクトリ名と一致するライブラリ名のリストが記述されています。その中に kuri を追加しました。次に $GRLIB_HOME/lib/kuri/dirs.txt にその下の機能毎に分けたディレクトリ名すべてを書く必要があります。現在は、mjpegのみなので、mjpegという一行だけの中身でファイルを置いておきます。そして、$GRLIB_HOME/lib/kuri/mjpeg/vhdlsyn.txt というファイルをつくり、合成とシミュレーションに使用する、そのディレクトリ内のファイル全てをリストアップします。今のところは、以下のような二行だけのファイルです。
mjpeg.vhd
yccrgb.vhd
シミュレーションのみに使うファイルは、vhdlsim.txt の中にリストアップしますが、現在はありませんのでこのファイルは作る必要がありません。

ここまで変更を加えた後に、$GRLIB_HOME/design/work に戻ります。そこでトップモジュールである、leom3mp.vhd内で今回作ったライブラリ(component宣言)を読み込む文を追加し、architecture内ではただ単にインスタンスします。

library kuri;
use kuri.mjpeg.all;

ここまでやっておけば後は自動でスクリプトが作られます。
ライブラリから作り直すために一度クリーンにします。

make clean
make vsim-launch

これだけで、ディレクトリをサーチして必要なファイルやライブラリをチェックしてプロジェクトファイルを作った状態で、modelsimが起動します。一旦GRLIBの環境に合わせてしまうと非常に楽に進めることができます。