@@ -1757,8 +1757,10 @@ void build_direct_connections_for_one_gsb(const RRGraphView& rr_graph,
17571757 /* Find the side of grid pins, the pin location should be unique!
17581758 * Pin location is required by searching a node in rr_graph
17591759 */
1760- std::vector<e_side> opin_grid_side = find_grid_pin_sides (grids, layer, from_grid_coordinate.x (), from_grid_coordinate.y (), opin);
1761- VTR_ASSERT (1 == opin_grid_side.size ());
1760+ std::vector<e_side> opin_grid_side = find_grid_pin_sides (grids, layer, from_grid_coordinate.x () + grid_type->pin_width_offset [opin], from_grid_coordinate.y () + grid_type->pin_height_offset [opin], opin);
1761+ if (1 != opin_grid_side.size ()) {
1762+ VTR_ASSERT (1 == opin_grid_side.size ());
1763+ }
17621764
17631765 /* directs[i].sub_tile_offset is added to from_capacity(z) to get the target_capacity */
17641766 int to_subtile_cap = z + directs[i].sub_tile_offset ;
@@ -1775,8 +1777,10 @@ void build_direct_connections_for_one_gsb(const RRGraphView& rr_graph,
17751777 // If this block has capacity > 1 then the pins of z position > 0 are offset
17761778 // by the number of pins per capacity instance
17771779 int ipin = get_physical_pin_from_capacity_location (to_grid_type, relative_ipin, to_subtile_cap);
1778- std::vector<e_side> ipin_grid_side = find_grid_pin_sides (grids, layer, to_grid_coordinate.x (), to_grid_coordinate.y (), ipin);
1779- VTR_ASSERT (1 == ipin_grid_side.size ());
1780+ std::vector<e_side> ipin_grid_side = find_grid_pin_sides (grids, layer, to_grid_coordinate.x () + to_grid_type->pin_width_offset [ipin], to_grid_coordinate.y () + to_grid_type->pin_height_offset [ipin], ipin);
1781+ if (1 != ipin_grid_side.size ()) {
1782+ VTR_ASSERT (1 == ipin_grid_side.size ());
1783+ }
17801784
17811785 RRNodeId opin_node_id = rr_graph.node_lookup ().find_node (layer,
17821786 from_grid_coordinate.x () - from_grid_width_ofs,
0 commit comments