-
Notifications
You must be signed in to change notification settings - Fork 732
rmp: Simulated annealing #8437
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
rmp: Simulated annealing #8437
Conversation
d320176 to
7024860
Compare
|
clang-tidy review says "All clean, LGTM! 👍" |
1 similar comment
|
clang-tidy review says "All clean, LGTM! 👍" |
|
Please share results showing the effectiveness of this change. |
7024860 to
56cddd0
Compare
|
clang-tidy review says "All clean, LGTM! 👍" |
povik
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One request for rewording the documentation. The rest are nits or have to do with pre-existing code
src/rmp/README.md
Outdated
| | `-corner` | Process corner to use. | | ||
| | `-slack_threshold` | Specifies a (setup) timing slack value below which timing paths need to be analyzed for restructuring. The default value is `0`, and the allowed values are floats `[0, MAX_FLOAT]`. | | ||
| | `-seed` | Seed to use for randomness in simulated annealing. | | ||
| | `-temp` | Initial temperature for simulated annealing. The default is the required of the worst slack path. | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this the required arrival time on the endpoint for the worst slack path?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Based on the code it is. I think it would be good to say it's the required time on the endpoint in the description.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It think users will find required time to be a strange way to express their intent.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@maliberty They're specifying temperature but the default value for it is taken from the required time at the end of the worst path.
| for (sta::Vertex* vertex : *sta->endpoints()) { | ||
| sta::Pin* pin = vertex->pin(); | ||
| sta::PortDirection* direction = network->direction(vertex->pin()); | ||
| if (!direction->isInput()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's the reason for this check? I think we disqualify top module outputs here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see this is code moved from elsewhere but still I wonder about the purpose of the check
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@QuantamHD Do you know?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe this was to defend against endpoints that are unconstrained. It's probably overly simplistic.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's not the right check
|
clang-tidy review says "All clean, LGTM! 👍" |
1 similar comment
|
clang-tidy review says "All clean, LGTM! 👍" |
88ddf1e to
5f4ef6b
Compare
|
clang-tidy review says "All clean, LGTM! 👍" |
povik
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Codewise this looks fine
|
clang-tidy review says "All clean, LGTM! 👍" |
725c336 to
41cbfd0
Compare
|
clang-tidy review says "All clean, LGTM! 👍" |
1 similar comment
|
clang-tidy review says "All clean, LGTM! 👍" |
41cbfd0 to
3383d74
Compare
|
clang-tidy review says "All clean, LGTM! 👍" |
|
Please merge master which should fix the test failure |
src/rmp/src/annealing_strategy.cpp
Outdated
|
|
||
| // GIA ops as lambdas | ||
| // All the magic numbers are defaults from abc/src/base/abci/abc.c | ||
| // Or from the ORFS qbc_speed script |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| // Or from the ORFS qbc_speed script | |
| // Or from the ORFS abc_speed script |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
src/rmp/src/annealing_strategy.cpp
Outdated
| worse_iters = 0; | ||
| } | ||
|
|
||
| if (i > 0 && (i + 1) % 10 == 0) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Redundant - if i == 0 then (i + 1) % 10 != 0 so no need to check i > 0
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
Signed-off-by: Krzysztof Bieganski <[email protected]>
Signed-off-by: Krzysztof Bieganski <[email protected]>
Signed-off-by: Krzysztof Bieganski <[email protected]>
Signed-off-by: Krzysztof Bieganski <[email protected]>
Signed-off-by: Krzysztof Bieganski <[email protected]>
Signed-off-by: Krzysztof Bieganski <[email protected]>
Signed-off-by: Krzysztof Bieganski <[email protected]>
Signed-off-by: Krzysztof Bieganski <[email protected]>
Signed-off-by: Krzysztof Bieganski <[email protected]>
Signed-off-by: Krzysztof Bieganski <[email protected]>
I give up Signed-off-by: Krzysztof Bieganski <[email protected]>
Signed-off-by: Krzysztof Bieganski <[email protected]>
Signed-off-by: Krzysztof Bieganski <[email protected]>
Signed-off-by: Ryszard Rozak <[email protected]>
3383d74 to
39e886e
Compare
Signed-off-by: Ryszard Rozak <[email protected]>
|
clang-tidy review says "All clean, LGTM! 👍" |
1 similar comment
|
clang-tidy review says "All clean, LGTM! 👍" |
|
I didn't want to hold this PR up further but I think it would be good to add and eqy step to prove equivalence. |
|
Could you tell how it should be added? I wanted to add similar commands to tests we added in this PR and put the annealing between them: OpenROAD/src/rsz/test/eqy_repair_setup2.tcl Lines 14 to 15 in 75f3458
Unfortunately it hangs. I also tried to run eqy_repair_setup2.tcl with EQUIVALENCE_CHECK env variable set to 1 and it didn't complete in 17h.
|
|
I have no expertise with those tools and find them obscure. I suggest asking on their GH for help. |
New resynthesis strategy for
rmp.It searches for an ABC script that improves timing via simulated annealing.
The script is a series of operations on ABC's internal AIG data structure.
A neighboring solution is a script with one operation added, removed, or two operations swapped.
The optimization function is defined as the worst slack.