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>
次の表では、kernel.xml のフォーマットの詳細を説明します。
タグ | 属性 | 説明 |
---|---|---|
<root> | versionMajor | 現在のリリースの Vitis ソフトウェア プラットフォームでは 1 に設定しますソフトウェア プラットフォーム。 |
versionMinor | 現在のリリースの Vitis ソフトウェア プラットフォームでは 6 に設定しますソフトウェア プラットフォーム。 | |
<kernel> | name | カーネル名 |
language | RTL カーネルの場合は常に ip_c に設定します。 |
|
vlnv | IP の component.xml にあるベンダー、ライブラリ、名前、バージョン属性と一致している必要があります。たとえば、component.xml には次のタグがあります。
カーネル XML の vlnv 属性は |
|
attributes | 予約されています。空の文字列 ("") に設定します。 | |
preferredWorkGroupSizeMultiple | 予約されています。0 に設定します。 | |
workGroupSize | 予約されています。1 に設定します。 | |
interrupt | 割り込みがある場合は true (interrupt="true") に設定し、それ以外の場合は削除します。 | |
hwControlProtocol | RTL カーネルの制御プロトコルを指定します。
|
|
<port> | name |
ポート名を指定します。 重要:
AXI4-Lite インターフェイスには、
S_AXI_CONTROL という名前を付ける必要があります。 |
mode |
少なくとも AXI4 マスター ポートが 1 つ、AXI4-Lite スレーブ コントロールポートが 1 つ必要です。 カーネル間でデータをストリームする場合は、AXI4-Stream ポートを指定できます。
|
|
range | ポートのアドレス空間の範囲です。 | |
dataWidth | ポートを通過するデータ幅で、デフォルト値は 32 ビットです。 | |
portType | ポートがアドレス指定可能か、またはストリーミングかを指定します。
|
|
base |
AXI4 マスターおよびスレーブ ポートの場合は 0x0 に設定します。このタグは AXI4-Stream ポートには適用されません。 |
|
<args> | name | カーネル ソフトウェア引数の名前を指定します。 |
addressQualifier | 有効値:
|
|
id |
AXI4 マスターおよびスレーブ ポートのみに適用されます。ID は連続している必要があります。これはカーネル引数の順番を決めるのに使用されます。 AXI4-Stream ポートには適用されません。 |
|
port |
arg が接続されるポート名を指定します。 |
|
size | 引数のサイズをバイトで指定します。デフォルトは 4 バイトです。 | |
offset | レジスタ メモリ アドレスを示します。 | |
type | 引数の C データ型です。たとえば uint* 、int* 、float* などを指定します。 |
|
hostOffset | 予約されています。0x0 に設定します。 |
|
hostSize | 引数のサイズです。デフォルトは 4 バイトです。 | |
memSize |
AXI4-Stream ポートの場合、作成される FIFO の深さは ヒント:
AXI4 ポートには適用されません。
|
|
次のタグは、AXI4-Stream ポートの追加タグを指定します。これらは、AXI4 ポートには適用されません。 | ||
<pipe> | 計算ユニットの各パイプに、データ バッファリング用の FIFO がコンパイラにより挿入されます。pipe タグは FIFO のコンフィギュレーションを決めます。 | |
name | AXI4-Stream ポート用に挿入された FIFO の名前を指定します。同じ計算ユニットで使用されているすべてのパイプの中で、この名前が重複しないように指定する必要があります。 | |
width | FIFO の幅をバイトで指定します。たとえば、32 ビットの FIFO では 0x4 を指定します。 |
|
depth | FIFO の深さをワード数で指定します。 | |
linkage | 常に internal に設定します。 | |
<connection> | connection タグは、カーネルからパイプ用に挿入された FIFO まで、または FIFO からカーネルまでのハードウェアでの実際の接続を指定します。 | |
srcInst | 接続のソース インスタンスを指定します。 | |
srcPort | 接続のソース インスタンスのポートを指定します。 | |
dstInst | 接続のデスティネーション インスタンスを指定します。 | |
dstPort | 接続のデスティネーション インスタンスのポートを指定します。 |