困難なデザインでは、複数の異なるストラテジを使用して Vivado インプリメンテーションを複数回繰り返すことで、タイミング クロージャを達成できます。このトピックでは、ハードウェア ビルド (-t
hw
) で複数のインプリメンテーション ストラテジを同時に起動する方法と、問題のなかった実行を見つけて使用し、デバイス バイナリを生成してビルドを完了する方法について説明します。
--vivado オプション で説明されるように、--vivado.impl.strategies
コマンドを使用すると、1 つのビルド パスに実行する複数のストラテジを指定できます。コマンド ラインは、次のようになります。
v++ --link -s -g -t hw --platform xilinx_zcu102_base_202010_1 -I . \
--vivado.impl.strategies "Performance_Explore,Area_Explore" -o kernel.xclbin hello.xo
上記の例の場合、Performance_Explore
および Area_Explore
ストラテジが Vivado ビルド内で同時に実行され、どの結果がベストなのかを確認できます。ALL
を指定すると、ツール内で使用可能なすべてのストラテジを実行するようにを指定できます。
--vivado.impl.jobs
または --vivado.impl.lsf
コマンドなどの管理された方法でプロセス負荷を分散します。このオプションは、次の形式のコンフィギュレーション ファイルでも決定できます。
#Vivado Implementation Strategies
[vivado]
impl.strategies=Performance_Explore,Area_Explore
Vitis コンパイラは、最初に完了したタイミングを満たす実行結果を自動的に選択し、そのビルド プロセスを続行して、デバイス バイナリを生成します。ただし、すべての実行が完了するまで待機し、完了した実行からベストの結果を選択してから、ツールに続行するように指示することもできます。これには、次のように --advanced.compiler
指示子を使用する必要があります。
[advanced]
param=compiler.multiStrategiesWaitOnAllRuns=1
compiler.multiStrategiesWaitOnAllRuns=0
はデフォルトの動作を表します。v++
がすべての実行が完了するまで待機し、レポートファイルを取得する場合は、パラメーター値を 1 に変更します。
Vitis アナライザーは、完了までに実行が許可されたすべてのストラテジのインプリメンテーション結果を表示します。これには、インプリメンテーション結果の概要とタイミング サマリ レポートが含まれます。この機能を使用して、さまざまなストラテジと結果を確認できます。
また、すべてのインプリメンテーション ストラテジが完了した後で、その結果を手動で確認することもできます。この後、--to_step を使用して Vivado をインタラクティブに起動する方法 で説明するように、--reuse_impl
オプションを使用してインプリメンテーション実行のいずれかの結果を使用します。