bug fix for clock network builder using rr_graph object

This commit is contained in:
tangxifan 2020-02-04 21:32:05 -07:00
parent ecc3b8a4f0
commit e2f408cc2d
3 changed files with 9 additions and 7 deletions

View File

@ -846,10 +846,12 @@ RRNodeId RRGraph::create_node(const t_rr_type& type) {
return node_id;
}
RREdgeId RRGraph::create_edge(const RRNodeId& source, const RRNodeId& sink, const RRSwitchId& switch_id) {
RREdgeId RRGraph::create_edge(const RRNodeId& source, const RRNodeId& sink, const RRSwitchId& switch_id, const bool& fake_switch) {
VTR_ASSERT(valid_node_id(source));
VTR_ASSERT(valid_node_id(sink));
if (false == fake_switch) {
VTR_ASSERT(valid_switch_id(switch_id));
}
/* Allocate an ID */
RREdgeId edge_id = RREdgeId(num_edges_);

View File

@ -614,7 +614,7 @@ class RRGraph {
* This function will automatically create a node and
* configure the nodes and edges in connection
*/
RREdgeId create_edge(const RRNodeId& source, const RRNodeId& sink, const RRSwitchId& switch_id);
RREdgeId create_edge(const RRNodeId& source, const RRNodeId& sink, const RRSwitchId& switch_id, const bool& fake_switch=false);
void set_edge_switch(const RREdgeId& edge, const RRSwitchId& switch_id);
RRSwitchId create_switch(const t_rr_switch_inf& switch_info);
RRSegmentId create_segment(const t_segment_inf& segment_info);

View File

@ -255,8 +255,8 @@ void ClockRib::create_rr_nodes_and_internal_edges_for_one_instance(ClockRRGraphB
clock_graph);
// connect drive point to each half rib using a directed switch
rr_graph.create_edge(drive_node_idx, left_node_idx, RRSwitchId(drive.switch_idx));
rr_graph.create_edge(drive_node_idx, right_node_idx, RRSwitchId(drive.switch_idx));
rr_graph.create_edge(drive_node_idx, left_node_idx, RRSwitchId(drive.switch_idx), true);
rr_graph.create_edge(drive_node_idx, right_node_idx, RRSwitchId(drive.switch_idx), true);
}
}
}
@ -501,8 +501,8 @@ void ClockSpine::create_rr_nodes_and_internal_edges_for_one_instance(ClockRRGrap
clock_graph);
// connect drive point to each half spine using a directed switch
rr_graph.create_edge(drive_node_idx, left_node_idx, RRSwitchId(drive.switch_idx));
rr_graph.create_edge(drive_node_idx, right_node_idx, RRSwitchId(drive.switch_idx));
rr_graph.create_edge(drive_node_idx, left_node_idx, RRSwitchId(drive.switch_idx), true);
rr_graph.create_edge(drive_node_idx, right_node_idx, RRSwitchId(drive.switch_idx), true);
}
}
}