フィールドプログラマブルゲートアレイプロトタイピング(FPGAプロトタイピング)は、FPGAベースのプロトタイピング、ASICプロトタイピング、またはシステムオンチップ(SoC)プロトタイピングとも呼ばれ、ハードウェア検証と初期ソフトウェア開発のために、 FPGA上でシステムオンチップおよび特定用途向け集積回路設計のプロトタイプを作成する方法です。
ハードウェア設計の検証方法、および初期のソフトウェアとファームウェアの協調設計は、SoCやASICの設計をFPGAや電子設計自動化(EDA)ソフトウェアで評価できるようになったため、興味深い一般的なものとなっている。[ 1 ]
プロトタイピングのための設計[ 5 ](DFP )とは、プロトタイピングに適したシステムを設計することを指します。FPGAプロトタイプを採用する開発チームが直面する多くの障害は、次の3つの「法則」に集約できます。
SoC設計をFPGAプロトタイプに実装するには、最小限の労力でプロトタイピングの目標を達成するために、綿密な計画が必要です。プロトタイプの開発を容易にするために、「プロトタイピングのための設計(DFP)」と呼ばれるベストプラクティスが、SoC設計スタイルと設計チームが適用するプロジェクト手順の両方に影響を与えます。手順に関する推奨事項には、RTLコーディング標準にDFP規約を追加すること、プロトタイプ互換のシミュレーション環境を使用すること、ソフトウェアチームと共同でシステムデバッグ戦略を確立することなどが含まれます。
回路の複雑化と市場投入までの時間の短縮に伴い、特定用途向け集積回路 (ASIC) およびシステムオンチップ (SoC) 設計の検証の必要性が高まっています。ハードウェア プラットフォームは、システムの動作を正確に読み取れない可能性のあるシミュレーション クロックと比較して、オン チップ バス クロックを使用してシステム設計を高速でテストできるため、検証エンジニアの間でより重要になっています。[ 6 ]これらの数百万ゲートの設計は、単一の FPGA に完全に収まらないため、通常は 6 個以上の FPGA を備えたマルチ FPGA プロトタイピング プラットフォームに配置されます。設計エンジニアの労力を軽減するために、設計を分割する必要のある FPGA の数が少ないほど良いです。[ 7 ]右は、デュアル FPGA 構成を使用する FPGA ベースのプロトタイピング プラットフォームの写真です。

