Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

manual macro place leads to drt failure #6267

Open
oharboe opened this issue Nov 29, 2024 · 12 comments
Open

manual macro place leads to drt failure #6267

oharboe opened this issue Nov 29, 2024 · 12 comments
Assignees
Labels
mpl Macro Placement

Comments

@oharboe
Copy link
Collaborator

oharboe commented Nov 29, 2024

Describe the bug

To reproduce with a full run:

make DESIGN_CONFIG=designs/asap7/mock-array/config.mk RTLMP_FLOW=0

To reproduce macro placement problem & the detailed routing problems, but not the intervening steps:

untar and run detail-route-after-manual-place.tar.gz

[deleted]
[WARNING DRT-0418] Term ces_6_3/io_ins_right[15] has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_ins_right[26] has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_ins_right[28] has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_ins_right[38] has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_ins_right[42] has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_ins_right[7] has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_lsbIns_1 has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_lsbIns_2 has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_lsbIns_3 has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_lsbOuts_1 has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_lsbOuts_2 has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_lsbOuts_3 has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_outs_left[0] has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_outs_left[10] has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_outs_left[31] has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_outs_left[37] has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_outs_left[4] has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_outs_left[5] has no pins on routing grid
[WARNING DRT-0418] Term ces_6_3/io_outs_right[0] has no pins on routing grid
[WARNING DRT-0418] message limit (1000) reached. This message will no longer print.
[deleted]
[INFO DRT-0165] Start pin access.
[ERROR DRT-0073] No access point for ces_3_0/io_ins_left[0].
[ERROR DRT-0073] No access point for ces_1_0/io_ins_left[0].
[INFO DRT-0076]   Complete 1000 pins.
[ERROR DRT-0073] No access point for ces_6_0/io_ins_left[0].
[INFO DRT-0076]   Complete 2000 pins.
[ERROR DRT-0073] No access point for ces_4_0/io_ins_left[0].
Error: detail_route.tcl, 47 DRT-0073

Expected Behavior

manual placement should adjust macro positions such that pins are on routing grid and detailed route works.

If there are any warnings about the positioning, they should come from macro_place, not having to wait all the way to detail_route

Environment

OpenROAD v2.0-17372-gfa1888e5f

To Reproduce

See above

Relevant log output

No response

Screenshots

No response

Additional Context

No response

@rovinski
Copy link
Collaborator

If manual macro placement gets built-in snapping added, there should be an option to turn off snapping in case the designer absolutely needs to place the macro at a specific location.

@maliberty
Copy link
Member

@AcKoucher I thought we added snapping?

@maliberty
Copy link
Member

There already is snapping code in MacroPlacer2::placeMacro

  if (!orientation.isRightAngleRotation()) {
    Snapper snapper(logger_, inst);
    snapper.snapMacro();

Please provide a test case at the point at which you do manual placement.

@AcKoucher
Copy link
Contributor

AcKoucher commented Dec 2, 2024

As @maliberty pointed out, the only case in which we don't snap automatically when doing manual placement is when the macro is being placed with a right angle rotation e.g, R90. Apart from this situation, we always snap.

@joaomai
Copy link
Contributor

joaomai commented Dec 10, 2024

@oharboe
It looks like all the pins that are unaligned with the track-grid are in M2. The interval between tracks in asap7's M2 layer isn't always the same, which causes problems when snapping the macros' pins with our current snapping mechanism.

Is it imperative to use this layer? When snapping for pins with the same direction in multiple layers was implemented, M2 was not used, so this problem didn't show up.

@oharboe
Copy link
Collaborator Author

oharboe commented Dec 10, 2024

@joaomai If I have clear actionable errors, I can modify my design accordingly.

I dont understand what OpenROAD wants me to do here.

@maliberty
Copy link
Member

I imagine there exists so some snapping that would be m2 and the other layers all on-grid. Is it an issue with no searching far enough to find such a snapping?

@maliberty
Copy link
Member

Minor note - if the net is connect by abutment then this check is unnecessary. It should only warn about the pins on the edges of the array.

@oharboe
Copy link
Collaborator Author

oharboe commented Dec 14, 2024

Thanks for the update. My understanding of these matters isnt sophisticated enough to offer any comments.

@maliberty
Copy link
Member

Note the test case doesn't include ${FLOW_HOME}/designs/asap7/mock-array/macro-placement.tcl. Is it the same as in master?

@oharboe
Copy link
Collaborator Author

oharboe commented Dec 15, 2024

Note the test case doesn't include ${FLOW_HOME}/designs/asap7/mock-array/macro-placement.tcl.

Ah, it is missing from ADDITIONAL_FILES in designs/ asap7/mock-array/config.mk, so make issue did t include it.

Is it the same as in master?

Yes, you can also reproduce without archive running the following on master:

make DESIGN_CONFIG=designs/asap7/mock-array/config.mk RTLMP_FLOW=0

openroad-robot pushed a commit to The-OpenROAD-Project-staging/OpenROAD that referenced this issue Dec 15, 2024
If you have multiple track patterns (eg m2 in asap7) the current code
is wrong.  This is a partial solution in that it just uses the first
track pattern.  Ideally it should consider snapping to any of the
track patterns.  The cost will be snapping further than needed.

This "fixes" The-OpenROAD-Project#6267.

Signed-off-by: Matt Liberty <[email protected]>
@maliberty
Copy link
Member

@oharboe please give it a try with head and my quick solution.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
mpl Macro Placement
Projects
None yet
Development

No branches or pull requests

6 participants