RTL カーネルの XML ファイル - 2021.2 Japanese

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

Document ID
UG1393
Release Date
2022-03-29
Version
2021.2 Japanese
ヒント: package_xo コマンドは、パッケージされた IP の component.xml から kernel.xml ファイルを作成するので、ユーザーが手動で供給したり RTL Kernel ウィザードを使用して生成する必要はありません。

kernel.xml という XML カーネル記述ファイルを、Vitis アプリケーション アクセラレーション開発フローで使用できるように、各 RTL カーネルに対して作成する必要があります。kernel.xml ファイルは、ランタイムおよび Vitis ツールフローで必要なレジスタ マップおよびポートなどのカーネル属性を指定します。次に、kernel.xml ファイルの例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<root versionMajor="1" versionMinor="6">
  <kernel name="vitis_kernel_wizard_0" language="ip_c" 
      vlnv="mycompany.com:kernel:vitis_kernel_wizard_0:1.0" 
      attributes="" preferredWorkGroupSizeMultiple="0" workGroupSize="1" interrupt="true">
    <ports>
      <port name="s_axi_control" mode="slave" range="0x1000" dataWidth="32" portType="addressable" base="0x0"/>
      <port name="m00_axi" mode="master" range="0xFFFFFFFFFFFFFFFF" dataWidth="512" portType="addressable" 
         base="0x0"/>
    </ports>
    <args>
      <arg name="axi00_ptr0" addressQualifier="1" id="0" port="m00_axi" size="0x8" offset="0x010" type="int*" 
         hostOffset="0x0" hostSize="0x8"/> 
    </args>
  </kernel>
</root>
注記: RTL カーネルのインターフェイス仕様を指定する kernel.xml ファイルは、RTL Kernel ウィザードを使用すると自動的に作成されます。詳細は、RTL Kernel ウィザード を参照してください。

次の表では、kernel.xml のフォーマットの詳細を説明します。

表 1. カーネル XML ファイルの内容
タグ 属性 説明
<root> versionMajor 現在のリリースの Vitis ソフトウェア プラットフォームでは、1 に設定されています。
versionMinor 現在のリリースの Vitis ソフトウェア プラットフォームでは、6 に設定されています。
<kernel> name カーネル名
language RTL カーネルでは常に ip_c に設定します。
vlnv IP の component.xml にあるベンダー、ライブラリ、名前、バージョン属性と一致している必要があります。たとえば、component.xml には次のタグがあります。

<spirit:vendor>xilinx.com</spirit:vendor>

<spirit:library>hls</spirit:library>

<spirit:name>test_sincos</spirit:name>

<spirit:version>1.0</spirit:version>

カーネル XML の vlnv 属性は xilinx.com:hls:test_sincos:1.0 に設定する必要があります。

attributes 予約済み。空の文字列 ("") に設定します。
preferredWorkGroupSizeMultiple 予約済み。0 に設定します。
workGroupSize 予約済み。1 に設定します。
interrupt 割り込みがある場合は true (interrupt="true") に設定し、それ以外の場合は削除します。
hwControlProtocol RTL カーネルの制御プロトコルを指定します。
  • ap_ctrl_hs: RTL カーネルのデフォルト制御プロトコル。
  • ap_ctrl_chain: データフローをサポートするチェーン接続されたカーネルの制御プロトコル。ap_continue が制御レジスタに追加され、ap_done/ap_continue 終了肯定応答信号がイネーブルになります。
  • ap_ctrl_none: データ駆動のカーネルに適用される制御プロトコル (none)。
  • user_managed: カーネルとほかのカーネルおよびターゲット プラットフォームにリンクする Vitis コンパイラのインターフェイス要件を満たしても、XRT による実行管理の要件に従わないカーネルを指定します。詳細は、ユーザー管理の RTL カーネルの作成を参照してください。
<port> name ポート名を指定します。
重要: AXI4-Lite インターフェイスには、S_AXI_CONTROL という名前を付ける必要があります。
mode 少なくとも AXI4 マスター ポートが 1 つ、AXI4-Lite スレーブ コントロールポートが 1 つ必要です。

カーネル間でデータをストリームする場合は、AXI4-Stream ポートを指定できます。

  • AXI4 マスター ポートの場合は master に設定します。
  • AXI4 スレーブ ポートの場合は slave に設定します。
  • AXI4-Stream マスター ポートの場合は write_only に設定します。
  • AXI4-Stream スレーブ ポートの場合は read_only に設定します。
range ポートのアドレス空間の範囲です。
dataWidth ポートを通過するデータ幅で、デフォルト値は 32 ビットです。
portType ポートがアドレス指定可能か、またはストリーミングかを指定します。
  • AXI4 マスターおよびスレーブ ポートの場合は addressable に設定します。
  • AXI4-Stream ポートの場合は stream に設定します。
base AXI4 マスターおよびスレーブ ポートの場合は 0x0 に設定します。このタグは AXI4-Stream ポートには適用されません。
<arg> name カーネル ソフトウェア引数の名前を指定します。
addressQualifier 有効値:
  • 0: スカラー カーネル入力引数
  • 1: グローバル メモリ
  • 2: ローカル メモリ
  • 3: 定数メモリ
  • 4: パイプ
id AXI4 マスターおよびスレーブ ポートのみに適用されます。ID は連続している必要があります。これはカーネル引数の順番を決めるのに使用されます。

AXI4-Stream ポートには適用されません。

port arg が接続されるポート名を指定します。
size 引数のサイズをバイトで指定します。デフォルトは 4 バイトです。
offset レジスタ メモリ アドレスを示します。
type 引数の C データ型です。たとえば、uint*int*、または float* です。
hostOffset 予約済み。0x0 に設定します。
hostSize 引数のサイズです。デフォルトは 4 バイトです。
memSize AXI4-Stream ポートの場合、作成される FIFO の深さは memSize で設定されます。
ヒント: AXI4 ポートには適用されません。
次のタグでは、AXI4-Stream ポートの追加タグを指定します。これらは、AXI4 ポートには適用されません。
<connection> connection タグは、カーネルからパイプ用に挿入された FIFO まで、または FIFO からカーネルまでのハードウェアでの実際の接続を指定します。
srcInst 接続のソース インスタンスを指定します。
srcPort 接続のソース インスタンスのポートを指定します。
dstInst 接続のデスティネーション インスタンスを指定します。
dstPort 接続のデスティネーション インスタンスのポートを指定します。