Why does a set_case_analysis value set directly on a pin win over one set on its driver?
From PDVerse STA Mentor Guide ยท pdVerse Mentor Guide
Short Answer
The tool applies a fixed priority order whenever two case analysis settings conflict on the same object: a value set directly on a pin or port always overrides a value that merely propagates to it from an upstream driver. This lets a designer override a general upstream setting for one specific downstream pin without having to change the upstream setting itself.
Technical Explanation
Case analysis values can come from two places on the same pin โ a direct set_case_analysis command, or propagation forward from an upstream constant โ and the tool needs a rule to pick a winner.
- Direct beats propagated, unconditionally. A
set_case_analysis(SDC) value applied straight to a pin or port always takes priority over a conflicting value that only reached that pin by propagating through combinational logic from somewhere upstream. - Newer beats older, on the same object. If two direct
set_case_analysiscommands target the exact same pin, the one issued later in the constraint file wins, so command order in the SDC file matters. - A
set_case_analysisvalue beats a built-in constant. If the netlist itself ties a pin to a constant โ for example in the Verilog source โ an explicit case analysis command on that pin still overrides the netlist-level constant. - Among propagated values only, logic 0 wins first, then
static, then logic 1. This tie-break only matters when nothing was set directly and two different constants are propagating in from different directions. - Why the direct-wins rule is useful: it lets a designer set one broad upstream case analysis value โ say, for a whole test mode โ then locally override just one downstream pin that genuinely behaves differently, without touching the broad setting.
- The risk is an unintended override. If a downstream direct setting was written for an old netlist version and is now stale, it can silently override a newer, correct upstream propagated value without any error being reported.
Common Mistake
The Trap: forgetting that a direct case analysis setting from an old constraint file still overrides a newer, correct value that would otherwise propagate in from upstream.
- A designer updates an upstream mode-select pin's case analysis value to reflect a new test mode, expecting it to propagate to every downstream pin it feeds.
- One downstream pin still carries a leftover direct
set_case_analysiscommand from an earlier project phase, which silently overrides the new upstream value and keeps the tool analyzing the old, incorrect configuration on that one pin.
Follow-up Question & Model Response
You change an upstream mode-select pin's case analysis value, but one downstream gate still reports the old configuration. What's the first thing you would check?
Candidate Model Response: I would check whether that specific downstream pin has its own direct set_case_analysis command somewhere in the constraint set, since a direct setting always overrides a propagated one regardless of how the upstream value changed. I would search the SDC files for that pin's exact name rather than assuming the upstream change should have reached it automatically. If I found a stale direct setting left over from an earlier design phase, I would remove it so the pin goes back to inheriting the correct, current value from upstream, and I would re-run the analysis to confirm the downstream logic now reflects the new mode.
Practical Example
An upstream mode_sel port is set with set_case_analysis 1 [get_ports mode_sel] (SDC), which should propagate a logic-1 value through several levels of combinational logic to a downstream enable pin, U5/EN. A leftover command from an earlier project phase, set_case_analysis 0 [get_pins U5/EN], still sits in the constraint file and directly overrides the propagated value. report_timing (PT) continues to show the branch gated by U5/EN as excluded, even after mode_sel changes, until the team greps the SDC files for U5/EN, finds the stale direct command, and removes it.
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.

Continue practising