-
Notifications
You must be signed in to change notification settings - Fork 415
6D Router Lookahead #2445
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
6D Router Lookahead #2445
Conversation
…_lookahead with this new dim
…uting_cost_map to have 3 dim
… from_layer_num and to_layer_num
…layers and store all info in a single map
… it regardless of being cube_Bb
…is used in both cases
…rilog-to-routing into 6d_router_lookahead
Slight 1.6% router time increase, but since place time is up .5% and pack time 1.9% this is hopefully machine load noise. In any case we need it so merging, and Amin is working on optimization of the overall lookahead size and compute time for the future (beyond this PR). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks fine; a few minor commenting changes etc. to consider. Could be done in a separate PR if you wish or we can merge without waiting for the commenting CI to finish/pass.
*/ | ||
std::pair<t_src_opin_delays, t_src_opin_inter_layer_delays> compute_router_src_opin_lookahead(bool is_flat); | ||
t_src_opin_delays compute_router_src_opin_lookahead(bool is_flat); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should probably just get this from the router context, but your call.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We don't have it in the router context yet.
@vaughnbetz This PR is ready to merge |
In this pull request, the main data structure of the router lookahead is updated to have six dimensions instead of five. The previous dimensions were: [dest. layer][chanx/y][seg_type][width][height].
The new dimensions are: [source layer][chanx/y][seg_type][dest. layer][width][height].
Previously, since the connections were only from OPINs, each layer had a separate router lookahead. In the case of die crossing, the minimum delay of the inter-layer connection was stored and added to the cost to reach the sink on the destination layer from that point.
As development progresses in adding inter-die connections, we needed to update the router lookahead to consider that connections can cross die on switch blocks. To achieve this, an additional dimension is added to the array. Therefore, the first index related to the layer is now the source layer, and the second index related to the layer pertains to the layer on which the sink is located.