XOCC (ザイリンクス OpenCL コンパイラ) コマンド ライン ユーティリティ

ザイリンクス OpenCL™ コンパイラ (xocc) は、カーネル アクセラレータをコンパイルして SDAccel™ 環境でサポートされるプラットフォームにリンクするためのコマンドライン ユーティリティです。このセクションでは、xocc リンクおよびコンパイル コマンドについて説明します。

システムをビルドするには、まずザイリンクスまたはサードパーティ プロバイダーでサポートされるアクセラレーション プラットフォームを選択して、-c/--compile オプションを使用してカーネル アクセラレータ関数をコンパイルします。.xo ファイルのデフォルト出力名は a.xo です。必要に応じてカーネル名を変更してください。

-c/--compile の構文は次のとおりです。

xocc -c --platform <platform_name> <kernel_source_file> -o <xo_kernel_name>.xo
ヒント: OpenCL では、カーネルの識別に OpenCL ファイル内の kernel キーワードが使用されます。C/C++ カーネルの場合、--kernel <kernel_name> を使用してカーネルを指定する必要があります。

次の段階では、-l/--link オプションを使用して 1 つまたは複数のカーネルをプラットフォームにリンクして、xclbin バイナリ コンテナー ファイルを作成します。xclbin ファイルのデフォルト出力名は a.xclbin です。必要に応じて名前を変更してください。

-l/--link の構文は次のとおりです。

xocc -l --platform <platform_name> <xo_kernel1_name>.xo \ [<xo_kernel2_name>.xo ..] -o <xclbin_name>.xclbin

サポートされるプラットフォームのリストは、使用している製品のリリース ノートを参照してください。

重要: SDAccel インストールに含まれるすべての例は、makefile を使用して OpenCL アプリケーションを xcpp および xocc コマンドでコンパイルしています。これらは、ユーザー アプリケーションをコンパイルするためのリファレンスとして使用できます。
すべてのコマンドについては、次のセクションを参照してください。

XOCC の共通オプション

重要: コンパイルとリンクで異なるターゲットを指定しないでください。たとえば、sw_emu でコンパイルし、hw_emu でリンクしないでください。
表 1. XOCC 共通オプション (コンパイル モードおよびリンク モード)
オプション 有効な値 説明
-f または --platform <arg> ザイリンクスでサポートされるアクセラレーション プラットフォームの名前、またはプラットフォームを記述する .xpfm ファイルへの絶対パスのいずれか。 必須。--platform オプションには、プラットフォーム名かプラットフォームの最上位の xpfm ファイル名 (絶対パスまたは相対パスを使用) のいずれかを指定できます。これは、SDAccel ツール インストールにデフォルトでは含まれないプラットフォームを使用する場合に必要です。ターゲット ザイリンクス デバイスを設定します。次に例を示します。
--platform xilinx_u200_xdma_201830_2

サポートされるプラットフォームおよびデバイスのリストは、SDAccel 製品ページを参照してください。

SDAccel ツールのデフォルト インストールに含まれないプラットフォームを使用する場合は、プラットフォームを記述する .xpfm ファイルへの絶対パスを含める必要があります。

-t または --target <arg> [sw_emu | hw_emu | hw] コンパイル ターゲットを指定します。コンパイル ターゲットは、--target <sw_emu....> オプションで指定します。デフォルト コンパイル ターゲットは hw_emu です。
  • sw_emu: ソフトウェア エミュレーション
  • hw_emu: ハードウェア エミュレーション
  • hw: ハードウェア

デフォルト: hw

-o または --output <arg> xocc モードによって、コンパイル用には .xo、リンク用には .xclbin を含むファイル名。 オプション。出力ファイル名を指定します。デフォルト:
  • コンパイル モードの場合は a.xo
  • リンクおよびビルド モードの場合は a.xclbin
-v または --version なし XOCC のバージョンおよびビルド情報を表示します。
-h または --help なし ヘルプを表示します。
--kernel_frequency <arg> 1 クロック サポートでのカーネルの周波数 (MHz)。複数クロック サポートでは、各クロック ID と対応する周波数を入力する必要があります。

