RTL 設計者向け Vitis 開発フロー - 2023.2 日本語

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

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

このセクションでは、RTL 設計者向けの Vitis アプリケーション開発フローの簡単な概要について説明します。次は、そのフローを画像で示したものです。

図 1. RTL カーネルを使用した Vitis 開発フロー
開発フローでは、次の手順を使用します。
G++ を使用してアプリケーションをコンパイル

C/C++ で記述され、XRT ネイティブ API を使用してコンパイルされたホスト プログラムは、g++ コンパイラを使用してコンパイルされ、x86 プロセッサ上で実行するホスト実行可能ファイルを作成します。ホスト プログラムは、FPGA の PL 領域にある RTL カーネルと対話し、アクセラレーション アプリケーションを完成します。

Vivado Design Suite を使用した PL カーネルの作成

RTL デザインは、Vivado ツールを使用してAMD FPGA デバイス向けに開発および最適化されています。Vivado ツールでのカーネル開発の手順は、次のとおりです。

  1. RTL コードを編集して関数を設計します。
  2. Vivado シミュレータでビヘイビアー シミュレーションを使用して RTL を検証します。
  3. RTL 合成、配置配線、およびタイミングを検証します。
  4. タイミング レポートを確認してパフォーマンスを解析します。
  5. パフォーマンス目標が達成されるまで、前の手順を繰り返します。
  6. Vitis フローで使用するために、RTL IP をカーネル (.xo) としてパッケージします。
Vitis ツールを使用して PL カーネルをリンク

Vitis リンカーでザイリンクス オブジェクト (.xo) ファイルとターゲット ハードウェア プラットフォームとリンクし、デバイス バイナリ ファイル (.xclbin) を作成します。このファイルが読み込まれて、Alveo ターゲット プラットフォーム上で実行されます。

ヒント: この段階では、.xclbin ファイルを生成するために Vivado の配置配線機能が呼び出され、ビットストリームが生成されます。

デバイス バイナリのアーキテクチャを定義するため、コンフィギュレーション ファイル (design.cfg) を作成し、カーネルがグローバル メモリにどのように接続されるか、カーネルどうしでどのように接続されるかや、複数の関数を並列で実行できるようにするため、カーネル (または演算ユニット) のインスタンスをいくつデバイス バイナリに作成する必要があるかといったことを指定します。このコンフィギュレーション ファイルは Vitis リンカーに渡されて、.xclbin を生成します。

アプリケーションの実行
最後に、アプリケーションを実行すると、ホスト プログラムが Vitis コンパイラで生成された .xclbin ファイルを読み込みます。ホスト アプリケーションは常に CPU 上で実行されます。RTL カーネルは、x86 上でエミュレーション モードで実行したり、Alveo アクセラレータ カードの FPGA に .xclbin をロードしたりできます。