What is the difference between 'union' and 'every-group' TNS computation in report_global_timing, and why does this matter for DMSA (multi-scenario) results?
From PDVerse STA Mentor Guide · pdVerse Mentor Guide
Technical Explanation
The timing_report_union_tns variable controls whether Total Negative Slack is computed as a 'union' (true, the default) across overlapping violation categories or as 'every- group' (false), summing each group's violations separately, which changes the reported TNS magnitude especially when combining results across DMSA scenarios.
Timing-path Reasoning
Union-mode TNS avoids double-counting when a single endpoint's violation could be attributed to multiple overlapping reporting groups, giving one consolidated negativeslack total per endpoint. Every-group mode instead sums violations per group independently, which can inflate the aggregate TNS if the same underlying violation is counted once per group it belongs to. In a DMSA context, where report_global_timing works across distributed multi-scenario analysis and simultaneous multivoltage analysis results, the choice of union vs every-group determines whether the merged, crossscenario TNS reflects a true single worst-case-per-endpoint picture or an inflated pergroup-per-scenario sum.
Command
report_global_timing; set timing_report_union_tns true|falseSwitch-by-switch
timing_report_union_tns true selects union TNS computation (the default), avoiding
double-counting overlapping violation groups. timing_report_union_tns false selects
every-group TNS computation, summing each group's violations independently.Expected Result
With union mode, TNS reflects a de-duplicated, single accounting of each endpoint's worst violation; with every-group mode, TNS can be larger since overlapping groups each contribute their own count of the same underlying violation.
Failure Symptoms
A DMSA merged report showing surprisingly large TNS values compared to individual scenario reports may be a symptom of every-group double-counting rather than a genuinely worse design, if the variable is set to false.
Root Cause
Overlapping reporting categories/groups counting the same endpoint's violation multiple times when every-group mode is used instead of a de-duplicated union computation.
Mentor Note — Debugging Procedure
Check the current setting of timing_report_union_tns before comparing TNS numbers across single-scenario and DMSA merged reports, and recompute or compare with the variable set consistently to avoid misreading an artifact of doublecounting as a real regression. Union TNS (the default) gives a de-duplicated, per-endpoint worst-case total, while every-group TNS sums overlapping groups independently — a distinction that becomes especially consequential when merging results across DMSA scenarios, where inconsistent settings can make designs look artificially worse or better than they are.
Continue learning free
Get a practical low-power chapter
Receive the existing “Low Power and Multivoltage Fundamentals” PDF chapter and its download link by email.
Continue practising