OpenROAD-flow-scripts
OpenROAD-flow-scripts copied to clipboard
[DO NOT MERGE] mock-array: use mpl2 to lay out array
@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:
- untar mock-array-cts-large-skew.tar.gz
- 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
@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?
This PR says "DO NOT MERGE" but you have requested a review. Are you wanting this merged?
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.
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.
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.
@AcKoucher please open an issue for yourself for the separate controls
@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.
@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 Thanks! I was just curious about all this mpl2 PRs in progress. The test case is this PR.
@AcKoucher In case it is useful, here is a standalone reproduction case:
- untar macro-place-no-abutment.tar.gz
- Run
NUM_CORES=16 ./run-me-mock-array-asap7-base.sh
@oharboe Thanks! It's actually pretty useful :)
@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 I was just testing, so please go ahead and make a mock-array PR