Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • How to Use This Course
  • Reading Path
  • CDC/RDC Glossary
  • CDC/RDC Metrics Reference
  • CDC/RDC Interview Prep
  • CDC/RDC Signoff Cheatsheet
  • Clock Domains and Failure Modes8
  • Metastability and Synchronizers16
  • CDC Protocols and Handshakes16
  • Reconvergence and Gray Coding16
  • Reset Domain Crossing16
  • Architecture and Design Rules16
  • CDC Signoff Methodology24
  • RDC Signoff16
  • Debug and Case Studies11
  • CDC and RDC Interview Prep30
    • CDC/RDC Whiteboard Framework
    • CDC/RDC Framework Drills
      • Drill Set: Single Bit
      • Drill Set: Multi-Bit and FIFO
      • Drill Set: Reset and RDC
    • Scenario: Metastability Bug
    • Scenario: Metastability Escape in Silicon Bring-up
    • Scenario: Async FIFO Pointer Mismatch
    • Scenario: Waiver Debate
    • Scenario: RDC Waiver Under Tapeout Pressure
    • CDC/RDC Interview Q&A Bank
    • CDC/RDC Interview Q&A Bank (Expanded)
  • Capstone: Sign Off a Multi-clock Peripheral4
Loading lesson

‹CDC/RDC Framework Drills
  1. Topics
  2. CDC & RDC
  3. CDC and RDC Interview Prep
  4. CDC/RDC Framework Drills
  5. Drill Set: Single Bit

Part 10 · Interview Prep · All levels

Drill Set: Single Bit

Six timed single-bit crossing drills with model answer outlines.

On this page

    Single-bit crossings are the most-asked whiteboard topic because they expose mechanism thinking in two minutes. Speak each answer with the framework; the outlines below show the points a level-3 answer must hit.

    Drill 1: why two flops?

    Outline: Assumption, unrelated clocks. Mechanism, the first flop can resolve late; the second flop samples it after (nearly) a full destination period, so it almost always sees a settled value. Trade-off, two stages cost two cycles of latency; a third stage buys failure-rate margin, not correctness. Evidence, structural check for no logic between flops plus the resolution-time argument in Resolution Time and MTBF.

    Drill 2: a pulse one fast cycle wide enters a clock four times slower. What breaks?

    Outline: Assumption, asynchronous clocks, unknown phase. Mechanism, lost event: the pulse can fall entirely between two slow edges. Trade-off, direct capture is free and wrong. Evidence, a waveform showing the pulse between slow edges, as in Failure Modes. Level 4 names the mirror failure: duplicated events in the slow-to-fast direction.

    Drill 3: draw the toggle synchroniser and state its spacing rule.

    Outline: toggle on each source event, two-flop synchronise the toggle, edge-detect in the destination. Rule, events must be spaced so the destination sees each toggle level: at least two destination periods apart in practice. Evidence, structural report plus an assertion that every toggle yields exactly one strobe. Reference: Toggle Synchronizer and Spacing and Rate Limits.

    Drill 4: the same pulse, but events can arrive back-to-back. Now what?

    Outline: Mechanism, toggles merge and one event is lost, so the toggle scheme's assumption is violated. Pattern, a handshake or FIFO that applies back-pressure. Trade-off, acknowledgement latency and logic against guaranteed delivery at any spacing. Evidence, formal proof of no lost or duplicated events under any spacing.

    Drill 5: combinational logic sits between the two synchroniser flops. Verdict?

    Outline: Mechanism, the second flop samples a function of a possibly still-resolving node, so the settling argument collapses and downstream fanout can diverge. Verdict, defect, no waiver: re-register so nothing sits between the flops. Evidence, the structural check for logic between synchroniser flops, taught in No Logic Between Flops.

    Drill 6: write the smallest testbench that proves a toggle synchroniser delivers events.

    Outline: deterministic clocks at an exact multiple, one-cycle event pulses spaced several slow periods apart, a counter on destination strobes, print PASS only when every event produced exactly one strobe. The example below is complete and prints PASS under Icarus Verilog; keep it as your template for whiteboard-adjacent code questions.

    tb.sv
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    // Complete, runnable toggle synchroniser testbench: prints PASS.
    module tb;
      reg clk_f = 0;
      always #5 clk_f = ~clk_f;        // 100 MHz source clock
      reg clk_s = 0;
      always #20 clk_s = ~clk_s;       // 25 MHz destination clock
      reg rst_f = 1, rst_s = 1;
      reg pulse_f = 0, tog_f = 0;
      reg s1 = 0, s2 = 0, s3 = 0;
      wire got_s = s2 ^ s3;
      integer got_count = 0;
      always @(posedge clk_f)
        if (rst_f) tog_f <= 0;
        else if (pulse_f) tog_f <= ~tog_f;
      always @(posedge clk_s)
        if (rst_s) begin s1 <= 0; s2 <= 0; s3 <= 0; end
        else begin s1 <= tog_f; s2 <= s1; s3 <= s2; end
      always @(posedge clk_s)
        if (!rst_s && got_s) got_count <= got_count + 1;
      initial begin
        #45 rst_f = 0; rst_s = 0;
        #35 pulse_f = 1; #10 pulse_f = 0;
        #120 pulse_f = 1; #10 pulse_f = 0;
        #120 pulse_f = 1; #10 pulse_f = 0;
        #200;
        if (got_count == 3) $display("PASS: 3 events, 3 strobes");
        else $display("FAIL: got_count=%0d, expected 3", got_count);
        $finish;
      end
    endmodule

    Common pitfall

    Answering drill 4 with "a faster destination clock". The clock ratio is given, not chosen: the fix must work at the stated rates, which is why the handshake, not the clock, is the answer.

    Check yourself Which two drills form a pair, and what single idea connects them?

    Drills 2 and 4: the lost event and its back-to-back variant. Both turn on the spacing assumption: the toggle scheme is correct only when events are spaced, and the handshake exists for when they are not.

    Related topics

    • Next: Multi-Bit and FIFO Drills

    • Toggle synchroniser

    Previous

    150 / 179

    Next: Drill Set: Multi-Bit and FIFO

    Up next

    Up nextDrill Set: Multi-Bit and FIFO

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Drill Set: Reset and RDC