Nvidia: CDC Handshake Sign-Off Methodology

Executive Summary: DAC Case Study presented by Vikas Sachdeva of Real Intent, Inc.

Meridian CDC

Case Study Overview

This case study covers Nvidia’s clock domain crossing CDC handshake advanced sign-off methodology for ensuring that unsafe scenarios are consistently identified within Real Intent Meridian CDC’s full violation report, to minimize the additional engineering effort required to complete full CDC sign-off.

Problem Statement

Complex SoCs can have more than 100 asynchronous clock domains, and millions of clock domain crossing paths.

Designers add “handshake” mechanisms (CDC interfaces) for common design patterns, to safeguard those paths.  The interfaces must be fully reviewed as part of CDC sign-off to avoid missing out on CDC issues that may lead to silicon failure.

CDC sign-off tools identify all issues that could impact reliable data transfer across domains; given that all CDC sign-off tools have some noise, the tools classify the paths into “safe” and “unsafe” paths, to improve the efficiency of the review effort.


Ensure that Nvidia’s CDC sign-off methodology with Meridian CDC would minimize the violation review effort, while leveraging the CDC handshake information to ensure that all unsafe paths associated with the CDC handshake mechanisms were categorized properly.

Download Nvidia Case Study PDF

CDC Structural Sign-Off – Current Methodology Limitations

Clock domain crossing tools do structural verification, where they analyze design connections and then, to minimize the follow-on engineering effort, classify a path to be safe or unsafe. Many CDC flows rely on this type of structural sign-off method.

Unfortunately, analyzing and classifying the paths based entirely upon design connections, is not a full proof. In complex handshake scenarios, unsafe paths can mistakenly be classified as safe.

For example, classification based on structural connection-based principles alone can incorrectly classify as safe: Unintended drivers in interfaces and unintended feedback.

Missed unsafe path during structural-only CDC analysis: Unintended driver in interface

CDC Analysis using Formal Methods

Limitations of CDC Sign-Off using Formal Methods

Formal verification works using mathematical proofs, so when it calls something “safe” its guaranteed to be safe, which adds strength to structural-only CDC analysis. This method can be applied to further analyze the violations reported by the CDC tool.

However, signing-off with formal verification requires an enormous engineering effort. Further, it does not scale to the full chip level. Even verifying a subsystem or block can take weeks to sign off.

Requirements for New Advanced CDC Handshake Sign-Off Methodology

Nvidia wanted to improve their existing CDC methodology to meet the following criteria:


Build on top of their current structural sign-off flow


Properly categorize all unsafe paths in the tool reports


Not require a tremendous increase in designer effort


Be portable across multiple designs


Be easily implemented into existing flow

New Advanced CDC Handshake Sign-Off Methodology

Nvidia collaborated closely with Real Intent to develop the following advanced CDC handshake solution:

  1. The companies looked across all Nvidia designs and identified handshake schemes which designers usually use.
  2. It was identified that there were only a few specific handshake schemes that were used across all designs.
  3. The identified schemes were classified as “library interfaces”. (e.g. pulse synchronizer and FIFO).
  4. A set of flows & scripts were developed that would automatically detect the presence of these components.
  5. Whenever these library interfaces are present in the design, a Meridian CDC tool-specific command called “create_association” is automatically enabled.
  6. Complete structural and formal verification is done at the library level for all the identified library handshakes.

When Nvidia has an interface instantiated at SoC level or subsystem level, Meridian CDC now verifies that it has been instantiated as per library specifications.

Interface instantiated as per library specification