By default, Report CDC only reports one violation per endpoint and per clock-pair. When multiple violations exist for an endpoint and for a specific clock-pair, only the CDC violation with the highest precedence is reported.
The CDC rules are sorted as shown in the table below from the highest to the lowest precedence.
Rule ID | CDC Topology | Severity | Category |
---|---|---|---|
CDC-18 | Synchronized with HARD_SYNC Primitive | Info | Safe |
CDC-13,14 | 1-bit and multi-bit CDC path on a non-FD primitive | Critical | Unsafe |
CDC-17 | MUX Hold Type | Warning | Safe |
CDC-16 | MUX Type | Warning | Safe |
CDC-15 | CE Type | Warning | Safe |
CDC-26 | LUTRAM read/write potential collision | Warning | Safe |
CDC-7 | Asynchronous Reset not synchronized | Critical | Unknown |
CDC-1, 4 | 1-bit and Multi-bit CDC not synchronized | Critical | Unknown |
CDC-12 | Multi-Clock Fan-in | Critical | Unsafe |
CDC-10 | Combinatorial Logic detected between synchronizer | Critical | Unsafe |
CDC-11 | Fan-out from Launch Flop to destination domain | Critical | Unsafe |
CDC-9 | Asynchronous Reset synchronized with ASYNC_REG property | Info | Safe |
CDC-6 | Multi-bit synchronized with ASYNC_REG property | Warning | Unsafe |
CDC-3 | 1-bit synchronized with ASYNC_REG property | Info | Safe |
CDC-8 | Asynchronous Reset synchronized with missing ASYNC_REG property | Warning | Safe |
CDC-2,5 | 1-bit and multi-bit CDC synchronized with missing ASYNC_REG property | Warning | Safe |
When an endpoint has multiple CDC violations, if the violation with the highest precedence is waived, the next violation is reported based on the precedence order.
To create waivers for a design, it could be convenient to report all the CDC violations for each endpoint in a single run, regardless of the rules precedence. Use the report_cdc
command line option -all_checks_per_endpoint
to generate an extensive report of all the CDC violations in the design.
-all_checks_per_endpoint
is only available from the Tcl console and is not supported in the Report CDC dialog window. However, the results of -all_checks_per_endpoint
can be displayed in the Vivado IDE using the -name
option.