ヒント:
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 のフォーマットの詳細を説明します。
タグ | 属性 | 説明 |
---|---|---|
<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 ポートには適用されません。 |
|
<arg>
|
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 の深さは memSize で設定されます。ヒント:
AXI4 ポートには適用されません。
|
|
次のタグでは、AXI4-Stream ポートの追加タグを指定します。これらは、AXI4 ポートには適用されません。 | ||
<connection>
|
connection タグは、カーネルからパイプ用に挿入された FIFO まで、または FIFO からカーネルまでのハードウェアでの実際の接続を指定します。 | |
srcInst
|
接続のソース インスタンスを指定します。 | |
srcPort
|
接続のソース インスタンスのポートを指定します。 | |
dstInst
|
接続のデスティネーション インスタンスを指定します。 | |
dstPort
|
接続のデスティネーション インスタンスのポートを指定します。 |