Skip to content

rsz: try to upsize driver when repairing load slew#10181

Open
TheMightyDuckOfDoom wants to merge 4 commits intoThe-OpenROAD-Project:masterfrom
TheMightyDuckOfDoom:rsz-repair-load-upsize-driver
Open

rsz: try to upsize driver when repairing load slew#10181
TheMightyDuckOfDoom wants to merge 4 commits intoThe-OpenROAD-Project:masterfrom
TheMightyDuckOfDoom:rsz-repair-load-upsize-driver

Conversation

@TheMightyDuckOfDoom
Copy link
Copy Markdown
Contributor

Previously drivers were only resized to fix slew violations at the driver pin.
Now for load slew violations we first try to upsize the driver before falling back to inserting buffers.

This significantly reduces the number of buffers required.
In some of our test this almost halved the number of buffers from 20k down to 11k.

Additionally buffers created by repairNetWire now have a name dependant on their reason, similar to repairNetJunc.

Regression tests have been updated.

Copy link
Copy Markdown
Contributor

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

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 enhances the design repair process by introducing driver upsizing as an alternative to buffer insertion for resolving slew and capacitance violations. Key changes include the implementation of tryUpsizeDriver, which evaluates swappable cells to find stronger drivers, and its integration into the repairNetWire and repairNetJunc workflows. Feedback suggests improving the accuracy of the slew fix by recalculating load_slew using the Elmore model after an upsize. Additionally, performance optimizations are recommended for the driver selection logic, specifically pre-calculating drive resistances before sorting candidate cells and implementing an early break in the search loop once slew requirements are exceeded.

Comment thread src/rsz/src/RepairDesign.cc Outdated
Comment thread src/rsz/src/RepairDesign.cc Outdated
Comment thread src/rsz/src/RepairDesign.cc Outdated
Copy link
Copy Markdown
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

clang-tidy made some suggestions

Comment thread src/rsz/src/RepairDesign.cc Outdated
Comment thread src/rsz/src/RepairDesign.cc Outdated
Comment thread src/rsz/src/RepairDesign.hh Outdated
Comment thread src/rsz/src/RepairDesign.hh Outdated
Comment thread src/rsz/src/RepairDesign.hh Outdated
Buffers created by repairNetWire now have a name dependant on their reason, similar to repairNetJunc

Signed-off-by: Tobias Senti <git@tsenti.li>
@TheMightyDuckOfDoom TheMightyDuckOfDoom force-pushed the rsz-repair-load-upsize-driver branch from c147750 to 35398eb Compare April 18, 2026 14:20
Copy link
Copy Markdown
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

clang-tidy made some suggestions

Comment thread src/rsz/src/RepairDesign.cc Outdated
Comment thread src/rsz/src/RepairDesign.cc Outdated
Comment thread src/rsz/src/RepairDesign.cc Outdated
Comment thread src/rsz/src/RepairDesign.hh Outdated
Comment thread src/rsz/src/RepairDesign.hh
Comment thread src/rsz/src/RepairDesign.hh
@maliberty maliberty requested a review from precisionmoon April 18, 2026 14:50
@maliberty
Copy link
Copy Markdown
Member

Thanks for the PR, it sounds like a great result.

@TheMightyDuckOfDoom
Copy link
Copy Markdown
Contributor Author

I'm currently trying to fix all the clang-tidy issues and regression tests.

I'll let you know once it is ready.

@github-actions
Copy link
Copy Markdown
Contributor

clang-tidy review says "All clean, LGTM! 👍"

Signed-off-by: Tobias Senti <git@tsenti.li>
@TheMightyDuckOfDoom TheMightyDuckOfDoom force-pushed the rsz-repair-load-upsize-driver branch from b1adc4b to b91521b Compare April 18, 2026 18:34
@github-actions
Copy link
Copy Markdown
Contributor

clang-tidy review says "All clean, LGTM! 👍"

Signed-off-by: Tobias Senti <git@tsenti.li>
@TheMightyDuckOfDoom TheMightyDuckOfDoom force-pushed the rsz-repair-load-upsize-driver branch from b91521b to 77ec49f Compare April 19, 2026 08:55
@github-actions
Copy link
Copy Markdown
Contributor

clang-tidy review says "All clean, LGTM! 👍"

@TheMightyDuckOfDoom
Copy link
Copy Markdown
Contributor Author

@maliberty @precisionmoon
This is now ready for review.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants