Clock Domain Crossing
Clock Domain Crossing
Description
As design sizes continue to grow, proliferation of internal and external protocols, along with
aggressive power requirements are driving an explosion in the number of asynchronous clocks in
today’s SoCs. This demands that design and verification teams spend an increasing amount of
time verifying the correctness of asynchronous boundaries in the design. Incorrect asynchronous
boundaries can lead to multiple design defects not encountered in simpler designs.
Metastability is one of the major defects. A flip-flop has metastability issues if the clock and data
change very closely in time, causing the output to be at an unknown logic value for an
unbounded period of time. While metastability cannot be eliminated, it is usually tolerated by
adding a multi-flop synchronizer to control asynchronous boundaries and using those
synchronizers to block the destination of an asynchronous boundary when its source is changing.
FIFOs, 2-phase and 4-phase handshakes are typical structures used for this type of
synchronization.
Glitches on asynchronous boundaries can also cause defects, since a glitch on an asynchronous
crossing can trigger the capture of an incorrect signal transition. Data coherency issues occur in a
design when multiple synchronizers settle to their new values in different cycles and
subsequently interact in downstream logic. The list goes on. While the concepts and
methodologies for verification of such issues have been extensively researched in the past ten
years, practical solutions have been offered primarily at the IP-level. Little work has been
attempted to tackle clock domain crossing (CDC) verification signoff of large system-on-chip
(SoC) designs.
The main advantage of flat SoC verification is setup simplicity. Typically, clocks, modes and
other design constraints are available at the chip level, and therefore design setup for CDC
verification is straightforward. This is a significant advantage as proper setup is key to effective
CDC verification and can avoid long signoff iterations.
There are several disadvantages to flat CDC verification for large SoC. Performance is first and
foremost as the analysis doesn’t scale across large designs. Additionally the number of issues
identified can be overwhelming. Additionally, SoCs are sometimes assembled late in the design
cycle. When this is the case, identifying critical CDC issues after assembly will lead to multiple
long iterations between block design and SoC assembly which could impact the schedule and
quality of the SoC implementation.
There are several common practices to address the challenges of CDC analysis at the SoC level.
They include:
Other considerations: