Significant differences could be seen between Synthesis and Implementation utilization reports opened from the "Reports" pane if there is an instantiated DCP or OOC module in the design. The following is an example.
The BRAM utilization is shown differently in the synthesis utilization report and implementation utilization report, as shown in the below results:
Synthesis utilization report
Implementation utilization report
Why is this difference seen?
This happens because the Synthesis utilization report which is automatically generated after Synthesis completes does not include the resource utilization of any instantiated DCP or any OOC module.
For the example above, when we run report_utilizationin the Tcl console of Vivado after opening the synthesized design, we can see the numberreported correctly as 128 (the same as is shown in the Implementation utilization report).
See the below screen capture:
When you load the synthesized design, it loads the DCP or OOC module netlist too and hence the value differs.
Note: This issue does not happen to instantiated NGC and EDIF. Right after Synthesis completes, the post-synthesis stage automatically reads in the NGC and EDIF and then generate the utilization report.
As a result, the Synthesis utilization report already contains the resource utilization from the NGC and EDIF.