フリーランニング カーネルのコーディング ガイドライン - 2020.2 Japanese

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

Document ID
UG1393
Release Date
2021-03-22
Version
2020.2 Japanese

前述のように、フリーラニング カーネルには hls::stream 入力と出力しか含まれません。推奨されるガイドラインは次のとおりです。

  • ポートがカーネルからの別のストリーミング ポートと通信する場合は、hls::stream<ap_axiu<D,0,0,0> > を使用します。
  • ポートがホストと通信する場合は、hls::stream<qdma_axis<D,0,0,0> > を使用します。
  • 関数パラメーターに hls::stream 型を使用すると、Vitis HLS でインターフェイスに AXI4-Stream port (axis) が推論されます。
  • フリーランニング カーネルには、次の特別な INTERFACE プラグマも指定する必要があります。
    #pragma HLS interface ap_ctrl_none port=return
重要: カーネル インターフェイスには #pragma HLS interface s_axilite または #pragma HLS interface m_axi を含めないようにします (メモリまたは制御ポートにはできないので)。

次のコード例は、入力 1 つと出力 1 つを含むフリーラニング カーネルが別のカーネルと通信するところを示しています。while(1) ループ構造にはカーネル コードの内容が含まれ、カーネルが実行される限り繰り返されます。

void kernel_top(hls::stream<ap_axiu<32, 0, 0, 0> >& input, 
   hls::stream<ap_axiu<32, 0, 0, 0> >& output) {
#pragma HLS interface ap_ctrl_none port=return  // Special pragma for free-running kernel
 
#pragma HLS DATAFLOW // The kernel is using DATAFLOW optimization
	while(1) {
		...
	}
}
ヒント: この例にはフリーラニング カーネルのストリーミング入力/出力ポートの定義が示されていますが、フリーランニング カーネルと別のカーネル間のストリーミング接続は、計算ユニット間のストリーミング接続の指定 で説明するように、カーネル リンク プロセス中に定義する必要があります。