Skip to content

Conversation

soheilshahrouz
Copy link
Contributor

This PR includes the following changes:

  1. Creates nodes and edges in RR graph based on scatter-gather patterns specifed in the architecture file.
  2. Updates router lookahead map to handle CHANZ nodes properly.
  3. Computes indexed data for CHANZ nodes.
  4. Removes 3-d (with above and under) switch blocks from code

soheilshahrouz and others added 30 commits September 5, 2025 12:44
@soheilshahrouz soheilshahrouz changed the title [WIP] Scatter-gather patterns for 3D architectures Scatter-gather patterns for 3D architectures Sep 18, 2025
Copy link
Contributor

@AlexandreSinger AlexandreSinger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gave a quick review.

@soheilshahrouz I love the cleanups you do, but man you got to split them across PRs; there's so much to review!

Copy link
Contributor

@AmirhosseinPoolad AmirhosseinPoolad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only reviewed until vpr/src/route/DecompNetlistRouter.tpp

Copy link
Contributor

@AmirhosseinPoolad AmirhosseinPoolad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed from DecompNetlistRouter to build_scatter_gathers.cpp.

Comment on lines +158 to +159
// TODO: handle CHANZ nodes

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO remaining in final code


int from_layer_num = rr_graph.node_layer(from_node);
int to_layer_num = rr_graph.node_layer(to_node);
// TODO: handle CHANZ nodes that span multiple layers
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO again. Not saying that you have to fix these right now, but a reminder that it is there. I sometimes forget about my TODOs so I'm just making sure that it's intended.

const auto& grid = device_ctx.grid;

const size_t num_layers = grid.get_num_layers();
const size_t chan_type_dim_size = (num_layers == 1) ? 2 : 3;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add comment explaining this.

if (is_chanxy(from_type) || is_chanz(from_type)) {
int from_layer_num = rr_graph.node_layer(from_node);
int to_layer_num = rr_graph.node_layer(to_node);
// TODO: handle CHANZ nodes
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO. Again, just reminding that it exists.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lang-cpp C/C++ code libarchfpga Library for handling FPGA Architecture descriptions VPR VPR FPGA Placement & Routing Tool
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants