ストリーミング接続の指定 - 2023.2 日本語

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

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

ストリームを介して通信するハードウェア アクセラレータ パイプラインのサポートは、FPGA、FPGA ベースの SoC、および Versal アダプティブ SoC デバイスの主な利点の 1 つであり、通信システムだけでなく DSP および画像処理アプリケーションでも使用されています。ストリーミングに使用されるカーネル ポートはそのカーネル内で定義されるので、ホスト プログラムでは呼び出されません。データは、別のカーネルに転送されて処理される前に、グローバルメモリに戻す必要はありません。次に説明するように、カーネル間の接続は v++ リンク プロセス中に直接定義されます。

あるカーネルのストリーミング データ出力ポートを別のカーネルのストリーミング データ入力ポートに、または PL カーネルと ADF グラフ アプリケーションの PLIO 間で接続するには、リンキング中に --connectivity.sc オプションを使用します。このオプションは、コマンド ラインで指定するか、v++ コマンド で説明されるように、--config オプションで指定した config ファイルから指定します。

重要: --connectivity.sc カーネルがそれ自体を駆動すると、エラーが発生します。

プロデューサー カーネルのストリーミング出力ポートをコンシューマー カーネルのストリーミング入力ポートに接続するには、v++ コンフィギュレーション ファイルで次のように connectivity.stream_connect オプションを使用します。

[connectivity]
#stream_connect=<cu_name>.<output_port>:<cu_name>.<input_port>:[<fifo_depth>]
stream_connect=vadd_1.stream_out:vadd_2.stream_in
stream_connect=vadd_2.stream_in:ai_engine_0.DataIn0

説明:

  • <cu_name>: connectivity.nk オプションで指定される CU のインスタンス名 (複数のカーネル インスタンスの作成 を参照)。cu_name は、複数のカーネル インスタンスの作成 で説明するように、コンフィギュレーション ファイルで指定できるほか、特に指定がない場合は、ツールで自動的に定義されます。
    ヒント: Versal AI エンジン ポートへの接続を指定する場合、上記のように <cu_name>ai_engine_0 になります。
  • <output_port> または <input_port>: プロデューサーまたはコンシューマー カーネルで定義されているストリーミング ポート。
    重要: 出力ポートと入力ポートの幅が一致しない場合、Vitis コンパイラはビルド プロセス内で 2 つのポート間にデータ幅コンバーターを自動的に挿入します。データ幅コンバーターを含めると、大きなビット幅の出力を小さなビット幅の入力に切り詰めたり、小さなビット幅を大きなビット幅に拡張したりできます。
  • [:<fifo_depth>]: 2 つのストリーミング ポート間に指定した深さの FIFO を挿入して、ストールが発生しないようにします。値は整数で指定します。