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. Generated, Gated and Muxed Clocks

Part 1 · Clock Domains and Failure Modes · All levels

Generated, Gated and Muxed Clocks

Divided, gated and muxed clocks, when they are one domain and when they create new ones.

On this page

    Real designs rarely clock every flop from a root oscillator. Dividers, gates, and muxes create the clocks the flops actually see, and each one forces the question: same domain, or a new one?

    Three generators, three answers

    Generator

    What it produces

    Domain verdict

    Divider (counter or toggle flop)

    A slower clock net with a fixed ratio to its source

    A new domain: different net, so every path to and from the source net is a crossing, even though the ratio is exact

    Gate (integrated clock gate holding the clock off while idle)

    The same frequency when running, on a different net, with missing pulses

    A new domain for intent purposes: the gated flops can miss events the source domain assumes were sampled, and an enable from another domain is itself a crossing

    Mux (select between two clocks, e.g. functional versus test)

    One net that carries different clocks at different times

    Both source clocks are domains of every flop downstream, plus the select is a crossing into each source's timing

    Source clock feeding a divider, a gate, and a mux, each producing a classified net.
    Dividers, gates and muxes each create a clock net that must be classified.

    When they are one domain after all

    The verdict above is the default, and intent can merge nets back only with evidence: a gated clock whose tree is balanced with its source and whose enable timing is closed may be treated as one domain for timing, and a divider output with a known phase may get ratio-aware treatment. The merge is a documented decision with constraints behind it, never a hallway assumption. When in doubt, keep the domains separate: an extra crossing in the list costs a review line, while a missing one costs a respin risk.

    What the checking tools look for

    A structural analysis generally flags generated clocks explicitly: undeclared divider outputs, gated nets without an identified gate cell, and muxes on clock paths. It also looks at the gate enable and the mux select as signals in their own right: an enable arriving from another domain unsynchronised, or a select that can change while either clock runs, is reported against the generator, not just against the data crossings downstream.

    How a gate must be built (latch-based cells, enable timing, test enable) is RTL design material: see clock gating. This lesson only decides what the gate means for the domain list.

    Common pitfall

    Switching a clock mux while both clocks run. The select change can produce a runt pulse that clocks downstream flops halfway, corrupting state in a way no synchroniser downstream can repair. Mux selects must change under safe conditions (one side stopped, or a glitch-free switch sequence), and that condition belongs in the intent.

    Interview

    "Your block receives a gated clock. What do you check?" Good answers cover: the enable's own domain and timing, missing-pulse effects on incoming crossings (lost events), the reset behaviour while the clock is off, and that the gate is a library cell, not logic.

    Check yourself clk_d is clk divided by 2 through a toggle flop, same generator, known phase. A control signal crosses from clk to clk_d through a two-flop synchroniser. Was the synchroniser unnecessary, given the exact ratio?

    No. Different nets mean a crossing, and the synchroniser is the approved scheme for a slow-changing control signal here. The known ratio simplifies the review (pulse widths and hold times can be reasoned about exactly); it does not remove the need for a scheme.

    Check yourself A clock mux selects functional clk_f in mission mode and scan tck in test mode. How many domains do the downstream flops belong to?

    Two, depending on the mode: every flop-to-flop path through the mux must be reviewed against both clocks, and the select itself is a crossing. The test-mode crossings are real and need the same treatment as the mission-mode ones.

    Related topics

    • RTL: Clock gating

    • Next: Quasi-Static Signals

    Previous

    12 / 179

    Next: Quasi-Static Signals

    Up next

    Up nextQuasi-Static Signals

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Writing Clock Intent