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.4k stars 492 forks source link

mpl2: post-annealing step to push macros to boundaries #4991

Closed AcKoucher closed 1 month ago

AcKoucher commented 1 month ago

#1930 showed that we actually don't allow different x & y coordinates for macro placement halos in mpl2, so #1933 was opened.

When I was testing the distinct x & y halos for mock-array's test case used in #4085, two problems came up:

This PR is to change the alignHardMacroGlobal function by a new step in mpl2 that happens before we improve orientation. Basically, we push macros that are close enough to the boundaries if:

  1. They don't overlap with blockages generated for Pin Access
  2. They don't overlap with other macros
  3. Pushing won't destroy the shape of an array of macros.
AcKoucher commented 1 month ago

It looks like there's something going on with clang-tidy.

maliberty commented 1 month ago

secure ci?

AcKoucher commented 1 month ago

I started a secure-ci

maliberty commented 1 month ago

@osamahammad21 this comes with one new drc in ca53 but it seems to be just a case of perturbing things happens to trigger a routing issue. I don't see a problem in the macro placement so I'll ask you to look at it but don't want to hold this PR for it.