システムRTL設計またはネットリストは、設計をプロトタイピングプラットフォームに収めるために、各FPGAに分割する必要があります。[ 8 ]手動での分割には膨大な労力が必要であり、多くの場合、テスト対象の設計の速度が低下するため、これはエンジニアにとって新たな課題となります。[ 7 ]分割の数を減らすか、設計全体を単一のFPGAに配置できれば、設計をプロトタイピングプラットフォームに実装することが容易になります。
回路パーティションを作成する際、エンジニアはまず、設計が FPGA ファブリック上に配置されるため、 FPGA が提供する利用可能なリソースを確認する必要があります。[ 7 ]各 FPGA のアーキテクチャはメーカーによって異なりますが、設計パーティショニングの主な目標は、 FPGA リソースの使用を均等にバランスさせることです。さまざまな FPGA リソースには、ルックアップ テーブル(LUT)、D フリップ フロップ、ブロックRAM、デジタル信号プロセッサ(DSP)、クロック バッファなどがあります。設計パーティションのバランスを取る前に、冗長または未使用のロジックを削除するために、グローバルロジック最適化を実行することもユーザーにとって有益です。バランスの取れたパーティションを作成する際に発生する典型的な問題は、カットが多くの信号線にある場合、タイミングまたはリソースの競合が発生する可能性があることです。完全に最適化されたパーティショニング戦略を実現するには、エンジニアは、タイミング/電力制約や配置と配線などの問題を考慮しながら、FPGA 間でバランスの取れたパーティションを維持する必要があります。パーティション中に単一の問題に厳密に焦点を当てると、別のパーティションで複数の問題が発生する可能性があります。
分割された設計で最適な配置と配線を実現するには、エンジニアは FPGA のピン数と FPGA 間信号に注目する必要があります。設計を個別の FPGA に分割した後、FPGA 間信号の数は FPGA のピン数を超えてはなりません。[ 9 ]回路設計が巨大な場合、これを避けるのは非常に困難であるため、信号は時分割多重(TDM) などの戦略を利用する必要があります。これにより、複数の信号を単一のラインで転送できます。[ 10 ]これらの複数の信号はサブチャネルと呼ばれ、タイムスロットで順番にラインで転送されます。TDM 比が高い場合、各サブチャネルのタイムスロットに対応するためにバスのクロック周波数を下げる必要があります。クロック周波数を下げると、システムのスループットが阻害されます。[ 7 ]
システム設計は通常、信号が別々のドメインを通過する複数のクロックドメインを含みます。[ 7 ]オンボードのクロック発振器とグローバルクロックラインは通常これらの問題を軽減しますが、これらのリソースが制限されている場合や、すべての設計要件を満たさない場合があります。クロックラインとクロックバッファの接続は FPGA 間で制限されているため、内部クロックは FPGA デバイス内に実装する必要があります。複数の FPGA に分割された内部クロック設計では、クロックジェネレータを FPGA 内に複製し、 FPGA 間の信号間のクロックスキューを低くする必要があります。さらに、高クロック周波数で動作しているときにスキューを減らすために、ゲート付きクロックロジックはすべてクロックイネーブルに変換する必要があります。
クロックドメインの交差部分は、別々のFPGAに分割すべきではありません。交差部分を通過する信号は、単一のFPGA内部に保持する必要があります。FPGA間の遅延時間が加わることで、異なるドメインで問題が発生する可能性があるためです。また、FPGA間をルーティングする信号は、レジスタにクロック入力することを推奨します。
FPGAプロトタイピングにおいて最も困難で時間のかかる作業の1つは、システム設計のデバッグです。この作業は「FPGA地獄」と呼ばれています。[ 11 ] [ 12 ]大規模で複雑なASICやSoC設計の出現により、デバッグはより困難で時間のかかるものになっています。FPGAプロトタイプをデバッグするには、特定の信号を観測できるようにするために、プローブをRTL設計に直接追加し、合成してFPGAプロトタイププラットフォームにダウンロードします。
FPGAベンダーは、ChipScopeやSignalTAPなど、数多くの標準的なデバッグツールを提供しています。これらのツールは最大1024個の信号をプローブできますが、膨大なLUTとメモリリソースを必要とします。SoCなどの設計では、効率的なデバッグには10,000個以上の信号への同時アクセスが必要となることがよくあります。最初のプローブセットでバグを検出できない場合、追加の信号にアクセスしようとすると、その日の作業は終了せざるを得なくなります。これは、合成、配置配線などのCADフローが長く複雑で、完了までに8時間から18時間かかる場合があるためです。
改良されたアプローチとしては、TektronixのCertus [ 13 ]やExostiv LabsのEXOSTIV [ 14 ]などのツールが挙げられる。
Certusは、FPGAベースのデバッグにRTLレベルの可視性を向上させます。効率的なマルチステージコンセントレータを観測ネットワークの基盤として使用することで、信号ごとに必要なLUTの数を減らし、特定のスペースでプローブできる信号の数を増やします。任意の信号の組み合わせを表示できる機能はCertus独自の機能であり、プロトタイピングのボトルネックを解消します。[ 15 ]
EXOSTIVは、大容量の外部ストレージとギガビットトランシーバーを使用して、高速で動作するFPGAから詳細なトレースを抽出します。この改善点は、大きなトレースを連続ストリームまたはバーストとして時間的に表示できることにあります。これにより、従来の組み込み計測技術では到達できない拡張デバッグシナリオを探索できます。このソリューションは、ギガビットトランシーバーを犠牲にしてFPGA I/OリソースとFPGAメモリの両方を節約し、可視性を10万倍以上向上させると主張しています。[ 16 ] [ 17 ]
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク){{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)