Because the incremental implementation flow depends on reuse, the most important input to the flow is the reference checkpoint. When you use automatic incremental implementation in Project Mode, the Vivado tools manage the updating of the reference checkpoint. This ensures that reuse is high and timing is almost closed.
In all other use cases of the incremental implementation flow, you have control over the selection of the reference checkpoint. Following are guidelines to help improve your selection of the reference checkpoint:
- Use a reference checkpoint that meets timing or is close to meeting
timing. If the reference checkpoint is close to meeting timing, it might be
beneficial to improve timing as follows before running the incremental
implementation flow.Note: For automatic incremental implementation, the checkpoint is rejected unless WNS is less than -0.250 ns.
- Run
route_design -tns_cleanup
to optimize paths that are not the worst case path. - Run the post-route
phys_opt_design
command to improve timing failures. Although this command might increase run time, these optimizations are replayed quickly in the incremental implementation run. - Use the
report_qor_suggestions
command to generate suggestions to improve the design. New suggestions applied in the incremental implementation flow must be incremental implementation-friendly. Suggestions already applied in the reference checkpoint do not need to be incremental implementation-friendly. For suggestions that are not incremental implementation friendly, consider applying the suggestions and updating the checkpoint using the default flow. For more information, see this link in the Vivado Design Suite User Guide: Design Analysis and Closure Techniques (UG906).
- Run
- Select the checkpoint with the lowest congestion, which more readily accommodates changes than congested checkpoints.
- Maximize matching between reference and incremental
checkpoints.Note: For automatic incremental implementation, the checkpoint is rejected unless cell matching is at least 94% and net matching is at least 90%.
- Use incremental synthesis to reduce changes introduced into the netlist due to RTL changes. Enable incremental synthesis early in the design closure cycle rather than waiting until you are ready to use incremental implementation.
- Ensure that
synth_design
andopt_design
options match for the reference checkpoint and the incremental implementation runs. - Match tool versions. Although this is not a requirement, thresholds change and new optimizations are added, which can lead to reduced matching.
- Avoid using
opt_design AddRemap
andExploreWithRemap
directives unless these are the only directives that close timing. These directives have reduced naming consistency when changes are introduced to the codebase.
- Use
report_qor_assessment
to determine whether the design is ready for the incremental implementation flow to be run and whether it is preferable to switch from the default flow.
Tip: To adjust the
incremental implementation thresholds, run
config_implementation
-help
for information. To identify differences between the reference and
the incremental checkpoints, run report_incremental_reuse
.