English | 日本語
その他のバージョンを表示 |
SDAccel™ 環境の XOCC コンパイラは、ソース コードからカーネル オブジェクトを作成し、カーネルをターゲット シェルとリンクし、Vivado® ツールのインプリメンテーション フローを使用してアセンブルしたデザインを実行します。また、FPGA ベースのアクセラレーション カードをプログラムするのに必要なプラットフォーム ファイル (xclbin) を生成します。望む結果を達成するためには、タイミング クロージャなど、Vivado 合成およびインプリメンテーションのアドバンス オプションを使用する必要があることもあります。
このチュートリアルでは、プロジェクトをインプリメントする際に Vivado ツール フローを制御する方法をお見せし、コマンド ライン フローの手順を示します。
SDAccel™ 環境には、Vivado ツール フローを制御する 2 つの方法があります。
-
システム ビルドのコンパイルまたはリンクする際は、XOOC
--xp
オプションを使用すると、Vivado の合成およびインプリメンテーション オプションを渡すことができます。注記: システム実行を終了するには数時間かかることがあります。
-
アプリケーションが既にコンパイル済みの場合は、次を実行できます。
- Vivado® Design Suite を使用してデザインを最適化します。
- 新しい配線済みチェックポイントを生成します。
- このチェックポイントを再利用してプラットフォーム ファイル (xclbin) を生成します。
このチュートリアルでは、次を使用します。
- BASH Linux シェル コマンド
- 2019.1 SDx™ リリースおよび xilinx_u200_xdma_201830_1 プラットフォーム。必要であれば、その他のバージョンおよびプラットフォームも使用できます。
重要:
- サンプル ファイルを実行する前に、『SDAccel 開発環境リリース ノート、インストール、およびライセンス ガイド』 (UG1238) で説明されるように、ザイリンクス ランタイム (XRT) と SDAccel 開発環境ツールをインストールしてください。
- Alveo™ カードでアプリケーションを実行する場合は、『Alveo データセンター アクセラレータ カード入門ガイド (UG1301) で説明されるように、カードとソフトウェア ドライバーを正しくインストールしてください。
- この演習を実行する前に、アクセラレーションされたアプリケーションをビルドおよび実行の基本的な概念チュートリアルを理解しておく必要があります。
- リファレンス ファイルを入手するには、ターミナルに
git clone https://github.com/Xilinx/SDAccel-Tutorials
と入力します。 SDAccel-Tutorials-master/docs/controlling-vivado-impl/reference-files/run
に移動します。
注記: このチュートリアルでは、すべての手順を
reference-files/run
ディレクトリから実行します。
–-xp
オプションは Vivado ツールを設定するパラメーターに対応しています。たとえば、--xp
オプションで最適化、配置、およびタイミングを設定したり、エミュレーションおよびコンパイル オプションを設定したりできます。コマンド ライン フローでは、パラメーターが param:<param_name>=<value>
と指定されます。
param
: 必須のキーワード。param_name
: 適用するパラメーターの名前。value
: パラメーターに適した値。
このセクションでは、次のコンフィギュレーションを例として使用して、Vivado 合成およびインプリメンテーションを制御するフローをお見せします。
-
RTL 合成で階層を完全にフラット化 (FLATTEN_HIERARCHY=full を指定)
--xp vivado_prop:run.my_rm_synth_1.{STEPS.SYNTH_DESIGN.ARGS.FLATTEN_HIERARCHY}={full}
-
配線で NoTimingRelaxation 指示子を使用 (DIRECTIVE=NoTimingRelaxation を指定)
--xp vivado_prop:run.impl_1.{STEPS.ROUTE_DESIGN.ARGS.DIRECTIVE}={NoTimingRelaxation}
注記:
-–xp
コマンド オプションは 1 回の xocc の起動で何度も指定できます。または、--xp
オプションを使用せずに、xocc.ini
ファイルで各行にオプションを 1 つずつ指定することもできます。
すべてのパラメーターおよび有効な値のリストは、『SDx コマンドおよびユーティリティ リファレンス ガイド (UG1279) を参照してください。
-
サンプルを実行する前に、次のコマンドを実行して SDx ツール、プラットフォーム、ランタイムがを設定されるようにしてください。
#setup Xilinx SDx tools, XILINX_SDX and XILINX_VIVADO will be set in this step. source <SDX install path>/settings64.sh. for example: source /opt/Xilinx/SDx/2019.1/settings64.sh #Setup runtime. XILINX_XRT will be set in this step source /opt/xilinx/xrt/setup.sh
-
XOCC を使用してカーネルをコンパイルし、それを
--xp
コマンド オプションでプラットフォーム ファイル (xclbin) にリンクします。xocc -t hw --platform xilinx_u200_xdma_201830_1 -g --max_memory_ports apply_watermark -c -k apply_watermark -o'apply_watermark.hw.xilinx_u200_xdma_201830_1.xo' '../src/krnl_watermarking.cl' xocc -t hw --platform xilinx_u200_xdma_201830_1 -g --sp apply_watermark_1.m_axi_gmem0:DDR[0] --sp apply_watermark_1.m_axi_gmem1:DDR[1] -s --xp vivado_prop:run.my_rm_synth_1.{STEPS.SYNTH_DESIGN.ARGS.FLATTEN_HIERARCHY}={full} --xp vivado_prop:run.impl_1.{STEPS.ROUTE_DESIGN.ARGS.DIRECTIVE}={NoTimingRelaxation} -R2 -l --nk apply_watermark:1:apply_watermark_1 -o'apply_watermark.hw.xilinx_u200_xdma_201830_1.xclbin' apply_watermark.hw.xilinx_u200_xdma_201830_1.xo
前述のコマンド オプションについて説明します。
コマンド オプションの説明
-t hw
: システム実行をターゲットに指定--platform xilinx_u200_xdma_201830_1
: xilinx_u200 プラットフォームをターゲットに指定-g
: デバッグ情報を生成--max_memory_ports apply_watermark
: 1 つのポートに対して 1 つの AXI4 インターフェイスを生成-c
: カーネルをコンパイル-k apply_watermark
: カーネル名を指定../src/krnl_watermarking.cl
: ソース ファイルを指定--sp apply_watermark_1.m_axi_gmem0:DDR[0] --sp apply_watermark_1.m_axi_gmem1:DDR[1]
: DDR バンク接続を指定--xp vivado_prop:run.my_rm_synth_1.{STEPS.SYNTH_DESIGN.ARGS.FLATTEN_HIERARCHY}={full} --xp vivado_prop:run.impl_1.{STEPS.ROUTE_DESIGN.ARGS.DIRECTIVE}={NoTimingRelaxation}
: Vivado 合成およびインプリメンテーション オプションを設定-R2
: レポート レベルを 2 に設定して、各インプリメンテーション段階ごとに DCP を生成-l
: カーネルをリンク--nk apply_watermark:1:apply_watermark_1
: カーネル インスタンスの数と名前を指定
-
Vivado 合成およびインプリメンテーション オプションが適用されたことを確認するには、
_x/logs/link/vivado.log
ファイルで「flatten_hierarchy」および「NoTimingRelaxation」を検索します。オプションが実行されたかどうかは、次の行からわかります。- コマンド:
synth_design -top pfm_dynamic -part xcu200-fsgd2104-2-e -flatten_hierarchy full -mode out_of_context
- コマンド:
route_design -directive NoTimingRelaxation
- コマンド:
アプリケーションが既にシステム実行用にコンパイルされている場合は、さまざまな Vivado ツールの手法を使用してインプリメンテーション結果を最適化し、タイミング クロージャなどの目標を達成します。最適化が終了したら、配線済みのデザインをチェックポイント ファイル (DCP) に書き戻して、このチェックポイントを使用して新しいインプリメンテーションを終了します。
注記: SDx 環境と Vivado 環境のバージョンは異なるイテレーション間で同じにする必要があります。
最適化段階では、Vivado ツールの手法を使用します。Vivado ツールの使用方法および最適化については、『Vivado Design Suite ユーザー ガイド: インプリメンテーション』 (UG904) および『UltraFast 設計手法ガイド (Vivado Design Suite 用)』 (UG949) を参照してください。
たとえば、Tcl スクリプトを使用してバッチ モードで Vivado ツールを実行する場合、その Tcl スクリプトにより DCP が読み込まれて最適化が実行され、配線された DCP が書き出されます。
/reference-file/run
フォルダーから次のコマンドを実行します。
#make sure you have successfully setup SDx/Vivado environments as previous part shows.
vivado -mode batch -source opt.tcl
この場合、opt.tcl
ファイルに次のように表示されます。
#DCP files in different stages of Vivado have been written by xocc linker automatically with option "-R2"
open_checkpoint ./_x/link/vivado/vpl/prj/prj.runs/impl_1/pfm_top_wrapper_routed.dcp
#Run post-route physical optimization
phys_opt_design -directive AggressiveExplore
write_checkpoint -force ./_x/link/vivado/routed.dcp
次は、opt.tcl
スクリプトで生成された routed.dcp
チェックポイント ファイルを再利用して新しいプラットフォーム ファイル (xclbin) を生成します。これには、XOCC コマンドに --reuse_impl
オプションを追加します。
xocc -t hw --platform xilinx_u200_xdma_201830_1 -l -o'apply_watermark.hw.xilinx_u200_xdma_201830_1.xclbin' apply_watermark.hw.xilinx_u200_xdma_201830_1.xo --reuse_impl ./_x/link/vivado/routed.dcp
コンソールのメッセージに、インプリメントしたデザインの生成を飛ばして、ビットストリームの生成が開始されたことが表示されます。
INFO: [VPL 60-251] Hardware accelerator integration...
Starting FPGA bitstream generation.
次のセクションには、XOCC コマンドを使用して Vivado インプリメンテーションを制御し、Vivado ツールを使用してデザインを最適化し、インプリメントした DCP を再利用してプラットフォーム ファイルを生成する方法をまとめていますので、コマンドのクリック リファレンスとしてご利用ください。
-
環境および作業ディレクトリを設定します。
#setup Xilinx SDx tools, XILINX_SDX and XILINX_VIVADO will be set in this step. source <SDX install path>/settings64.sh. for example: source /opt/Xilinx/SDx/2019.1/settings64.sh #Setup runtime. XILINX_XRT will be set in this step source /opt/xilinx/xrt/setup.sh
-
XOCC コマンドを使用してプラットフォーム ファイル (xclbin) を生成します。
xocc -t hw --platform xilinx_u200_xdma_201830_1 -g --max_memory_ports apply_watermark -c -k apply_watermark -o'apply_watermark.hw.xilinx_u200_xdma_201830_1.xo' '../src/krnl_watermarking.cl' xocc -t hw --platform xilinx_u200_xdma_201830_1 -g --sp apply_watermark_1.m_axi_gmem0:DDR[0] --sp apply_watermark_1.m_axi_gmem1:DDR[1] -s --xp vivado_prop:run.my_rm_synth_1.{STEPS.SYNTH_DESIGN.ARGS.FLATTEN_HIERARCHY}={full} --xp vivado_prop:run.impl_1.{STEPS.ROUTE_DESIGN.ARGS.DIRECTIVE}={NoTimingRelaxation} -R2 -l --nk apply_watermark:1:apply_watermark_1 -o'apply_watermark.hw.xilinx_u200_xdma_201830_1.xclbin' apply_watermark.hw.xilinx_u200_xdma_201830_1.xo
-
Vivado ツールを使用してデザインを最適化し、配線後の DCP を記述し直します。
vivado -mode batch -source opt.tcl
-
配線後の DCP を再利用して、プラットフォーム ファイル (xclbin) を生成します。
xocc -t hw --platform xilinx_u200_xdma_201830_1 -l -o'apply_watermark.hw.xilinx_u200_xdma_201830_1.xclbin' apply_watermark.hw.xilinx_u200_xdma_201830_1.xo --reuse_impl ./_x/link/vivado/routed.dcp
-
このチュートリアルには、さまざまなフローを実行するためのホスト コードが含まれています。次のコマンドは、ホストをビルドしてからアプリケーションを実行します。
#Generate the host executable. xcpp -I$XILINX_XRT/include/ -I$XILINX_VIVADO/include/ -Wall -O0 -g -std=c++14 -L$XILINX_XRT/lib/ -lOpenCL -lpthread -lrt -lstdc++ -o 'host' '../src/host.cpp' #Please set correct XCL_EMULATION_MODE manually if running sw_emu and hw_emu modes ./host apply_watermark.hw.xilinx_u200_xdma_201830_1.xclbin ../src/inputImage.bmp ../src/golden.bmp
このチュートリアルでは、Vivado ツールでデザインを最適化する単純な例を使用して、XOCC コマンドの --xp
オプションで Vivado 合成およびインプリメンテーションを制御する方法について説明しました。その後、インプリメント済みデザインを生成する中間の手順を省いて、インプリメント後の DCP を再利用してプラットフォーム ファイル (xclbin) を生成しました。
すべてのフローを実行するためのホスト コードとそのビルド コマンドも参照用に含まれています。
Copyright© 2019 Xilinx
この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきましては、必ず最新英語版をご参照ください。