FPGAが論理合成しなくても動く(4)
前回は、新製品「Advanced JTAG Function Generator」を使うと、C言語ライクに簡単なスクリプトを書けば、そのとおりにFPGAが動作するということを説明しました。

今回は、スクリプトで書けることの何が嬉しいのか、ということを説明します。
この機能の応用分野は、
・迅速なプロトタイピング
・各種ICとインタフェースするための正しいシーケンスの早期確立
・アルゴリズムを再利用可能にした基板検査
・基板上の不揮発性メモリの初期設定
・各種部品の不良の検出
・テストベクタの作成
などがあります。
例えば、FPGAを中心としていろんな部品が実装された基板があったとします。その装置にはシリアルやパラレルで接続された不揮発性メモリが載っている姿を想像してみてください。そういったメモリにはブートコードや、製品のシリアル番号など、初期データを書き込まなければなりません。
開発時のデバッグや、故障検査などイレギュラーなケースがおきたとき、そのようなメモリへ読み書きする回路をいちいちFPGAで作って動作させるのは面倒ですし、迅速な対応ができません。
このようなケースでは、一刻も早くメモリにデータを書き込むための信号をFPGAから出力させたくなります。まじめにFPGAの論理回路をつくらずにC言語で簡単に書いたとおりにFPGAの端子が動いたら、どんなに喜ばしいことでしょう。
また、FPGAのデバッグ時には、「ちょっとだけ通常とは異なった信号を出力させたい」という要求が頻繁に発生するでしょう。そのようなときにも、まじめにVHDLでコードを書いて論理合成するのではなく、Cのスクリプトで書いたとおりにインタプリタで即動作すれば、非常に楽になります。
またよくあるケースでは、例えば、シリアルEEPROMなどの正しい通信シーケンスがデータシートからわかりにくい、という場合があります。FPGAの端子を操作してシリアルEEPROMを操作する場合、正しい通信シーケンスに達するまで何度も何度も論理合成を繰り返してしまいがちですが、これでは時間も労力もかかります。
こんなときは、回路を論理合成をするのではなく、インタプリタのように即時動作させれば、正解のシーケンスに到達するまでの時間は大幅に短縮できるでしょう。
もちろん、「Advanced JTAG Function Generator」のスクリプトはライブラリとして再利用することができます。不揮発性メモリへの読み書きや、SDRAM、SRAM、DRAM、汎用のLCD、ADコンバータなど、よくある操作シーケンスは、弊社からライブラリとして提供します。ピン定義ファイルの記述だけを書き換えれば、お客様のシステムにすぐに対応することができるでしょう。
もちろん、お客様が独自につくったFPGAの出力シーケンスはお客様独自のライブラリとして、他のシステムに再利用することも容易です。
これによって、迅速なプロトタイピングや、メモリの初期設定などの検査を行うことができるようになります。
また、回路の中心となるFPGAの端子を操作して周囲の部品を操作してその結果を解析する、ということはすなわちJTAGを利用した基板検査が行えるということです。
また、Advanced JTAG Function Generatorは、テストベクタを出力することもできます。
正しく部品が実装された基板でCのスクリプトを動作させることによって、FPGAの周囲のメモリやAD/DAコンバータ、各種インタフェースチップなどはそれぞれ何らかの信号を出力します。これをFPGAが取り込んで、テストベクタとして出力します。
もちろん、Advanced JTAG Function Generatorは、正常に動作している基板で採取されたベクタと、検査ターゲット用の基板で採取されたベクタを比較することもできます。つまり、基板検査ができるということです。
さらに、テストベクタの出力には、従来の基板検査ソフトウェアにあったような表形式(信号名と論理値の羅列)だけでなく、VHDLやVerilogのテストベクタとしても出力することができます。これは従来の基板検査ツール以上のメリットがあります。
つまり、FPGAの周囲の各種ICが返す波形をサンプリングして、入力と出力をひっくりかえして、VHDLやVerilogの形式のテストベクタとして出力するわけです。
なぜAdvanced JTAG Function Generatorにこんな機能をつけたかということを説明します。ほとんどの場合、ある程度の規模のFPGAの設計をする時には論理シミュレーションを行うと思いますが、周囲のICがどういう信号をFPGAに送ってくるか、というのを正確に記述するのはなかなか大変な作業です。
そんなときAdvanced JTAG Function Generatorの出力するテストベクタを使えば、実機から得られた正確な応答パターンをつかって、FPGAを設計するときのシミュレーション用テストベクタを作成するのに役立てることができます。
ところで、どうしてVHDLは難しいのでしょうか。
それはC言語などのソフトウェア用のプログラム言語は基本的に上から順番に実行していくのに対して、VHDLなどのハードウェア記述言語はすべての部分が同時に動作するからでしょう。だから、難しい。
最近ではSystem-CのようにCライクな言語でハードウェアを記述できるようになっているようですが、やはり普通のCではないので難しいものです。
ハードウェア記述言語は難しいから、ハードウェア技術者を一人養成するにはソフトウェア技術者の場合とくらべて時間もお金もかかります。ですから、普通のC言語を覚えた技術者がハードウェア開発の即戦力になることは大きなメリットだと私は考えているわけです。
まとめると、今回の新製品の機能の1つであるAdvanced JTAG Function Generatorを使うと、C言語でFPGAの動作を記述して、実機を動かし、周囲のICからの応答を調べ、それをもとにFPGAの論理シミュレーション用のテストベクタを作る、という一連の作業が簡単に行えるようになります。
次回は、今回の新製品のもう1つの機能について紹介します。
| 固定リンク


コメント