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
- Vivado HLS を起動して GUI を開き、 をクリックします。
- New Vivado HLS Project ウィザードの [Project Configurations] ページで、Project name にプロジェクト名を入力し、Location でプロジェクトの保存ディレクトリを指定して、Next をクリックします。
- [Add/Remove Files] ページで、Add Files をクリックしてカーネルのソース コードを指定し、Top Function にカーネル関数を指定して、Next をクリックします。
- C ベース シミュレーション テストベンチがある場合は、Add Files をクリックして指定できます (オプション)。Next をクリックします。
- [Solution Configuration] ページで、Clock Period にカーネルのクロック周期を指定します。この設定は必須です。図 1. New Vivado HLS Project ウィザード
- [Part Selection] エリアの Browse ボタンをクリックして、[Device Selection Dialog] ダイアログ ボックスを開きます。Boards をクリックし、コンパイルしたカーネルのターゲット プラットフォームを選択します。[OK] をクリックしてプラットフォームを選択し、[Solution Configuration] ページに戻ります。 図 2. デバイスの選択
- [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 コア開発キットで使用できます。エクスポートするには、メイン メニューから をクリックします。
ファイル ディレクトリを指定して [OK] をクリックすると、カーネルがザイリンクス オブジェクト ファイル (.xo) としてエクスポートされます。
.xo ファイルは、v++
リンク プロセスの入力ファイルとして使用できます。詳細は、カーネルのリンク を参照してください。オブジェクト ファイルは、Vitis IDE プロジェクトの作成 に説明されているように、Vitis 統合設計環境 (IDE) でアプリケーション プロジェクトにも追加できます。
ただし、ここで説明するボトムアップ フローで作成された HLS カーネルには、Vitis アプリケーション アクセラレーション開発フローで使用する場合、制限があります。HLS カーネルを使用したアプリケーションでは、ヘッダー ファイルの依存性が重複するために問題が発生するので、ソフトウェア エミュレーションはサポートされません。HLS カーネルまたは RTL カーネルのハードウェア エミュレーション フローでは、GDB デバッグはサポートされません。