こんにちは。頭領です。
入社して半年が過ぎ、配属されたばかりの頃が大昔のように思えるほど、濃い日々を送ってきました。
当時は何もわからず勉強し、体系的に理解出来なかったものが、少しずつ頭の中で整理されてきました。
そこで、かつて理由もわからず言われた通りに行っていた、ツールの使い方の一場面を整理して説明します。
今回は、シミュレーション・ツール 「 ModelSim* - Intel® FPGA Edition 」 を使っていた時の一コマです。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ある日、 インテル® Quartus® Prime を使って作成した、 ALTPLL を含むデザイン・プロジェクトを、 ModelSim* - Intel® FPGA Edition を使用して RTL シミュレーションを実行した。
いつものように ModelSim* - Intel® FPGA Edition を立ち上げ、プロジェクト作成 → コンパイル → シミュレーションというステップを踏もうとしたのだが…
Start Simulation を実行後、上記のようなエラー・メッセージが出てしまった。
先輩に相談すると、
先輩 「デザインに、メガファンクション入ってる?」
頭領 「あ、はい」
先輩 「ライブラリを指定した?」
頭領 「…何のことですか?」
先輩 「インテル FPGA・メガファンクション・ライブラリだよ。 ModelSim* - Intel® FPGA Edition でインテル FPGA・メガファンクションを RTL シミュレーションする時はこれが必要なの!」
頭領 「そうなんですか。ところで、なんで altera_mf って名前なんですか?」
先輩 「 インテル® Quartus® Prime の MegaWizard Plug-In Manager で、今使用しているメガファンクションを開いてみな」
頭領 「あ、最後のページに altera_mf って書いてありますね」
先輩 「ここを参照すれば、 ModelSim 等の HDL シミュレータでシミュレーションする時に必要なライブラリ名がわかる」
頭領 「なるほど」
先輩 「これで、完璧にマスターしたね!」
頭領 「えっ…い、いやぁ…」
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
この時は先輩に言われた通り、ライブラリを追加してなんとか乗り切った。しかし、この時点で理解できたことは、
1. インテル FPGA・メガファンクションを使用したデザインを ModelSim 等の HDL シミュレータでシミュレーションする時は、別途ライブラリを指定し読み込む必要がある
2. 各メガファンクションにおいて必要となるライブラリは、 MegaWizard Plug-In Manager の最後のページで確認できる
ということだけで、細かい部分や、なぜこの現象が起きたのか等は理解出来なかった。
これはなぜかというと、 ModelSim などの HDL シミュレータでは MegaWizard Plug-In Manager で生成したメガファンクションは下位階層を インテル® Quartus® Prime のライブラリから読み込んでいるからだ。つまり、動作の記述がないため、ブラックボックスのイメージとなる。
そのため、 RTL レベルのシミュレーションを行うためには、 RTL レベルでメガファンクションと同様の動作が出来るファイルを使用しなければならない。
その際必要になってくるのが、ファンクション・モデルなのだ。そのモデルを含む代表的なライブラリは以下の通り。
・altera_mf : ALTPLL、ALTLVDS、RAM、ALTMULTなど
・lpm : lpm_counter、lpm_ram、lpm_fifo、lpm_multなど
※シミュレーション・モデルが存在せず、シミュレーションが出来ないものも存在する( Parallel Flash Loader など)
ここで注目すべき点は、 ModelSim PE/SE では上記のようなライブラリの作成及びマッピングが必要なのに対し、 ModelSim* - Intel® FPGA Edition では、その必要がないということだ。
ModelSim* - Intel® FPGA Edition はインストール時に上記のようなインテル FPGA・メガファンクションの RTL シミュレーションに必要なライブラリ・フォルダが予め用意されているので、 ModelSim* - Intel® FPGA Edition 使用時にはこれを読みだせば良いのだ!
便利で楽チンなツールを使っていることに喜びを感じつつ、 altera_mf をライブラリとして読み出し、シミュレーションを開始したら…
あ、あれ…
この時、頭領は頭が真っ白になった。今まで疑問に思ってたことがわかるようになってきて自信を持ち、
ドヤ顔でシミュレーション結果を見せようとしたのに、膨大な量のエラー・メッセージを目の当たりにしてしまったからだ。
そして目の前に広がる現実を「早送り」したくなったのだった。
次回に続く…