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 Paths
  • Concept Map
  • How to Read the Diagrams
  • Part 0: What Is a Protocol?10
  • Part 1: Timing and Clocking11
    • Common-Clock Interfaces
    • Asynchronous Serial and Oversampling
    • Source-Synchronous Clocks and Strobes
    • Embedded Clocks and Clock Recovery
    • Skew and Deskew
    • Clock Relationships
    • Elastic Buffers and Clock Compensation
    • Self-Timed Handshakes
    • Crossing at the Interface
    • Protocols Compared: Timing and Clocking
    • Drills: Timing and Clocking
  • Part 2: Encoding and Framing12
  • Part 3: Handshakes13
  • Part 4: Flow Control17
  • Part 5: Transactions19
  • Part 6: Concurrency and Performance17
  • Part 7: Ordering13
  • Part 8: Sharing and Arbitration12
  • Part 9: Deadlock and Liveness13
  • Part 10: Reliability and Recovery20
  • Part 11: Bring-Up and Link Management10
  • Part 12: Power8
  • Part 13: Shared State and Coherence9
  • Part 14: Security and Isolation7
  • Part 15: Specifying and Verifying11
  • Part 16: Protocols Dissected17
  • Part 17: Capstones5
  • Part 18: Interview Preparation6
Loading lesson

‹Part 1: Timing and Clocking
  1. Topics
  2. First Principles of Hardware Protocols
  3. Part 1: Timing and Clocking
  4. Self-Timed Handshakes

Part 1 · Timing and Clocking · Principal (P)

Self-Timed Handshakes

Communication with no clock at all: bundled data, dual-rail encoding and completion detection, and why clockless interfaces stay rare even though they solve the clocking problem completely.

On this page

    Note

    Level: Principal (P) · Answers: When is the data valid?

    Before this: Clock Relationships, Protocols as State Machines

    An architect proposes connecting the blocks of a large chip with a network that has no clock at all. Every link would carry its own timing in its handshake, so there would be no clock tree to balance across the die and no clock-domain crossings between blocks running at different speeds. The room is interested, then sceptical: if clockless communication solves every problem in this part, why is almost nothing built that way?

    How can data carry its own "valid" signal without any clock, and what does it cost?

    The obvious answer, and why it breaks

    The obvious clockless design adds one wire, "data is ready", next to the data, and the receiver captures when it rises. That is a strobe with no clock behind it. It breaks on the same issue as any strobe (lesson 1.3): the "ready" wire and the data wires do not arrive at exactly the same time, so the receiver can capture before the slowest data bit has settled. With no clock period to absorb the difference, the design needs either a guaranteed delay margin or a way to know, from the data itself, that it is complete.

    The idea: two ways to know data is complete

    Self-timed (asynchronous) circuits use one of two families, both built on the request/acknowledge handshakes of Part 3:

    Family

    How "valid" is signalled

    Trade-off

    Bundled data

    Ordinary binary data plus a request wire that is deliberately delayed so it always arrives after the slowest data bit; the receiver answers with an acknowledge

    Cheap (one extra wire per bundle) but relies on a timing assumption: the request delay must exceed the data delay in every condition

    Delay-insensitive codes (for example dual-rail)

    Each bit uses two wires: 01 means 0, 10 means 1, 00 means "not yet". The receiver knows a word is complete when every bit has left 00 (completion detection)

    Correct whatever the wire delays, but twice the wires and extra logic to detect completion

    Either way, each transfer is a handshake with no clock: the sender says "here it is", the receiver says "got it", and the next transfer may start. The usual form is the four-phase protocol: request up, acknowledge up, request down, acknowledge down. The data must stay stable from request up until acknowledge up.

    A clockless transfer. Each step waits for the previous one, so the transfer runs exactly as fast as the two sides and the wires allow.
    With dual-rail encoding, completion is visible in the data itself, so no timing assumption is needed.

    Worked example: what the clock costs, and what replaces it

    Compare a clocked and a self-timed link carrying one word (illustrative reasoning, no specific numbers needed):

    Clocked (common clock)

    Self-timed (four-phase, bundled)

    Speed is set by

    The worst-case path, every cycle

    The actual delay of this transfer and the handshake round trips

    Clock distribution

    A balanced tree across both ends

    None

    Crossing between differently clocked blocks

    Synchronisers or async FIFOs

    None needed; but where a self-timed island meets clocked logic, a crossing is needed after all

    Per-word overhead

    None beyond the clock

    Two round trips of request and acknowledge (four-phase)

    Design tools and verification

    Mature: static timing, standard flows

    Specialised; timing assumptions (bundled data) must be verified separately

    The handshake round trips are why self-timed links are not automatically fast: over a long wire, waiting for an acknowledge before the next word costs as much as the flight time twice. Two-phase signalling (every transition counts) halves that, at the cost of more complex logic (lesson 3.5).

    The design space

    Approach

    What it costs

    When it wins

    Fully synchronous

    Clock tree power and skew management

    Most digital logic: tools, IP and verification all assume it

    Globally asynchronous, locally synchronous (GALS)

    Crossings between islands

    Large chips with many clock domains; islands stay ordinary synchronous logic

    Self-timed links between synchronous islands

    Specialised design and verification of the links

    Long on-chip interconnect where distributing one clock is hard

    Fully self-timed logic

    Area (dual-rail), tools, verification effort

    Niche: very low power, variable supply voltage, or extreme robustness to delay variation

    How real designs chose

    Where

    What is used

    Crossings between clock domains

    Four-phase and two-phase request/acknowledge handshakes, each signal through a synchroniser: the same handshake, made safe for clocked logic on both sides (the CDC course covers them in depth).

    Large SoCs

    Usually GALS: synchronous islands joined by asynchronous FIFOs or synchronised handshakes, rather than self-timed logic.

    Research and specialised chips

    Self-timed networks-on-chip and fully asynchronous processors have been built, typically where power or delay variation matters more than standard tooling.

    What breaks

    A team builds a bundled-data link and sizes the request delay from typical-corner timing (illustrative). At a slow process corner and low voltage, one data bit's path slows down more than the delay element does, and the receiver occasionally captures a word before that bit has settled. Nothing in the protocol detects it: bundled data is only correct while its timing assumption holds.

    • Symptom: rare single-bit errors at low voltage or high temperature.

    • Root cause: the request delay and the data paths did not track each other across corners.

    • Fix: verify the bundling constraint at every corner like any timing path, add margin, or switch the link to a delay-insensitive code where the cost is acceptable.

    Why this matters

    Principal lens. Clockless communication does not remove timing; it moves it. Bundled data turns the clock period into a matched delay that must be verified across corners; delay-insensitive codes turn it into wires and completion logic. The real reason self-timed design stays niche is ecosystem: synthesis, static timing, test and verification all assume clocks. The lesson for protocol design is the handshake itself, which is clockless at heart: valid/ready, request/acknowledge and credits are all ways to let each side proceed at its own pace and tell the other when it may.

    Interview

    Asked: "When would you use an asynchronous (self-timed) interconnect on chip?"

    Weak answer: When you need high speed, because there is no clock.

    Strong answer: Rarely. Self-timed links remove the clock tree and clock-domain crossings and run at each transfer's actual speed, but the handshake round trips cost latency on long wires, bundled data needs a verified delay margin at every corner, and dual-rail doubles the wires. Most chips choose GALS instead: synchronous islands with async FIFOs between them. I'd consider self-timed links for very large or low-power designs where one clock is hard to distribute and the team has the specialised tools.

    Follow-ups: (1) What is the timing assumption in bundled data? (2) How does a dual-rail receiver know a word is complete?

    Check yourself Why must the request wire in bundled data be delayed?

    So it arrives after the slowest data bit has settled. With no clock period, that delay is the only thing guaranteeing the receiver captures complete data.

    Check yourself In dual-rail encoding, what does 00 on a bit's two wires mean, and why is it needed?

    "Empty": no value yet. It lets the receiver tell an incomplete word from a complete one, and the return to 00 between words separates consecutive values.

    Check yourself Why is a four-phase self-timed link slow over a long wire?

    Each word needs request up, acknowledge up, request down and acknowledge down, two full round trips across the wire, before the next word can start.

    Key takeaways

    • Self-timed links signal validity with the handshake itself: bundled data uses a delayed request; delay-insensitive codes make completion visible in the data.

    • They remove clock trees and crossings but pay in handshake round trips, wires, and verification of timing assumptions.

    • Most chips use GALS instead; the clockless handshake idea lives on in valid/ready, request/acknowledge and credits.

    Keep going

    Next: Lesson 1.9, Crossing at the Interface. Every off-chip link ends in a clock crossing. Where it sits inside a protocol stack, and what makes it safe.

    Related topics

    • Part 1 overview: Timing and Clocking

    • CDC & RDC course: Handshake Protocols Across Domains

    Previous

    22 / 234

    Next: Crossing at the Interface

    Up next

    Up nextCrossing at the Interface

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Common-Clock Interfaces
    • Asynchronous Serial and Oversampling
    • Source-Synchronous Clocks and Strobes