合成では、タイミング ドリブン アルゴリズムが使用され、デザインの RTL 記述が、デバイスにマップされた最適化済みネットリストに変換されます。QoR (結果の品質) は、RTL コードのクオリティおよび指定された制約に影響されます。コンパイル フローのこの段階では、ネット遅延は概算であり、配置制約や密集などの複雑な状況は反映されません。主な目的は、タイミングを満たすか、タイミングが少しの差で満たされないようなネットリスト (現実的でシンプルな制約を含む) を得ることです。
合成エンジンではすべての XDC コマンドが認識されますが、実際に影響するのは一部です。
- セットアップ/リカバリ解析に関するタイミング制約は、QoR (結果の品質) に影響します。
-
create_clock
/create_generated_clock
-
set_input_delay
/set_output_delay
-
set_clock_groups
/set_false_path
/set_max_delay
/set_multicycle_path
-
- 次のホールドおよびリムーバル解析に関するタイミング制約は合成中は無視されます。
-
set_min_delay / set_false_path -hold
/set_multicycle_path -hold
-
- RTL 属性を指定すると、マップおよび最適化アルゴリズムによる決定が強制されます。次に、その例をいくつか示します。
- DONT_TOUCH/KEEP/KEEP_HIERARCHY/MARK_DEBUG
- MAX_FANOUT
- RAM_STYLE / ROM_STYLE / USE_DSP / SHREG_EXTRACT
- FULL_CASE/PARALLEL_CASE (Verilog RTL のみ)
注記: 同じ属性を XDC からのプロパティとして設定することもできます。XDC ベースの制約を使用すると、場合によっては RTL を変更せずに合成結果に影響を与えることができるので便利です。 - 物理制約 (LOC、BEL、Pblock) は無視されます。
合成制約はエラボレート済みネットリストからの名前 (できればポートおよびシーケンシャル セル) を使用する必要があります。RTL 信号の中にはエラボレーション中に削除されるものもあり、それらには XDC 制約は適用できません。また、エラボレーション後のさまざまな最適化のために、ネットまたは論理セルが LUT や DSP ブロックなどのさまざまなデバイスのプリミティブに統合されます。デザイン オブジェクトのエラボレート済みの名前を確認するには、Flow Navigator で Open Elaborated Design をクリックし、該当する階層を参照します。
一部のレジスタは RAM ブロックに吸収され、境界をまたぐ最適化を実行できるように階層レベルが削除されることもあります。
エラボレート済みネットリスト オブジェクトまたは階層レベルは、DONT_TOUCH、KEEP、KEEP_HIERARCHY、または MARK_DEBUG 制約を使用して保持することもできますが、タイミングやエリアの QoR (結果の品質) は悪化する可能性があります。
最後に、制約の中には、競合するために合成で適用されないものもあります。たとえば、MAX_FANOUT 属性が複数の階層レベルにまたがるネットに設定され、階層の一部が DONT_TOUCH で保持される場合、ファンアウト最適化は制限されるか、完全に回避されます。
AMDでは、合成が終了したら、タイミングおよび使用量レポートで、ネットリストがアプリケーション要件を満たしているか、インプリメンテーションに使用できるかを確認することをお勧めします。