dpl: modify negotiation drc penalty and debug mode options#10681
dpl: modify negotiation drc penalty and debug mode options#10681gudeh wants to merge 16 commits into
Conversation
stop every iteration on iterative mode, include stop on final state, introduce iterative_jump to stop at desired iteration Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
…oves in grey, track current-iter movers Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
…sites, print table similar to gpl with controled number of lines, less verbose, rename overflow to violations Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
this fix a debug visualization bug, also rename some functions for better clarity Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
include more debug info for stuck cells Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
There was a problem hiding this comment.
Code Review
This pull request introduces configurable search windows and DRC penalties for the NegotiationLegalizer, adds new debugging parameters, and integrates a GUI chart to visualize legalization progress. Feedback on the changes highlights two issues: a logic bug in findBestLocation that causes stuck cells to be double-counted when no valid candidate is found, and an overly restrictive TCL validation check on -iterative_start that incorrectly rejects the valid value of 0.
| set iterative_start 0 | ||
| if { [info exists keys(-iterative_start)] } { | ||
| set iterative_start $keys(-iterative_start) | ||
| sta::check_positive_integer "-iterative_start" $iterative_start | ||
| } |
There was a problem hiding this comment.
The -iterative_start option specifies the iteration from which debugging/visualization should start. The default value is 0 (start from the very first iteration), and Opendp::setNegotiationDebugStart explicitly clamps the value to std::max(0, iterative_start), making 0 a perfectly valid value.
However, using sta::check_positive_integer on -iterative_start will reject 0 as an invalid value, preventing users from explicitly specifying -iterative_start 0 in their scripts. Using sta::check_integer and manually verifying that the value is non-negative is a more robust approach.
set iterative_start 0
if { [info exists keys(-iterative_start)] } {
set iterative_start $keys(-iterative_start)
sta::check_integer "-iterative_start" $iterative_start
if { $iterative_start < 0 } {
sta::error DPL 33 "-iterative_start must be non-negative"
}
}
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
|
@codex review |
|
This one includes a parametrization of the search window because there was some overlap with code change on the DRC penalty. There should be another PR after this one to make the search window dynamically adjustable with the instance size. The base value should be the one modifiable by TCL |
|
Codex Review: Didn't find any major issues. Bravo. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@gudeh Please check clang-tidy and bazel unit tests failures. |
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
…e should be added on a future PR Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Summary
Modify default DRC penalty value. Parametrize search window range and DRC penalty. A few debug mode changes. Some variables renamings.
Functional changes:
Tunable DRC penalty. Modifiable via the new -drc_penalty option; default is kDrcPenalty = 5.0. Reduce the previous default DRC penalty relative to the previous hardcoded value of 1000. This means we allow for DRCs occurrences during initial negotiation iterations, while solving them on later iterations.
New TCL options:
Debug / visualization
Reporting
Type of Change
Impact
The previous behavior of focusing on DRCs at initial iterations when there are multiple overlaps does not make sense. DRCs should be solved later on.
At least one private design wasn't converging because of this.
Verification
./etc/Build.sh).Related Issues
This is one of multiple PRs splitting up PR #10226 to make Negotiation the default algorithm at DPL.