たとえば、「xocc --kernel_frequency 0:300|1:500」のように指定します。

ハードウェア プラットフォームのデフォルト値の代わりに使用するクロック周波数を MHz で指定します。

RTL カーネルで複数クロックがサポートされる場合:

構文例 (1 つのクロックを変更)

  • xocc --kernel_frequency 300
  • xocc --kernel_frequency 0:300
  • 1 つのカーネル クロックを含む DSA: KERNEL_CLK を 300 MHz に設定
  • 2 つのクロックを含む DSA: DATA_CLK を 300 MHz に設定

構文例 2 (1 つ以上のカーネル クロックを変更)

  • xocc --kernel_frequency 0:300|1:500

2 つのクロックを含む DSA (+ 2 つのクロック ポートを持つ RTL カーネル):

  • DATA_CLK を 300 MHz、KERNEL_CLK2 を 500 MHz に設定
--profile_kernel <arg>

data:[ kernel_name | all ]:[ compute_unit_name | all ]:[ interface_name | all ](:[ counters | all ])

[ stall | exec ]:[ kernel_name | all ]:[ compute_unit_name | all ](:[ counters | all ])

カーネルおよびホストの DDR メモリ トラフィックのプロファイル。

トレース値の最後のフィールド (counters または all) はオプションです。指定しない場合は、デフォルト値の all になります。

[ stall | exec ] の場合、interface_name フィールドはサポートされません。

xocc リンク (-l) でこのオプションを使用する前に、xocc コンパイル (-c) で stall オプションを指定し、stall 信号をイネーブルにする必要があります。

--xp <arg> XP パラメーターを参照してください。 FPGA ハードウェアのインプリメントに使用する Vivado® Design Suite のパラメーターとプロパティを指定します。次に例を示します。
--xp <kernel_name>:stream

これらのパラメーターを最大限に使用するには、Vivado Design Suite に精通していることが推奨されます。

--xp オプションの説明は、XP パラメーターを参照してください。

-g または --debug なし デバッグ用のコードを生成します。
--message-rules <arg> メッセージ ルール ファイル名 オプション。メッセージ制御ルールを含むメッセージ ルール ファイルを指定します。詳細は、メッセージ ルール ファイルの使用を参照してください。
--save-temps なし コンパイルおよびビルド プロセス中に作成された中間ファイル/ディレクトリを保存します。
--report_dir <arg> ディレクトリ レポート ディレクトリを指定します。--report オプションを指定する場合、すべてのレポートがデフォルトで現在の作業ディレクトリ (cwd) にされます。

レポート ディレクトリを指定しない場合は、<cwd>/_x/reports にファイルが保存されます。

--log_dir <arg> ディレクトリ ログ ディレクトリを指定します。--log オプションを指定すると、ログ ファイルがデフォルトで現在の作業ディレクトリ (cwd) に生成されます。

ログ ディレクトリを指定しない場合は、<cwd>/_x/logs にファイルが保存されます。

--temp_dir <arg> ディレクトリ 一時ディレクトリを指定します。--save-temps オプションを指定すると、デフォルトで現在の作業ディレクトリ (cwd) に一時的なコンパイルおよびビルド ファイルが作成されます。

一時ディレクトリを指定しない場合は、<cwd>/_x/reports にファイルが保存されます。

--export_script なし

Vivado HLS を実行するのに使用する Tcl スクリプト <kernel_name>.tcl を生成しますが、Vivado HLS の開始前に停止します。スクリプトは変更して、--custom_script オプションと一緒に使用されるようにします。

OpenCL カーネルの –t sw_emu ではサポートされません。

--custom_script <arg> <kernel_name>:<path to kernel Tcl file> --export_script で生成した <kernel_name>.tcl ファイルを指定するのに使用します。

カーネルを作成するのに使用した Tcl ファイルをカスタマイズし、そのカスタマイズしたスクリプトを使用して実行できます。

<input file> OpenCL または C/C++ カーネル ソース ファイル、またはザイリンクス オブジェクト ファイル (.xo)。 コンパイル モードでは、入力ファイルは OpenCL または C/C++ カーネル ソース ファイルで構成されます。リンク モードでは、入力ファイルは 1 つまたは複数のザイリンクス オブジェクト ファイル (a.xo) で構成されます。
--user_ip_repo_paths <arg> <directory> 既存のユーザー IP リポジトリのディレクトリを指定します。この値は ip_repo_paths の前に付きます。

