ユーザー管理のカーネルの自動再起動のイネーブル - 2021.1 Japanese

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

Document ID
UG1393
Release Date
2022-03-29
Version
2021.1 Japanese

Vitis HLS から ap_ctrl_chain プロトコルをインプリメントする一部のユーザー管理のカーネルでは、カーネルが自動的に再起動するように s_axilite 制御レジスタの auto_restart ビットを設定できます。auto_restart ビットを使用するユーザー管理のカーネルは、ユーザー管理の終わらないカーネルでのデータのストリーミング で説明されるように、終了しないカーネルです。

終了しないカーネルをプログラミングするには、ホスト アプリケーションが s_axilite 制御レジスタの auto_restart 信号をアドレス 0x00 に設定する必要があります。設定しない場合、カーネルは単にシングル実行モードで実行され、ホスト アプリケーションが再起動するのを待ちます。カーネルの制御レジスタ プログラムするには、次の手順を使用します。

  1. 前述のように、xrt::ip クラスの IP オブジェクトとしてユーザー管理のカーネルにアクセスするよう、ホスト アプリケーションを設定します。
  2. 129 (バイナリ 10000001) を制御レジスタに書き込み、ap_start ビットと auto_restart ビットの両方を設定して、カーネルを終了しないモードで実行できるようにします。s_axilite 制御レジスタの位置は、ほかの ap_ctrl_chain カーネルと同様、0x00 です。
    重要: 非確定的な動作を引き起こす可能性のある制御レジスタ空間には、ほかに何も書き込まないでください。
次のコード例では、IP オブジェクトを設定し、前述のように記述して制御レジスタを設定します。ap_start は終らないカーネルの実行の開始を、auto_restart はそれが終了しないように設定しています。
auto ip = xrt::ip(device_2, xclbinId, "krnl_stream_vdatamover");
auto ip = xrt::ip(device, uuid, "krnl_stream_vdatamover");
        int startNow =129;
        size_t control_offset = 0;
        ip.write_register(control_offset,startNow);