その他のバージョンを表示
|
エミュレーションは、デザインのデバッグおよび最適化に不可欠なプロセスです。SDAccel 環境には、ソフトウェアおよびハードウェア エミュレーションの両方が含まれます。
このチュートリアルでは、ソフトウェアおよびハードウェア エミュレーションの両方を実行するのに必要な手順について説明します。
この演習の前に、アプリケーションのビルド演習を確認して、実行してください
アプリケーションのデバッグおよび最適化に役立つように、SDAccel 環境では、ソフトウェアおよびハードウェア エミュレーションの両方でデザインを実行できるようになっています。ソフトウェア エミュレーションとハードウェア エミュレーションのそれぞれで、さまざまなレベルでデザインに関する特定の情報を取得できます。詳細は、この後説明します。エミュレーションおよび最適化の詳細は、『SDAccel 環境プロファイリングおよび最適化ガイド (UG1207) を参照してください。
-
ソフトウェア エミュレーション (
sw_emu) では、ホスト アプリケーション コードとカーネル コードの両方が x86 プロセッサで実行できるようコンパイルされます。これにより、高速なビルドおよび実行ループを使用した反復アルゴリズムによる改善が可能になります。このターゲットは、構文エラーを特定し、アプリケーションと共に実行されるカーネル コード ソース レベルのデバッグを実行し、システムの動作を検証するのに便利です。RTL カーネルでは、C モデルが関連付けられている場合にソフトウェア エミュレーションがサポートされます。 -
ハードウェア エミュレーション (
hw_emu) では、カーネル コードがハードウェア モデル (RTL) にコンパイルされ、専用シミュレータで実行されますが、残りのシステムでは C シミュレータが使用されます。ビルドおよび実行にかかる時間は長くなりますが、詳細でサイクル精度の高いカーネル アクティビティが表示されます。このターゲットは、FPGA に含まれるロジックの機能をテストして、最初のパフォーマンス見積もりを取得する場合に便利です。
エミュレーションを実行するには、次を実行しておく必要があります。
- デザインをビルドします。
- エミュレーション コンフィギュレーション ファイルを生成します。
- XCL_EMULATION_MODE 環境変数を設定します。
エミュレーションを実行する前に、必要なエミュレーション モード (ソフトウェアまたはハードウェア) でアプリケーションをビルドします。エミュレーション モードは -t <build_target> という XOCC オプションでハードウェアをビルドする際に指定します。
- * ソフトウェア エミュレーションを実行するには、<build_target> を sw_emu に設定してハードウェアをビルドする必要があります。
- 同様に、ハードウェア エミュレーションを実行するには、<build_target> を hw_emu に設定してハードウェアをビルドする必要があります。
ホスト ソフトウェアおよびハードウェアのビルド方法および <build_target> の指定方法については、アプリケーションのビルド演習を参照してください。
重要: サンプルを実行する前に、次のコマンドを実行して、SDx ツール、プラットフォーム、およびランタイムが設定されているかどうかを確認します。
#setup Xilinx SDx tools. XILINX_SDX and XILINX_VIVADO will be set in this step. source <SDX_install_path>/settings64.sh #Setup runtime. XILINX_XRT will be set in this step source <XRT_install_path>/setup.sh
アプリケーションをビルドして特定のエミュレーション モードをターゲットにしたら、エミュレーション コンフィギュレーション ファイルを生成する必要もあります。
エミュレーション コンフィギュレーション ファイル (emconfig.json) は、emconfigutil コマンドを使用して生成され、エミュレーション中にザイリンクス ランタイム ライブラリで使用される情報を含みます。emconfigutil コマンドは、SDAccel 環境のインストールに含まれます。
必要な emconfig.json を生成するには、最低でも -f または -–platform オプションを使用してターゲット プラットフォームを指定する必要があります。指定する platform_target は、ホストおよびハードウェア ビルド中に使用されるものと同じである必要があります。1 つの emconfig.json ファイルをソフトウェアおよびハードウェア エミュレーションの両方に使用できます。
emconfigutil -–platform <platform_target>
オプションのリストは、emconfigutil --help を実行するか、『SDx コマンドおよびユーティリティ リファレンス ガイド』 (UG1279) を参照してください。
最後に、ソフトウェアまたはハードウェア エミュレーションのいずれかを実行する前に、XCL_EMULATION_MODE 環境変数を設定します。この変数は、必要なエミュレーションを正しく実行するためにランタイム ライブラリで使用されます。
-
ソフトウェア エミュレーションの場合は、変数を
sw_emuに設定します。export XCL_EMULATION_MODE=sw_emu -
ハードウェア エミュレーションの場合は、変数を
hw_emuに設定します。export XCL_EMULATION_MODE=hw_emu
わかっていることを使用し、すべてをまとめて、提供されているソース ファイルの手順に従ってソフトウェア エミュレーションを実行します。
-
build_target を
sw_emuに設定してソフトウェアおよびハードウェアが ビルドされるようにします。注記: ホスト ソフトウェアおよびハードウェアのビルド方法は、アプリケーションのビルド演習を参照してください。
-
エミュレーション コンフィギュレーション ファイルを生成します。
生成したemconfig.jsonディレクトリにある必要がありますので、ホスト実行ファイルと同じディレクトリに移動してから、次のコマンドを実行します。emconfigutil --platform xilinx_u200_xdma_201830_1
platform_target は xilinx_u200_xdma_201830_1 です。これは、ソフトウェアおよびハードウェア ビルド プロセス中に使用した platform_target と同じである必要があります。
-
XCL_EMULATION_MODE 環境変数を
sw_emuに設定してソフトウェア エミュレーションで実行します。export XCL_EMULATION_MODE=sw_emu -
コンフィギュレーション ファイル (
emconfig.json) を生成して XCL_EMULATION_MODE を設定したら、次のコマンドでホスト プログラムとカーネルをソフトウェア エミュレーション モードで実行します。./host mmult.sw_emu.xilinx_u200_xdma_201830_1.xclbin
ソフトウェア エミュレーションが問題なく実行されると、コンソールには次のように表示されます。
Loading: 'mmult.sw_emu.xilinx_u200_xdma_201830_1.xclbin'
TEST PASSED
ソフトウェア エミュレーションを実行したので、同じデザインのハードウェア エミュレーションを実行し、ソフトウェアおよびハードウェア エミュレーションの違いを確認します。
-
build_target を hw_emu に設定してソフトウェアおよびハードウェアが ビルドされるようにします。
注記: ホスト ソフトウェアおよびハードウェアのビルド方法は、アプリケーションのビルド演習を参照してください。
-
エミュレーション コンフィギュレーション ファイルを生成します。
注記: ファイルが既に「ソフトウェア エミュレーションの実行」セクションで生成されている場合、この手順は飛ばすことができます。
生成した
emconfig.jsonディレクトリにある必要がありますので、ホスト実行ファイルと同じディレクトリに移動してから、次のコマンドを実行します。emconfigutil --platform xilinx_u200_xdma_201830_1
この場合、platform_target は xilinx_u200_xdma_201830_1 です。 これは、ソフトウェアおよびハードウェア ビルド プロセス中に使用した platform_target と同じである必要があります。
-
XCL_EMULATION_MODE 環境変数を
hw_emuに設定してハードウェア エミュレーションで実行します。export XCL_EMULATION_MODE=hw_emu -
コンフィギュレーション ファイル (
emconfig.json) を生成して XCL_EMULATION_MODE 変数を設定したら、次のコマンドでホスト プログラムとカーネルをハードウェア エミュレーション モードで実行します。./host mmult.hw_emu.xilinx_u200_xdma_201830_1.xclbin
ハードウェア エミュレーションが問題なく実行されると、コンソールには次のように表示されます。
Loading: 'mmult.hw_emu.xilinx_u200_xdma_201830_1.xclbin'
INFO: [SDx-EM 01] Hardware emulation runs simulation underneath. Using a large data set will result in long simulation times. It is recommended that a small dataset is used for faster execution. This flow does not use cycle accurate models and hence the performance data generated is approximate.
TEST PASSED
INFO: [SDx-EM 22] [Wall clock time: 19:16, Emulation time: 0.00651464 ms] Data transfer between kernel(s) and global memory(s)
mmult_1:m_axi_gmem-DDR[1] RD = 2.000 KB WR = 1.000 KB
エミュレーションの設定および実行に必要な手順をまとめると、次のようになります。
-
ツールおよびランタイムを設定します。
source <SDX_install_path>/settings64.sh source <XRT_install_path>/setup.sh cd ./reference-files/run
-
エミュレーション コンフィギュレーション ファイルを生成します。
emconfigutil --platform xilinx_u200_xdma_201830_1
-
ソフトウェア エミュレーションを実行します。
export XCL_EMULATION_MODE=sw_emu ./host mmult.sw_emu.xilinx_u200_xdma_201830_1.xclbin -
ハードウェア エミュレーションを実行します。
export XCL_EMULATION_MODE=hw_emu ./host mmult.hw_emu.xilinx_u200_xdma_201830_1.xclbin
エミュレーションを実行したら、プロファイル サマリとタイムライン トレース レポートを生成して、さらにデバッグおよび最適化をします。これらのレポートを生成する方法は、プロファイルおよびトレース レポートの生成演習を参照してください。
Copyright© 2019 Xilinx
