rsz: try to upsize driver when repairing load slew#10181
rsz: try to upsize driver when repairing load slew#10181TheMightyDuckOfDoom wants to merge 4 commits intoThe-OpenROAD-Project:masterfrom
Conversation
There was a problem hiding this comment.
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.
Buffers created by repairNetWire now have a name dependant on their reason, similar to repairNetJunc Signed-off-by: Tobias Senti <git@tsenti.li>
c147750 to
35398eb
Compare
|
Thanks for the PR, it sounds like a great result. |
|
I'm currently trying to fix all the clang-tidy issues and regression tests. I'll let you know once it is ready. |
Signed-off-by: Tobias Senti <git@tsenti.li>
|
clang-tidy review says "All clean, LGTM! 👍" |
Signed-off-by: Tobias Senti <git@tsenti.li>
b1adc4b to
b91521b
Compare
|
clang-tidy review says "All clean, LGTM! 👍" |
Signed-off-by: Tobias Senti <git@tsenti.li>
b91521b to
77ec49f
Compare
|
clang-tidy review says "All clean, LGTM! 👍" |
|
@maliberty @precisionmoon |
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.