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
    • Crossings and Failure Modes
    • Identifying Domains
      • Clocks and Resets in a Design
      • Generated, Gated and Muxed Clocks
      • Quasi-Static Signals
      • Writing Clock Intent
  • 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
  • Capstone: Sign Off a Multi-clock Peripheral4
Loading lesson

‹Identifying Domains
  1. Topics
  2. CDC & RDC
  3. Clock Domains and Failure Modes
  4. Identifying Domains
  5. Clocks and Resets in a Design

Part 1 · Clock Domains and Failure Modes · All levels

Clocks and Resets in a Design

Listing clock and reset sources and generated clocks, and why a domain is a clock plus its reset.

On this page

    Most missed crossings are not exotic: they involve a clock the team forgot to list, often a slow test clock, a debug clock, or a divided clock buried three levels down. The inventory is the cheapest CDC activity there is, and it catches the most embarrassing bugs.

    Listing the sources

    Start at the chip boundary and work inward. Every oscillator pin, every recovered clock (from a serial link, for example), and every test and debug clock (scan, JTAG) is a source. Then follow each source through its generators: frequency synthesisers, dividers, muxes, and gates each produce a new clock net. The lesson on generated, gated and muxed clocks decides which of those nets are new domains; here, list every net first and classify later.

    A domain is a clock plus its reset

    Two flops on the same clock but under different resets do not behave as one domain during reset: one side can be held in reset while the other runs, so every crossing between them sees a launch or capture flop frozen at its reset value. Reset behaviour therefore belongs in the domain definition. For each clock, record each reset that acts on its flops: whether it is asynchronous or synchronous, which flops it reaches, and (for release ordering) which domain's reset comes off first. The reset synchroniser itself is design material in reset strategies; here the point is only that the inventory lists it.

    Record per domain

    Example entry

    Why signoff needs it

    Clock net and source

    periph_clk, divided from sys_pll

    Defines the domain; feeds the crossing list

    Frequency or period range

    25 MHz, always on

    Chooses pulse-versus-handshake schemes; spots fast-to-slow hazards

    Reset(s), type, reach

    periph_rst_n, asynchronous assert, all periph_clk flops

    Release behaviour changes what the crossing sees at power-up

    Special modes

    Scan shifts on tck; debug halts periph_clk

    Test clocks create crossings the functional design never sees

    What the checking tools look for

    A structural analysis generally starts from the declared clocks and resets and then reports anything it finds that was not declared: an undriven clock pin on a flop, a generated net with no declared source, a reset with no declared domain. Treat every such report as an inventory gap first and a design bug second: update the list, then judge the circuit.

    Common pitfall

    Listing only the functional clocks. Scan, JTAG, and debug clocks enter through the same flop clock pins, and a muxed test clock makes the whole design a second set of crossings during test. Inventory the test modes with the same care as the mission modes.

    Check yourself Two blocks share clk_a, but block P releases from reset 100 cycles after block Q. Is the path between them an ordinary synchronous path?

    Functionally yes, but during the reset sequence it is not: P's flops sit at reset values while Q's run. The crossing needs reset-aware review (what Q sends before P is awake, and what P's reset values do to Q's inputs), which is why the domain entry includes the reset.

    Check yourself A divider buried in an IP block produces a clock used only inside that block. Does it belong in the top-level inventory?

    Yes. It is a clock net driving flops, so paths to and from it are crossings whether or not the hierarchy hides them. "Inside the IP" is where forgotten clocks live.

    Related topics

    • Next: Generated, Gated and Muxed Clocks

    • RTL: Reset strategies

    Previous

    11 / 179

    Next: Generated, Gated and Muxed Clocks

    Up next

    Up nextGenerated, Gated and Muxed Clocks

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Quasi-Static Signals
    • Writing Clock Intent