2004年08月02日
FPGAによるSoC試作評価テクニック ASICデザインキットによるSoCラピッドプロトタイピング手法
GAIO CLUB 特集
GAIO CLUB【2004/8月号】
手軽になったFPGAによるSoCプロトタイピング
ASICデザインキットによるSoC開発テクニックを紹介
~ FPGAによるSoC試作評価のポイント ~
FPGAの高集積化・高性能化に伴い、SoCの開発にFPGAを利用する例が増えています。ガイオでは、手軽にSoCのプロトタイピングを行える開発キット「AISCデザインキットを」発売しています。
この特集では、FPGAを利用したSoC開発を行う際にポイントとなる点について解説いたします。
FPGAに実装可能なIPの規模
FPGAにはどの程度(の規模)のIPが実装可能なのでしょうか?代表的なFPGAには実際にどの様なIPが実装可能なのかを見てみましょう。
各FPGAメーカーでは、自社のFPGA向けにオリジナルおよびサードパーティー製の各種ソフトウェアIP※を紹介しています。Xilinx製デバイス用IPの中のいくつかについて、その規模を見てみます。【表1参照】
※ソフトウェア IP:一般にRTLで記述され、種々のデバイスにインプリメントが可能なものをソフトウェアIPと呼んでいます。これに対し、特定のデバイス向けにマスクパターンレベルまで作り込んであるものをハードウェアIPと呼んでいます。
ここで注意しなければならないのは、これらのIPはXilinx製のデバイスに最適化されている可能性が高いため、最終的なSoC用の同機能のIPを実装しようとした場合には、必要なリソースは上記よりもかなり大きくなると思われることです。また、例えば同じMPEGのIPと言っても、求める機能や性能などによっても必要なリソースは大きく異なります。しかしその分を考慮したとしても、例えばASICデザインキットのメザニンボードに実装されているVirtexII6000のクラスでも、シリアルI/FやUSB2.0などはもとより、JPEGやMPEGなどの画像処理用のIPも(仕様によりますが)十分実装可能です。
実際のSoCとの相違点
実際のSoC(ASIC)とFPGAを使用した評価システムは、当然ながら厳密に同じものではなく、異なる点があります。FPGAの集積度や性能・コストパフォーマンスは近年目覚ましく向上しているのは事実ですが、デバイスのコスト・集積度・スピード・消費電力など多くの点でやはりまだASICの方ににアドバンテージがあります(もっともそうでなければ巨額のマスク費用と長期間をかけてASICを開発する意味がありませんが..。)注意すべき点について検討してみます。
1.動作スピード
FPGAは汎用性が高い分、ASICよりも動作スピードが遅くなります。また、ASICデザインキットの様にCPUコアとIP用のFPGAが別デバイス(かつ別ボード)の構成では、動作スピード的には更に不利になります(完成版のASICが元々動作スピードが低いのであればもちろん問題ありません)。この点への対応としては、動作スピードを実際より落として機能検証に的を絞るか、IPの中にwait等のスピード調整用の機構(これは最終的なASICには実装しない)を用意しておくなどが必要となります。
2.消費電力
消費電力的にもASICより大きくなる場合があります。事前に概算でも消費電力を見積もっておく必要があります。特にASICデザインキットのVertexII6000の様な大規模FPGAの場合、内部の大部分のフリップフロップを数10MHz以上で動作させる様な回路を実装した場合、ヒートシンクなしでは温度上昇によりデバイスが焼損する可能性があります。必ず事前に消費電力の検討を行って下さい。参考データとして、ASICデザインキットのFPGAメザニンボードにテスト用のIPを実装した際の温度上昇のデータの一例を示します。【表2参照】
動作検証のテクニック
CPUコアとIPをAHBなどのバスで接続する様な構成の場合、データ転送が正常に行われているかどうか、バスの信号をロジックアナライザ等の計測器で観測することにより検証します。
動作が異常な場合には、単に信号を観測するだけでは原因を確定できないことがあります。その様な場合には、FPGAのIPからバス以外の信号を引き出して観測したり、テスト用の回路を組み込んでおき、そこからのOK/NG信号などを観測したりする手法が用いられます。またそれらの信号をCPUで取り込んで解析すれば、更に詳しい原因追及が期待できます。
-
しかし、その場合にCPUコアとIPとをつなぐバスを介してテスト用データのやり取りを行ったのでは、本来の動作に影響を与えてしまいます。その点ASICデザインキットでは、本来のデータ転送用のバスであるAHBの他に、ローカルバス(メモリバス)もFPGAメザニンボードと接続していますので、このローカルバスを介してテスト用データのやり取りを行うことにより、本来の動作にできるだけ影響を与えない様にしながら解析を進めることができます。
-
ハードウェアエミュレータとの連携
高価なハードウェアエミュレータを使用しなくても、SoCの試作評価が行えることがASICデザインキットのセールスポイントではありますが、実際には既にハードウェアエミュレータをご使用のお客様もいることと思います。
ASICデザインキットのFPGAメザニンボードは、外部電源供給により単体でも動作可能で、ハードウェアエミュレータと接続するためコネクタも設けていますので、既にお持ちのハードウェアエミュレータと接続しての動作も可能です。
-
この場合は、ASICデザインキットのデバッガ等のツールは使用できず、単にIPを実装したFPGAボードとしての使用になりますが、一部のテストをハードウェアエミュレータで行うことにより、資産の有効活用を図ることができます。
-
ソフトウェアの先行開発
FPGAによる評価システムや各種シミュレータなどを使用し、SoCの開発効率をアップして開発期間の短縮を図ることはもちろん重要ですが、最終的に必要なのは、開発中のASICを使用した最終製品の開発期間を短縮することであり、そのためには当然ソフトウェアの開発をどう効率化するかが非常に大きなポイントとなります。ASICのES(エンジニアリングサンプル、つまり実際に動作するASICの最初のバージョン)ができあがり、かつこれを実装したボードのハードウェアテストが終わってからソフトウェアのテストを開始するのでは、いかにも遅すぎます。
この点ASICデザインキットでは、IPが全く実装されていない状態でもARMコアのCPUボードとして動作しますし、デバッガ等のツールを使用してのソフトウェア開発(テスト)を開始することが可能です。そしてIPをFPGAメザニンボードに実装し、機能テストが完了すれば、(前述の通り動作スピードなど制限・注意点がありますが)完成したASICを使用するのと同様のテストを、非常に早い段階から先行してスタートすることができ、大きなアドバンテージとなります。
周辺デバイスを用意できない場合の対処法
ASIC(CPUコア+IP)についてはよいが、それ以外の周辺のハードウェアがなくソフトウェアのテストができない、といった場合にはどうしたらよいでしょうか?
・周辺ハードウェアのみのボードを開発し、FPGAメザニンボードに組み合わせて使用する。
・ 周辺ハードウェアを含んだFPGAメザニンボードを新規に開発する。
・ GAIOのシミュレータファミリを導入し、周辺ハードウェアをソフトウェアで仮想的に用意する。ASICデザインキットはシミュレータとリンクした動作が可能な構成となっており、インタフェースビルダーという専用ツールにより、周辺ハードウェアをVisualC++によって仮想的に実現することが可能です。
上記の様な種々のアプローチにより、より最終システムに近い形でのソフトウェア開発が可能になります。
まとめ
SoCの開発には、膨大な費用が必要であり、かつ開発期間も長期間を要します。従来のソフトウェアシミュレーションやハードウェアエミュレータ等の手法・装置に加え、FPGAを使用した評価システムを導入することで、画期的な開発費の低減・開発期間の短縮を図れる可能性がありますが、FPGAの特性をよく理解して使用することが重要です。
また、ASICデザインキットの様な、ソフトウェア開発・デバッグツールまで含んだ統合環境を採用することで、単にSoCの開発だけでなく、ソフトウェア開発の効率化についても、大きな効果が期待できます。