How does the tool actually decide what counts as a "root net" for clock NDR purposes, and what's the edge case that can silently change that?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
Root nets are single-fanout nets from the clock root to the first branch; internal nets run from that branch point toward sinks; sink nets connect to leaf sinks. -root_ndr_fanout_limit sets the transitive fanout limit for identifying root nets -- a smaller value means MORE nets get root-net constraints, raising routing congestion risk. The edge case: if an identified root net is shorter than 10 microns, the tool uses internal-net constraints instead, regardless of the fanout-based classification.
Technical Explanation
- Root nets are single-fanout nets from the clock root to the first branch point; internal nets run from that branch point toward sinks; sink nets connect directly to leaf sinks.
- -root_ndr_fanout_limit sets the transitive fanout limit used to identify root nets -- and a smaller value means MORE nets qualify as root nets, which raises routing congestion risk since root-net NDRs are typically wider/heavier.
- Excluded pins are simply ignored when counting valid clock sinks for this classification -- they don't distort the fanout count.
- The real edge case: if an identified root net is shorter than 10 microns, the tool automatically uses internal-net constraints instead, overriding the fanout-based classification -- a short "root" net doesn't get root-net treatment just because its fanout qualifies it.
Formula Or Decision Rule
Root net vs internal net classification is fanout-based via -root_ndr_fanout_limit, EXCEPT: any identified root net shorter than 10 microns is reclassified as internal-net constraints automatically.
What To Check
- Warning sign: a net you expected to get root-net NDR treatment based on its fanout is showing internal-net constraints instead.
- Inspect: check the physical length of that specific net -- if it's under 10 microns, that's the documented reason, not a configuration error.
- Correct: don't try to force root-net treatment on a genuinely short net; the length-based override exists for a physical reason (short nets don't need the same NDR treatment long root nets do).
Command Checks & Actions
set_clock_routing_rules -min_routing_layer M4 -max_routing_layer M7Applies layer bounds, separate from the root/internal/sink net-type classification.
set_clock_tree_options -root_ndr_fanout_limit 300Sets the fanout threshold for root-net identification.
Healthy, Suspicious & Hard-stop Results
- Expected: root-net NDR assignment matches expectations for nets both long enough and high enough fanout to qualify.
- Investigate: a high-fanout net isn't getting root-net treatment -- check its physical length before assuming the fanout limit setting is wrong.
- Stop: root_ndr_fanout_limit is being tuned repeatedly to try to force root-net treatment onto a net that's actually under the 10-micron length exception -- that tuning will never work for that specific net.
Common Mistake
The Trap: Assuming -root_ndr_fanout_limit is the only factor determining root-net classification -- a physically short net gets reclassified to internal-net constraints regardless of its fanout, and missing this causes confusing NDR-assignment debugging.
What The Interviewer Is Testing
Whether you know the 10-micron short-root-net exception, a specific edge case that pure fanout-based reasoning about root-net classification would miss.
Practical Example
Debug Scenario: A net with fanout well under the configured -root_ndr_fanout_limit is still showing internal-net NDR constraints instead of root-net ones. Checking its physical length reveals it's only 6 microns -- under the 10-micron threshold that forces internal-net treatment regardless of fanout qualification.
Physical Design & Planning Handbook
Master ASIC Physical Design Planning & Floorplanning
Dive into 14 comprehensive chapters covering netlist sanity, FinFET grids, macro placement, power grids, CTS, and timing budgeting.
Continue practising