OpenROAD-flow-scripts icon indicating copy to clipboard operation
OpenROAD-flow-scripts copied to clipboard

[DO NOT MERGE] mock-array: use mpl2 to lay out array

Open oharboe opened this issue 10 months ago • 11 comments

@precisionmoon With macros place automatically in an array, the CTS skew is very large and I get hold violations:

[INFO RSZ-0046] Found 2952 endpoints with hold violations.
Iteration | Resized | Buffers | Cloned Gates |   WNS   |   TNS   | Endpoint
---------------------------------------------------------------------------
        0 |       0 |       0 |            0 | -693.754 | -1158384.500 | ces_0_4/io_ins_up[43]
    final |       0 |    2050 |            0 | -669.989 | -1133901.000 | ces_0_4/io_ins_up[43]
---------------------------------------------------------------------------
[WARNING RSZ-0066] Unable to repair all hold violations.
[INFO RSZ-0032] Inserted 2050 hold buffers.
[ERROR RSZ-0060] Max buffer count reached.
Error: cts.tcl, 101 RSZ-0060

Standalone reproduction case:

  1. untar mock-array-cts-large-skew.tar.gz
  2. Run ./run-me-mock-array-asap7-base.sh

To reproduce with this PR:

make CTS_SNAPSHOTS=1 DESIGN_CONFIG=designs/asap7/mock-array/config.mk cts

Then run:

make CTS_SNAPSHOTS=1 DESIGN_CONFIG=designs/asap7/mock-array/config.mk  gui_4_1_pre_repair_hold_setup.odb

image

oharboe avatar Apr 11 '24 06:04 oharboe

@AcKoucher @maliberty MACRO_PLACE_HALO doesn't allow specifying a different x & y halo, so it is impossible to have horizontal, but not vertical abutment like the manual placement had.

With the most recent commit on this PR, detail_place.tcl gets stuck. Presumably because there's not enough space between the rows of the Elements to place something?

oharboe avatar Apr 11 '24 13:04 oharboe

This PR says "DO NOT MERGE" but you have requested a review. Are you wanting this merged?

maliberty avatar Apr 11 '24 15:04 maliberty

This PR says "DO NOT MERGE" but you have requested a review. Are you wanting this merged?

Sorry for confusion: just FYI at this point and request for comments.

oharboe avatar Apr 11 '24 15:04 oharboe

We could add separate x & y controls; I believe the old mpl had that. Its tedious but not hard. Presumably that would resolve the skew issue.

maliberty avatar Apr 11 '24 15:04 maliberty

We could add separate x & y controls; I believe the old mpl had that. Its tedious but not hard. Presumably that would resolve the skew issue.

Yes please. I think it would solve the problem here.

oharboe avatar Apr 11 '24 15:04 oharboe

@AcKoucher please open an issue for yourself for the separate controls

maliberty avatar Apr 11 '24 15:04 maliberty

@AcKoucher Just FYI, took https://github.com/The-OpenROAD-Project/OpenROAD/pull/4991 for a spin on this PR, but it got stuck in detailed placement.

I think this is because there's no horizontal routing by abutment and because the vertical distance between the elements is too narrow.

image

oharboe avatar Apr 25 '24 18:04 oharboe

@oharboe I don't know if you noticed, but some of the macros within the array have a wrong location in your image. As I explained in #4991, #4976 should fix that.

As for the DPL problem I'm not sure.

I haven't finished the work in #4991, however it shouldn't cause the array to be pushed to a certain boundary (in your image the array is close to the top), could you please share the test case you used to generate that?

AcKoucher avatar Apr 25 '24 19:04 AcKoucher

@AcKoucher Thanks! I was just curious about all this mpl2 PRs in progress. The test case is this PR.

oharboe avatar Apr 25 '24 19:04 oharboe

@AcKoucher In case it is useful, here is a standalone reproduction case:

oharboe avatar Apr 26 '24 02:04 oharboe

@oharboe Thanks! It's actually pretty useful :)

AcKoucher avatar Apr 26 '24 15:04 AcKoucher

@oharboe You've asked me in https://github.com/The-OpenROAD-Project/OpenROAD/pull/4544#issuecomment-2047921757 to open a PR for switching the manual macro placement for mpl2 flow. Do you still want me to do it? Is this just a test PR?

FYI with both #4991 and #4976 merged, it's now possible to handle mock-array with different mpl2 halos (I'll open a PR for that).

@maliberty Within that context, now that we'll be allowing different mpl2 x & y halos, should we also consider allowing different placement blockages x & y? Currently block_channels only support width as argument.

AcKoucher avatar May 17 '24 15:05 AcKoucher

@AcKoucher I was just testing, so please go ahead and make a mock-array PR

oharboe avatar May 17 '24 15:05 oharboe

image

oharboe avatar May 18 '24 20:05 oharboe