Skip to content

Commit 24def33

Browse files
authored
Merge pull request #1856 from RapidSilicon/api_set_node_direction
Add a new API set_node_direction() to RRGraphBuilder
2 parents 0010a73 + a753290 commit 24def33

File tree

6 files changed

+10
-9
lines changed

6 files changed

+10
-9
lines changed

vpr/src/device/rr_graph_builder.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ class RRGraphBuilder {
6969
node_storage_.set_node_coordinates(id, x1, y1, x2, y2);
7070
}
7171

72+
/** @brief Set the node direction; The node direction is only available of routing channel nodes, such as x-direction routing tracks (CHANX) and y-direction routing tracks (CHANY). For other nodes types, this value is not meaningful and should be set to NONE. */
73+
inline void set_node_direction(RRNodeId id, Direction new_direction) {
74+
node_storage_.set_node_direction(id, new_direction);
75+
}
7276
/* -- Internal data storage -- */
7377
private:
7478
/* TODO: When the refactoring effort finishes,

vpr/src/route/clock_network_builders.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ int ClockRib::create_chanx_wire(int x_start,
325325
node.set_track_num(ptc_num);
326326
node.set_rc_index(find_create_rr_rc_data(
327327
x_chan_wire.layer.r_metal, x_chan_wire.layer.c_metal));
328-
node.set_direction(direction);
328+
rr_graph_builder.set_node_direction(chanx_node, direction);
329329

330330
short seg_index = 0;
331331
switch (direction) {
@@ -631,7 +631,7 @@ int ClockSpine::create_chany_wire(int y_start,
631631
node.set_track_num(ptc_num);
632632
node.set_rc_index(find_create_rr_rc_data(
633633
y_chan_wire.layer.r_metal, y_chan_wire.layer.c_metal));
634-
node.set_direction(direction);
634+
rr_graph_builder.set_node_direction(chany_node, direction);
635635

636636
short seg_index = 0;
637637
switch (direction) {

vpr/src/route/rr_graph.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1673,7 +1673,7 @@ static void build_rr_chan(RRGraphBuilder& rr_graph_builder,
16731673

16741674
L_rr_node.set_node_ptc_num(node, track);
16751675
rr_graph_builder.set_node_type(node, chan_type);
1676-
L_rr_node.set_node_direction(node, seg_details[track].direction());
1676+
rr_graph_builder.set_node_direction(node, seg_details[track].direction());
16771677
}
16781678
}
16791679

vpr/src/route/rr_graph_uxsdcxx_serializer.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -818,14 +818,16 @@ class RrGraphSerializer final : public uxsd::RrGraphBase<RrGraphContextTypes> {
818818
inline void set_node_direction(uxsd::enum_node_direction direction, int& inode) final {
819819
const auto& rr_graph = (*rr_graph_);
820820
auto node = (*rr_nodes_)[inode];
821+
RRNodeId node_id = node.id();
822+
821823
if (direction == uxsd::enum_node_direction::UXSD_INVALID) {
822824
if (rr_graph.node_type(node.id()) == CHANX || rr_graph.node_type(node.id()) == CHANY) {
823825
report_error(
824826
"inode %d is type %d, which requires a direction, but no direction was supplied.",
825827
inode, rr_graph.node_type(node.id()));
826828
}
827829
} else {
828-
node.set_direction(from_uxsd_node_direction(direction));
830+
rr_graph_builder_->set_node_direction(node_id, from_uxsd_node_direction(direction));
829831
}
830832
}
831833
inline uxsd::enum_node_direction get_node_direction(const t_rr_node& node) final {

vpr/src/route/rr_node.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,6 @@ void t_rr_node::set_rc_index(short new_rc_index) {
7575
storage_->set_node_rc_index(id_, new_rc_index);
7676
}
7777

78-
void t_rr_node::set_direction(Direction new_direction) {
79-
storage_->set_node_direction(id_, new_direction);
80-
}
81-
8278
void t_rr_node::add_side(e_side new_side) {
8379
storage_->add_node_side(id_, new_side);
8480
}

vpr/src/route/rr_node.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ class t_rr_node {
116116
void set_cost_index(RRIndexedDataId);
117117
void set_rc_index(short);
118118

119-
void set_direction(Direction);
120119
void set_side(e_side);
121120
void add_side(e_side);
122121

0 commit comments

Comments
 (0)