デザインのタイミング クロージャがほぼ達成されたら (通常は WNS が -250 ps 未満)、RQS 推奨項目を含めたインクリメンタル フローをイネーブルにします。これにより、インクリメンタル フローと RQS 推奨項目の両方の利点を活かして、タイミング クロージャを達成し、反復時間を削減できます。report_qor_assessment
を実行すると、このフローをどのタイミングで使用したらよいのかが、フロー ガイダンス セクションに表示されます。
run では、配線済みの基準 DCP から生成された推奨項目がインクリメンタル フロー コマンドの実行前に読み込まれます。フローの残りの段階は、自動的に適用されます。Vivado では、新しく生成された推奨項目 (GENERATED) と基準 run で適用された推奨項目 (APPLIED) を区別することにより、フローのどの段階でどの推奨項目を適用するかが自動的に判断されます。たとえば、次の図のようになります。
インクリメンタル フローを実行する場合、推奨項目がイネーブルになっているかどうかにかかわらず、基準デザインに適用されている推奨項目が基準 DCP から読み出され、適用されます。ENABLED プロパティは、基準チェックポイントをできるだけ正確に複製することが重要であるため、無視されます。
次に、RQS ファイルからのインクリメンタルに適用可能な推奨項目が適用されます。これらはイネーブルにする必要があり、read_qor_suggestions
の実行中に自動的にイネーブルになります。推奨項目は、APPLICABLE_FOR の段階ではなく、read_checkpoint -incremental
の実行中に適用されます。つまり、この後の段階では、推奨項目は無視されるので、読み出したりイネーブルにしたりしないでください。RQS ファイルにインクリメンタルに適用できない新しい推奨項目がある場合、それらは無視されます。既存のインクリメンタルに適用できない推奨項目で基準デザインに適用されているものは適用されます。
opt_design
に適用可能な推奨項目を適用する際は、注意が必要です。フローでインクリメンタル モードが認識されるのはこの後になるので、これらの推奨項目は自動管理できません。基準デザインに適用されている既存の推奨項目がインクリメンタル run にも適用されていることと、新しい推奨項目が適用されていないことを確認してください。これらの推奨項目を適用する場合は、基準デザインをアップデートする必要があります。
インクリメンタル フローをデフォルト フローに戻すのは、通常は何らかの問題のある変更があった場合なので、すべての推奨項目が RQS ファイルから実行されます。このため、次のインクリメンタル run を開始する前に、インクリメンタルに適用可能な推奨項目だけでなく、すべての推奨項目を RQS ファイルにエクスポートしておく必要があります。
このフローを実行する前に、次の前提条件を確認してください。
- 基準 run とインクリメンタル run のデバイス パーツは同じである必要があります。
- 基準チェックポイントには、配線後のものを使用する必要があります。
- 基準 run およびインクリメンタル run の
opt_design
には同じ指示子を使用する必要があります。 - 配線が密集しすぎていたり、クロッキングのバランスが悪かったり、RQA スコアが 4 未満などの、デザイン上に大きな問題がないことを確認します。
- 推奨項目は、基準チェックポイントから生成し直す必要があります。
- 新しく生成された推奨項目は、インクリメンタルに適用可能なものである場合にのみ適用されます。推奨項目がインクリメンタルに適用可能でない場合は、フローをデフォルト フローに戻した場合にのみ実行されます。そうでない場合は、無視されます。
- 新しく生成された推奨項目は、基準チェックポイントから生成する必要があります。このチェックを実行すると、推奨項目は既にタイミングの問題が解決されているパス (配線後の
phys_opt_design
など) には影響しなくなります。
フローを実行するのに必要なコマンドの例は、次のとおりです。
- 基準
-
# Generate RQS suggestions from the reference DCP open_checkpoint reference_routed.dcp report_qor_suggestions -file postroute_rqs.rpt write_qor_suggestions -force ./post_route.rqs
- インクリメンタル
-
# RQS-Incremental Run: open_checkpoint <pre_opt.dcp> read_qor_suggestions ./post_route.rqs # opt_design directive must be same as the reference run opt_design -directive {same directive as reference run} read_checkpoint -incremental reference_routed.dcp # place_design is running in TimingClosure mode place_design # phys_opt_design is optimized for incremental phys_opt_design # route_design is running in TimingClosure mode route_design write_checkpoint postroute.dcp