最終段階では、カーネルを Vitis コア開発キットで使用できるように、RTL IP をザイリンクス オブジェクト ファイル (XO) にパッケージします。これには、Vivado Design Suite で Tcl コマンドの
package_xo
を使用します。
IP をパッケージしたら、Vivado ツールから package_xo
コマンドを実行します。package_xo
コマンドは、IP からの component.xml ファイルを使用して、可能な場合は必要な kernel.xml を作成します。Vivado ツールは、すべてのものが揃っていることを判断するため package_xo
の前処理としてデザイン ルール チェックを実行し、IP を処理して XO ファイルを作成するか、問題が存在する場合はそれを示すエラーが返されます。
次の例では、指定された IP ディレクトリにある test_sincos
という名前の RTL カーネル IP を、test.xo という名前のオブジェクト ファイルにパッケージし、必要な kernel.xml ファイルを作成し、ap_ctrl_chain
プロトコルを使用します。
package_xo -xo_path ./test.xo -kernel_name test_sincos \
-ctrl_protocol ap_ctrl_chain -ip_directory ./ip/
package_xo
コマンドの出力は test.xo ファイルで、アプリケーションのビルドおよび実行 で説明すようにソース ファイルとして v++ --link
コマンドに追加したり、Vitis IDE の使用 で説明するようにアプリケーション プロジェクトに追加できます。
RTL カーネルの XML ファイル に説明されている要件で指定されているように、IP の kernel.xml ファイルが必要な場合があります。-kernel_xml
オプションを使用すると、package_xo
コマンドにファイルを指定できます。この場合、package_xo
コマンドで指定された kernel.xml が使用されます。次の例に、このコマンドを示します。
package_xo -xo_path ./test.xo -kernel_name test_sincos \
-kernel_xml ./src/kernel.xml -ip_directory ./ip/
ソフトウェア エミュレーション中に RTL カーネルを使用するには、カーネルに C モデルを提供する必要があります。C モデルのハードウェアでコンパイルされる関数プロトタイプは、RTL カーネルで使用されているのと同じインターフェイスである必要があります。ただし、C モデルは HLS ツールで合成可能になっている必要はありません。
package_xo
-kernel_files
オプションを使用すると、パッケージされた RTL カーネルに C モデルを追加できます。
package_xo -xo_path ./test.xo -kernel_name test_sincos -kernel_xml ./src/kernel.xml \
-ip_directory ./ip/ -kernel_files ./imports/sincos_cmodel.cpp
package_xo
コマンドは、C モデル ファイルを XO 内の cpu_sources でパッケージ化します。次の C モデル ファイルの末尾が自動的に認識されます。
- .cl = OpenCL
- .c、.cpp、.cxx = C/C++