Skip to content

Commit 3cc543f

Browse files
add edge attribute methods
1 parent 00739ed commit 3cc543f

File tree

5 files changed

+64
-20
lines changed

5 files changed

+64
-20
lines changed

libs/libarchfpga/src/physical_types.h

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1873,15 +1873,19 @@ struct t_rr_switch_inf {
18731873
};
18741874

18751875
struct t_rr_switch_override_inf {
1876-
// float R = 0.f;
1877-
// float Cin = 0.;
1878-
// float Cout = 0.;
1879-
// float Cinternal = 0.;
1876+
float R = 0.f;
1877+
float Cin = 0.;
1878+
float Cout = 0.;
1879+
float Cinternal = 0.;
18801880
float Tdel = 0.;
18811881

18821882
t_rr_switch_override_inf() = default;
18831883
t_rr_switch_override_inf(const t_rr_switch_inf& switch_inf)
1884-
: Tdel(switch_inf.Tdel) {}
1884+
: R(switch_inf.R)
1885+
, Cin(switch_inf.Cin)
1886+
, Cout(switch_inf.Cout)
1887+
, Cinternal(switch_inf.Cinternal)
1888+
, Tdel(switch_inf.Tdel) {}
18851889

18861890
auto operator<=>(const t_rr_switch_override_inf&) const = default;
18871891
};

libs/librrgraph/src/base/rr_graph_builder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ void RRGraphBuilder::clear() {
7979
rr_edge_metadata_.clear();
8080
rr_segments_.clear();
8181
rr_switch_inf_.clear();
82-
rr_switch_offset_inf_.clear();
82+
rr_switch_override_inf_.clear();
8383
}
8484

