Skip to content

Latest commit

 

History

History
206 lines (135 loc) · 13.1 KB

File metadata and controls

206 lines (135 loc) · 13.1 KB

2019.1 SDAccel™ 開発環境チュートリアル

その他のバージョンを表示

アクセラレーションされたアプリケーションのビルドおよび実行の基本的な概念

2. ソフトウェアおよびハードウェア エミュレーションの実行

概要

エミュレーションは、デザインのデバッグおよび最適化に不可欠なプロセスです。SDAccel 環境には、ソフトウェアおよびハードウェア エミュレーションの両方が含まれます。

このチュートリアルでは、ソフトウェアおよびハードウェア エミュレーションの両方を実行するのに必要な手順について説明します。

開始前の注意点

この演習の前に、アプリケーションのビルド演習を確認して、実行してください

ソフトウェアおよびハードウェア エミュレーションの実行

アプリケーションのデバッグおよび最適化に役立つように、SDAccel 環境では、ソフトウェアおよびハードウェア エミュレーションの両方でデザインを実行できるようになっています。ソフトウェア エミュレーションとハードウェア エミュレーションのそれぞれで、さまざまなレベルでデザインに関する特定の情報を取得できます。詳細は、この後説明します。エミュレーションおよび最適化の詳細は、『SDAccel 環境プロファイリングおよび最適化ガイド (UG1207) を参照してください。

  • ソフトウェア エミュレーション (sw_emu) では、ホスト アプリケーション コードとカーネル コードの両方が x86 プロセッサで実行できるようコンパイルされます。これにより、高速なビルドおよび実行ループを使用した反復アルゴリズムによる改善が可能になります。このターゲットは、構文エラーを特定し、アプリケーションと共に実行されるカーネル コード ソース レベルのデバッグを実行し、システムの動作を検証するのに便利です。RTL カーネルでは、C モデルが関連付けられている場合にソフトウェア エミュレーションがサポートされます。

  • ハードウェア エミュレーション (hw_emu) では、カーネル コードがハードウェア モデル (RTL) にコンパイルされ、専用シミュレータで実行されますが、残りのシステムでは C シミュレータが使用されます。ビルドおよび実行にかかる時間は長くなりますが、詳細でサイクル精度の高いカーネル アクティビティが表示されます。このターゲットは、FPGA に含まれるロジックの機能をテストして、最初のパフォーマンス見積もりを取得する場合に便利です。

エミュレーションを実行するための要件

エミュレーションを実行するには、次を実行しておく必要があります。

  1. デザインをビルドします。
  2. エミュレーション コンフィギュレーション ファイルを生成します。
  3. 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 環境変数の設定

最後に、ソフトウェアまたはハードウェア エミュレーションのいずれかを実行する前に、XCL_EMULATION_MODE 環境変数を設定します。この変数は、必要なエミュレーションを正しく実行するためにランタイム ライブラリで使用されます。

  • ソフトウェア エミュレーションの場合は、変数を sw_emu に設定します。

    export XCL_EMULATION_MODE=sw_emu
    
  • ハードウェア エミュレーションの場合は、変数を hw_emu に設定します。

    export XCL_EMULATION_MODE=hw_emu
    

ソフトウェア エミュレーションを実行

わかっていることを使用し、すべてをまとめて、提供されているソース ファイルの手順に従ってソフトウェア エミュレーションを実行します。

  1. build_targetsw_emu に設定してソフトウェアおよびハードウェアが ビルドされるようにします。

    注記: ホスト ソフトウェアおよびハードウェアのビルド方法は、アプリケーションのビルド演習を参照してください。

  2. エミュレーション コンフィギュレーション ファイルを生成します。
    生成した emconfig.json ディレクトリにある必要がありますので、ホスト実行ファイルと同じディレクトリに移動してから、次のコマンドを実行します。

    emconfigutil --platform xilinx_u200_xdma_201830_1

    platform_target は xilinx_u200_xdma_201830_1 です。これは、ソフトウェアおよびハードウェア ビルド プロセス中に使用した platform_target と同じである必要があります。

  3. XCL_EMULATION_MODE 環境変数を sw_emu に設定してソフトウェア エミュレーションで実行します。

    export XCL_EMULATION_MODE=sw_emu
  4. コンフィギュレーション ファイル (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

ハードウェア エミュレーションの実行

ソフトウェア エミュレーションを実行したので、同じデザインのハードウェア エミュレーションを実行し、ソフトウェアおよびハードウェア エミュレーションの違いを確認します。

  1. build_target を hw_emu に設定してソフトウェアおよびハードウェアが ビルドされるようにします。

    注記: ホスト ソフトウェアおよびハードウェアのビルド方法は、アプリケーションのビルド演習を参照してください。

  2. エミュレーション コンフィギュレーション ファイルを生成します。

    注記: ファイルが既に「ソフトウェア エミュレーションの実行」セクションで生成されている場合、この手順は飛ばすことができます。

    生成した emconfig.json ディレクトリにある必要がありますので、ホスト実行ファイルと同じディレクトリに移動してから、次のコマンドを実行します。

    emconfigutil --platform xilinx_u200_xdma_201830_1

    この場合、platform_target は xilinx_u200_xdma_201830_1 です。 これは、ソフトウェアおよびハードウェア ビルド プロセス中に使用した platform_target と同じである必要があります。

  3. XCL_EMULATION_MODE 環境変数を hw_emu に設定してハードウェア エミュレーションで実行します。

    export XCL_EMULATION_MODE=hw_emu
  4. コンフィギュレーション ファイル (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

まとめ

エミュレーションの設定および実行に必要な手順をまとめると、次のようになります。

  1. ツールおよびランタイムを設定します。

    source <SDX_install_path>/settings64.sh
    source <XRT_install_path>/setup.sh
    cd ./reference-files/run
  2. エミュレーション コンフィギュレーション ファイルを生成します。

    emconfigutil --platform xilinx_u200_xdma_201830_1
  3. ソフトウェア エミュレーションを実行します。

    export XCL_EMULATION_MODE=sw_emu
    ./host mmult.sw_emu.xilinx_u200_xdma_201830_1.xclbin
  4. ハードウェア エミュレーションを実行します。

    export XCL_EMULATION_MODE=hw_emu
    ./host mmult.hw_emu.xilinx_u200_xdma_201830_1.xclbin

次のステップ

エミュレーションを実行したら、プロファイル サマリとタイムライン トレース レポートを生成して、さらにデバッグおよび最適化をします。これらのレポートを生成する方法は、プロファイルおよびトレース レポートの生成演習を参照してください。



メイン ページに戻る入門コースの初めに戻る

Copyright© 2019 Xilinx