Skip to content

Commit 27cbc2a

Browse files
Merge remote-tracking branch 'origin/master' into temp_opin_chanz
2 parents 5d477c1 + 3f55f4b commit 27cbc2a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+886
-821
lines changed

libs/libarchfpga/src/physical_types.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1322,8 +1322,6 @@ class t_pb_graph_node {
13221322

13231323
int total_pb_pins; /* only valid for top-level */
13241324

1325-
void* temp_scratch_pad; /* temporary data, useful for keeping track of things when traversing data structure */
1326-
13271325
int* input_pin_class_size; /* Stores the number of pins that belong to a particular input pin class */
13281326
int num_input_pin_class; /* number of input pin classes that this pb_graph_node has */
13291327
int* output_pin_class_size; /* Stores the number of pins that belong to a particular output pin class */
@@ -1389,8 +1387,6 @@ class t_pb_graph_pin {
13891387
t_pb_graph_node* parent_node = nullptr;
13901388
int pin_count_in_cluster = 0;
13911389

1392-
int scratch_pad = 0; /* temporary data structure useful to store traversal info */
1393-
13941390
enum e_pb_graph_pin_type type = PB_PIN_NORMAL; /* The type of this pin (sequential, i/o etc.) */
13951391

13961392
/* sequential timing information */

libs/libarchfpga/src/physical_types_util.cpp

Lines changed: 29 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ static std::tuple<int, int, int, int, int> get_pin_index_for_inst(t_physical_til
155155
logical_block_idx = -1;
156156
pb_type_idx = 0;
157157
} else {
158-
auto logical_block = get_logical_block_from_pin_physical_num(type, pin_physical_num);
158+
t_logical_block_type_ptr logical_block = get_logical_block_from_pin_physical_num(type, pin_physical_num);
159159
auto pb_type = get_pb_pin_from_pin_physical_num(type, pin_physical_num)->parent_node->pb_type;
160160
VTR_ASSERT(logical_block != nullptr);
161161
logical_block_idx = logical_block->index;
@@ -236,10 +236,9 @@ static int get_logical_block_physical_pin_num_offset(t_physical_tile_type_ptr ph
236236
const t_sub_tile* curr_sub_tile,
237237
t_logical_block_type_ptr curr_logical_block,
238238
const int curr_relative_cap) {
239-
int offset;
240-
offset = get_sub_tile_inst_physical_pin_num_offset(physical_tile, curr_sub_tile, curr_relative_cap);
239+
int offset = get_sub_tile_inst_physical_pin_num_offset(physical_tile, curr_sub_tile, curr_relative_cap);
241240

242-
for (auto eq_site : curr_sub_tile->equivalent_sites) {
241+
for (t_logical_block_type_ptr eq_site : curr_sub_tile->equivalent_sites) {
243242
if (eq_site == curr_logical_block)
244243
break;
245244
offset += (int)eq_site->pin_logical_num_to_pb_pin_mapping.size();
@@ -255,13 +254,11 @@ static int get_pin_logical_num_from_pin_physical_num(t_physical_tile_type_ptr ph
255254
VTR_ASSERT(sub_tile_cap != -1);
256255
auto logical_block = get_logical_block_from_pin_physical_num(physical_tile, physical_num);
257256

258-
int pin_logical_num;
259-
260257
int offset = get_logical_block_physical_pin_num_offset(physical_tile,
261258
sub_tile,
262259
logical_block,
263260
sub_tile_cap);
264-
pin_logical_num = physical_num - offset;
261+
int pin_logical_num = physical_num - offset;
265262

266263
return pin_logical_num;
267264
}
@@ -273,7 +270,6 @@ static std::vector<int> get_pb_pin_src_pins(t_physical_tile_type_ptr physical_ty
273270
const t_pb_graph_pin* pin) {
274271
std::vector<int> driving_pins;
275272
const auto& edges = pin->input_edges;
276-
t_pb_graph_pin** connected_pins_ptr;
277273
int num_edges = pin->num_input_edges;
278274
int num_pins = 0;
279275

@@ -285,7 +281,7 @@ static std::vector<int> get_pb_pin_src_pins(t_physical_tile_type_ptr physical_ty
285281

286282
for (int edge_idx = 0; edge_idx < num_edges; edge_idx++) {
287283
const t_pb_graph_edge* pb_graph_edge = edges[edge_idx];
288-
connected_pins_ptr = pb_graph_edge->input_pins;
284+
t_pb_graph_pin** connected_pins_ptr = pb_graph_edge->input_pins;
289285
num_pins = pb_graph_edge->num_input_pins;
290286

291287
for (int pin_idx = 0; pin_idx < num_pins; pin_idx++) {
@@ -315,7 +311,6 @@ static std::vector<int> get_pb_pin_sink_pins(t_physical_tile_type_ptr physical_t
315311
const t_pb_graph_pin* pin) {
316312
std::vector<int> sink_pins;
317313
const auto& edges = pin->output_edges;
318-
t_pb_graph_pin** connected_pins_ptr;
319314
int num_edges = pin->num_output_edges;
320315
int num_pins = 0;
321316

@@ -327,7 +322,7 @@ static std::vector<int> get_pb_pin_sink_pins(t_physical_tile_type_ptr physical_t
327322

328323
for (int edge_idx = 0; edge_idx < num_edges; edge_idx++) {
329324
const t_pb_graph_edge* pb_graph_edge = edges[edge_idx];
330-
connected_pins_ptr = pb_graph_edge->output_pins;
325+
t_pb_graph_pin** connected_pins_ptr = pb_graph_edge->output_pins;
331326
num_pins = pb_graph_edge->num_output_pins;
332327

333328
for (int pin_idx = 0; pin_idx < num_pins; pin_idx++) {
@@ -392,12 +387,12 @@ static int get_num_reachable_sinks(t_physical_tile_type_ptr physical_tile,
392387
const auto& connected_sinks = pb_pin->connected_sinks_ptc;
393388

394389
// If ref_sink_num is not reachable by pin_physical_num return 0
395-
if (connected_sinks.find(ref_sink_num) == connected_sinks.end()) {
390+
if (!connected_sinks.contains(ref_sink_num)) {
396391
return 0;
397392
}
398393

399394
for (auto sink_num : sink_grp) {
400-
if (connected_sinks.find(sink_num) != connected_sinks.end()) {
395+
if (connected_sinks.contains(sink_num)) {
401396
num_reachable_sinks++;
402397
}
403398
}
@@ -431,7 +426,7 @@ int get_logical_block_physical_sub_tile_index(t_physical_tile_type_ptr physical_
431426
int sub_tile_index = ARCH_FPGA_UNDEFINED_VAL;
432427
for (const auto& sub_tile : physical_tile->sub_tiles) {
433428
auto eq_sites = sub_tile.equivalent_sites;
434-
auto it = std::find(eq_sites.begin(), eq_sites.end(), logical_block);
429+
auto it = std::ranges::find(eq_sites, logical_block);
435430
if (it != eq_sites.end()) {
436431
sub_tile_index = sub_tile.index;
437432
}
@@ -467,7 +462,7 @@ int get_logical_block_physical_sub_tile_index(t_physical_tile_type_ptr physical_
467462
int sub_tile_index = ARCH_FPGA_UNDEFINED_VAL;
468463
for (const auto& sub_tile : physical_tile->sub_tiles) {
469464
auto eq_sites = sub_tile.equivalent_sites;
470-
auto it = std::find(eq_sites.begin(), eq_sites.end(), logical_block);
465+
auto it = std::ranges::find(eq_sites, logical_block);
471466
if (it != eq_sites.end()
472467
&& (sub_tile.capacity.is_in_range(sub_tile_capacity))) {
473468
sub_tile_index = sub_tile.index;
@@ -497,13 +492,13 @@ t_logical_block_type_ptr pick_logical_type(t_physical_tile_type_ptr physical_til
497492

498493
bool is_tile_compatible(t_physical_tile_type_ptr physical_tile, t_logical_block_type_ptr logical_block) {
499494
const auto& equivalent_tiles = logical_block->equivalent_tiles;
500-
return std::find(equivalent_tiles.begin(), equivalent_tiles.end(), physical_tile) != equivalent_tiles.end();
495+
return std::ranges::find(equivalent_tiles, physical_tile) != equivalent_tiles.end();
501496
}
502497

503498
bool is_sub_tile_compatible(t_physical_tile_type_ptr physical_tile, t_logical_block_type_ptr logical_block, int sub_tile_loc) {
504499
bool capacity_compatible = false;
505-
for (auto& sub_tile : physical_tile->sub_tiles) {
506-
auto result = std::find(sub_tile.equivalent_sites.begin(), sub_tile.equivalent_sites.end(), logical_block);
500+
for (const t_sub_tile& sub_tile : physical_tile->sub_tiles) {
501+
auto result = std::ranges::find(sub_tile.equivalent_sites, logical_block);
507502

508503
if (sub_tile.capacity.is_in_range(sub_tile_loc) && result != sub_tile.equivalent_sites.end()) {
509504
capacity_compatible = true;
@@ -669,18 +664,16 @@ std::vector<std::string> block_type_class_index_to_pin_names(t_physical_tile_typ
669664
pin_info.push_back(block_type_pin_index_to_pin_inst(type, pin_physical_num, is_flat));
670665
}
671666

672-
auto cmp = [](const t_pin_inst_port& lhs, const t_pin_inst_port& rhs) {
667+
// Ensure all the pins are in order
668+
std::ranges::sort(pin_info, [](const t_pin_inst_port& lhs, const t_pin_inst_port& rhs) noexcept {
673669
return lhs.pin_physical_num < rhs.pin_physical_num;
674-
};
670+
});
675671

676-
//Ensure all the pins are in order
677-
std::sort(pin_info.begin(), pin_info.end(), cmp);
678-
679-
//Determine ranges for each capacity instance and port pair
672+
// Determine ranges for each capacity instance and port pair
680673
std::map<std::tuple<int, int, int, int, int>, std::array<int, 4>> pin_ranges;
681-
for (const auto& pin_inf : pin_info) {
674+
for (const t_pin_inst_port& pin_inf : pin_info) {
682675
auto key = std::make_tuple(pin_inf.sub_tile_index, pin_inf.capacity_instance, pin_inf.logical_block_index, pin_inf.pb_type_idx, pin_inf.port_index);
683-
if (!pin_ranges.count(key)) {
676+
if (!pin_ranges.contains(key)) {
684677
pin_ranges[key][0] = pin_inf.pin_index_in_port;
685678
pin_ranges[key][1] = pin_inf.pin_index_in_port;
686679
pin_ranges[key][2] = pin_inf.pin_physical_num;
@@ -765,7 +758,7 @@ std::tuple<const t_sub_tile*, int> get_sub_tile_from_class_physical_num(t_physic
765758
int num_seen_class = (is_on_tile) ? 0 : (int)physical_tile->class_inf.size();
766759
int class_num_offset = num_seen_class;
767760

768-
for (auto& sub_tile : physical_tile->sub_tiles) {
761+
for (const t_sub_tile& sub_tile : physical_tile->sub_tiles) {
769762
int sub_tile_num_class = is_on_tile ? sub_tile.class_range.total_num() : get_sub_tile_num_internal_classes(&sub_tile);
770763
num_seen_class += sub_tile_num_class;
771764

@@ -783,8 +776,8 @@ std::tuple<const t_sub_tile*, int> get_sub_tile_from_class_physical_num(t_physic
783776

784777
t_logical_block_type_ptr get_logical_block_from_class_physical_num(t_physical_tile_type_ptr physical_tile,
785778
int class_physical_num) {
786-
auto pin_list = get_pin_list_from_class_physical_num(physical_tile, class_physical_num);
787-
VTR_ASSERT((int)pin_list.size() != 0);
779+
std::vector<int> pin_list = get_pin_list_from_class_physical_num(physical_tile, class_physical_num);
780+
VTR_ASSERT(!pin_list.empty());
788781
return get_logical_block_from_pin_physical_num(physical_tile, pin_list[0]);
789782
}
790783

@@ -877,7 +870,7 @@ std::tuple<const t_sub_tile*, int> get_sub_tile_from_pin_physical_num(t_physical
877870
int total_pin_counts = pin_on_tile ? 0 : physical_tile->num_pins;
878871
int pin_offset = total_pin_counts;
879872

880-
for (auto& sub_tile : physical_tile->sub_tiles) {
873+
for (const t_sub_tile& sub_tile : physical_tile->sub_tiles) {
881874
int sub_tile_num_pins = pin_on_tile ? sub_tile.num_phy_pins : sub_tile.total_num_internal_pins();
882875
total_pin_counts += sub_tile_num_pins;
883876

@@ -1251,9 +1244,7 @@ bool intra_tile_nodes_connected(t_physical_tile_type_ptr physical_type,
12511244
} else {
12521245
const t_pb_graph_pin* from_pb_graph_pin = get_pb_pin_from_pin_physical_num(physical_type, pin_physical_num);
12531246

1254-
auto res = from_pb_graph_pin->connected_sinks_ptc.find(sink_physical_num);
1255-
1256-
if (res == from_pb_graph_pin->connected_sinks_ptc.end()) {
1247+
if (!from_pb_graph_pin->connected_sinks_ptc.contains(sink_physical_num)) {
12571248
return false;
12581249
} else {
12591250
return true;
@@ -1286,8 +1277,7 @@ float get_pin_primitive_comb_delay(t_physical_tile_type_ptr physical_type,
12861277
pin_physical_num);
12871278
VTR_ASSERT(pb_pin->is_primitive_pin());
12881279

1289-
auto it = std::max_element(pb_pin->pin_timing_del_max.begin(), pb_pin->pin_timing_del_max.end());
1290-
1280+
auto it = std::ranges::max_element(pb_pin->pin_timing_del_max);
12911281
if (it == pb_pin->pin_timing_del_max.end()) {
12921282
return 0.;
12931283
} else {
@@ -1305,9 +1295,9 @@ bool classes_in_same_block(t_physical_tile_type_ptr physical_tile,
13051295
}
13061296

13071297
// Two functions are considered to be in the same group if share at least two level of blocks
1308-
const int NUM_SIMILAR_PB_NODE_THRESHOLD = 2;
1309-
auto first_class_pin_list = get_pin_list_from_class_physical_num(physical_tile, first_class_ptc_num);
1310-
auto second_class_pin_list = get_pin_list_from_class_physical_num(physical_tile, second_class_ptc_num);
1298+
constexpr int NUM_SIMILAR_PB_NODE_THRESHOLD = 2;
1299+
std::vector<int> first_class_pin_list = get_pin_list_from_class_physical_num(physical_tile, first_class_ptc_num);
1300+
std::vector<int> second_class_pin_list = get_pin_list_from_class_physical_num(physical_tile, second_class_ptc_num);
13111301

13121302
auto first_pb_graph_pin = get_pb_pin_from_pin_physical_num(physical_tile, first_class_pin_list[0]);
13131303
auto second_pb_graph_pin = get_pb_pin_from_pin_physical_num(physical_tile, second_class_pin_list[0]);
@@ -1322,7 +1312,7 @@ bool classes_in_same_block(t_physical_tile_type_ptr physical_tile,
13221312
int num_shared_pb_graph_node = 0;
13231313
curr_pb_graph_node = second_pb_graph_pin->parent_node;
13241314
while (curr_pb_graph_node != nullptr) {
1325-
auto find_res = std::find(first_pb_graph_node_chain.begin(), first_pb_graph_node_chain.end(), curr_pb_graph_node);
1315+
auto find_res = std::ranges::find(first_pb_graph_node_chain, curr_pb_graph_node);
13261316
if (find_res != first_pb_graph_node_chain.end()) {
13271317
num_shared_pb_graph_node++;
13281318
if (num_shared_pb_graph_node >= NUM_SIMILAR_PB_NODE_THRESHOLD)

libs/librrgraph/src/base/rr_graph_utils.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ void rr_set_sink_locs(const RRGraphView& rr_graph, RRGraphBuilder& rr_graph_buil
180180

181181
// See if we have encountered this tile type/ptc combo before, and used saved offset if so
182182
vtr::Point<int> new_loc(-1, -1);
183-
if ((physical_type_offsets.find(tile_type) != physical_type_offsets.end()) && (physical_type_offsets[tile_type].find(node_ptc) != physical_type_offsets[tile_type].end())) {
183+
if (physical_type_offsets.contains(tile_type) && physical_type_offsets[tile_type].contains(node_ptc)) {
184184
new_loc = tile_bb.bottom_left() + physical_type_offsets[tile_type].at(node_ptc);
185185
} else { /* We have not seen this tile type/ptc combo before */
186186
// The IPINs of the current SINK node
@@ -197,7 +197,7 @@ void rr_set_sink_locs(const RRGraphView& rr_graph, RRGraphBuilder& rr_graph_buil
197197
std::vector<float> y_coords;
198198

199199
// Add coordinates of each "cluster-edge" pin to vectors
200-
for (const auto& pin : sink_ipins) {
200+
for (const RRNodeId pin : sink_ipins) {
201201
int pin_x = rr_graph.node_xlow(pin);
202202
int pin_y = rr_graph.node_ylow(pin);
203203

@@ -212,7 +212,7 @@ void rr_set_sink_locs(const RRGraphView& rr_graph, RRGraphBuilder& rr_graph_buil
212212
(int)round(std::accumulate(y_coords.begin(), y_coords.end(), 0.f) / (double)y_coords.size())};
213213

214214
// Save offset for this tile/ptc combo
215-
if (physical_type_offsets.find(tile_type) == physical_type_offsets.end())
215+
if (!physical_type_offsets.contains(tile_type))
216216
physical_type_offsets[tile_type] = {};
217217

218218
physical_type_offsets[tile_type].insert({node_ptc, new_loc - tile_bb.bottom_left()});

0 commit comments

Comments
 (0)