ExpertQuestion 14 of 69

What options does PrimeTime provide for filtering and reporting specific timing paths (through/from/to, nworst, path tagging), and why would you use path tagging for exhaustive PBA?

From PDVerse STA Mentor Guide, part of the pdVerse Mentor Guide

Short Answer

report_timing offers point-based filtering with -from, -to, and multiple -through arguments (order matters โ€” each -through is matched in sequence), count-based filtering with -nworst and -max_paths, and slack-based filtering with -slack_lesser_than. Path tagging is a separate feature: it marks a set of already-analyzed paths with a name, so a later exhaustive path-based analysis (PBA) run can skip re-analyzing paths already covered by an earlier, cheaper analysis mode, saving runtime on a technique that is otherwise expensive to run broadly.

Technical Reference DiagramWhat options does PrimeTime provide for filtering and reporting specific timing paths (through/from/to, nworst, path tagging), and why would you use path tagging for exhaustive PBA?

Technical Explanation

  • -from, -to, and -through [PrimeTime: PT, on report_timing] scope which paths get reported by their pins, cells, ports, or clocks; multiple -through arguments in one command chain in the order given โ€” report_timing -from A1 -through B1 -through C1 -to D1 (PT) means a path from A1 through B1, then through C1, in that order, ending at D1, not through C1 then B1.
  • Giving a -through argument a list, such as -through {B1 B2}, means the path passes through either B1 or B2 at that stage of the chain โ€” this is an OR within one -through slot, while separate -through arguments are ANDed in sequence.
  • -rise_from, -fall_from, -rise_to, -fall_through, and similar edge-qualified variants (PT) restrict reporting to only rising or only falling transitions at that point, useful when a design's worst case is known to depend on a specific edge polarity.
  • -nworst N (PT) reports the N worst paths per endpoint, and -max_paths N (PT) caps the total number of paths reported across all endpoints combined โ€” the two compose, so -nworst 10 -max_paths 15 reports up to 10 worst paths per endpoint but stops at 15 total.
  • -slack_lesser_than (PT) filters to only paths whose slack is below a stated threshold, letting a report focus on genuinely marginal or violating paths instead of scrolling past comfortably-met ones.
  • Path tagging is enabled with enable_path_tagging (PT) set to true (default false), and create_path_tag_set (PT) creates a named set of paths that have already been analyzed at a given confidence level; report_path_tag_set (PT) reports how many paths a given tag set contains.
  • Exhaustive PBA [PrimeTime: -pba_mode exhaustive, PT, usable with report_timing or get_timing_paths] re-times every specific path with real, path-specific delays rather than the worst-case-per-stage graph-based estimate, which is far more accurate but also far more expensive to run broadly across a design; tagging lets successive exhaustive PBA runs skip paths a prior run already covered, so incremental signoff passes do not keep re-paying that cost on paths that have not changed.
  • What breaks: running exhaustive PBA repeatedly without path tagging on a large design re-analyzes the same already-confirmed paths every single pass, wasting runtime that tagging exists specifically to avoid.

Common Mistake

The Trap: assuming two -through arguments in one command mean "through either point, in any order," the same way a list inside a single -through does.

  • -through B1 -through C1 requires the path to pass through B1 first and then C1 โ€” reversing the design intent (C1 actually comes first physically) silently returns zero matching paths, which can be mistaken for "no such violating path exists" rather than "the through order in the command is backward."
  • Enabling exhaustive PBA broadly without path tagging on a large design, expecting it to simply be "more accurate" with an acceptable one-time cost, ignores that the cost repeats on every subsequent signoff iteration unless tagging is used to skip already-analyzed paths.

Follow-up Question & Model Response

"A report_timing -through B1 -through C1 command that should match a known path returns nothing. Before assuming the path was fixed, what would you check?"

Candidate Model Response: I would first check whether the physical order of B1 and C1 along the real path matches the order given in the command, since -through arguments are matched in sequence and a reversed order returns no match even though a path genuinely passes through both points. I would also confirm B1 and C1 are specified precisely enough โ€” a pin versus a cell reference can behave differently in the match โ€” before concluding the path itself no longer exists in the design.

Practical Example

Worked case: to find the 5 worst violating paths overall on a design, report_timing -slack_lesser_than 0 -max_paths 5 (PT) filters straight to failing paths and caps the list. To confirm a specific bus-arbitration path is genuinely the worst behind two known mux stages, report_timing -from ARB/req -through MUX1/Z -through MUX2/Z -to ARB/grant -nworst 3 (PT) requires the physical order MUX1 then MUX2 and reports the 3 worst instances of that exact path shape. For a full signoff pass, enable_path_tagging true followed by create_path_tag_set [get_timing_paths -pba_mode exhaustive -slack_lesser_than 50] -name signoff_pass1 (PT) tags every path re-timed in this exhaustive pass so a later incremental exhaustive PBA run can skip them if nothing upstream changed.

Complete STA Handbook

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.

See what's inside the bundle
Static Timing Analysis (STA) Handbook โ€” ten chaptersSTA HandbookTen chapters on setup, hold, OCV, and PrimeTime signoff.