Skip to content

Commit fbbf53d

Browse files
committed
[vpr] fixed a bug where perimeter cb are not connected to adjancet sbs
1 parent 159bea4 commit fbbf53d

File tree

3 files changed

+7
-5
lines changed

3 files changed

+7
-5
lines changed

vpr/src/tileable_rr_graph/tileable_rr_graph_edge_builder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ void build_rr_graph_edges(const RRGraphView& rr_graph,
139139
/* Create a GSB object */
140140
const RRGSB& rr_gsb = build_one_tileable_rr_gsb(grids, rr_graph,
141141
device_chan_width, segment_inf_x, segment_inf_y,
142-
layer, gsb_coord);
142+
layer, gsb_coord, perimeter_cb);
143143

144144
/* adapt the track_to_ipin_lookup for the GSB nodes */
145145
t_track2pin_map track2ipin_map; /* [0..track_gsb_side][0..num_tracks][ipin_indices] */

vpr/src/tileable_rr_graph/tileable_rr_graph_gsb.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -623,7 +623,8 @@ RRGSB build_one_tileable_rr_gsb(const DeviceGrid& grids,
623623
const std::vector<t_segment_inf>& segment_inf_x,
624624
const std::vector<t_segment_inf>& segment_inf_y,
625625
const size_t& layer,
626-
const vtr::Point<size_t>& gsb_coordinate) {
626+
const vtr::Point<size_t>& gsb_coordinate,
627+
const bool& perimeter_cb) {
627628
/* Create an object to return */
628629
RRGSB rr_gsb;
629630

@@ -719,7 +720,7 @@ RRGSB build_one_tileable_rr_gsb(const DeviceGrid& grids,
719720
break;
720721
case BOTTOM: /* BOTTOM = 2*/
721722
/* For the bording, we should take special care */
722-
if (gsb_coordinate.y() == 0) {
723+
if (!perimeter_cb && gsb_coordinate.y() == 0) {
723724
rr_gsb.clear_one_side(side_manager.get_side());
724725
break;
725726
}
@@ -749,7 +750,7 @@ RRGSB build_one_tileable_rr_gsb(const DeviceGrid& grids,
749750
break;
750751
case LEFT: /* LEFT = 3 */
751752
/* For the bording, we should take special care */
752-
if (gsb_coordinate.x() == 0) {
753+
if (!perimeter_cb && gsb_coordinate.x() == 0) {
753754
rr_gsb.clear_one_side(side_manager.get_side());
754755
break;
755756
}

vpr/src/tileable_rr_graph/tileable_rr_graph_gsb.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ RRGSB build_one_tileable_rr_gsb(const DeviceGrid& grids,
4747
const std::vector<t_segment_inf>& segment_inf_x,
4848
const std::vector<t_segment_inf>& segment_inf_y,
4949
const size_t& layer,
50-
const vtr::Point<size_t>& gsb_coordinate);
50+
const vtr::Point<size_t>& gsb_coordinate,
51+
const bool& perimeter_cb);
5152

5253
void build_edges_for_one_tileable_rr_gsb(RRGraphBuilder& rr_graph_builder,
5354
const RRGSB& rr_gsb,

0 commit comments

Comments
 (0)