Vivado と Vitis 開発フローの違い - 2022.1 日本語

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

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 日本語

RTL 設計者は、Vivado Design Suite に精通していたり、使用したことがあったりするかもしれません。このツールは、Vitis 設計環境の中心でもあるので、Vivado ツールの使用経験は、このデザイン フローでも役立ちます。

RTL の開発

RTL カーネル開発フローでは、Vitis デザイン フローで使用する RTL IP を標準化する必要があります。これは、既存の IP から RTL カーネル (.xo) ファイルを作成し、Vitis ツールに必要な AXI4 インターフェイスをサポートするために必要な変更をするということです (RTL カーネルの要件 を参照)。RTL カーネル開発フローでは、Vivado ツールで使用できるように既にパッケージ済みの既存のカスタム IP を変更ししたり、RTL デザインを最初から開始してパッケージして Vitis フローで使用できるようにしたりします。

RTL カーネルの作成には、RTL コードを記述し、それを Vivado ロジック シミュレータまたはサポートされるサードパーティー シミュレータでシミュレーションし、デザインを配置配線して、タイミングと配線が問題なく完了するようにする従来の RTL IP 開発プロセスに従います。また、必要に応じてデザインで使用する XDC 制約を定義して、インプリメンテーションを完了させます。準備ができたら、またはデザインが完了したら、RTL デザインを IP としてパッケージし、システム デザインをビルドする際に Vitis コンパイラで使用する RTL カーネル (.xo) ファイルを生成できます。RTL デザインと IP パッケージング プロセスでは、すべてが同じですが、追加の .xo ファイルが出力される点が異なります。

システム デザイン

Vivado 開発フローでは、ツールの IP インテグレーターを使用して必要な IP を手動で追加して接続するか、RTL を使用してトップダウン システムを定義します。Vivado フローでは、FPGA デザインの外部で、PCIe バス、グローバル メモリ、およびペリフェラル機能を含む全体的なシステム デザインを指定する必要があります。システム カードまたはプログラマブル ロジックの機能にアクセスするには、ドライバーを組み込んだカスタム ホスト コードを作成する必要があります。

Vitis アプリケーション アクセラレーション フローでは、コンパイラが RTL カーネル、または複数のカーネルを Alveo アクセラレータ カードのターゲット プラットフォームにリンクし、IP インテグレーター機能を使用して自動的にシステム デザインを構築します。Vitis コンパイラは、Memory Subsystem (MSS) IP を自動的にシステム デザインにインスタンシエートし、カーネル、ホスト プロセッサ、およびメモリ リソース間の AXI トラフィックを管理します。MSS の設定は、リンク中に使用されるコンフィギュレーション ファイルの接続セクションから取得されます (カーネルのリンク を参照)。XRT は、基盤となるランタイムとドライバーを提供し、アクセラレータ カードにアクセスするホスト アプリケーションを開発するための API を提供します。

Vivado 開発フローでは、デザインの合成、配置配線、およびタイミング クロージャが必要です。Vitis フローでは、リンク プロセスで Vivado プロジェクトが作成され、デザインの合成とインプリメンテーションが自動化されます。これは Vitis ツール フロー内で自動化されますが、Tcl スクリプトを使用するか、Vivado ツール内でインタラクティブに作業することでプロセスを完全に制御でき、デザインの問題に対処し、目的の結果を生成できます。

Vivado ツールと Vitis ツールではどちらもシステム デザイン機能が提供されますが、Vitis ツールで必要なエコシステムの大部分が標準化されます。Vitis フローでは、PCIe との統合やグローバル メモリの追加など、いくつかのステップが自動化されます。これにより、RTL 関数の開発に集中でき、全体的な開発時間を短縮できます。Vitis フローを使用するとほとんどの場合、RTL コンポーネントやホスト コードを変更することなく、ほかのアクセラレータ カードにシームレスに移行しやすくなります。