ブロック レベル合成フローを設定するには、XDC ファイルで Tcl を使用して BLOCK_SYNTH プロパティを設定します。構文は次のとおりです。
set_property BLOCK_SYNTH.<option name> <value> [get_cells <instance_name>]
説明:
- <option_name>: 設定するオプションを指定します。
- <value>: オプションに割り当てる値を指定します。
- <instance_name>: オプションを設定する階層インスタンスを指定します。
次に例を示します。
set_property BLOCK_SYNTH.MAX_LUT_INPUT 4 [get_cells fftEngine]
このプロパティは、エンティティ名またはモジュール名にではなく、インスタンス名に設定してください。インスタンス名を使用すると、複数回インスタンシエートされているモジュール/エンティティがある場合に、Vivado 合成での処理がより柔軟なものになります。上記の例では、fftEngine インスタンスに LUT5 または LUT6 プリミティブが使用されないよう設定しています。
BLOCK_SYNTH
をインスタンスに設定すると、そのインスタンスとその下位にあるインスタンスすべてに適用されます。たとえば、fftEngine
内にほかのモジュールがインスタンシエートされている場合、それらのモジュールでも LUT5 または LUT6 プリミティブは使用されません。
BLOCK_SYNTH
プロパティを設定したインスタンスには、そのオプションに対して指定の値が適用され、ほかのオプションはデフォルト値になります。
1 つのインスタンスに複数の BLOCK_SYNTH
プロパティを設定し、異なる組み合わせを試すことができます。次の例では、同じロジックがソースであるレジスタを統合しないようにし、FSM の推論をディスエーブルにし、AlternateRoutability
ストラテジを使用するよう設定しています。
set_property BLOCK_SYNTH.STRATEGY {ALTERNATE_ROUTABILITY} [get_cells mod_inst]
set_property BLOCK_SYNTH.KEEP_EQUIVALENT_REGISTER 1 [get_cells mod_inst]
set_property BLOCK_SYNTH.FSM_EXTRACTION {OFF} [get_cells mod_inst]
インスタンスに含まれるインスタンスに別のプロパティ設定が必要な場合は、BLOCK_SYNTH
プロパティを複数のレベルに設定できます。1 つのレベルのみに設定が必要な場合、そのレベルにプロパティを設定し、その下のレベルに次のコマンドを使用してデフォルト値を設定します。
set_property BLOCK_SYNTH.MAX_LUT_INPUT 6 [get_cells fftEngine/newlevel]
新しいレベルが fftEngine
の下にある唯一の階層である場合、このコマンドで fftEngine
のみに MAX_LUT_INPUT = 4
プロパティが設定されるようになります。このレベルにデフォルトとは異なる値を設定することもできます。
BLOCK_LEVEL
プロパティの使用には注意が必要です。必要なインスタンスにのみ設定するようにしてください。