@@ -97,13 +97,9 @@ vtr::vector<RRNodeId, std::vector<RREdgeId>> get_fan_in_list(const RRGraphView&
97
97
return node_fan_in_list;
98
98
}
99
99
100
- void set_sink_locs (const RRGraphView& rr_graph, RRGraphBuilder& rr_graph_builder, const DeviceGrid& grid ) {
100
+ void set_sink_locs (const RRGraphView& rr_graph, RRGraphBuilder& rr_graph_builder) {
101
101
auto node_fanins = get_fan_in_list (rr_graph);
102
102
103
- // Keep track of offsets for SINKs for each tile type, to avoid repeated
104
- // calculations
105
- std::unordered_map<std::string, std::unordered_map<size_t , vtr::Point <int >>> physical_type_offsets;
106
-
107
103
// Iterate over all SINK nodes
108
104
for (size_t node = 0 ; node < rr_graph.num_nodes (); ++node) {
109
105
auto node_id = RRNodeId (node);
@@ -117,24 +113,6 @@ void set_sink_locs(const RRGraphView& rr_graph, RRGraphBuilder& rr_graph_builder
117
113
if (tile_width == 0 && tile_height == 0 )
118
114
continue ;
119
115
120
- // See if we have encountered this tile before
121
- size_t tile_layer = rr_graph.node_layer (node_id);
122
- size_t node_x = rr_graph.node_xhigh (node_id);
123
- size_t node_y = rr_graph.node_yhigh (node_id);
124
- std::string tile_name = grid.get_physical_type ({(int )node_x, (int )node_y, (int )tile_layer})->name ;
125
-
126
- size_t sink_ptc = rr_graph.node_ptc_num (node_id);
127
-
128
- if ((physical_type_offsets.find (tile_name) != physical_type_offsets.end ()) && (physical_type_offsets[tile_name].find (sink_ptc) != physical_type_offsets[tile_name].end ())) { /* We have seen this tile before */
129
- auto new_x = (short )((int )node_x + physical_type_offsets[tile_name].at (sink_ptc).x ());
130
- auto new_y = (short )((int )node_y + physical_type_offsets[tile_name].at (sink_ptc).y ());
131
-
132
- // Set new coordinates
133
- rr_graph_builder.set_node_coordinates (node_id, new_x, new_y, new_x, new_y);
134
-
135
- continue ;
136
- }
137
-
138
116
// The IPINs of the current SINK node
139
117
std::unordered_set<RRNodeId> sink_ipins = {};
140
118
@@ -148,7 +126,7 @@ void set_sink_locs(const RRGraphView& rr_graph, RRGraphBuilder& rr_graph_builder
148
126
// Make sure IPIN in the same cluster as origin
149
127
int curr_x = rr_graph.node_xlow (pin);
150
128
int curr_y = rr_graph.node_ylow (pin);
151
- if ((curr_x < rr_graph.node_xlow (pin )) || (curr_x > rr_graph.node_xhigh (pin )) || (curr_y < rr_graph.node_ylow (pin )) || (curr_y > rr_graph.node_yhigh (pin )))
129
+ if ((curr_x < rr_graph.node_xlow (node_id )) || (curr_x > rr_graph.node_xhigh (node_id )) || (curr_y < rr_graph.node_ylow (node_id )) || (curr_y > rr_graph.node_yhigh (node_id )))
152
130
continue ;
153
131
154
132
sink_ipins.insert (pin);
@@ -168,8 +146,8 @@ void set_sink_locs(const RRGraphView& rr_graph, RRGraphBuilder& rr_graph_builder
168
146
int pin_x = rr_graph.node_xlow (pin);
169
147
int pin_y = rr_graph.node_ylow (pin);
170
148
171
- VTR_ASSERT_SAFE (pin_x = rr_graph.node_xhigh (pin));
172
- VTR_ASSERT_SAFE (pin_y = rr_graph.node_yhigh (pin));
149
+ VTR_ASSERT_SAFE (pin_x == rr_graph.node_xhigh (pin));
150
+ VTR_ASSERT_SAFE (pin_y == rr_graph.node_yhigh (pin));
173
151
174
152
x_coords.push_back ((float )pin_x);
175
153
y_coords.push_back ((float )pin_y);
@@ -178,13 +156,6 @@ void set_sink_locs(const RRGraphView& rr_graph, RRGraphBuilder& rr_graph_builder
178
156
auto x_avg = (short )round (std::accumulate (x_coords.begin (), x_coords.end (), 0 .f ) / (double )x_coords.size ());
179
157
auto y_avg = (short )round (std::accumulate (y_coords.begin (), y_coords.end (), 0 .f ) / (double )y_coords.size ());
180
158
181
- // Save offset for this tile type
182
- if (physical_type_offsets.find (tile_name) == physical_type_offsets.end ())
183
- physical_type_offsets[tile_name] = {};
184
-
185
- physical_type_offsets[tile_name].insert ({sink_ptc, {x_avg - (int )node_x, y_avg - (int )node_y}});
186
-
187
- // Set new coordinates
188
159
rr_graph_builder.set_node_coordinates (node_id, x_avg, y_avg, x_avg, y_avg);
189
160
}
190
161
}
0 commit comments