このセクションでは、RTL 設計者向けの Vitis アプリケーション開発フローの簡単な概要について説明します。次は、そのフローを画像で示したものです。
- G++ を使用してアプリケーションをコンパイル
-
C/C++ で記述され、XRT ネイティブ API を使用してコンパイルされたホスト プログラムは、
g++
コンパイラを使用してコンパイルされ、x86 プロセッサ上で実行するホスト実行可能ファイルを作成します。ホスト プログラムは、FPGA の PL 領域にある RTL カーネルと対話し、アクセラレーション アプリケーションを完成します。 - Vivado Design Suite を使用した PL カーネルの作成
-
RTL デザインは、Vivado ツールを使用してAMD FPGA デバイス向けに開発および最適化されています。Vivado ツールでのカーネル開発の手順は、次のとおりです。
- RTL コードを編集して関数を設計します。
- Vivado シミュレータでビヘイビアー シミュレーションを使用して RTL を検証します。
- RTL 合成、配置配線、およびタイミングを検証します。
- タイミング レポートを確認してパフォーマンスを解析します。
- パフォーマンス目標が達成されるまで、前の手順を繰り返します。
- Vitis フローで使用するために、RTL IP をカーネル (.xo) としてパッケージします。
- Vitis ツールを使用して PL カーネルをリンク
-
Vitis リンカーでザイリンクス オブジェクト (.xo) ファイルとターゲット ハードウェア プラットフォームとリンクし、デバイス バイナリ ファイル (.xclbin) を作成します。このファイルが読み込まれて、Alveo ターゲット プラットフォーム上で実行されます。
ヒント: この段階では、.xclbin ファイルを生成するために Vivado の配置配線機能が呼び出され、ビットストリームが生成されます。デバイス バイナリのアーキテクチャを定義するため、コンフィギュレーション ファイル (design.cfg) を作成し、カーネルがグローバル メモリにどのように接続されるか、カーネルどうしでどのように接続されるかや、複数の関数を並列で実行できるようにするため、カーネル (または演算ユニット) のインスタンスをいくつデバイス バイナリに作成する必要があるかといったことを指定します。このコンフィギュレーション ファイルは Vitis リンカーに渡されて、.xclbin を生成します。
- アプリケーションの実行
- 最後に、アプリケーションを実行すると、ホスト プログラムが Vitis コンパイラで生成された .xclbin ファイルを読み込みます。ホスト アプリケーションは常に CPU 上で実行されます。RTL カーネルは、x86 上でエミュレーション モードで実行したり、Alveo アクセラレータ カードの FPGA に .xclbin をロードしたりできます。