Vivado HLS でのカーネルの作成 - 2019.2 Japanese

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

Document ID
UG1393
Release Date
2020-02-28
Version
2019.2 Japanese

Vitis コア開発キットで使用するために C/C++ からカーネルを生成するには、 『Vivado Design Suite ユーザー ガイド: 高位合成』 (UG902: 英語版日本語版) に説明されている標準 Vivado HLS プロセスに従いますが、カーネルは Vitis ソフトウェア プラットフォームで動作する必要があるので、標準カーネル要件 (カーネル プロパティ を参照) にも従う必要があります。まず、インターフェイスを AXI メモリ インターフェイスとして記述することが必要です。ただし、スカラー パラメーターは例外で、AXI4-Lite インターフェイスにマップされます。

次の例では、関数シグネチャを定義し、HLS INTERFACE プラグマを指定して関数引数のインターフェイス ポートを定義しています。

void krnl_idct(const ap_int<512> *block, const ap_uint<512> *q, 
 ap_int<512> *voutp, int ignore_dc, unsigned int blocks) {
  #pragma HLS INTERFACE m_axi port=block offset=slave bundle=p0 depth=512
  #pragma HLS INTERFACE s_axilite port=block bundle=control
  #pragma HLS INTERFACE m_axi port=q offset=slave bundle=p1 depth=2
  #pragma HLS INTERFACE s_axilite port=q bundle=control
  #pragma HLS INTERFACE m_axi port=voutp offset=slave bundle=p2 depth=512
  #pragma HLS INTERFACE s_axilite port=voutp bundle=control
  #pragma HLS INTERFACE s_axilite port=ignore_dc bundle=control
  #pragma HLS INTERFACE s_axilite port=blocks bundle=control
  #pragma HLS INTERFACE s_axilite port=return bundle=control
HLS カーネルを作成およびコンパイルするには、次の手順に従います。
  1. Vivado HLS を起動して GUI を開き、File > New Project をクリックします。
  2. New Vivado HLS Project ウィザードの [Project Configurations] ページで、Project name にプロジェクト名を入力し、Location でプロジェクトの保存ディレクトリを指定して、Next をクリックします。
  3. [Add/Remove Files] ページで、Add Files をクリックしてカーネルのソース コードを指定し、Top Function にカーネル関数を指定して、Next をクリックします。
  4. C ベース シミュレーション テストベンチがある場合は、Add Files をクリックして指定できます (オプション)。Next をクリックします。
  5. [Solution Configuration] ページで、Clock Period にカーネルのクロック周期を指定します。この設定は必須です。
    図 1. New Vivado HLS Project ウィザード
  6. [Part Selection] エリアの Browse ボタンをクリックして、[Device Selection Dialog] ダイアログ ボックスを開きます。Boards をクリックし、コンパイルしたカーネルのターゲット プラットフォームを選択します。[OK] をクリックしてプラットフォームを選択し、[Solution Configuration] ページに戻ります。
    図 2. デバイスの選択
  7. [Solution Configuration] ページで Vitis Bottom Up Flow チェック ボックスをオンにし、Finish をクリックして HLS カーネル プロジェクトを作成します。
    重要: プロジェクトからザイリンクス オブジェクト (.xo) ファイルを作成するには、Vitis Bottom Up Flow をオンにする必要があります。

HLS プロジェクトを作成したら、Run C-Synthesis をクリックして C 合成を実行し、カーネル コードをコンパイルできます。HLS ツール フローの詳細は、 『Vivado Design Suite ユーザー ガイド: 高位合成』 (UG902: 英語版日本語版) を参照してください。

合成が完了したら、カーネルを .xo ファイルとしてエクスポートし、Vitis コア開発キットで使用できます。エクスポートするには、メイン メニューから Solution > Export RTL をクリックします。

図 3. RTL を IP としてエクスポート

ファイル ディレクトリを指定して [OK] をクリックすると、カーネルがザイリンクス オブジェクト ファイル (.xo) としてエクスポートされます。

.xo ファイルは、v++ リンク プロセスの入力ファイルとして使用できます。詳細は、カーネルのリンク を参照してください。オブジェクト ファイルは、Vitis IDE プロジェクトの作成 に説明されているように、Vitis 統合設計環境 (IDE) でアプリケーション プロジェクトにも追加できます。

ただし、ここで説明するボトムアップ フローで作成された HLS カーネルには、Vitis アプリケーション アクセラレーション開発フローで使用する場合、制限があります。HLS カーネルを使用したアプリケーションでは、ヘッダー ファイルの依存性が重複するために問題が発生するので、ソフトウェア エミュレーションはサポートされません。HLS カーネルまたは RTL カーネルのハードウェア エミュレーション フローでは、GDB デバッグはサポートされません。