-
Notifications
You must be signed in to change notification settings - Fork 578
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
rsz: repairSetup: Restrict number of repairs per iteration #6244
base: master
Are you sure you want to change the base?
rsz: repairSetup: Restrict number of repairs per iteration #6244
Conversation
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.
clang-tidy made some suggestions
42405ec
to
0ec2fc5
Compare
clang-tidy review says "All clean, LGTM! 👍" |
0ec2fc5
to
3a8e562
Compare
clang-tidy review says "All clean, LGTM! 👍" |
…alling into local optimums Signed-off-by: Eryk Szpotanski <[email protected]>
Signed-off-by: Eryk Szpotanski <[email protected]>
3a8e562
to
98b133b
Compare
clang-tidy review says "All clean, LGTM! 👍" |
@@ -311,6 +312,7 @@ repair_timing | |||
| `-skip_buffer_removal` | Flag to skip buffer removal. The default is to perform buffer removal transform during setup fixing. | | |||
| `-skip_last_gasp` | Flag to skip final ("last gasp") optimizations. The default is to perform greedy sizing at the end of optimization. | | |||
| `-repair_tns` | Percentage of violating endpoints to repair (0-100). When `tns_end_percent` is zero, only the worst endpoint is repaired. When `tns_end_percent` is 100 (default), all violating endpoints are repaired. | | |||
| `-max_passes_per_iter` | Max number of repairs per iteration for `rsz::repairSetup`. | |
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.
Give the default (20)
This PR changes the way
rsz::repairSetup
iterates over the violations. Instead of going one by one and trying to completely repair a violation, this PR introduces the maximum number of repairs per iteration.If a violation was not repaired, it goes back to the queue and algorithm proceeds to the violation with the worst slack.
This approach should minimize the probability of falling into local optimums, and potentially make fixing other violation easier. Base on the experiment, it can speedup the repairs which resolves all violations, from 6% and up to 25%:
Design:
ibex
, stage:2_1_floorplan
Design:
ibex
, stage4_1_cts
Design:
black_parrot
, stage:2_1_floorplan
Design:
black_parrot
, stage:4_1_cts
Design:
ariane133
, stage:2_1_floorplan
For stages where all violations are not resolved, it can increase the number of iterations and improve the slack:
Design:
aes
, stage:4_1_cts
Design:
ibex
, stage:5_1_grt
As results depends on max number of repairs per iteration, default value was set to 20 (usually ) and
-max_passes_per_iter
parameters was added forrepair_timing
to make it adjustable.