Quartus® Prime Pro Edition User Guide: Timing Analyzer

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

3.1.6. Debug CDC Example 3—CDC Depending on Two Simultaneous Clock Domains

CDC Example 3 addresses the complexities of a CDC synchronizer fed by signals dependent on two different clock domains. CDC Example 3 demonstrates the potential for instability of this condition, and shows how to debug and resolve such issues.

CDC Example 3 Description

CDC Example 3 includes the same three-stage CDC synchronizer instance from previous examples named my_sync. In CDC Example 3, the inputs of a multiplexer are under the clk1 clock domain, while the control signal depends on the clk2 clock domain, as the following circuit shows:

Figure 237. CDC Example 3 Circuit (Incorrect Topology)


CDC Example 3 has the following clock relationship derived from this set_clock_groups constraint:

set_clock_groups -asynchronous -group [get_clocks clk1] \
-group [get_clocks clk2]

CDC Example 3 Debug Overview

CDC Example 3 topology is incorrect because the multiplexer control signal is asynchronous to the reg_A and reg_B registers. This topology is incorrect, even though the multiplexer control signal is synchronous to the destination clock domain. CDC Example 3 topology results in a control signal that can change at a critical time, causing instability at the multiplexer output.

The following topics use CDC Example 3 to describe how you can identify and resolve similar CDC issues by analyzing the CDC-50012 Multiple Clock Domains Driving a Synchronizer Chain rule violation that Design Assistant reports, and then synchronizing each input to the multiplexer with the destination clock domain to resolve the violations.