Replies: 7 comments 10 replies
-
does this happen on the mock array? |
Beta Was this translation helpful? Give feedback.
-
If you select one of the nets, in the inspector there is an option to show the route guide. It would be interesting to see what the guide for one of these nets looks like. |
Beta Was this translation helpful? Give feedback.
-
The global router prefers to put wires on lower layers, which is a good strategy for standard cell connections. It isn't so good here. @eder-matheus I think we should update the 3d embedding in grt to handle the case where the pins being connected are all at layer N or above to avoid layers below N if possible. Would you take care of this or work with Luis or Arthur to do so. |
Beta Was this translation helpful? Give feedback.
-
@oharboe Could you try this branch: https://github.com/eder-matheus/OpenROAD/tree/grt_upper_layer_nets? |
Beta Was this translation helpful? Give feedback.
-
@eder-matheus he does not have access to the private repo. Please sync it to public in a PR. |
Beta Was this translation helpful? Give feedback.
-
If you had an obs that you couldn't go over or around then it could be an issue. However it is similar to the clock net constraints we already have that are similar. Probably we would need to introduce a costing scheme to allow out of range layers to be used in extreme cases but that seems like a separate enhancement. The motivating case is simply two m4 pins that have an easy planar connection but we drop down to m2 for no good reason (the router prefers lower layers on the erroneous assumption that pins are on the lower layer). |
Beta Was this translation helpful? Give feedback.
-
Master is MUCH better with this now. If the route is not straight, there's generally a reason, like powergrid in the way, buffers added at edge of design before pins, or something. |
Beta Was this translation helpful? Give feedback.
-
Below are two macros next to eachother where I have mirrored the pins, so the connections are nice and horizontal.
The pins are on ASAP7 M4, but the route is on M2.
Looking at the image, I'm curious as to why M4 wasn't just used in a straight line across? Why go via M2?
The reason I'm asking about this is that my design does detailed routing quickly when I scale it down, but as I scale up, add more macros and a wider data path, it seems like detailed routing has to spend more time(ca. 20x longer) getting signals from M2, to M4 and back to M2 to do the routing between macros. I believe there is non-linear increase(with datapath width) in complexity with getting signals from M4 to M2 and back to M2.
Beta Was this translation helpful? Give feedback.
All reactions