Avoid track with no legal via due to spacing to a macro
Describe the bug
I'm not sure what OpenROAD is trying to tell me here. I've highlighted net50908 below.
Expected Behavior
No DRC error
Environment
OpenROAD v2.0-10770-g6719c92e6
To Reproduce
@maliberty I have shared this file with you, please download and share as needed. Not confidential, but 2gbyte, so not a public link... https://drive.google.com/file/d/10ECM456C94DEikW51WINpRCTr4MvYN14/view?usp=sharing
This detailed route takes ca. 12 hours, so I don't know how to whittle it down. The example is gigabytes, but it is quick to bring it up in the GUI to study the DRC error, once downloaded.
To run detailed routing(12 hours?), unzip and run:
NUM_CORES=12 ./run-me-BoomCore-asap7-base.sh
To view DRC report, unzip, run openroad -gui -no_init, load bazel-out/k8-fastbuild/bin/build/results/asap7/BoomCore/base/5_3_route.odb and DRC errors bazel-out/k8-fastbuild/bin/build/reports/asap7/BoomCore/base/5_route_drc.rpt
Relevant log output
No response
Screenshots
No response
Additional Context
No response
Is that the whole maker? Are all shapes/nets visible?
Is that the whole maker? Are all shapes/nets visible?
On second try, the snapshot looks like it has everything. I replaced the image and uploaded the make detail_route_issue file.
@maliberty Please confirm that this issue has what is needed to reproduce. Thanks!
You can plainly see the issue if you turn on only m4
There appears to be a usable m5 track between the macro and the power strap on m5. However getting off that track is impossible due to via leading to an error
@osamahammad21 You should have access to https://drive.google.com/file/d/10ECM456C94DEikW51WINpRCTr4MvYN14/view?usp=sharing now
I did some investigation and I can say that it's a GRT problem. It's impossible for the router to avoid this violation:
Here is the route guides for the specified net:
At first glance I though it's a track assignment issue by assigning a bad track. But I find that the assigned track is the only valid track. Here is a screenshot for the available 3 tracks for that guide on Metal5
The net is stuck between the macro obstruction and the power grid on Metal5 and it turns out the middle track is the only one that doesn't cause a violation on Metal5. The track next to the power strap is violating the SpacingTable rule which specifies the spacing to be 0.072 (because the strap is wide). The current spacing of the middle track is already 0.078 so using the track to the left is not an option.
The router keeps moving the via up and down but it cannot escape the violation.
@maliberty I think @eder-matheus is working on a via aware global routing which should cover this case https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/issues/1564