このオプションを使用すると、1 つまたは複数の IP リポジトリ パスを指定できます。これらのパスは、連動する Vivado プロジェクトの IP_REPO_PATHS プロパティの最初に配置されるので、優先度が 1 番高くなります。これらの指定されたパスからの IP 定義はすべて、ハードウェア プラットフォーム (.dsa) またはザイリンクス カタログからの IP リポジトリより前に使用されます。

--user_ip_repo_paths は複数指定できます。

SDx™ コンパイル フロー中に IP 定義が検索される順序は、次のとおりです。これらのエントリには、複数のディレクトリを含めることができます。

  • HW フロー:
    1. --user_ip_repo_paths オプションからの IP 定義
    2. カーネル IP 定義 (vpl --iprepo オプションの値)
    3. DSA IP リポジトリからの IP 定義
    4. インストール ディレクトリからの IP キャッシュ (例: <SDxInstall>/SDx/2018.3/data/cache/)
    5. DSA 内に格納された IP キャッシュ
    6. インストール ディレクトリからの SDx 特定のザイリンクス IP (例: <SDxInstall>/SDx/2019.1/data/ip/)
    7. インストール ディレクトリからの汎用ザイリンクス IP カタログ (例: <SDxInstall>/Vivado/2019.1/data/ip/)
  • HW EMU フロー:
    1. --user_ip_repo_paths オプションからの IP 定義
    2. ユーザー エミュレーション IP リポジトリ (例: $::env(SDX_EM_REPO))
    3. カーネル IP 定義 (vpl --iprepo オプションの値)
    4. インストール ディレクトリからの IP キャッシュ ディレクトリ (例: <SDxInstall>/SDx/2019.1/data/cache/)
    5. DSA 内に格納された IP キャッシュ
    6. $::env(XILINX_SDX)/data/emulation/hw_em/ip_repo
    7. $::env(XILINX_VIVADO)/data/emulation/hw_em/ip_repo
    8. インストール ディレクトリからの SDx 特定のザイリンクス IP (例: <SDxInstall>/SDx/2019.1/data/ip/)
    9. インストール ディレクトリからの汎用ザイリンクス IP カタログ (例: <SDxInstall>/Vivado/2019.1/data/ip/)
--remote_ip_cache <arg> <directory> Vivado 合成用のリモート IP キャッシュ ディレクトリを指定します。
--no_ip_cache なし Vivado 合成の IP キャッシュをオフにします。
--report_level <arg> 有効なレポート レベル: 012estimate

例: -R2

これらのレポート レベルのマップは、optMap.xml ファイルに含まれます。インストールされた optMap.xml を上書きして、カスタム レポート レベルを定義できます。
  • (デフォルト) -R0 を指定すると、Vivado インプリメンテーション中に中間 DCP は生成されません。配線後のタイミング レポートは生成されます。
  • -R1 を指定すると、-R0 で実行されるものすべてに加えて、report_failfast pre-opt_design, report_failfast post-opt_design、およびすべての中間 DCP が生成されます。
  • -R2 を指定すると、-R1 で実行されるものすべてに加えて、 report_failfast post-route_design が実行されます。
  • -Restimate を指定すると、design.xml データ ファイルが存在しない場合に Vivado HLS ツールで生成され、見積もりレポートが生成されます。このオプションは、design.xml がデフォルトでは生成されないソフトウェア エミュレーション ターゲットの場合に便利です。
--ini_file <arg> <path_to_file> xocc.ini 形式のファイルから XP オプションを読み込みます。複数ファイルに対して複数回使用できます。これらはデフォルト ディレクトリの xocc.ini ファイルよりも優先されますが、指定したファイルに含まれるものよりも --xp コマンド ライン オプション方が優先されます。
--interactive <arg> [ synth | impl ] xocc で必要な環境を設定し、Vivado ツールセットを起動して、合成プロジェクトまたはインプリメンテーション プロジェクトを開きます。

