-
Notifications
You must be signed in to change notification settings - Fork 427
RR Graph / Architecture Pin Side Consistency Check #3268
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
Conversation
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.
What is the node_sides vector used for? It seems like a heavyweight data structure -- a vector of sides for every node in the rr_graph? Is it alive throughout the rr-graph lifetime or just during building?
It could be stored more compactly as a bit vector (pack in all the sides that are used). I'm also not sure it really deserves to be around at all, as most code doesn't need to check the side of a node. Could be flyweighted too.
rr_graph_sides = rr_graph.node_sides(rr_node); | ||
std::tie(std::ignore, std::ignore, arch_side_vec) = get_pin_coordinates(type, ptc_num, std::vector<e_side>(TOTAL_2D_SIDES.begin(), TOTAL_2D_SIDES.end())); | ||
// Number of sides in arch_side_vec may be higher than rr_graph sides since there may be duplicates (a pin may have different x/y offset on the same side) | ||
// Because of that, we itearte over arch_side_vec and check if the side is in rr_graph_sides |
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.
itearate -> iterate
@vaughnbetz: The side for each node is already stored in a bit vector format in t_rr_node_data. The function I just added creates a vector on demand, which is only used during checking. |
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.
LGTM
Adding a check to the RR Graph node validation to raise an error if the pin sides stored in the RR Graph don’t correspond to the architecture file.