The Implementation Report contains the results of Synthesis and Place and Route if it was run. The sections of the report include the following:
- General Information
- Provides general information related to the design and implementation.
- Run Constraints and Options
- Reports the constraints and options that were set for the RTL Synthesis run and/or the Place & Route run. This shows you what constraints were set and/or modified for the run.
- Resource Usage/Final Timing
- The Resource Usage and the Final Timing sections show a quick summary of the resources and timing achieved by either the RTL Synthesis run or the Place & Route run. These sections give a very high-level overview of the resource utilization and status on whether timing goals were met or not. The information in the succeeding sections provide details useful in debugging timing issues.
- Resources
- A detailed per-module split up of resources is shown in this table. In addition, the tables can also show the original variable and source location information from the source code. If a particular resource was the result of a user-specified pragma, then this can also be shown in the table. This allows you to relate your C code with the synthesized RTL implementation. Inspecting this report is very beneficial because this is after Vivado has synthesized the design and therefore, functional blocks like DSPs and other logic units have all now been instantiated in the circuit.
- Fail Fast
- The fail fast reports that Vivado provides can guide your
investigation into specific issues encountered by the tool. In the fail fast
report, you should look into anything with the Status of
REVIEW to improve the
implementation and timing closure. Different sections of the fail fast report
include:
- Design Characteristics: The default utilization guidelines are based on SSI technology devices and can be relaxed for non-SSI technology devices. Designs with one or more REVIEW checks are feasible but are difficult to implement.
- Clocking Checks: These checks are critical and must be addressed.
- LUT and Net Budgeting: Use a conservative method to better predict which logic paths are unlikely to meet timing after placement with high device utilization.
Figure 1. Design Characteristics
- Timing Paths
- The Timing Paths reports show the timing critical paths that result in the
worst slack for the design. By default, the tool will show the top 10 worst
negative slack paths. Each path in the table has detailed information that shows
the combination path between one flip-flop to another. Breaking these long
combinational paths will be required to address the timing issues. So you need
to analyze these paths and reason where they are coming from and map these paths
back to the user's C code. Using both these paths and the resources table
presented earlier can help in determining and correlating the path back to your
source code.
In the following figure, you can see that the top 10 negative slack paths in the Place & Route report actually have higher logic levels (9) as compared to after RTL Synthesis (5), and the max fanout also got worse (64 → 9366). This clearly shows how congestion in the design is causing high logic levels and higher fanouts which in turn causes issues for meeting timing. Using such clues, you can modify your design to remove some of this congestion either by rewriting the C code or making some different design decisions with respect to BRAM/LUTRAM/URAM resource choices.
Figure 2. RTL Synthesis Timing Paths