Open AcKoucher opened 2 weeks ago
@oharboe FYI
One additional thing: In this PR the halos generate the exact same macro placement as we'd get using manual macro placement (In your test PR there were some subtle differences). It was just a matter of using a more precise value. I made that to exclude the possibility of the macro placement to be the actual cause of the degradation we see in your test PR.
@maliberty Is running a separate secure-ci for the global placement without IOs.
I looked at the significant WNS regression:
[ERROR] finish__timing__setup__ws fail test: -91.4696 >= -6.93
io_lsbs_61 is a pipeliened signal from ces_7_5, i.e. top row that is driven all the way to the lower right corner with only a single flip flop for that entire path.
On master, the iolsbs* pins are placed in the middle on the right, which improves WNS by ca. 100ps on a clock period of 250ps.
@oharboe The changes here depend on not skipping global placement without IOs in the flow which is skipped on master for mock-array (we skip this stage when we have pin constraints). We'll need another PR for this skipping part. We're running a secure-ci for it separately, but there are some other issues regarding different designs which are being studied.
Resolve #1928,
Using #2020 to test mpl2 flow for mock-array showed some metrics degradation in both timing and WL caused by a group of IOs placed in a different location than we see on master:
When using manual macro placement, when we get to non-random pin placement stage in the flow, PPL has no information about the std cells position - because non of them are placed - so we luckily end up placing the problematic IO group in the center of the right boundary, because PPL uses as reference the center of the design when it finds no placed insts.
However, MPL2 does generate a temporary location for std cells in order to improve macros' orientations. These locations end up been seen by PPL which chooses a different position for the IO group changing upstream results leading to degradation.
A possible solution would be to not skip global placement without IOs when we have constraints for the pins as it is for mock-array. This way, PPL would have a better std cell location data to work with. Testing this showed that std cells get split based on the arrays' rows and so does the IO group (in the images zooming into the fourth row from bottom to top):
This improves WR and ws and we get no failures.
Master: