固定プラットフォーム vs エクステンシブル プラットフォーム - 2023.2 日本語

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 日本語

プラットフォームは、AI エンジン デザインと PL カーネルを統合するためのデザイン コンテキストを提供します。プラットフォーム ハードウェアは、Vivado Design Suite を使用してビルドされた XSA コンテナーで表され、プラットフォーム ソフトウェアには、BSP (ボード サポート パッケージ) のほか、OS、ブート ファイル、ドライバー、ライブラリ、アプリケーション ソフトウェアのリンクやブート イメージのビルドに使用するファイル システムなどが含まれます。Vitis SDK と PetaLinux ツールは、BSP のほか、AI エンジンと PL カーネルを含む実装ハードウェアに合わせてカスタマイズするシステムおよびアプリケーション ソフトウェアのビルドに使用できます。プラットフォームには、次の 2 種類があります。

従来の固定式プラットフォーム デザイン

固定プラットフォーム デザインは、Vivado Design Suite で完成するハードウェア デザインです。Vivado IP インテグレーター機能を使ってブロック デザインで IP を接続したり、RTL でハードウェア システムを記述したりできます。また、Vitis HLS を使用して C++ でハードウェア関数を作成し、Vivado IP を生成してハードウェア デザインに追加することもできます。

write_hw_platform -fixed コマンドを使用して、完成したハードウェア デザインのザイリンクス シェル アーカイブ (.xsa) を作成し、Vitis IDE またはザイリンクス ソフトウェア コマンド ライン ツール (XSCT) を使用してプラットフォーム プロジェクトを定義し、決まった .xsa をインポートし、固定プラットフォーム用にプロセッサ ドメインまたは BSP をコンフィギュレーションおよび定義します。固定プラットフォーム (.xpfm) は、従来のエンベデッド ソフトウェア デザイン フローで、Versal アダプティブ SoC デバイス、または Zynq MPSoC デバイス用のエンベデッド アプリケーションを作成するために使用できます。

エンベデッド プロセッサ用のソフトウェア アプリケーションの開発には、エクスポートされたハードウェア コンテナー (.xsa) に含まれるハードウェア ドライバーを使用する必要があります。このドライバーを管理および使用して、ソフトウェア アプリケーションからハードウェア デザインにアクセスする必要があります。この従来のエンベデッド ソフトウェア デザイン フローについては、 『Vitis 統合ソフトウェア プラットフォームの資料: エンベデッド ソフトウェア開発』 (UG1400) ですべて説明されています。

エクステンシブル プラットフォーム ベースのデザイン

エクステンシブル プラットフォームも Vivado Design Suite から開始し、AI エンジンおよび PL カーネルやサブシステム機能などのプログラマブル コンポーネントを追加して、結果として得られるエンベデッド デザインをすばやくカスタマイズできるエクステンシブル ハードウェア デザイン (.xsa) を定義します。エクステンシブルな .xsa は、v++ リンカーがデザインのダイナミック領域を更新して拡張するためのハードウェア デザインの基盤を提供するコンテナーです。エクステンシブル プラットフォームを使用すると、エンベデッド システム設計者がエクステンシブル ハードウェア基盤の機能を容易に拡張できるようになります。

エンベデッド システム デザインでは、ヘテロジニアス システムの異なる要素を同時に開発する並列開発プロセスを使用できます。アプリケーション チームは、VCK190 や ZCU104 などの AMD ベースのプラットフォームで作業を開始し、システムのプログラマブル コンポーネントを開発します。使用可能なプラットフォームを使用すると、既知の良好なシステムを使用して、アプリケーションを独自に開発してテストできます。この間、プラットフォーム チームはカスタム ハードウェア プラットフォームを構築して検証します。既存のプラットフォーム デザインを、独自のカスタム プラットフォーム デザインのリファレンスとして使用することをお勧めします。現在の AMD エンベデッド プラットフォームは、Vitis インストールに含まれ、そのソース コードは GitHub の Vitis エンベデッド プラットフォーム ソース リポジトリから入手できます。

エクステンシブル プラットフォームのハードウェア部分は、割り込みコントローラーやクロック ウィザードなどの必要な IP と、ハードウェア デザインにインプリメントする追加機能を含む Vivado プロジェクトです。エクステンシブル プラットフォーム デザインには、Vitis でのエンベデッド プラットフォームの作成 で説明するように、PL カーネルをシステムにリンクするための AXI-4 インターフェイス、メモリ コントローラー、1 つ以上のクロック信号とリセット信号、および単一の割り込みなどの特定の要件があります。必要なインターフェイスの詳細は、ハードウェア インターフェイスの追加 を参照してください。

