Why might report_mode show a mode ENABLED with Reason default even though you set case analysis intending to disable it?
From PDVerse STA Mentor Guide, part of the pdVerse Mentor Guide
Short Answer
Reason default describes the selection mechanism, not the mode - it means nothing actively chose or excluded that mode, so it fell back to the group's default state. That is the tell that your intended set_case_analysis never actually reached, or never satisfied, the mode's controlling condition.
Technical Explanation
- What "Reason default" actually says. It is a statement about the selection mechanism, not the mode itself: nothing actively chose or excluded this mode, so it fell back to the mode group's default (all-enabled) state.
- First likely cause: the constant never crossed a sequential cell. The value may have needed to propagate through a flip-flop to reach the mode's controlling condition, and sequential propagation defaults to never - so the mode-select condition was never actually evaluated as false.
- Second likely cause: wrong pin, wrong hierarchy. A typo or a hierarchy mistake in the object list means the constant landed somewhere other than the pin the mode's
whenorsdf_condcondition is actually watching. - Third likely cause: wrong group entirely. The mode you intended to disable belongs to a different mode group than you assumed - groups are independent, so selecting a mode in one group has zero effect on a mode in another.
- Fourth likely cause: a higher-precedence override. The value was overridden by a direct
set_mode(PT) command, or by another value with higher precedence than the case-analysis constant you set. - Why "default" is the useful tell. Whichever of the four it is, seeing "default" instead of an active reason confirms your intended selection never took effect - it's the signal to go check, not to assume something else is wrong.
- The cross-check sequence.
report_case_analysis(PT) shows whether the value landed on the right pin at all.report_disable_timing(PT) shows what actually got disabled. The mode's Liberty (LIB) condition shows what value it was watching for in the first place.
Common Mistake
- Reading "ENABLED, Reason: default" as a tool inconsistency or bug report, instead of recognizing it as diagnostic information pointing at one of four specific, checkable causes.
- Re-applying the same
set_case_analysis(SDC) command a second time hoping it "takes" on a retry, when the underlying reason - a wrong pin, a wrong group, or missing sequential propagation - won't change no matter how many times the same command runs. - Cost: a mode assumed disabled continuing to be fully timed and analyzed, wasting runtime and potentially masking or duplicating real violations under a mode that should never have been active.
Follow-up Question & Model Response
You've confirmed the case-analysis constant landed on the correct pin via report_case_analysis, and sequential propagation is enabled where needed. The mode still shows default. What's the remaining check?
Candidate Model Response: With the pin and propagation both confirmed correct, the remaining check is whether the mode actually belongs to the group you assumed it did - mode groups are independent, so a correctly-set constant that controls a mode in a different group has no bearing on the one you're checking. I'd also check for a higher-precedence override, specifically whether a direct set_mode command elsewhere in the script or a later SDC statement is overriding the case-analysis-derived value. Between those two, a mismatched group is the more common cause in practice, since it's an easy assumption to get wrong on a design with several independent mode groups defined in the library.
Practical Example
A design has two independent Liberty mode groups: power_mode and test_mode. An engineer sets set_case_analysis 1 [get_pins core/LOW_POWER] intending to disable the retention mode, which they assume lives in power_mode. report_mode (PT), scanned for the power_mode group's rows, shows retention still ENABLED, Reason: default. report_case_analysis confirms the constant landed correctly on core/LOW_POWER. The remaining check reveals retention actually belongs to test_mode, a separate group the constant never touches - selecting it in the correct group, test_mode, resolves the mode to disabled with Reason: cond.
Complete STA Handbook
Master Signoff-Ready Static Timing Analysis
Get the complete 10-chapter STA handbook covering setup/hold margins, clock modeling, OCV/POCV, crosstalk noise, and PrimeTime closure.
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.

Continue practising