config_compile - 2023.2 日本語

Vitis 高位合成ユーザー ガイド (UG1399)

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 日本語

説明

フロントエンドのコンパイルのデフォルト動作を設定します。

構文

config_compile [OPTIONS]

オプション

-enable_auto_rewind[=true|false]
TRUE に設定すると、パイプライン処理されたループの代替 HLS インプリメンテーションが使用され、自動ループ巻き戻しがイネーブルになります。TRUE または FALSE を使用できます。デフォルトは TRUE です。
-ignore_long_run_time[=true|false]
長時間実行 (long run time) の警告はレポートしません。TRUE または FALSE を使用できます。デフォルト値は FALSE です。
-name_max_length <value>
関数名の最大長を指定します。名前の長さがしきい値より長い場合、名前の最後の部分は切り捨てられ、必要に応じて一意の名前になるように数字が追加されます。デフォルトは 256 です。
-no_signed_zeros[=true|false]
浮動小数点 0 の符号の有無を無視するので、コンパイラで浮動小数点の演算に対して積極的な最適化を実行できます。TRUE または FALSE を使用できます。デフォルト値は FALSE です。
重要: このオプションを使用すると、浮動小数点の計算結果が変わり、C/RTL 協調シミュレーションと一致しなくなります。テストベンチがこの差に耐えられるようにして、正確な値ではなく、その差異を確認するようにしてください。
-pipeline_flush_in_task <always | never | ii1>
C/RTL 協調シミュレーションのデッドロックの確率を下げるために、hls::tasks のパイプラインをデフォルトでフラッシング (flp) するように指定します。このオプションは、デフォルトのオプション (ii1) で II=1 を達成したパイプラインに適用されます。ただし、always を適用すると、hls::tasks またはデータフローでパイプラインのフラッシュを常にイネーブルにするか、never を使用して完全にディスエーブルにすることもできます。詳細は、パイプラインのフラッシュとパイプラインのタイプを参照してください。
重要: フラッシング パイプライン (flp ) には、config_compile -enable_auto_rewind オプションもイネーブルの場合、PIPELINE プラグマまたは指示子で指定された巻き戻し (rewind) オプションを使用できます。
always
II にかかわらず、hls::tasks またはデータフローで常にパイプラインをフラッシュ可能にします。
never
ほかの指示子やプラグマで上書きされない限り、パイプラインはフラッシュ可能にしないでください。
ii1
II=1 を実現するパイプラインを hls::tasks でフラッシュ可能にします。これがデフォルト設定です。
-pipeline_loops <threshold>

ループや入れ子のループを自動的にパイプライン処理する際の下限値を指定します。入れ子のない単一ループでは、ループのトリップカウントが指定されたしきい値より大きい場合、ループがパイプライン処理されます。デフォルトは 64 で、Vitis HLS はトリップカウントが 64 より大きいループを自動的にパイプライン処理します。たとえば、トリップカウントが 65 のループはデフォルトのしきい値でパイプライン処理されますが、トリップカウントが 64 のループはパイプライン処理されません。

入れ子のループの場合、ループは最も内部のループからペアで評価されます。内部ループのトリップカウントが指定されたしきい値を超える場合、パイプライン処理の対象となり、そのペアの親ループに解析が継続されます。親ループのトリップカウントが指定されたしきい値を超える場合、そのループもパイプライン処理の対象となり、(前にパイプライン処理の対象となった) 内部ループは親ループに展開されます。さらにループがある場合は、上方向に解析が続きます。

ただし、ほかの最適化が解析に影響し、必要なパイプラインの動作を妨げる可能性はあります。たとえば、loop_flatten off を使用すると、フラット化を防いで、ループ パイプラインがしやすくなる可能性があります。

-pipeline_style <stp | flp | frp>
PIPELINE プラグマまたは指示子、または上記の -pipeline_loops しきい値によるループのパイプライン処理に対して Vitis HLS で使用されるパイプラインのデフォルト タイプを指定します。パイプライン スタイルの詳細は、パイプラインのフラッシュとパイプラインのタイプを参照してください。
重要: これは示唆であり、ハード制約ではありません。ツールにより、パイプライン処理を有効にするためのデザイン条件が確認されます。ループが特定の形式に従っていない場合は、ツールにより必要に応じてデフォルト タイプ (stp) に戻されます。
flp
フラッシュ可能なパイプライン アーキテクチャ: 入力データが使用できない場合にフラッシュし、新しいデータを待機している状態を停止します。
frp
フリーランニング、フラッシュ可能パイプライン。入力データが使用可能でなくても実行されます。パイプライン制御信号のファンアウトが削減されたためにタイミングを改善する必要がある場合や、パフォーマンスを改善してデッドロックを回避する必要のある場合などに使用します。ただし、このパイプライン形式により、データがなくてもパイプライン レジスタにクロックが供給されるので、消費電力が増加する可能性があります。
stp
ストール パイプライン。入力データが使用可能になった場合にのみ実行され、それ以外の場合は停止します。これは、ストールによるパフォーマンスやデッドロックの問題がない場合など、フラッシュ可能なパイプラインが必要ない場合のデフォルト スタイルです。
-pragma_strict_mode[=true|false]
プラグマを間違った箇所に配置したり、間違って使用した場合にエラー メッセージを表示するかどうか指定します。
-pre_tcl <arg>
csynth_design コマンドを開始する前に実行する Tcl スクリプトを指定します。
-unsafe_math_optimizations[=true|false]
浮動小数点 0 の符号の有無を無視し、結合的な浮動小数点演算をイネーブルにして、コンパイラで浮動小数点の演算に対して積極的な最適化を実行できるようになります。TRUE または FALSE を使用できます。デフォルト値は FALSE です。
注記: このオプションを使用すると、浮動小数点の計算結果が変わり、C/RTL 協調シミュレーションと一致しなくなります。テストベンチがこの差に耐えられるようにして、正確な値ではなく、その差異を確認するようにしてください。

最内ループのトリップカウントが 30 よりも大きい場合は最内ループをパイプライン処理し、30 以下の場合は親ループをパイプライン処理します。

config_compile -pipeline_loops 30

浮動小数点 0 の符号の有無を無視します。

config_compile -no_signed_zeros

浮動小数点 0 の符号の有無を無視し、結合的な浮動小数点演算をイネーブルにします。

config_compile -unsafe_math_optimizations