コンパイル モード用 XOCC オプション

表 2. コンパイル モード用 XOCC オプション
オプション 有効な値 説明
-c または --compile なし 必須ですが、--link と一緒に使用することはできません。

コンパイル モードで xocc を実行し、.xo ファイルを生成します。

-k または --kernel <arg> 入力 .cl または .c/.cpp カーネル ソース コードからコンパイルされるカーネル。 C/C++ カーネルでは必須です。OpenCL カーネルではオプションです。

入力ファイルから指定したカーネルのみをコンパイル/ビルドします。コマンドごとに使用できる -k オプションは 1 つだけです。

OpenCL カーネルが -k オプションなしでコンパイルされる場合は、入力ファイルのカーネルすべてがコンパイルされます。

-D または --define <arg> 有効なマクロ名および定義のペア。

<name>=<definition>

定義付きマクロとして名前を前もって定義します。このオプションは xocc プリプロセッサに渡されます。
-I または --include <arg> 必要なヘッダー ファイルを含むディレクトリ名。 ヘッダー ファイルを検索するディレクトリのリストにディレクトリを追加します。このオプションは SDAccel コンパイラ プリプロセッサに渡されます。
--max_memory_ports <arg> all | <kernel_name> OpenCL カーネルで有効です。

すべてのカーネルまたは指定した <kernel name> に対して最大メモリ ポートを設定します。

--memory_port_data_width <arg> all | <kernel_name>:<number> OpenCL カーネルで有効です。

すべてのカーネルの <number> または指定した <kernel name> に対してメモリ ポートのデータ幅を設定します。

--export_hls_project  

HLS プロジェクト設定スクリプトをエクスポートするディレクトリを指定します。

--hls_export_mode 有効なファイル タイプは次のとおりです。
  • xo
  • tcl

<file_type>:<file_path>。エクスポートしたファイルへのパスを使用して HLS からのエクスポート モードを設定します。

リンク モード用 XOCC オプション

表 3. リンク モード用 XOCC オプション
オプション 有効な値 説明
-O または--optimize <arg> 有効な最適化値: 0、1、2、3、s、quick。指定できる値は 1 つのみです。

example: --optimize 2

このオプションは Vivado にのみ適用されます。

これらのオプションで Vivado ハードウェア合成エンジンで実行されるデフォルトの最適化を制御します。

これらの設定を使用するには、Vivado ツールに精通していることが推奨されます。

  • 0: デフォルト最適化。コンパイル時間を削減し、デバッグで予測される結果を生成します。
  • 1: 消費電力を削減するように最適化。デザインのコンパイル時間は長くなります。
  • 2: カーネル速度を上げるように最適化。コンパイル時間が長くなりますが、生成コードのパフォーマンスは向上します。
  • 3: 最高レベルの最適化。生成コードのパフォーマンスは最高レベルになりますが、コンパイル時間はかなり長くなります。
  • s: サイズを小さくするように最適化。カーネルのロジック リソースが削減されます。
  • quick: Vivado コンパイル時間を短縮。ハードウェア パフォーマンスが低下し、ハードウェア インプリメンテーションでのリソース使用量が増加する可能性があります。
--user_board_repo_paths  

DIMM ボード ファイルの既存のユーザー ボード リポジトリを指定します。この値は board_part_repo_paths に追加されます。

--board_connection  

<DIMM_connector>:<vbnv_of_DIMM_board>。各 DIMM (Dual Inline Memory Module) コネクタ スロットの DIMM ボード ファイルを指定します。

-l または link なし 必須ですが、--compile と一緒に使用することはできません。

リンク モードで xocc を実行します。.xo 入力ファイルをリンクして、.xclbin ファイルを生成します。

--nk <arg>
次に例を示します。
foo:2
<kernel_name:number(:compute_unit_name1.compute_ unit_name2...)>
次に例を示します。
foo:3:fooA.fooB.fooC
<kernel_name>:<number>.xclbin ファイルで指定されているカーネルに指定した数の計算ユニットをインスタンシエートします。

計算ユニット (CU) 名はオプションです。CU 名を指定しない場合、1 つ目の名前が kernel_name_1、2 つ目の名前が kernel_name_2 のようになります。

