ブロック レベル フローの設定 - 2023.2 日本語

Vivado Design Suite ユーザー ガイド: 合成 (UG901)

Document ID
UG901
Release Date
2023-11-01
Version
2023.2 日本語

ブロック レベル合成フローを設定するには、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 プロパティを設定すると、このインスタンスに影響を与えるのに加え、このインスタンスの階層も硬化します。この階層に I/O バッファーが含まれる場合や、入力/出力バッファーが推論される場合は、特に注意が必要です。

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 プロパティが設定されるようになります。このレベルにデフォルトとは異なる値を設定することもできます。

注記: ブロック レベル フローを実行すると、デザインがトップダウン モードになり、デザイン全体で合成が実行されます。このプロパティを設定したインスタンスでは、Vivado 合成により、そのレベルが確実に境界内に含まれ、周辺のロジックと結合されたりしないように、階層が保持されます。これは、QoR (結果の品質) に影響する可能性があります。そのため、BLOCK_LEVEL プロパティの使用には注意が必要です。必要なインスタンスにのみ設定するようにしてください。