8585
void RRGraphBuilder::reorder_nodes(e_rr_node_reorder_algorithm reorder_rr_graph_nodes_algorithm,

libs/librrgraph/src/base/rr_graph_builder.h

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,10 @@ class RRGraphBuilder {
104104
RRSwitchId switch_id = RRSwitchId(rr_switch_inf_.size());
105105
rr_switch_inf_.push_back(switch_info);
106106

107-
t_rr_switch_override_inf switch_offset_info(switch_info);
108-
rr_switch_offset_inf_.push_back(switch_offset_info);
107+
t_rr_switch_override_inf switch_override_info(switch_info);
108+
rr_switch_override_inf_.push_back(switch_override_info);
109109

110-
VTR_ASSERT_DEBUG(rr_switch_inf_.size() == rr_switch_offset_inf_.size());
110+
VTR_ASSERT_DEBUG(rr_switch_inf_.size() == rr_switch_override_inf_.size());
111111

112112
return switch_id;
113113
}
@@ -122,11 +122,11 @@ class RRGraphBuilder {
122122
return rr_switch_inf_;
123123
}
124124

125-
inline RRSwitchOffsetInfoId add_rr_switch_offset_info(const t_rr_switch_override_inf& switch_offset_info) {
126-
VTR_ASSERT_DEBUG(rr_switch_inf_.size() <= rr_switch_offset_inf_.size());
125+
inline RRSwitchOffsetInfoId add_rr_switch_override_info(const t_rr_switch_override_inf& switch_override_info) {
126+
VTR_ASSERT_DEBUG(rr_switch_inf_.size() <= rr_switch_override_inf_.size());
127127
// Allocate an ID
128-
RRSwitchOffsetInfoId switch_offset_info_id = RRSwitchOffsetInfoId(rr_switch_offset_inf_.size());
129-
rr_switch_offset_inf_.push_back(switch_offset_info);
128+
RRSwitchOffsetInfoId switch_offset_info_id = RRSwitchOffsetInfoId(rr_switch_override_inf_.size());
129+
rr_switch_override_inf_.push_back(switch_override_info);
130130
return switch_offset_info_id;
131131
}
132132

@@ -135,7 +135,7 @@ class RRGraphBuilder {
135135
}
136136

137137
inline vtr::vector<RRSwitchOffsetInfoId, t_rr_switch_override_inf>& rr_switch_offset_inf() {
138-
return rr_switch_offset_inf_;
138+
return rr_switch_override_inf_;
139139
}
140140

141141
/** @brief Set the type of a node with a given valid id */
@@ -336,7 +336,7 @@ class RRGraphBuilder {
336336
this->rr_switch_inf_.reserve(num_switches);
337337
}
338338
inline void reserve_switch_offse_info(size_t num_offsets) {
339-
this->rr_switch_offset_inf_.reserve(num_offsets);
339+
this->rr_switch_override_inf_.reserve(num_offsets);
340340
}
341341
/** @brief This function resize node storage to accomidate size RR nodes. */
342342
inline void resize_nodes(size_t size) {
@@ -351,7 +351,7 @@ class RRGraphBuilder {
351351
/** @brief This function resize rr_switch to accomidate size RR Switch. */
352352
inline void resize_switches(size_t size) {
353353
rr_switch_inf_.resize(size);
354-
rr_switch_offset_inf_.resize(size);
354+
rr_switch_override_inf_.resize(size);
355355
}
356356

357357
/** @brief Validate that edge data is partitioned correctly
@@ -420,7 +420,7 @@ class RRGraphBuilder {
420420
/* Detailed information about the switches, which are used in the RRGraph */
421421
vtr::vector<RRSwitchId, t_rr_switch_inf> rr_switch_inf_;
422422

423-
vtr::vector<RRSwitchOffsetInfoId, t_rr_switch_override_inf> rr_switch_offset_inf_;
423+
vtr::vector<RRSwitchOffsetInfoId, t_rr_switch_override_inf> rr_switch_override_inf_;
424424

425425
/** @warning The Metadata should stay as an independent data structure from the rest of the internal data,
426426
* e.g., node_lookup! */

libs/librrgraph/src/base/rr_graph_view.h

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -424,15 +424,55 @@ class RRGraphView {
424424
}
425425

426426
inline float edge_delay(RREdgeId edge_id) const {
427-
RRSwitchOffsetInfoId switch_offset_inf_id = node_storage_.edge_switch_offset_inf(edge_id);
428-
return rr_switch_offset_inf_[switch_offset_inf_id].Tdel;
427+
RRSwitchOffsetInfoId switch_override_inf_id = node_storage_.edge_switch_offset_inf(edge_id);
428+
return rr_switch_offset_inf_[switch_override_inf_id].Tdel;
429429
}
430430

431431
inline float edge_delay(RRNodeId id, t_edge_size iedge) const {
432432
RREdgeId edge_id = node_storage_.edge_id(id, iedge);
433433
return edge_delay(edge_id);
434434
}
435435

436+
inline float edge_R(RREdgeId edge_id) const {
437+
RRSwitchOffsetInfoId switch_override_inf_id = node_storage_.edge_switch_offset_inf(edge_id);
438+
return rr_switch_offset_inf_[switch_override_inf_id].R;
439+
}
440+
441+
inline float edge_R(RRNodeId id, t_edge_size iedge) const {
442+
RREdgeId edge_id = node_storage_.edge_id(id, iedge);
443+
return edge_R(edge_id);
444+
}
445+
446+
inline float edge_Cin(RREdgeId edge_id) const {
447+
RRSwitchOffsetInfoId switch_override_inf_id = node_storage_.edge_switch_offset_inf(edge_id);
448+
return rr_switch_offset_inf_[switch_override_inf_id].Cin;
449+
}
450+
451+
inline float edge_Cin(RRNodeId id, t_edge_size iedge) const {
452+
RREdgeId edge_id = node_storage_.edge_id(id, iedge);
453+
return edge_Cin(edge_id);
454+
}
455+
456+
inline float edge_Cout(RREdgeId edge_id) const {
457+
RRSwitchOffsetInfoId switch_override_inf_id = node_storage_.edge_switch_offset_inf(edge_id);
458+
return rr_switch_offset_inf_[switch_override_inf_id].Cout;
459+
}
460+
461+
inline float edge_Cout(RRNodeId id, t_edge_size iedge) const {
462+
RREdgeId edge_id = node_storage_.edge_id(id, iedge);
463+
return edge_Cout(edge_id);
464+
}
465+
466+
inline float edge_Cint(RREdgeId edge_id) const {
467+
RRSwitchOffsetInfoId switch_override_inf_id = node_storage_.edge_switch_offset_inf(edge_id);
468+
return rr_switch_offset_inf_[switch_override_inf_id].Cinternal;
469+
}
470+
471+
inline float edge_Cint(RRNodeId id, t_edge_size iedge) const {
472+
RREdgeId edge_id = node_storage_.edge_id(id, iedge);
473+
return edge_Cint(edge_id);
474+
}
475+
436476
/** @brief Return the source node for the specified edge.
437477
*/
438478
inline RRNodeId edge_src_node(const RREdgeId edge_id) const {

libs/librrgraph/src/io/rr_graph_reader.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ void load_rr_edge_attribute_offset_file(RRGraphBuilder& rr_graph_builder,
160160
RRSwitchOffsetInfoId rr_switch_offset_id;
161161
if (it == unique_edge_offsets.end()) {
162162
// if the detailed info is seen for the first time, add it to RR graph and record it in `unique_edge_offsets`
163-
rr_switch_offset_id = rr_graph_builder.add_rr_switch_offset_info(rr_switch_detailed_inf);
163+
rr_switch_offset_id = rr_graph_builder.add_rr_switch_override_info(rr_switch_detailed_inf);
164164
unique_edge_offsets.insert({rr_switch_detailed_inf, rr_switch_offset_id});
165165
} else {
166166
// the detailed info has already been added to the RR graph

0 commit comments

Comments
 (0)