-
Notifications
You must be signed in to change notification settings - Fork 578
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
Comments
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. |
@AcKoucher I thought we added snapping? |
There already is snapping code in MacroPlacer2::placeMacro
Please provide a test case at the point at which you do manual placement. |
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. |
@oharboe 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. |
@joaomai If I have clear actionable errors, I can modify my design accordingly. I dont understand what OpenROAD wants me to do here. |
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? |
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. |
Thanks for the update. My understanding of these matters isnt sophisticated enough to offer any comments. |
Note the test case doesn't include ${FLOW_HOME}/designs/asap7/mock-array/macro-placement.tcl. Is it the same as in master? |
Ah, it is missing from ADDITIONAL_FILES in designs/ asap7/mock-array/config.mk, so make issue did t include it.
Yes, you can also reproduce without archive running the following on master:
|
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]>
@oharboe please give it a try with head and my quick solution. |
@maliberty Still fails with:
|
@oharboe I'm trying to take a look at this but it doesn't seem to be a macro-placement.tcl in the test case tar.gz.
|
@oharboe Thanks for the new test case. @maliberty It looks like the quick fix makes some pins slightly unaligned. @osamahammad21 MPL needs fixing here, as these pins should be aligned with the track-grid. However, would it be the case that DRT should be able to handle situations such as these shown in the images above? |
@osamahammad21 @AcKoucher For final verification, run It is probably easier, less confusing and faster for you to run this from scratch locally than to understand a test case cobbled together by me using |
It is a problem as m2 & m4 both have LEF58_RIGHTWAYONGRIDONLY so such pins are unusable. |
@AcKoucher Would it be an idea to move the DRT error message as a final step in macro placement? That way there would be a single step that fails quickly and the cause and failure is in the same step. |
I think you can call pin_access to get the message though I'm not sure if the unplaced std cells will be a problem. |
So it might lead to false positive error messages, if I understand... |
Generally I'm not sure it makes sense. But perhaps a check for this specific situation. @maliberty Would it be reasonable throwing an error if we see unaligned pins on LEF58_RIGHTWAYONGRIDONLY layers? |
I only suggested it for debugging. |
Describe the bug
To reproduce with a full run:
To reproduce macro placement problem & the detailed routing problems, but not the intervening steps:
untar and run detail-route-after-manual-place.tar.gz
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
To Reproduce
See above
Relevant log output
No response
Screenshots
No response
Additional Context
No response
The text was updated successfully, but these errors were encountered: