読者です 読者をやめる 読者になる 読者になる

Tech と Culture

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

HDLシミュレーション2

RTLシミュレータ環境を立ち上げるのに悪戦苦闘していました。
Gaisler Research から提供されているRTLはSPARCV8プロセッサだけではなく、メモリコントローラやEathernetコアをはじめとしてSoCに使えるIPが目白押しです。RTLの完成度も非常に高いのですが、その汎用性も非常に高く、Xilinxに限らず、様々なテクノロジー上で使用できるようになっています。FPGAだけでなく、ASICにも使えるようになっています。

そこでメモリマクロなどは、コンフィグレーションによってテクノロジにマッピングされるようになっており、上位のRTLからは見えない(RTL上はどのテクノロジーでも同じコードとなる)ようになっています。
よって、ちょっとした回路を設計しても多数のファイルをコンパイルする必要があります。
またシミュレーションも多数のツールをサポートしており、makeコマンドで簡単にシミュレーションを立ち上げれるようになっています。

とりあえず、ISE Webpack に付属している ISE Simulator Lite というソフトウェアを使ってみました。
GrlibのAMBA master emulatorとAMBAバスコントローラとAHBメモリをペタペタとつなげたRTLをつくり、テストベンチのVHDLでAMBA master emulatorをコントロールするprocedureを並べました。
これだけで、AMBAの動作を理解するための回路が動くはず!

しかし、多数のファイルを入力する必要があり、ISE simulator はサポート外なので、自動バッチコマンドもないため、とりあえず統合環境から必要なファイルを読み込みコンパイル、シミュレーションスタート!
が、、、、、、まったく応答がない! そんな大した回路ではないのでそんなに時間がかかるとも思えません。多数のファイルを読み込んでいるので一万行のキャパをこえてしまったのかもと思い、必要ないファイルを削ってシミュレーションを繰り返しても同じです。
いろいろいじくりまわした後、少しあきらめて、ためしにGHDLを動かしてみました。
GHDLはサポートされていますので、自動実行Makefileを変更します。
%GRLIB_HOEM/design
のディレクトリに自分の書いたVHDLファイルを並べます。そこにあるMakefileの中の
TOP をトップモジュール名
VHDLSIMFILES をテストベンチ用のVHDLファイル名
VHDLSIMFILES を設計した回路のVHDLファイル名
SIMTOP をテストベンチのトップモジュール名
に変更します。
そして使用しないLIBがあれば、LIBSKIPに記述します(これをするとコンパイル時間が高速化されます)。
またDIRSKIPに今回使用したAMBA emulatorが含まれるambatestが入っていますのではずします。
これで make ghdl と入力すれば、自動でコンパイル、シミュレーションが行なわれます。
その結果は、、VHDLの単純な構文ミス!!!!
beginとendの構造が少しおかしくなっているだけでした。

が、何故 ISE Simulator はこれをメッセージしないのだろう!!!!!!!!!
かなり、このソフトに不信感をもってしまいました。使いたくない!

GHDLを用いて単純なミスを全部とると、アナライズフェーズはすべて終り、エラボレーションのフェーズに入りました。すると、unisim_VITALの所で謎のエラーが発生。DCMなぞ使っていないのにそれに関すると思われる謎のエラーが出ます。散々調べましたが原因が分からず。

悪戦苦闘がつづきます。