Vivado への Vitis Metadata Archive のインポート - 2023.2 日本語

Vivado Design Suite ユーザー ガイド: IP インテグレーターを使用した IP サブシステムの設計 (UG994)

Document ID
UG994
Release Date
2023-10-18
Version
2023.2 日本語

Vivado および AMD Vitis™ Vitis Metadata Archive (.vma) をインポートすると、write_hw_platform および v++ --link コマンドが強化され、VitisVivado Design Suite 間で双方向のデザイン ハンドオフが可能になります。

Vitis ツールでは、v++ --link --export_archive コマンドによるシステム リンク プロセス中に .vma ファイルが作成されます。

Vivado では、vitis::import-archive により .vma ファイルが既存の Vivado デザイン プロジェクトにインポートされるか、または新しいプロジェクトが追加されます。

Vitis Export to Vivado フローでは一般に、ハードウェア デザインは Vivado ツール セットと PL カーネルで行います。AI エンジン グラフ アプリケーションの開発は、Vitis ツール セットで行います。Vivado ツールは、Vitis でプラットフォームとして使用されるようにハードウェア デザインを .xsa ファイルで渡します。次の図に示すように、Vitis ツールで .vma ファイルを使用してシステム デザインをエクスポートし、Vivado でハードウェア デザインを完成させます。

図 1. システム デザインのエクスポート フロー

フロー

Vitis ツールで、IP インテグレーター データ モデルを基に構築されたプラットフォーム抽象化によって Vivado デザインが拡張されると、ベース プラットフォームへの接続に利用可能なバス インターフェイスがブロック デザインで宣言されます。Vitis ツールは、AI エンジンと PL をターゲットとするユーザー C++ カーネルおよびグラフ コードを高位合成によってコンパイルし、IP インテグレーターを使用して接続を作成することで、コンパイルされたオブジェクトをベース ターゲット プラットフォームにリンクします。

Vitis ツールは自動的に Vivado シミュレーション、合成、およびインプリメンテーションを実行しますが、さらにデザインの反復を繰り返してタイミング クロージャを達成するためには Vivado Design Suite での作業が必要となります。たとえば、追加のデザイン変更は不要でも、多くの場合、タイミング クロージャの反復には Vivado の使用をお勧めします。

Versal アダプティブ SoC デザインの場合、Vitis Export to Vivado フローは、明確に定義された Vitis から Vivado へのインターフェイスを提供することで、ツール間での反復ワークフローを可能にします。ハードウェア プラットフォーム (.xsa) は、IP インテグレーターの Export Platform フロー コマンド、または write_hw_platform Tcl プロシージャで作成できます。エクスポートされた .xsa には「ダイナミック領域」のブロック デザインが含まれ、Vitis ツールが PL カーネルと AI エンジン接続をリンクしてハードウェアを拡張します。Vitis Export to Vivado フローをイネーブルにするには、「ブロック デザイン コンテナーの作成」で説明したように、ダイナミック領域をブロック デザイン コンテナーにする必要があります。

Vitis v++ --link --export_archive オプションを使用すると、ハードウェアがリンクされ、更新されたブロック デザイン、追加された IP の IP リポジトリ、およびエミュレーション、デバッグ/プロファイリング、ザイリンクス ランタイム (XRT) 処理などの操作に使用可能なデザイン メタデータを含む Vitis Metadata Archive (.vma) がエクスポートされます。.vma ファイルは、vitis::import_archive Tcl プロシージャを使用して元の Vivado プロジェクトにインポートされます。これにより、.vma ファイルはプロジェクトにバインドされ、IP リポジトリはプロジェクトに追加され、更新されたダイナミック領域ブロック デザインはブロック デザイン コンテナーの新しいアクティブ バリアントとして追加されます。その後、Vivado で設計作業を継続できます。

ベース プラットフォーム ハードウェアを構成するハードウェア デザインは、Vitis AI エンジン グラフおよび PL カーネルと共同開発されることが多く、別のチームによって開発されることもあります。Vivado Export Platform と Vitis Export to Vivado を組み合わせて使用することで、便利なチェック ポイントでシステム デザインの更新を共有できるためチームどうしが緩いつながりで作業できるようになります。

詳細は、 『Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発』 (UG1393) の第 19 章を参照してください。

図 2. エクステンシブル プラットフォーム デザイン

上記のエクステンシブル プラットフォーム デザインでは、.xsa は PL カーネルと AI エンジン グラフ アプリケーションを追加した .vma ファイルという形で Vitis ツールから返されます。.vma ファイルでは、RP.bd デザインに次に示す新しいバリアントが追加されています。

.vma を Vivado プロジェクトにインポートすれば、プラットフォームやブロック デザインを自由に変更できます。ただし、XRT メタデータへのバインドが無効にならないよう、Vitis 領域にある IP や接続を変更または削除しないでください。タイミングを解決するために制約を追加したり、元の Vivado プロジェクトを変更したりすることは可能です。BDC への接続が変更されない限り、BDC 外部の変更はほぼすべて可能です。

場合によっては、ハードウェア プラットフォーム (.xsa) を Vitis ツールに再度エクスポートして、システム デザインをリンクし直すことがあります。この場合、.xsa をエクスポートする前に Vivado プロジェクトから .vma コンテンツを削除する必要があります。これには、Vitis::remove_archive_hierarchy と Vitis::remove_archive の 2 つの Tcl プロシージャを使用できます。1 つ目のプロシージャでは、更新された Vivado デザインから .vma 階層のみを削除することで、.vma ファイルをインポートする際に変更を保持できます。2 つ目のプロシージャでは、Vivado プロジェクトのステートを .vma ファイルのインポート直前のステートに戻すことで、.vma とそれ以降のすべての変更を削除できます。この後、ハードウェア プラットフォーム (.xsa) を再度エクスポートし、v++ を使用してシステム デザインをリンクし直し、更新された .vma を Vivado プロジェクトに再度インポートできます。

デザインが完了したら、Vivado で write_hw_platform -fixed コマンドを使用して、デザイン用の固定ハードウェア プラットフォーム (fixed.xsa) を生成できます。固定ハードウェア プラットフォームは、v++ --package コマンドで使用して Versal プラットフォーム用のデバイス バイナリ (.xclbin) を生成したり、Vitis エンベデッド ソフトウェア開発フローで使用してアプリケーションの開発を進めることができます。