Skip to content

Conversation

@AcKoucher
Copy link
Contributor

@AcKoucher AcKoucher commented Sep 19, 2025

Requires #8476, #8729 and #3504
Resolve #8343.

This PR is a combination of changes that was made in order to not mess CI results.

Alone, each of these changes either mess up clustering and blow up timing metrics in the CI or ends up in MPL throwing some error due to how we're handling connections evaluations. The following sections describe them separately.

Change Connection Evaluation Technique

The methods that evaluate connections between clusters and search for closely connected clusters were moved out of the Cluster class as they should be done by the ClusteringEngine itself.

A strong connection is now based on:

          connection weight A <--> B
------------------------------------------------- >= 0.08 (8% of all connections)
weight of A connections + weight of B connections

Weigh Nets with IO pins as Any Other Net

Currently, connections involving IO clusters are weighted much strongly than others. This makes the new connection evaluation technique unfeasible, because, when evaluating connections between clusters by looking at the connections' ratio, connections that don't involve IO clusters may be neglected as they're much weaker.

An example of the problem would be how MPL fails to group the 8x8 array macros when using the connections' ratio approach without the changes here.

Screenshot from 2025-09-22 12-04-11

(Obs: In the image, some coarse shaping iteration.)

Increase Perturbs per Step for Large Interconnected Arrays

Changing the weight of the IO Nets had significant impact in mock-array macro placement (placing macros of a macro cluster) result. The reason was that the very high weight of nets with IOs helped the annealer to place the external macros i.e., those connected with IOs on the edges making it easier to find the correct arrangement.

Now without those nets to help it was necessary to increase the amount of perturbation per step in the HardMacro SA for that specific case. This doesn't affect run time significantly.

@github-actions
Copy link
Contributor

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

@AcKoucher
Copy link
Contributor Author

Running Secure-CI.

@github-actions
Copy link
Contributor

github-actions bot commented Oct 3, 2025

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

@AcKoucher AcKoucher force-pushed the mpl-connection-by-ratio branch from b7eddf7 to b4b4029 Compare October 9, 2025 12:57
@AcKoucher
Copy link
Contributor Author

Apart from the check failures, this is waiting on #3566 and #8438.

@github-actions
Copy link
Contributor

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

@AcKoucher
Copy link
Contributor Author

Running new Secure-CI.

@AcKoucher
Copy link
Contributor Author

AcKoucher commented Oct 31, 2025

@eder-matheus As this PR became a combination of changes which contemplate a larger scope compared to the original version, I have been rebasing it instead of master-merging it.

I think that I will finally be able to get a clean Secure-CI run so I'm converting this back to a non-draft PR.

I'm re-running Secure-CI.

@AcKoucher AcKoucher marked this pull request as ready for review October 31, 2025 15:23
@github-actions
Copy link
Contributor

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

@oharboe
Copy link
Collaborator

oharboe commented Nov 5, 2025

@oharboe
Copy link
Collaborator

oharboe commented Nov 5, 2025

Or wait create/wait for a separate PR in OpenROAD to bump ORFS #8798 and merge master with this PR.

@AcKoucher
Copy link
Contributor Author

Thank you very much @oharboe !

@github-actions
Copy link
Contributor

github-actions bot commented Nov 5, 2025

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

1 similar comment
@github-actions
Copy link
Contributor

github-actions bot commented Nov 5, 2025

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

     of interconnected macros due to the new connections

Signed-off-by: Arthur Koucher <[email protected]>
     1) Evaluate connection between clusters based on connections'
        ratio instead of using a fixed threshold;
     2) Retire threshold for evaluating connections.

Signed-off-by: Arthur Koucher <[email protected]>
     mock-array convergence

Signed-off-by: Arthur Koucher <[email protected]>
        1) Don't take into account external connections when evaluating
           the connection signature between two clusters;
        2) Avoid considering the weight of the target connection twice
           when evaluating if that connection is a strong one.

Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
@AcKoucher AcKoucher force-pushed the mpl-connection-by-ratio branch from 4e8eab6 to 9bf5e36 Compare November 19, 2025 21:08
@github-actions
Copy link
Contributor

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

@AcKoucher
Copy link
Contributor Author

AcKoucher commented Nov 19, 2025

Running new Secure-CI after the sta update needed due to the failure in repair_tie_fanout that was happening because of an sta bug.

Copy link
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

@github-actions
Copy link
Contributor

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

@AcKoucher AcKoucher requested a review from maliberty November 20, 2025 15:15
@github-actions
Copy link
Contributor

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

@AcKoucher
Copy link
Contributor Author

This should be paired with The-OpenROAD-Project/OpenROAD-flow-scripts#3665.

@maliberty maliberty merged commit 6aa854f into The-OpenROAD-Project:master Nov 21, 2025
13 checks passed
@AcKoucher AcKoucher deleted the mpl-connection-by-ratio branch November 24, 2025 14:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

MPL should evaluate clusters' connections based on ratio

4 participants