The-OpenROAD-Project / OpenROAD

OpenROAD's unified application implementing an RTL-to-GDS Flow. Documentation at https://openroad.readthedocs.io/en/latest/
https://theopenroadproject.org/
BSD 3-Clause "New" or "Revised" License
1.62k stars 561 forks source link

mpl2: ensure that sa converges if a valid result was generated at any point #6090

Closed AcKoucher closed 2 weeks ago

AcKoucher commented 2 weeks ago

Resolves #5996, Resolves #6031, Resolves #6055.

When I implemented #5908 I missed one fundamental thing: the cluster placement result (and all the other SoftMacro annealing results) is not just the sequence pair itself but rather a combination of the sequence pair along with the specific shapes chosen during a perturbation iteration. I.e., the same sequence pair can represent different floorplan arrangements depending on the clusters' shapes.

As this only applies for SoftMacro annealing, even though the logic for storing the best valid result happens inside the base class SimulatedAnnealingCore, we can only actually use that result in the derived SACoreSoftMacro, because we need SoftMacro APIs to set the shapes that we cached. Because of that, I thought it was time to also remove the methods for floorplan centralization (which are cluster placement specific) from the base class as well.

The SoftMacro annealing result now consists of both a sequence pair and the shapes of that floorplan arrangement.

github-actions[bot] commented 2 weeks ago

clang-tidy review says "All clean, LGTM! :+1:"

AcKoucher commented 2 weeks ago

Running secure-ci.

rovinski commented 2 weeks ago

Great PR message đź‘Ť Really helps with clarity and understanding.

AcKoucher commented 2 weeks ago

I'm glad it's helpful :)

AcKoucher commented 2 weeks ago

Secure-CI is fine.

github-actions[bot] commented 2 weeks ago

clang-tidy review says "All clean, LGTM! :+1:"