mpl2: post-annealing step to push macros to boundaries
#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:
- The macros' locations inside the array were wrong (should be fixed by #4976)
- The array was getting split in two as mpl2 was trying to push the macros to the boundaries by a post-annealing function.
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:
- They don't overlap with blockages generated for Pin Access
- They don't overlap with other macros
- Pushing won't destroy the shape of an array of macros.
It looks like there's something going on with clang-tidy.
secure ci?
I started a secure-ci
@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.