8.14 Generating a Clock Domain Crossing (CDC) Report

The Clock Domain Crossing (CDC) Report analyzes timing paths that cross from one clock domain (the source clock) to another clock domain (the destination clock). The CDC report helps identify instances where there may be data loss or metastability issues.

To generate the CDC Report:
  1. From the Tools menu, choose Reports > Clock Domain Crossing (CDC)..
    The Clock Domain Crossing Report Options dialog box appears.
  2. Select either CDC Table or Comma Separated Values.
  3. Click OK.

    Selecting CDC Table displays a graphical table with color-coded cells. Each cell represents a CDC type between the source clock and the destination clock domains that have constraints. Clocks without constraints do not appear in the CDC table.

    The attributes present in the path table are as follows:

    • Source Clock: Source of the clock

    • Destination Clock: Destination of the clock

    • Worst Slack (ns): Worst slack of the CDC path in nanoseconds

    • Worst Slack Edge: This is the source/sink edge for the worst path of CDC

    • Max Delay Cstr:

      ValueDescription

      Yes

      All paths in CDC have set_max_delay applied

      No

      No paths in CDC have the constraints applied

      Partial

      Any path in CDC has the constraint applied

    • Multicycle Path Cstr:

      ValueDescription

      Yes

      All paths in CDC have set_multicycle_path applied

      No

      No paths in CDC have the constraints applied

      Partial

      Any path in CDC has the constraint applied

    • Clock Group Cstr:

      ValueDescription

      Yes

      CDC has set_clock_group applied

      No

      CDC does not have set_clock_group applied

    • Clock Uncertainty Cstr: It is the uncertainty value for the worst path in CDC; else, the clock uncertainty field is left empty.

    • Num of Paths: Number of paths in CDC. For User Ignored paths, the value is 0.

    • Clock Pair Status: The status can be Timed Safe, Timed Unsafe or User Ignored.

    In the CDC Report dialog box, you can select the clocks to view or hide. Clicking the Clock Selection button at the top left of the dialog box lists all clocks that can be viewed or hidden. By default, all clocks are checked and visible. To hide a clock, clear its check box.

    Figure 8-7. Showing or Hiding Clocks
    ???

    The following table describes the colors in the CDC Report shown in the preceding figure.

    PatternStatusColor
    Paths from the source clock domain to the destination clock domain have all been disabled by false path or clock group constraints.User-Ignored PathsLight blue
    No Paths found from the source clock domain to the destination clock domain.No PathsGray
    The source and destination clocks are synchronous: Both the clocks have a common primary clock and paths are found from the source clock domain to the destination clock domain.TimedDark Blue
    The source and destination clocks are asynchronous: Both the clocks have NO common primary clock, while paths are found from the source clock domain to the destination clock domain. Currently, synchronizers, if present, are not accounted for in this report.Timed (unsafe)Brown

    There are certain scenarios related to the path table as explained in the following:

    1. When CDC report is generated, path table is shown by default for all CDC having paths. Each row shows the worst slack for a clock crossing. Similarly, when clicking on a particular CDC crossing in CDC report, you can have a single row showing the worst slack for CDC crossing.

      Example: The path table shown in the following figure, the worst path for reg_com_clk_10mhz to reg_com_clk_5mhz has the worst slack of 93.541. The same path is displayed by default, when the CDC crossing is selected.

      Figure 8-8. Worst Path with Slack 93.541 ns
      Figure 8-9. Smarttime Showing the Worst Path with Slack 93.541 ns
    2. Clicking on the CDC box shows the worst slack for a clock crossing as in path table in the following figure.

      Figure 8-10. Highlighted CDC Box Showing the Worst Slack in Path Table

      Clicking on the same CDC box again will show the details for all the clocks selected in CDC report.

      Figure 8-11. CDC Path Table Showing All Clocks on Deselecting the Selected CDC Box

      For all clocks having large names, tool-tips for columns have been added.

      Figure 8-12. CDC Path Table Showing Tool-Tip for a Source Clock Name
    3. Selecting/deselecting clocks in clock selection will dynamically change the path table along with the CDC table. Both the tables are in sync. Example: Here, clk_input_100mhz is selected, therefore, the clock is displayed in CDC table and path table.

      Figure 8-13. CDC Table in Sync with Clock Selection Section

      When the clock clk_input_100mhz is unselected, then the same clock is removed from the CDC table. The crossings related to the clock are also removed from the path table as shown in the following figure.

      Figure 8-14. Deselecting a Clock in Clock Selection Section Syncs the Path Table Accordingly

    On clicking any one of the four options in the CDC category, the clock table is filtered according to the CDC category selected.

    The following is a scenario where Timed button has been selected, and Timed safe CDC is only displayed in the clock table.

    Figure 8-15. CDC Report When Timed Button is Selected in CDC Category
    Clicking on the same CDC category shows the details for all the clocks selected in CDC report. Selecting/unselecting clocks in clock selection does dynamically change the clock table along with the CDC table.

    In the following figure, the User Ignored CDC category button is chosen and clk_input_100mhz is selected. Therefore, the clock is displayed in CDC table and clock table.

    Now, when clock clk_input_100mhz is unselected, the same clock is moved from CDC table and the crossings related to that clock are also removed from clock table. Therefore, when the User Ignored CDC category is selected, entries related to clk_input_100mhz are not visible.

    On right-clicking a CDC box, you can choose to Copy, Add a Clock Group Constraint or Go to Timing Explorer.

    Figure 8-16. CDC Report with Go to Timing Explorer Option

    Selecting the Go to Timing Explorer option opens the Timing Explorer dialog box.

    Figure 8-17. Timing Report Explorer

    There are corner scenarios when cross probing between CDC and Timing Explorer:

    Scenario 1:

    This is a scenario where difference is seen between SmartTime and Verify timing, when two clocks are defined on same port and when cross probing for CDC reg_com_clk_10mhz and reg_com_clk_5mhz is unable to find the same in Timing Report Explorer.

    The constraints are as follows:

     create_clock -name {reg_com_clk_10mhz} -period 100 -waveform {0 50 } [ get_ports { reg_com_clk_10mhz } ]
    create_clock -name {reg_com_clk_5mhz} -period 200 -waveform {0 100 } -add [ get_ports { reg_com_clk_10mhz } ]

    The Timing Report Explorer does not pick reg_com_clk_5mhz as destination clock, and Smart time does pick the reg_com_clk_10mhz and reg_com_clk_5mhz pair as CDC, as shown in the following.

    Figure 8-18. Timing Report Explorer Snapshot - 1
    Figure 8-19. Timing Report Explorer Snapshot - 2
    Figure 8-20. SmartTime Snapshot
    Timing Explorer is picking the worst slack path for a pair of start and end point. Therefore, you can miss CDC and other reg to reg paths with lower slack values.

    Scenario 2:

    This is a scenario where due to different operating conditions set in Smart Time, you can have different results, when cross probing between CDC and Timing Report Explorer. SmartTime and CDC are in sync.

    Figure 8-21. Worst Slack of 97.958 ns in Timing Report Explorer
    Figure 8-22. Worst Slack of 98.154 ns in SmartTime
    Figure 8-23. Operating Conditions
    The Timing Report Explorer reports the path from slow_lv_lt, and SmartTime reports using the operating condition fast_hv_lt. When the operating condition in SmartTime is changed to slow_lv_lt, the worst slack becomes the same as in the Timing Report Explorer.
    Figure 8-24. Slack After Changing the Operating Condition to slow_lv_lt

    CDC reports worst path for a particular corner selected in SmartTime, and Timing Report Explorer reports the worst path across all the corners.

    In such cases, you can see changes in values when navigating from CDC to Timing Report Explorer. To make you aware of such situations, Corner Info column is added to display the operating conditions.

    Note:
    • The path details for the same clock crossing (C1 to C1) are not shown in the path tale as they are not valid clock crossings and are currently shown as timed safe by default in CDC report.

    • The clock table has CDC details only related to clocks checked in clock selection from CDC report.

    • Path table will not show any CDC having no paths.

    • For User Ignored CDC columns, “Worst Slack (ns)”, “Worst Slack Edge”, “Max Delay Cstr”, “Multicycle Path Cstr”, and “Clock Uncertainty Cstr” are empty.

    • Cross probing is allowed to Timing Report Explorer for the same clock crossing (C1 to C1).
    • For User Ignored CDC category, Corner Info column is empty.

    Selecting Comma Separated Value exports the CDC Report to a CSV file. If you select this option, a window appears in which you assign a name to the CSV file and specify the location where it will be exported. The CSV file shows details about the CDC between each clock domain in numeric format. Each CDC type is represented as a number similar to colors in the table. The CSV file includes an explanation of each number type and CDC type.

    Figure 8-25. Sample CSV Report
    ???