Interview Question · Design
A CDC Sign-Off Plan for Your Block
- Likely at Google
- Likely at Micron
- Likely at Apple
The Question
The interviewer asks
You own an IP block with three clocks, an asynchronous FIFO and a few control crossings. What is your CDC sign-off plan, and what must be true before you call it done?
You have two and a half minutes. Speak or type, then press Get Feedback under your answer. No credits needed.
Speech-to-text runs in your browser. Chrome and Edge may send audio to their own speech service.
You can edit your answer before you send it. Feedback uses AI and checks your answer only against our written answer. No credits are used and your answer is not saved.
Reveal the Model Answer
Start with a written clock and reset spec: every clock, which are related, and each reset's domain. Run structural CDC checks until every crossing has an approved scheme, with no logic before synchronizers and no reconvergence. Turn each scheme's rule into an assertion, run it in formal and simulation, and add metastability injection. Bound the Gray buses with max-delay constraints. Done means zero open violations, and every waiver reviewed with a named owner.
Read the diagram as text
- bin counter (wclk): counts writes
- gray register (wclk): bin ^ (bin >> 1), from a flop
- sync1 (rclk): may go metastable when ptr moves near the edge
- sync2 (rclk): settled copy used by the read side
- Structural check: is there a recognised synchroniser? yes
- Formal property: does at most one bit change per source edge?
- bin counter (wclk) → gray register (wclk)
- gray register (wclk) → sync1 (rclk): crosses
- sync1 (rclk) → sync2 (rclk)
- Structural check → sync1 (rclk)
- Formal property → gray register (wclk)
Replace the gray register with the binary count and the structure is unchanged: same two flops, same pass. Only the property sees the difference.
Self-Check
Tick each key point you covered in your answer.
What Interviewers Listen For (Senior)
A good senior answer puts the plan in order: the clock spec, structure checks, protocol checks, constraints, then waivers. It names clear exit criteria instead of saying "the tool is clean".
What Interviewers Listen For (Staff)
A good staff answer says who owns each step and when it runs in the schedule. It treats each waiver as a design decision that is checked again after every RTL change.
Cross-Questions
Where the interviewer goes next. Open a node to practise that follow-up.
WhyWhat IfProve ItBreak ItCompareScale It
- A CDC Sign-Off Plan for Your Block
-
CompareA False Path vs a Max Delay on a Gray BusL3 Senior
Compare a false path with a max-delay constraint on the Gray-coded pointer bus of an asynchronous FIFO.
2:30You have two and a half minutes. Speak or type, then press Get Feedback under your answer. No credits needed.
Speech-to-text runs in your browser. Chrome and Edge may send audio to their own speech service.
You can edit your answer before you send it. Feedback uses AI and checks your answer only against our written answer. No credits are used and your answer is not saved.
Reveal the Model Answer
A false path tells STA to ignore the bus, so place and route may stretch one bit far longer than another. Gray code only promises one change per step at the source. If the skew exceeds a destination period, two steps can overlap at the receiver. A max-delay bound of about one period keeps the bits together, and STA then checks it.
Every Crossing Needs Its Own ReasonPointers and ready flags enter first-stage synchronizers. Stored data reaches the read register through a separate path. Read the diagram as text
- Write domain: wclk · write pointer · memory
- Read synchronizers: Pointer and ready first stages
- Read domain: rclk · read pointer · output
- Write synchronizers: Pointer and ready first stages
- Write domain → Read synchronizers: Bounded Gray / ready paths
- Read synchronizers → Read domain: Normal same-clock timing
- Read domain → Write synchronizers: Bounded Gray / ready paths
- Write synchronizers → Write domain: Normal same-clock timing
- Write domain → Read domain: Stable-word protocol + data bound
From lesson L8.1, an asynchronous FIFO: each Gray pointer path gets a delay bound, never a plain false path.
Self-Check
Tick each key point you covered in your answer.
Half-Truth
"Gray code is safe whatever the wire delays."
It is safe only if each change reaches every bit before the next change. Unbounded skew breaks that.
Source Lesson L8.1 and its source: Dassa and Mirsky, A New Approach to Easily Resolve the Hidden Timing Dangers of False Path Constraints on Clock Domain Crossings (DVCon), §II.A
-
What IfThe Max Delay That Did NothingL3 SeniorL4 Staff
What if the SDC also declares the two clocks as asynchronous groups? Does the max-delay still apply?
2:30You have two and a half minutes. Speak or type, then press Get Feedback under your answer. No credits needed.
Speech-to-text runs in your browser. Chrome and Edge may send audio to their own speech service.
You can edit your answer before you send it. Feedback uses AI and checks your answer only against our written answer. No credits are used and your answer is not saved.
Reveal the Model Answer
No.
set_clock_groups -asynchronousacts as false paths between the two clocks. In SDC precedence a false path outranksset_max_delay, so the pointer bound is dropped. This was confirmed on OpenSTA 3.1.0. Write the bound with path-level exceptions, and check the report to show it is applied.Self-Check
Tick each key point you covered in your answer.
Tool as Truth
"Writing the constraint is enough."
Exceptions interact, and one can silently override another. Only the timing report shows whether the bound is applied.
Source Synopsys, Using the Synopsys Design Constraints Format (application note), timing exception precedence; confirmed on OpenSTA 3.1.0 in lesson L2.6
-
WhyWhat Metastability Injection AddsL3 Senior
Why add metastability injection to simulation, and what can it never prove?
2:30You have two and a half minutes. Speak or type, then press Get Feedback under your answer. No credits needed.
Speech-to-text runs in your browser. Chrome and Edge may send audio to their own speech service.
You can edit your answer before you send it. Feedback uses AI and checks your answer only against our written answer. No credits are used and your answer is not saved.
Reveal the Model Answer
A synchronizer model that randomly adds a cycle of delay per bit shows how the design behaves when a crossing resolves late. It exposes logic that assumes an exact latency, and reconvergence that only fails with skew. It cannot prove absence: it finds only what the tests happen to reach.
Self-Check
Tick each key point you covered in your answer.
Half-Truth
"With injection on, passing regressions sign off CDC."
Random delay finds only part of the errors. The structural and protocol checks still carry the sign-off.
Source Mehta, ASIC/SoC Functional Design Verification (2018) ch. 8.5 CDC verification methodology (random-delay simulation models)
-
What IfResets That Cross Clock DomainsL3 Senior
Asked if they mention resets
What if the block's three clock domains each have their own reset?
2:30You have two and a half minutes. Speak or type, then press Get Feedback under your answer. No credits needed.
Speech-to-text runs in your browser. Chrome and Edge may send audio to their own speech service.
You can edit your answer before you send it. Feedback uses AI and checks your answer only against our written answer. No credits are used and your answer is not saved.
Reveal the Model Answer
Each domain gets its own reset synchronizer: assert at once, release on two edges of its own clock. Then the domains leave reset at different times. Every crossing needs a rule for that window, such as a ready flag from the receiver. A reset in one domain must not corrupt a flop in another domain that is mid-capture.
Two Reset Synchronizers and a Ready FlagArrows show signals. The top row is domain A on clk_a, the bottom row domain B onclk_b.Illustrative sequenceCallValueReturnWaiting- Assert
The pin falls and both domains are in reset at once, with or without their clocks.
- A releases first
A's clock is running, so two of its edges release A. In the lab that is edge 3.
Follow the calls, values and waits
- data release: ra_q1, rst_a_n → tog_a
- A sends too soon
Without the flag, A sends as soon as it is out of reset. Its toggle reaches flops that are held at 0.
Follow the calls, values and waits
- data event: tog_a → t1, t2, t3
- B says it is awake
The fix: B raises
up_bone edge after its release, and the flag crosses into A through two flops. A sends only whenready_ais 1.Follow the calls, values and waits
- data release: rb_q1, rst_b_n → t1, t2, t3
- data ready: t1, t2, t3 → up_b to up_q2
Read the diagram as text
- rst_n pin: shared by both domains
- ra_q1, rst_a_n: release on clk_a
- tog_a: flips once per event
- rb_q1, rst_b_n: release on clk_b
- t1, t2, t3: two flops, edge detect
- up_b to up_q2: B is awake, told to A
- rst_n pin → ra_q1, rst_a_n: assert at once
- rst_n pin → rb_q1, rst_b_n: assert at once
- ra_q1, rst_a_n → tog_a: rst_a_n
- rb_q1, rst_b_n → t1, t2, t3: rst_b_n
- tog_a → t1, t2, t3: toggle
- t1, t2, t3 → up_b to up_q2: up_b
The ready flag is a register in B that crosses like any other bit: from a flop, through two flops, into A.
Self-Check
Tick each key point you covered in your answer.
Misconception
"One reset synchronizer, shared by all three domains, is enough."
It releases on one clock. In the other domains the release is asynchronous again, so their flops can leave reset in different cycles.
Source Cummings, Mills and Golson, Asynchronous & Synchronous Reset Design Techniques - Part Deux (SNUG Boston 2003) §6.2
- Assert
-
Break ItHow a Waived Crossing Becomes a Silicon BugL3 SeniorL4 Staff
Break it: how does a reviewed CDC waiver still turn into a bug in silicon?
2:30You have two and a half minutes. Speak or type, then press Get Feedback under your answer. No credits needed.
Speech-to-text runs in your browser. Chrome and Edge may send audio to their own speech service.
You can edit your answer before you send it. Feedback uses AI and checks your answer only against our written answer. No credits are used and your answer is not saved.
Reveal the Model Answer
A waiver records an assumption, such as "this bus is static during operation". The tool stops checking, but nothing enforces the assumption. Later, software writes the register while traffic runs, or an RTL change adds a new path under the old waiver. Waivers need a stated assumption, an owner and a re-check after every change.
Self-Check
Tick each key point you covered in your answer.
Delivery
"Waived means reviewed, so it is safe for the life of the project."
The waiver was true for the RTL on the day it was reviewed. Without a re-check, it hides every later change on that path.
-
What IfThe Configuration Register That Never ChangesL3 Senior
What if the crossing is a configuration register that "never changes while the block runs"?
2:30You have two and a half minutes. Speak or type, then press Get Feedback under your answer. No credits needed.
Speech-to-text runs in your browser. Chrome and Edge may send audio to their own speech service.
You can edit your answer before you send it. Feedback uses AI and checks your answer only against our written answer. No credits are used and your answer is not saved.
Reveal the Model Answer
Then it can cross without a synchronizer, but only if that rule really holds. Write it down as a protocol: the block is idle or in reset when the register changes. Check it with an assertion in simulation and formal. Tell the software team, because they are the ones who could break it.
Self-Check
Tick each key point you covered in your answer.
Half-Truth
"Configuration is static, so it needs no CDC handling at all."
It needs a rule instead of a synchronizer. Without an assertion, the first driver that writes it while the design runs breaks it.
Source Mehta, ASIC/SoC Functional Design Verification (2018) ch. 8.5 CDC verification methodology (protocol verification)
-
Scale ItCDC Sign-Off on a Many-Clock SoCL3 SeniorL4 Staff
How do you sign off clock domain crossings on an SoC with dozens of clocks?
2:30You have two and a half minutes. Speak or type, then press Get Feedback under your answer. No credits needed.
Speech-to-text runs in your browser. Chrome and Edge may send audio to their own speech service.
You can edit your answer before you send it. Feedback uses AI and checks your answer only against our written answer. No credits are used and your answer is not saved.
Reveal the Model Answer
Start with structural analysis: define the clocks and their relationships. Then let the tool find every crossing and check that each has the right synchronizer for its type. Next comes protocol checking: each scheme's rules, such as hold times and Gray steps, become assertions in formal and simulation. Add reconvergence checks and reviewed waivers. Use metastability injection in simulation to expose designs that assume exact timing.
Self-Check
Tick each key point you covered in your answer.
Tool as Truth
"Our regressions pass with all clocks running, so CDC is covered."
RTL simulation never goes metastable and rarely hits the bad clock phase. CDC needs structural and protocol checks, not only passing tests.
Source Mehta, ASIC/SoC Functional Design Verification ch. 8.5 (PDF p186-188); Sutherland, RTL Modeling with SystemVerilog ch. 8.1.6
Wrong Altitude
A staff-level answer that stops at "run the CDC tool".
The interviewer wants the flow: constraints, structure, protocol, reconvergence, waiver review and who owns each step.
-
Prove ItSolve R6.2.1: The Job That Finished TwiceSimulator-graded
Show it, don't just say it: this Silicon Lab problem is graded by the simulator.
What People Get Wrong
Common wrong answers and why they fail. Run It shows the wrong belief failing on a real simulator.
Missed Corner
"Every crossing has a synchronizer on every bit, so the structural check is enough."
Separately synchronized bits that meet again downstream can form a code the source never had. The twin shows a phase engine seen in DONE between LOAD and RUN.
Run It
A two-bit phase with binary codes; bit 1 arrives 0.2 ns and bit 0 1.0 ns after a change.
destination saw: 00 01 11 10 11 FAIL: each bit had a synchronizer, yet the destination saw DONE between LOAD and RUNSee the Fix
`timescale 1ns/1ps
module tb;
// A job engine's phase crosses as two bits, each with its own synchronizer.
localparam logic [1:0] IDLE = 2'b00, LOAD = 2'b01, RUN = 2'b11, DONE = 2'b10; // Gray: one bit per step
logic dclk = 0;
always #5 dclk = ~dclk;
logic [1:0] phase = IDLE, wire_p, s1, s2, last;
assign #0.2 wire_p[1] = phase[1]; // bit 1 arrives early
assign #1.0 wire_p[0] = phase[0]; // bit 0 arrives late
always_ff @(posedge dclk) begin s1 <= wire_p; s2 <= s1; end
string seen = "";
int done_early = 0;
always @(posedge dclk) if (s2 !== last) begin
seen = {seen, $sformatf(" %b", s2)};
if (s2 == DONE && last == LOAD) done_early++;
last = s2;
end
initial begin
#14.5 phase = LOAD;
#20 phase = RUN; // t = 34.5, just before an edge
#20 phase = DONE;
#60;
$display("destination saw:%s", seen);
if (done_early == 0) $display("PASS: with one bit changing per step, the destination saw only real phases");
$finish;
end
endmodule
Prints: destination saw: 00 01 11 10 PASS: with one bit changing per step, the destination saw only real phases
Misconception
"Set a false path on every crossing; the synchronizers make timing irrelevant."
A false path lets place and route skew the bits of a Gray bus by more than a period. Then two bits change at once at the receiver.
Source Lesson L8.1 and its source: Dassa and Mirsky, A New Approach to Easily Resolve the Hidden Timing Dangers of False Path Constraints on Clock Domain Crossings (DVCon), §II.A
Tool as Truth
"Our regressions run with all clocks, so CDC is covered."
RTL flops have no setup or hold time, so a crossing never fails in RTL simulation. Structural and protocol checks are needed.
Source Mehta, ASIC/SoC Functional Design Verification (2018) ch. 8.5 CDC verification methodology
Learn It, Then Prove It
- Lesson R6.2The Two-Flop Synchronizer and What It Cannot Carry
- Lesson R6.5Reset Across Clock Domains
- Lesson R6.6Capstone: The Asynchronous FIFO with an Assertion Suite
- Lesson F5.6CDC and RDC with Formal
- Lesson L8.1Capstone: Constrain the Asynchronous FIFO
- Problem R6.2.1The Job That Finished Twice
- Problem R6.6.1The Asynchronous FIFO