When do you run exhaustive PBA, and how do you keep it affordable?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
Run exhaustive PBA when graph-based violations are close enough that removing pessimism could clear them, and always for final signoff numbers. Keep it affordable by scoping it: search only failing paths with -slack_lesser_than, check with -pba_mode path first, and narrow to the groups or endpoints you need. Never waive a violation on ml_exhaustive results, because ML-PBA can miss worse paths and extra failing endpoints.
Technical Explanation
- Path mode recalculates the paths graph-based analysis picked without searching further, so its slack either matches a full search or is slightly optimistic. Exhaustive mode keeps searching until the returned paths are the worst after recalculation.
- The PT UG advice is to use exhaustive with
-slack_lesser_than, run it only when path mode shows slacks near the target, keep the scope specific, and settiming_report_use_worst_parallel_cell_arc(PT) to true. report_timing -pba_mode exhaustive -slack_lesser_than 0(PT) returning no paths means no violations.-max_pathsand-nworstcount at the end of the search, and a large-nworstraises runtime quickly.pba_exhaustive_endpoint_path_limit(PT) defaults to infinity, which is guaranteed to find the worst slack. An integer is faster when graph and path slacks already agree, but by default an endpoint that hits the limit drops out of the search with a UITE-480 warning.- ML-PBA is a subset of exhaustive. If it reports no violations, exhaustive agrees, but when it reports violations there may be worse paths and more endpoints, and the tool warns with UITE-647. It needs the endpoint limit at infinity and a PrimeTime-ADV-PLUS license.
- By default only the data portion is recalculated; clock paths are recalculated only with
pba_recalculate_full_path(PT) set to true. - Early on, cover-design reports with path-mode PBA find violations quickly; exhaustive is for signoff.
fix_eco_timing -pba_mode exhaustive(PT) fixes against recalculated slack, so no cells are spent on pessimism.
What To Check
- The gap between graph-based and path-mode slack on the worst paths.
- The endpoint limit setting and any UITE-480 warnings.
- UITE-647 warnings anywhere in a signoff log.
- Runtime per path group.
Command Checks & Actions
report_timing -pba_mode path -slack_lesser_than 0 -max_paths 200Quick look at how much recalculation helps.
report_timing -pba_mode exhaustive -slack_lesser_than 0Worst recalculated path per group; nothing reported means no violations.
report_timing -pba_mode exhaustive -nworst 1 -slack_lesser_than 0 -max_paths 1000Worst recalculated path to each violating endpoint.
set_app_var pba_exhaustive_endpoint_path_limit 25000Integer limit mode, faster when graph and path slacks already agree.
fix_eco_timing -type setup -pba_mode exhaustiveFixes against exhaustive recalculated slack.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Exhaustive PBA on 420 graph-based violators leaves 36, and the search finishes in under an hour.
- Suspicious (illustrative): UITE-480 limit warnings on dozens of endpoints, which left the search and are unverified.
- Hard stop: Any signoff waiver based on a log that contains UITE-647.
Common Mistake
The Trap: Running exhaustive PBA with -nworst 50 across the whole design on the first routed run. The search runs overnight, most paths fail by 50 ps so recalculation cannot save them, and the useful answer arrives a day late.
What The Interviewer Is Testing
- The three modes and ML-PBA's subset rule.
- Can you name the scoping levers and the endpoint limit behaviour?
Follow-up Question & Model Response
"Why is path-mode PBA not enough for signoff?"
Candidate Model Response: Path mode recalculates only the paths graph-based analysis already chose, with no further search. Another path to the same endpoint may have worse recalculated slack than the one ranked first, so path mode can be slightly optimistic. Exhaustive mode keeps searching until the returned paths are guaranteed to be the worst after recalculation. Signoff needs that guarantee.
Practical Example
Tapeout Scenario: Routed graph-based timing shows 420 violating endpoints with WNS -38 ps (illustrative). -pba_mode path on those paths shows 390 within 10 ps of passing, so exhaustive is worth running. report_timing -pba_mode exhaustive -slack_lesser_than 0 (PT) finishes in 40 minutes and leaves 36 endpoints with WNS -21 ps. An earlier ML-PBA run had reported 31, and the 5 extra endpoints, plus worse slack on 2 others, show why ML results are never waived. fix_eco_timing -type setup -pba_mode exhaustive (PT) then clears all 36.
PnR Flow Mentor Guide
Master the Physical Design Implementation Flow
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.

Continue practising