デフォルトでは、XOCC で各カーネルごとに計算ユニット 1 つがインスタンシエートされます。

-j または --jobs <arg> 並列ジョブの数。 オプション。FPGA ハードウェアをインプリメントするのに使用する Vivado Design Suite を詳細に制御します。

このオプションを最大限に活用するには、Vivado Design Suite の使用方法をよく理解しておくことをお勧めします。

Vivado Design Suite でインプリメンテーションに使用する並列ジョブの数を指定します。ジョブ数を増やすと、ハードウェア インプリメンテーション段階の並列処理が増え、より高速に終了するようになります。

--lsf <arg> LSF クラスターに渡す bsub コマンド ライン。

この引数は --lsf と共に使用する必要があります。

オプション。Vivado インプリメンテーションおよび合成には IBM Platform LSF (Load Sharing Facility) を使用します。例: --lsf '{bsub -R \"select[type=X86_64]\" -N -q medium}'
--reuse_impl <Implemented DCP> インプリメント済み DCP をインポートして、XCLBIN のパッケージのみを実行します。
--dk <arg> <[protocol|chipscope|list_ports]:<compute_unit_name>:<interface_name>>
説明:
  • <interface_name> はオプションです。指定しない場合、すべてのポートが解析されます。
  • <compute_unit_name> および <interface_name> に対して chipscope オプションを使用する場合、計算ユニットに名前を指定する必要があります。
  • protocol オプションでは、<compute_unit_name> および <interface_name> にキーワード all を使用できます。chipscope オプションでは、キーワード all は使用できません。
  • list_ports オプションでは、現在のデザインの有効な計算ユニットとポート組み合わせのリストが表示されます。
デバッグ IP コアの挿入をイネーブルにします。ChipScope で監視する計算ユニット インターフェイスを指定できます。これは、ハードウェア デバッグに便利です。

System ILA デバッグ コアを使用すると、トランザクション レベルでアクセラレーションされたカーネルやハードウェアで実行される関数などを表示できます。System ILA コアでは、特定の AXI トラフィックをキャプチャして表示させることもできます。

--dk オプションでは、デバッグおよびパフォーマンス監視目的にインターフェイスの System ILA コアをカーネルに接続できます。

--sc <arg>
<compute_unit_name>.<kernel_interface_name>:<compute_unit_name>.<kernel_interface_name>
説明:
  • <compute_unit_name>--nk オプションで指定した計算ユニットの名前です。別の名前を指定しない場合、これは通常 <kernel_name> になります。
  • <kernel_interface_name> は、AXIS として宣言された計算ユニット ポートの関数引数名です。
2 つの計算ユニット間に AXIS インターフェイスを介したストリーミング接続を作成します。たとえば、計算ユニット mem_read_1 の AXI ポート s_out を計算ユニット increment_1 の AXI ストリーム ポート s_in に接続するには、次を使用します。
--sc
        mem_read_1.s_out:increment_1.s_in 
各インターフェイスに、個別のコマンドを使用してください。
--slr <compute_unit_name>:<SLR_NUM>
説明:
  • <compute_unit_name>--nk オプションで指定した計算ユニットの名前です。別の名前を指定しない場合、これは通常 <kernel_name> になります。
  • <SLR_NUM> は CU が割り当てられている SLR 番号です。たとえば、SLR0、SLR1 のようになります。
  • このオプションは、割り当てられている各カーネルまたは CU ごとに指定する必要があります。

--slr を使用して、計算ユニット (CU) を SLR に割り当てます。

たとえば、CU vadd_2 を SLR2、CU fft_1 を SLR1 に割り当てるには、次を使用します。

