report_cdc Command

report_cdc [-from <clocks>] [-to <clocks>] [-details] [-file <file>]

This command reports the clock domain crossing (CDC) paths in the design. This command supports the following options:

  • -from specifies the source clocks.
  • -to specifies the destination clocks.
  • -details prints a detailed CDC report.
  • -file if used, writes the results to the named file in the outflow directory.

By default, the report_cdc command would print out a summary report like the following example:

Source Clock }| Destination Clock | Exceptions | Endpoints
==========================================================
clk_write     |  clk_read         |  None      |  23
clk_read      |  clk_write        |  None      |  12

When you use the -details option, the report shows the CDC path description. The current check lists all endpoints, and groups the source/destination as buses by their names. The tool supports the following descriptions:

  • 1-bit and multi-bit unknown CDC circuitry
  • 1-bit and multi-bit synchronized with ASYNC_REG property
  • 1-bit and multi-bit synchronized with missing ASYNC_REG property
  • Combinational logic detected before a synchronizer
  • 1-bit CDC path on a non-FF primitive
  • Multi-clock fan-in to synchronizer

The following code shows an example report:

CDC Report
Source Clock: clk_write
Destination Clock: clk_read

Row|Exception| Description                     | Source (From)        |   Destination (To)
===============================================================================================
 1 | None    | 1-bit unknown CDC circuitry     | r_ptr_sync[0]~FF|CLK | data_count_r[0]~FF|D
 2 | None    | Multi-bit unknown CDC circuitry | w_ptr_q[2:1]~FF|CLK  | data_count_r[2:1]~FF|D
 3 | None    | 1-bit synchronized with missing | w_prt_q[11]~FF|CLK   | w_grey_sync[11]~FF|D
   |         | ASYNC_REG property              |                      |