Vivado 合成では、さまざまなストラテジおよびグローバル設定を使用してデザインの合成方法をカスタマイズできます。ほとんどの場合、これらのオプションはグローバルに適用され、デザイン全体に影響します。ブロック レベル合成ストラテジを使用すると、異なる階層レベルに異なるグローバル オプションを使用してトップダウン フローで合成できます。このフローは、ボトムアップ コンパイルよりも高速で簡単に実行できます。下位レベルに制約を設定して最上位で再設定するのではなく、デザイン全体に制約を設定できます。
ブロック レベル合成ストラテジを設定するには、XDC ファイルで次の構文を使用します。
set_property BLOCK_SYNTH.<option_name> <value> [get_cells <instance_name>]
説明:
-
<option_name>
: 設定するオプションを指定します。 -
<value>
: オプションに割り当てる値を指定します。 -
<instance_name>
: オプションを設定する階層インスタンスを指定します。
注記: これらのプロパティは、常に階層インスタンスに設定されます。これにより、複数回インスタンシエートされているモジュールまたはエンティティを異なるオプションを使用して合成できます。
たとえば、XDC ファイルで次のストラテジを設定できます。
set_property BLOCK_SYNTH.RETIMING 1 [get_cells U1]
set_property BLOCK_SYNTH.STRATEGY {AREA_OPTIMIZED} [get_cells U2]
set_property BLOCK_SYNTH.STRATEGY {AREA_OPTIMIZED} [get_cells U3]
set_property BLOCK_SYNTH.STRATEGY {DEFAULT} [get_cells U3/inst1]
次の図に示すように Vivado 合成が実行されます。
図 1. ブロック レベル合成ストラテジの例
同じインスタンスに複数の BLOCK_SYNTH プロパティを設定して、異なるオプションを試すことができます。次に例を示します。
set_property BLOCK_SYNTH.STRATEGY {ALTERNATE_ROUTABILITY} [get_cells inst]
set_property BLOCK_SYNTH.FSM_EXTRACTION {OFF} [get_cells inst]
IP を使用する場合、ブロック レベル合成ストラテジを次のように使用できます。
- IP がグローバルにコンパイルされる場合、IP の最上位にこのストラテジを使用できます。
- IP がアウト オブ コンテキストである場合、IP はブラック ボックスとして示されるので、このストラテジは使用できません。IP をコンパイルする際は、グローバル設定を使用してください。
注記: この機能の詳細とサポートされるストラテジおよびオプションは、
『Vivado Design Suite ユーザー ガイド: 合成』 (UG901) を参照してください。