FPGAが論理合成しなくても動く(5)
前回は、スクリプト言語でFPGAの動作を記述することで、基板検査や迅速なプロトタイピングができるということを説明しました。
今回は、新製品の核心部分である「ICエミュレータ」について説明します。
実は、いままで何回かにわけて説明してきたAdvanced JTAG Function Generator自体は、従来の技術と比べて新規性やそれほど大きな進歩性があるわけではありません。C言語や独自の言語、テストベクタや、H/L表などで書いたとおりにFPGAやASICの端子を動かしていくというのは、基板検査ソフトウェアなどでは従来からあった技術です。
これらの技術を総括して言うと、「与えられた記述のとおりに順番に手順を実行していく」といえるでしょう。たしかに条件分岐やサブルーチンコールなどが使える製品もありますが、基本的にはあらかじめ与えられた手順に従って実行していくという点は変わりません。どちらかというと、VHDLやVerilogで記述したシミュレーション用テストベクタと同じ類のものでしょう。
ところが、ICエミュレータは違います。
これは、FPGAの論理合成を行うために記述したVHDLやVerilogのソースコードを解読して、その記述と入出力信号の状態から当該FPGAが次に出力するだろうという値をパソコンで計算し、その出力信号を実際のFPGAから出力するというものです。FPGAが入力する信号のキャプチャと、FPGAが出力する信号のセットは、JTAGを通じて行われます。

つまり、パソコンの中では、バウンダリスキャンソフトウェアと論理シミュレータが連携して動作する形になります。
ターゲット基板上のFPGAは、I/O端子をパソコンのコントロール下におかれ、FPGAが入力した信号はパソコンに送られ、パソコン上で論理シミュレーションの計算が実行され、その結果をJTAGバウンダリスキャンでFPGAから出力するのです。
ICエミュレータの動作速度は、FPGAの本当の動作速度に比べてはるかに遅いです。論理シミュレーションの計算速度とバウンダリスキャンの入出力速度によって動作速度は制限されます。
ところが、FPGAのソースコードを書いたら論理合成されずにインタプリタのように動くという効果は、従来のFPGA設計スタイルを大きく変化させる可能性を秘めています。
ICエミュレータを使うときには、FPGAは実際には何も動作せず、すべての動作はパソコン上で計算(エミュレート)される形になります。
この製品を使うと、FPGAは従来のようにVHDLやVerilogで記述されたとおりにしか動作できないということはなく、エンジニアの気まぐれによって動作を変更してしまうこともできるわけです。
たとえば、VHDLのソースコードに、
HIT_OP <= '1' when (COUNT = x"FFFF") else '0';
と書かれていたら、論理合成されて動くFPGAではそのとおりにしか動けませんが、ICエミュレータでは、エンジニアが好きなタイミングでこの信号を操作することができるのです。また、FPGAが入出力する信号をすべてパソコン上でログすることもできます。
従来はこういう製品はなかったので、なかなかイメージが掴みにくいかと思います。
本ブログや展示会、ホームページなどを通じて、この新しい技術を紹介していきたいと思っています。
現在はまだ技術のコアの部分が動き出したという段階ですので、一般用製品化までにはもうしばらく時間がかかると思います。ですが、もしお客様の特定用途向けの製品として早く欲しいというご要望がございましたら、是非ともご連絡ください。当社では、多くのお客様のご要望を取り入れて、この新しい技術をどんどん進歩させていきたいと考えております。
なお、今年の9月13日に行われる展示会「6都市FPGAカンファレンス」(東京会場 田町、キャンパスイノベーションセンター)において、MITOUJTAGとともに、今回のJTAG新製品の展示と講演を行う予定ですので、ご興味のある方は是非ともお越しください。
多くの皆様のご来場とお問い合わせをお待ちしております。
| 固定リンク


コメント
面白い技術ですね。
製品化されて、どんな分野で使われるのか興味深いです。
意外にいままでFPGAと縁遠かった分野で使われるかも。
スクリプトもPerlやRubyを使えるといいかもしれませんね。
投稿: アイン | 2007.08.23 11:29
VHDLの学習にも使えると思います。
FPGAのトレーニングボードなどでいろいろな回路を作成しては書き込みの繰り返しをしていますが、この仕組みを使えば確認のために何分もまたずに済みます。
投稿: 小柳 | 2007.08.24 17:01