ヒント: 『Versal アダプティブ SoC デザイン ガイド』 (UG1273) に記載されているように、ハードウェア デザインの構築および更新時にブロック デザイン オートメーションを利用するには、CIPS IP、NoC/DDRMC IP、ハードウェア デバッグ IP などの必要な IP を IP インテグレーターで設定して接続する必要があります。ただし、IP インテグレーター機能を使用してこれらの重要な Versal アダプティブ SoC IP を設定して接続すると、結果の階層モジュールを上位の RTL デザインにインスタンシエートできます。
図 1. 固定またはエクステンシブル プラットフォームの作成

固定 XSA をエクスポートする Tcl コマンドは、write_hw_platform -fixed <.xsa> で、エクステンシブル XSA をエクスポートするコマンドは、write_hw_platform -force <.xsa> です。Vivado から固定 XSA をエクスポートする前に、合成およびインプリメンテーションを実行する必要があります。

ハードウェア デザイン ファイル (.xsa) は、write_hw_platform コマンドを使用して Vivado プロジェクトからエクスポートされ、Vitis IDE または XSCT でプラットフォーム プロジェクトにインポートされます。プラットフォーム プロジェクトでは、ソフトウェア コンポーネント (プロセッサ ドメイン、デバイス ツリー、OS) をハードウェア (.xsa) とパッケージし、エクステンシブル エンベデッド プロセッサ プラットフォーム (.xpfm) を作成します。

  • OS には、スタンドアロン (またはベアメタル)、FreeRTOS、または Linux が含まれます。XRT が動作するシステムには、Linux が必要です。
  • プロセッサは、指定された OS ドメインで使用する Arm コアを指定します。OS の選択によって、どのプロセッサをコンフィギュレーションできるかが変わります。
    ヒント: プラットフォーム プロジェクトの初期設定では、1 つのプロセッサ ドメインを設定できますが、IDE では、プロジェクトが確立されると、さらにドメインを設定できます。DFX プラットフォームなど、プラットフォームの高度な設定には、XSCT からアクセスする必要があります。

プラットフォームが構築されると、プロジェクトの階層に export フォルダーが追加され、プラットフォーム .xpfm ファイルと ./hw および ./sw フォルダーが追加されます。新しいプラットフォームは、$PLATFORM_REPOSTORY_PATHS 環境変数に追加され、Vitis ツールを使ったアプリケーション開発に使用できます。

Vitis プラットフォーム ベースのデザイン フローは、標準的な Vivado エンベデッド設計手法を拡張してエンベデッド システム ハードウェアを構築するもので、v++ コマンドを介して Vitis を使用して、PL カーネルや AI エンジン グラフ アプリケーションとエクステンシブル ハードウェア プラットフォームとをリンクさせます。このフローにより、システムのさまざまな要素を同時に開発でき、ヘテロジニアス システムの統合プロセスが容易になります。

重要: プラットフォーム ベースのエンベデッド システム デザイン フローにより、ハードウェア プラットフォームが再利用できたり、アクセラレータと AI エンジンのサブシステムのターゲットを検証済みプラットフォームからカスタム プラットフォームへの変更したりできます。このフローは、幅広く利用でき、Versal AI コア デバイス上の AI エンジン グラフ アプリケーションや、ザイリンクス ランタイム (XRT) を採用したソフトウェア アプリケーションのハードウェア サポートに必要となります。

PL カーネル (.xo) と AI エンジン グラフ アプリケーション (libadf.a) を v++ --link コマンドでハードウェア デザインにリンクすることで、エクステンシブル プラットフォームがカスタマイズできるようになります。エクステンシブル プラットフォームを設計する場合、ハードウェアの構造や内容をかなり制御できます。XSA ファイルの生成 で説明するように、CPU 制御、メモリ、クロッキングに関連する最低要件はありますが、それ以外は、ユーザーが制御し、プラットフォーム デザインで特定のタスクに最適なツールを採用できます。

AI エンジンや PL カーネルのサブシステム開発には、最小限のハードウェア プラットフォームが理想的です。プラットフォームの PFM インターフェイスを揃えることで、ソース コードの変更を最小限に抑え、より完全なシステム プラットフォームにサブシステムのターゲットを容易に変更できます。