Quartus® Prime Pro Edition User Guide: Timing Analyzer

ID 683243
Date 11/26/2024
Public

A newer version of this document is available. Customers should click here to go to the newest version.

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.