IntermediateQuestion 66 of 112Source: Synopsys PrimeTime User Guide: Case and Mode Analysis

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 Reference DiagramWhy does a set_case_analysis value set directly on a pin win over one set on its driver?
A mode-select port propagating a new logic value through combinational logic toward a downstream enable pin, with a stale direct set_case_analysis command on that pin blocking the propagated value from taking effect.

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_analysis commands 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_analysis value 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_analysis command 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

Get the complete 10-chapter STA handbook covering setup/hold margins, clock modeling, OCV/POCV, crosstalk noise, and PrimeTime closure.

Static Timing Analysis (STA) Handbook โ€” ten chaptersSTA HandbookTen chapters on setup, hold, OCV, and PrimeTime signoff. โ†’