--slr vadd_2:SLR2 
--slr fft_1:SLR1
重要: カーネル配置を割り当てるのに --slr を使用する場合は、--sp も使用してカーネルのメモリ アクセスを割り当てる必要があります。
--sp <arg> <compute_unit_name>.<kernel_interface_name>:<sptag[min:max]>
説明:
  • <compute_unit_name>--nk オプションで指定した計算ユニットの名前です。別の名前を指定しない場合、これは通常 <kernel_name> になります。
  • <kernel_interface_name> は、カーネルの関数引数または計算ユニット ポートの名前です。

  • <sptag> は、ターゲット プラットフォームのメモリ リソース名を示します。有効な <sptag> 名は、DDR、PLRAM、および HBM などです。
  • [min:max] という形式で、DDR[0:2] などのメモリ範囲の使用をイネーブルにします。DDR[2] のように、インデックスを 1 つだけ指定することもできます。

--sp には、カーネル パラメーターまたはインターフェイス名を使用できます。

重要: HBM は、U280 ES1 でのみ使用可能です。

カーネル インターフェイスからメモリ リソースへの割り当てを指定するオプションの引数。

各カーネル インターフェイスを特定のメモリ リソースにマップするのに個別の --sp オプションを使用する必要があります。

--sp オプションを使用してメモリ リソースに明示的にマップされていないカーネル インターフェイスは、自動的に使用可能なメモリ リソースに接続されます。

次の例では、VADD カーネルの指定した CU の入力引数 (A) を DDR[0:3B] に、入力引数 (B) を HBM[0:31] にマップし、出力引数 (C) を PLRAM[2] に書き込みます。
--sp vadd_1.A:DDR[0:3] 
--sp vadd_1.B:HBM[0:31] 
--sp vadd_1.C:PLRAM[2]
--sys_config <arg> 有効な値は ocl です。 SoC プラットフォームのシステム コンフィギュレーションを指定します。有効な値は ocl です。

プラットフォーム SPFM ファイルには、コンフィギュレーション セクションに sdx:runtimes = "ocl." が含まれている必要があります。

XP パラメーター

コンパイルまたはリンクの際、--xp オプションを使用して SDAccel ツールおよびハードウェア エミュレーション プロセスで生成されるハードウェアを詳細に制御できます。

–-xp オプションは Vivado ツールを制御するパラメーターに対応しています。たとえば、--xp オプションで最適化、配置、およびタイミングを設定したり、エミュレーションおよびコンパイル オプションを設定したりできます。これらのパラメーターの例には、クロック マージンの設定、カーネルのデータフロー領域で使用される FIFO の深さの指定、カーネル AXI インターフェイスにバッファリングする未処理の書き込みおよび読み出しの数の指定が含まれます。

重要: これらのパラメーターを最大限に活用するため、Vivado Design Suite の使用方法をよく理解しておくことが必要です。詳細は、『Vivado Design Suite ユーザー ガイド: 高位合成』 (UG902) および『Vivado Design Suite ユーザー ガイド: インプリメンテーション』 (UG904) を参照してください。

パラメーターは、parm:<param_name>=<value> という形式で指定します。次に例を示します。

xocc -–xp param:compiler.enableDSAIntegrityCheck=true 
–xp param:prop:kernel.foo.kernel_flags="-std=c++0x"

-–xp コマンド オプションは 1 回の xocc の起動で何度も指定できます。または、--xp オプションを使用せずに、xocc.ini ファイルで各行にオプションを 1 つずつ指定することもできます。

param:prop:solution.device_repo_paths=../dsa
param:compiler.preserveHlsOutput=1

xocc を起動すると、まず $HOME/.Xilinx/sdx ディレクトリの xocc.ini ファイルが検索されます。ファイルがない場合、xocc は現在の作業ディレクトリを検索します。同じ --xp パラメーター値がコマンド ラインと xocc.ini ファイルの両方で指定されている場合は、コマンド ラインの値の方が使用されます。

次の表に、-–xp パラメーターとその値を示します。

表 4. XP パラメーターのオプション
パラメーター名 有効な値 説明
param:compiler.acceleratorBinaryContent データ型: 文字列

デフォルト値: <empty>

xclbin に挿入する内容を指定します。有効なオプションは bitstream および dcp です。
param:compiler.​errorOnHoldViolation データ型: ブール型

デフォルト値: TRUE

ホールド違反がある場合にエラー メッセージを表示します。
param:compiler.​maxComputeUnits データ型: Int

デフォルト値: -1

