BeginnerQuestion 143 of 157Source: Synopsys PrimeTime User Guide: Timing Paths and Exceptions; Synopsys ICC2 Timing Analysis User Guide: Creating Path Groups

Why split timing into path groups, and how do you read per-group results?

From PDVerse PnR Interview Handbook ยท pdVerse Mentor Guide

Short Answer

Path groups split a block's timing into buckets so one bad bucket cannot hide the others. By default each clock gets a group, and you add your own with group_path (SDC), commonly reg2reg, in2reg, reg2out and in2out. Read WNS, TNS and the violating-path count per group, because each group points at a different owner and fix.

Technical Reference DiagramWhy split timing into path groups, and how do you read per-group results?
A table splitting one clock group's WNS, TNS and violating-path count into reg2reg, in2reg and to_out rows, with the in2reg row marked red as the group that carries most of the TNS.

Technical Explanation

  • PrimeTime creates a path group each time create_clock (SDC) defines a clock, and a path goes to the group of the clock that captures it. PT also creates clock_gating_default, async_default and default, the last one for constrained paths that fit nowhere else. ICC2 does the same: one group per clock plus default for paths such as feedthroughs and asynchronous paths.
  • Clock groups mix very different paths: core reg2reg paths, in2reg paths set by an input budget and reg2out paths set by an output budget, so one WNS number can hide three problems.
  • group_path -name <g> -to <endpoints> (SDC) creates a user group or adds paths to an existing one. The ICC2 Timing Analysis guide also documents -from and -through, which is how reg2reg, in2reg and in2out are split by startpoint; the PT guide's example shows only -name and -to.
  • For each group take three numbers: WNS (the worst slack), TNS (the sum of negative endpoint slack) and the number of violating paths. report_qor (PT) summarizes timing per group, and report_timing -group <g> (PT) shows the worst paths of one group only.
  • Each group points at an owner. reg2reg violations belong to core logic and placement. in2reg and reg2out violations often trace back to the budgets in set_input_delay (SDC) and set_output_delay (SDC), and in2out paths are pure feedthroughs that may belong to the parent level.
  • ICC2 also optimizes each group separately, so one badly failing group does not take all the effort. How weights set that priority is a separate question.
  • Naming trap: PT lists groups with report_path_group (PT), singular, and ICC2 documents report_path_groups (ICC2), plural. In ICC2, group_path -default (ICC2) moves paths back to their default group.

What To Check

  • The group list: every clock has a group and the user groups exist in both tools.
  • WNS, TNS and violating-path count per group, for setup and for hold.
  • Which group carries most of the TNS, since that names the owner.
  • The size of default: a large or violating default group often means missing clocks or missing I/O constraints.
  • Endpoints reached by two clocks, which appear in two groups but count once in PT's default union TNS.

Command Checks & Actions

SDC (PrimeTime and ICC2)group_path -name to_out -to [all_outputs]

Puts every path ending at an output port into its own group.

ICC2 (icc2_shell)group_path -name reg2reg -from [all_registers] -to [all_registers]

Creates the register-to-register group.

ICC2 (icc2_shell)group_path -name in2reg -from [all_inputs] -to [all_registers]

Creates the input-to-register group.

ICC2 (icc2_shell)report_path_groups

Lists ICC2 path groups.

PrimeTime (pt_shell)report_path_group

Lists PT path groups.

PrimeTime (pt_shell)report_qor

Prints worst slack, TNS and violating paths for each path group.

PrimeTime (pt_shell)report_timing -max_paths 2 -group to_out

Shows the worst paths of one group without the others crowding them out.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Every group has WNS at or above 0 ps and no violating paths at signoff, and default holds only the few paths you expect.
  • Suspicious (illustrative): reg2reg at WNS โˆ’35 ps over 40 paths while in2reg carries TNS โˆ’6 ns over 900 endpoints, which usually means an input budget problem.
  • Hard stop: Real functional paths reported as unconstrained, or thousands of in2reg violations traced to a wrong set_input_delay (SDC). Fix the constraints before any ECO.

Common Mistake

The Trap: Creating the groups only in the ICC2 run script and not in the PrimeTime constraints. PT then reports everything by clock, the reg2out problem the block owner flagged is buried in the core clock group, and a day goes into arguing about numbers that were never grouped the same way.

What The Interviewer Is Testing

  • Knowing that the default grouping is by capture clock, not by path type.
  • Can you turn per-group WNS and TNS into an owner and a next action?
  • Noticing the singular and plural report names.

Follow-up Question & Model Response

"Why might in2reg show large TNS while reg2reg looks almost clean?"

Candidate Model Response: An in2reg path starts at an input port, so its arrival is the input delay from set_input_delay (SDC) plus the logic inside the block. If that budget was copied from an old spec or takes most of the period, the paths fail however good placement is. I would check the input delay values first, then the first stage after the port. Only if the budget is agreed and still fails would I size or buffer the internal logic.

Practical Example

Tapeout Scenario: A block with one 800 ps clock first reports one group: WNS โˆ’62 ps, TNS โˆ’41.3 ns over 1,120 violating paths (illustrative). After splitting it, report_qor (ICC2) shows reg2reg at WNS โˆ’18 ps, TNS โˆ’0.4 ns over 35 paths, in2reg at WNS โˆ’62 ps, TNS โˆ’39.8 ns over 1,040 paths, and to_out at WNS โˆ’38 ps, TNS โˆ’1.1 ns over 45 paths. The input delay turns out to be 600 ps of the 800 ps period. At the agreed 450 ps, in2reg gains 150 ps and is clean (worst +88 ps); reg2reg and to_out need an ECO.

PnR Flow Mentor Guide

Read the complete 8-chapter PnR Flow Mentor Guide free on the web โ€” library setup through placement, clock tree synthesis, routing, chip finishing, hierarchical implementation, and ECO, all the way to stream-out.

PnR Flow Physical Design Mentor Guide โ€” eight chaptersPnR Flow Mentor GuideEight chapters, library setup through to stream-out. โ†’