プラットフォームとカーネルへのロジック機能の分割
FPGA および SoC を含むデザインが複雑になってきたため、複数の開発者やチームが共同で開発することが多くなっています。Vitis ソフトウェア プラットフォームでは、アプリケーション開発とプラットフォーム開発をはっきりと分けることができます。プラットフォーム開発者には、ボード開発者、BSP 開発者、システム ソフトウェア開発者などが含まれます。
システム アーキテクトに不明なロジック機能があったとしても、それらをプラットフォームと一緒にパッケージしたり、アクセラレーション カーネルとして使用したりできます。システム ブロックをわけやすくするため、次のような一般的なガイドラインがあります。
- コンポーネントをプラットフォームまたはアクセラレーション カーネルとして分類できる場合は、カーネルとして設定します。プラットフォームは、このコンポーネントのアップデートが必要なときにプラットフォームの再パッケージ作業を減らすために、できるだけ薄く設計する必要があります。また、開発フェーズ中にイテレーションをすると、時間を節約できます。
- プラットフォームは、ハードウェアを抽象化したものであるべきです。ハードウェア ボードを変更する場合、アプリケーションはまったく変更しないか、必要に応じて少しだけ変更するだけで、新しいハードウェアにターゲット変更できるはずです。
- プラットフォームの IP はデバイス ツリーと Linux ドライバーによって制御され、アクセラレーション カーネルは XRT によって制御されます。標準的な Linux ドライバーのサポートが必要な IP がある場合は、それらをプラットフォームにパッケージし、デバイス ツリーに記述します。
- アクセラレーション カーネルは、通常スタンドアロン機能と、単純なデータパスおよび制御パス接続を備えています。一部のコンポーネントが複数のカーネルで共有されるインフラストラクチャ機能を提供している場合や、ほかのモジュールとの接続が複雑な場合、通常はプラットフォームにパッケージできます。
次の表は、ロジック タイプ別に推奨されるプラットフォームとカーネルを示しています。
ロジック | プラットフォーム | カーネル |
---|---|---|
ハード プロセッサ (Zynq および Zynq UltraScale+ MPSoC の PS) | プラットフォームのみ | |
ソフト プロセッサ | プラットフォームを推奨 | RTL カーネルとしては可 |
GPIO および SerDes を備えた I/O インターフェイス IP (外部ピン、MIPI、Aurora など) | プラットフォームのみ | |
I/O インターフェイス コンパニオン IP ( PCIe® 用の DMA、Ethernet PHY 用の Ethernet MAC など) | 標準的な IP と安定した IP は、アプリケーション固有でない場合は、プラットフォームに配置する必要があります。 | カスタマイズされたコンパニオン IP は、アクセラレーション カーネルとして機能します。 |
標準 Linux ドライバー (VPSS など) を含む従来のメモリ マップド IP (VPSS など) | プラットフォームのみ | |
HLS AXI メモリ マップド IP | プラットフォームでのみ可。制御ソフトウェアまたはドライバーを手動で書き込む必要があります。 | カーネルを推奨。XRT によって制御されます。 |
Vitis カーネル レジスタの規格に従い、XRT から使用可能なアクセラレーション メモリマップド IP | カーネルを推奨 | |
Vitis ライブラリ | カーネルとしてのみ可 |