Quartus® Prime Pro Edition User Guide: Timing Analyzer

ID 683243
Date 11/26/2024
Public
Document Table of Contents

3.1.5.1. Resolve Violation: Combinational Logic Before Synchronizer Chain

The following steps describe how to resolve the CDC-50011 Combinational Logic Before Synchronizer Chain DRC violation that occurs for CDC Example 2:

Figure 229. Design Rule Violations In Design Assistant


  1. In the Design Assistant, click the CDC-50011 violation. The right pane displays each violation with the same topology. Each row includes the associated source and destination registers and clock domains.
    Figure 230. CDC-50011 Details


  2. Right-click the CDC-50011 violation, then click Report Asynchronous CDC. The Report Asynchronous CDC report shows the topology under the Transfer Preceded by Combinational Logic category.
    Figure 231. CDC Topology Under Transfer Preceded by Combinational Logic


  3. Click the CDC Statistics tab to confirm that the Compiler properly identifies the synchronizer and the two registers as sources for the synchronizer.
    Figure 232. CDC Statistics Tab Identifies Synchronizer and Register Sources


  4. Click the Schematic View tab to identify the additional Comb Logic 0 logic block between the source registers and the first register of the synchronizer. The light green color indicates a false path.
    Figure 233. Schematic View Showing Additional Logic and False Path


  5. Take corrective action to resolve the logic interfering with the CDC chain:
    • Relocate any necessary logic upstream from the synchronizer.
    • Add an additional register before the synchronizer. This extra register serves as a staging register to ensure that the data is properly synchronized and stable before entering the synchronizer. This prevents variable delays that could compromise the synchronizer's ability to mitigate metastability.
      Figure 234. Schematic View Showing Relocation of Logic and Additional Register


  6. Modify the false path definition in the .sdc to reflect the addition of the new reg_clk1 register. Define the false path between reg_clk1 and the first register inside the synchronizer, as follows:
    set_false_path -from [get_registers reg_clk1] -to \
    [get_registers my_sync|sync_ff[0]]
  7. After modifying the false path, Report Asynchronous CDC reports this as a Compliant Transfer.
    Figure 235. Compliant Transfer in Report Asynchronous CDC


  8. Verify the correct CDC topology in the CDC Statistics, SDC Statistics, and Schematic View tabs.
    Figure 236. Schematic View Showing Correct Topology