Skip to content

cts.tcl: drop the 4_1_error.odb written when detailed placement fails - #4823

Open
oharboe wants to merge 2 commits into
The-OpenROAD-Project:masterfrom
oharboe:cts-no-error-odb
Open

oharboe wants to merge 2 commits into
The-OpenROAD-Project:masterfrom
oharboe:cts-no-error-odb

Conversation

@oharboe

@oharboe oharboe commented Nov 11, 2026 •

Copy link
Copy Markdown
Collaborator

Before, when detailed placement failed in CTS, cts.tcl caught the error, wrote 4_1_error.odb (and its .sdc), and raised the error again with a Detailed placement failed in CTS: prefix. It did this twice, once for each detailed_placement call.
Now detailed_placement fails with its own error, and the step fails with it.

This is the open question #4804 left for a separate pull request. The rationale is the same as #4804's:

  • A debug checkpoint is an ad-hoc edit now. Debugging happens in a fast loop, often by an AI: a checkpoint is one orfs_write_db line, added for the session and removed again. Nothing reads 4_1_error.odb: no make target, no OPEN_GUI_SHORTCUT, no test.
  • cts.tcl should say what CTS does. Ten lines of error plumbing around two calls hid that the step is CTS, then detailed placement, then repair and detailed placement again.
  • Fewer merge conflicts. Lines that are not part of the flow still collide with changes that are.

What changes

  • cts.tcl: both catch blocks around detailed_placement_helper are gone; the calls stand on their own.
  • EndpointSlackTracking.md named 4_1_error.odb as its example of an intermediate .odb that gets an endpoint slack snapshot. The example is now an ad-hoc checkpoint; *-failed ones still get none, as write_endpoint_slack skips them.

Not changed

docs/contrib/MakefileContract.md and TclContract.md say a failing step writes <step>-failed.odb and calls error, as global_place, detail_place, pdn and grt do. After this, CTS writes no failure .odb. It never wrote one under the contract's name either. Whether the rule stays, and CTS gets a 4_1_cts-failed.odb, or the other stages lose theirs the same way, is for a separate pull request.

Tested

On a successful run the step runs the same commands as before; only the failure path changes. tclint and tclfmt --check 0.7.0 pass on cts.tcl. I have not forced a detailed placement failure to see the new log. That, and the flow runs, are left to CI.

🤖 Generated with Claude Code

https://claude.ai/code/session_018PFLaD4tC97s5fueStBjHE

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request removes the CTS_SNAPSHOTS configuration variable and simplifies the CTS script by removing the save_progress procedure and its associated error-catching blocks. The documentation is updated to reflect these changes. The review feedback correctly identifies an inaccuracy in the updated documentation regarding *-failed snapshots, which are not actually created due to an early return in the underlying script, and provides a suggestion to correct it.

Comment thread docs/contrib/EndpointSlackTracking.md Resolved
detailed_placement fails with its own error, and the step fails with
it. The two catch blocks around it saved a debug checkpoint under a name
nothing reads; a checkpoint is now an ad-hoc orfs_write_db line added for
the session, and cts.tcl says only what CTS does.

EndpointSlackTracking.md named 4_1_error.odb as its example and said
*-failed .odb files get no snapshot; orfs_write_db snapshots every .odb
it writes, so it now says so.

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
write_endpoint_slack returns early for a *-failed step; the previous
commit said they get one. Any other .odb written through orfs_write_db,
an ad-hoc checkpoint among them, does.

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
@oharboe
oharboe marked this pull request as ready for review November 11, 2026 06:46
@oharboe
oharboe requested a review from maliberty November 11, 2026 06:47
@openroad-ci

openroad-ci commented Nov 11, 2026 •

Copy link
Copy Markdown
Member

🔍 QoR check

Metrics reflect the PR merge build — i.e. what will land on the target branch.

Commit 24b6ab1 · Jenkins build #3 · Baseline: build · View build on dashboard

62 design(s) checked — 0 with regression(s), 0 without a comparable baseline.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants