ExpertQuestion 6 of 161

A register behind a clock MUX sees multiple clocks. Is that always an error?

From PDVerse PnR Interview Handbook, part of the pdVerse Mentor Guide

Short Answer

No — seeing two different clocks arrive at one clock pin isn't automatically a bug. It's exactly what you'd expect at a clock MUX (functional clock vs. test clock, or two PLL outputs for different performance modes), where only one input is actually selected at a time in any given operating mode. The tool, though, doesn't know your chip's functional intent by default — it just sees a pin with two active clock definitions and will report it, sometimes as a DRC-style warning, sometimes just noise in the report.

Technical Reference DiagramA register behind a clock MUX sees multiple clocks. Is that always an error?

Technical Explanation

  • ** If set_case_analysis (or scenario-based mode constraints) correctly fixes the MUX select for each scenario, then only one clock is "live" per scenario and the report is benign.
  • If the constraints leave the select ambiguous — no case analysis, or a mode where both clocks are simultaneously treated as active — that's a hard stop, because ICC2/STA genuinely can't tell which edge should be used for setup/hold, and you'll get either an over-constrained or (worse) an under-constrained result.
  • Also check set_clock_groups (or exclusivity/asynchronous grouping) around the MUX — if the two clocks are meant to be mutually exclusive, that intent needs to be declared explicitly, not assumed.
  • Bottom line: multiple clocks at a MUX pin is a prompt to go verify mode logic and constraints, not an automatic failure — but leaving it ambiguous across a scenario absolutely is one.

What To Check

  • Warning sign: check_timing reports multiple_clock at the downstream register.
  • Inspect: Keep at least two possible causes open, then use one named object and the active mode or scenario to separate them.
  • Correct: Inspect case analysis, clock groups, mode SDC, and MUX connectivity; obtain functional/STA ownership for exclusivity intent.

Command Checks & Actions

  • check_timing -include {multiple_clock}: finds missing or inconsistent timing setup
  • report_case_analysis: shows constants applied for the active mode
  • report_clocks: shows clock definitions and relationships
  • report_exceptions: shows timing exceptions and their scope

Run the commands in order. Each line answers a separate part of the check.

Healthy, Suspicious & Hard-stop Results

  • Expected: It may be valid across modes, but within one scenario the MUX selection and exclusivity must reflect functional reality; ambiguity is a hard stop.
  • Stop before floorplanning when required logic or timing coverage is missing or unexplained.

Common Mistake

The Trap: Do not assume the check passed just because ICC2 continued. Fix or narrowly justify the named objects, then rerun the same command.

What The Interviewer Is Testing

Be ready to explain why this matters before floorplanning.

Follow-up Question & Model Response

Model response: “I would save the report, inspect one affected object in the correct block and scenario, and make or request this correction. ”

Physical Design & Planning Handbook

Dive into 14 comprehensive chapters covering netlist sanity, FinFET grids, macro placement, power grids, CTS, and timing budgeting.

Offline PDF Bundle

Want all 1109 questions offline?

Get the complete 4-book PDF bundle (PnR, STA, MMMC, Low Power) with a clickable table of contents - no ads, no internet needed.

See what's inside the bundle
Timing Constraints (SDC) Handbook — nine chaptersSDC ConstraintsNine chapters on clocks, exceptions, and constraint linting.