システムで使用可能最大計算ユニット。正の値を指定すると、ハードウェア プラットフォーム (.dsa) の numComputeUnits 設定が上書きされます。デフォルト値 -1 を指定すると、DSA の設定が保持されます。
param:hw_em.​compiledLibs データ型: 文字列

デフォルト値: <empty>

指定したシミュレータに clibs を使用します。
param:hw_em.platformPath <absolute_path_of_custom_platform _directory> データ型: 文字列

デフォルト値: <empty>

カスタム プラットフォーム ディレクトリへのパスを指定します。<platformPath> ディレクトリがプラットフォームの作成で使用されるには、次の要件を満たしている必要があります。
  • ip_repo というディレクトリが含まれている必要があります。
  • scripts というディレクトリが含まれ、scripts ディレクトリには hw_em_util.tcl ファイルが含まれている必要があります。hw_em_util.tcl ファイルでは、次の 2 つのプロシージャが定義されている必要があります。
    • hw_em_util::add_base_platform
    • hw_em_util::generate_simulation_scripts_and_compile
param:hw_em.​enableProtocolChecker データ型: ブール型

デフォルト値: FALSE

ハードウェア エミュレーション中に軽量 AXI プロトコル チェッカー (lapc) をイネーブルにします。これは、AxI インターフェイスの正確さを確認するために使用します。
param:compiler.​xclDataflowFifoDepth データ型: Int

デフォルト値: -1

カーネル データフロー領域で使用される FIFO の深さを指定します。
param:compiler.​interfaceWrOutstanding データ型: Int Range

デフォルト値: 0

カーネル AXI インターフェイスのバッファーへの書き込み数を指定します。値は 1 ~ 256 です。
param:compiler.​interfaceRdOutstanding データ型: Int Range

デフォルト値: 0

カーネル AXI インターフェイスのバッファーへの読み出し数を指定します。値は 1 ~ 256 です。
param:compiler.​interfaceWrBurstLen データ型: Int Range

デフォルト値: 0

カーネル AXI インターフェイスの AXI 書き込みバーストの予測長を指定。compiler.interfaceWrOutstanding オプションと共に使用され、ハードウェア バッファー サイズが決定されます。値は 1 ~ 256 です。
param:compiler.​interfaceRdBurstLen データ型: Int Range

デフォルト値: 0

カーネル AXI インターフェイスの AXI 読み出しバーストの予測される長さを指定します。compiler.interfaceRdOutstanding オプションと共に使用され、ハードウェア バッファー サイズが決定されます。値は 1 ~ 256 です。
misc:map_connect=<type>.​kernel.<kernel_name>.​ <kernel_AXI_interface>.​core.​ OCL_REGION_0.<dest_port> データ型: 文字列

デフォルト値: <empty>

カーネルから DDR メモリ バンクに AXI インターフェイスをマップするために使用します。
  • <type>: add または remove を指定します。
  • <kernel_name>: カーネル名。
  • <dest_port>: DDR メモリ バンク (M00_AXI、M01_AXI、M02_AXI、または M03_AXI)。

このオプションは、DSA 4.x 以前にのみ使用でき、DSA 5.x 以降では廃止予定です。リンク モード用 XOCC オプションに記述されているように、--sp オプションを使用してシステム ポートを使用してください。

prop:kernel.<kernel_name>.​kernel_flags データ型: 文字列

デフォルト値: <empty>

カーネル <kernel_name> に特定のコンパイル フラグを設定します。
prop:solution.​device_repo_path データ型: 文字列

デフォルト値: <empty>

ハードウェア プラットフォームのリポジトリへのパスを指定します。代わりに、 --platform オプションで .xpfm プラットフォーム ファイルへの完全パスを指定してください。
prop:solution.​hls_pre_tcl データ型: 文字列

デフォルト値: <empty>

C コードの合成前に実行する Vivado HLS Tcl ファイルへのパスを指定します。これにより、Vivado HLS のコンフィギュレーション設定を合成前に適用できます。
prop:solution.​hls_post_tcl データ型: 文字列

デフォルト値: <empty>

C コードの合成後に実行する Vivado HLS Tcl ファイルへのパスを指定します。
prop:solution.​kernel_compiler_margin データ型: 浮動小数点

デフォルト値: カーネル クロック周期の 12.5%。

カーネルのクロック マージン (ns)。この値は、配置配線遅延にマージンを提供するため、合成前にカーネル クロック周期から引かれます。
vivado_prop:<object_type>. ​<object_name>.<prop_name> データ型: さまざま

デフォルト値: さまざま

Vivado ハードウェア コンパイル フローで使用されるプロパティを指定できます。

<object_type>run|fileset|file|project のいずれかです。

<object_name> および <prop_name> 値については、『Vivado Design Suite プロパティ リファレンス ガイド』 (UG912) を参照してください。

例:
vivado_prop:run.impl_1.
{STEPS.PLACE_DESIGN.ARGS.MORE 
OPTIONS}={-fanout_opt}
vivado_prop:fileset.
current.top=foo

<object_type>file に設定される場合、current はサポートされません。

<object type>run に設定される場合、それぞれ指定する必要はなく、__KERNEL__ に値 (ALL) を使用して、すべてのカーネルの run 最適化設定を指定できます。

メッセージ ルール ファイルの使用

XOCC はカーネルのコンパイル中にさまざまなザイリンクス ツールを実行します。これらのツールでは、コンパイル ステータスを示すため、多数のメッセージが生成されます。生成されるメッセージの中には、目的やデザイン段階によって、関係ないものもあります。メッセージ ルール ファイルは、これらのメッセージを管理するために使用できます。重要なメッセージをターミナルに表示したり、重要度の低いものを非表示にしたりするコマンドがあります。これにより、カーネルのコンパイル結果を理解しやすくなり、またカーネルを最適化する方法を検討しやすくなります。

メッセージ ルール ファイル (.mrf) はテキスト形式のファイルで、コメントとサポートされているコマンドが含まれます。各行にコマンドを 1 つずつ記述します。

コメント

行頭に「#」が付いている行はコメントです。

サポートされるコマンド

デフォルトでは、xocc は作業ディレクトリ全体を再帰的にスキャンし、すべてのエラー メッセージを xocc 出力に表示します。次に説明する promote および suppress コマンドは、xocc 出力を制御するコマンドです。

  • promote: 検索条件に一致するメッセージをすべて xocc 出力に表示します。
  • suppress: 検索条件に一致するメッセージを xocc 出力で非表示にします。ただし、エラー メッセージは非表示にできません。

各行にコマンドを 1 つずつ記述します。

コマンド オプション

メッセージ ルール ファイルには、promote および suppress コマンドを複数含めることができます。各コマンドにはオプションを 1 つのみ指定できます。指定可能なオプションは次のいずれか 1 つのみです。オプションの大文字と小文字は区別されます。

  • -id [<message_id>]: 指定したメッセージ ID に一致するすべてのメッセージを表示するか、または非表示にします。メッセージ ID のフォーマットは「nnn-mmm」です。たとえば、次のような HLS からの警告メッセージがあるとします。このメッセージの ID は 204-68 です。
    WARNING: [XOCC 204-68] Unable to enforce a carried dependence constraint (II = 1, distance = 1, offset = 1) 
    between bus request on port 'gmem' 
    (/matrix_multiply_cl_kernel/mmult1.cl:57) and bus request on port 'gmem'-severity [severity_level]

    メッセージ ID 204-68 を非表示にするには、suppress -id 204-68 と指定します。

  • -severity [<severity_level>]: 重要度を示す次のいずれかの値を指定します。指定した重要度のメッセージの重要度を上げるか、または非表示にします。
    • info
    • warning
    • critical_warning

      重要度が critical-warning のメッセージの重要度を上げるには、promote -serverity critical_warning と指定します。

メッセージ ルールの優先順位

suppress ルールは promote ルールよりも優先されます。同じメッセージ ID または重要度がメッセージ ルール ファイルの promote コマンドと suppress コマンドの両方に渡された場合、その条件に一致するメッセージが非表示になります。

メッセージ ルール ファイルの例

次はメッセージ ルール ファイルの例です。

# promote all warning, critical warning
promote -severity warning
promote -severity critical_warning
# suppress the critical warning message with id 19-2342
suppress -id 19-2342