vpr/src/tileable_rr_graph/chan_node_details.cpp
/* Track_id is the starting point of group (whose is_start should be true) 
 * This function will try to find the track_ids with the same directionality as track_id and seg_length
 * A group size is the number of such nodes between the starting points (include the 1st starting point) 
 */
Track_id is the starting point of group (whose is_start should be true)
This function will try to find the track_ids with the same directionality as track_id and seg_length
A group size is the number of such nodes between the starting points (include the 1st starting point)
Track_id is the starting point of group ( whose is_start should be true ) This function will try to find the track_ids with the same directionality as track_id and seg_length A group size is the number of such nodes between the starting points ( include the 1st starting point )
std::vector<size_t> ChanNodeDetails::get_seg_group(const size_t& track_id) const {
  VTR_ASSERT(validate_chan_width());
  VTR_ASSERT(validate_track_id(track_id));
  VTR_ASSERT(is_track_start(track_id));
  std::vector<size_t> group;
  group.clear();
  for (size_t itrack = track_id; itrack < get_chan_width(); ++itrack) {
    if ( (get_track_direction(itrack) != get_track_direction(track_id) )
      || (get_track_segment_id(itrack) != get_track_segment_id(track_id)) ) {
      continue;
    }
    if ( (false == is_track_start(itrack)) 
      || ( (true == is_track_start(itrack)) && (itrack == track_id)) ) {
      group.push_back(itrack);
      continue;
    }
    if (true == is_track_start(itrack)) {
      break;
    }
  }  
  return group;
}
std :: vector < size_t > ChanNodeDetails :: get_seg_group ( const size_t & track_id ) const { VTR_ASSERT ( validate_chan_width ( ) ) ; VTR_ASSERT ( validate_track_id ( track_id ) ) ; VTR_ASSERT ( is_track_start ( track_id ) ) ; std :: vector < size_t > group ; group . clear ( ) ; for ( size_t itrack = track_id ; itrack < get_chan_width ( ) ; ++ itrack ) { if ( ( get_track_direction ( itrack ) != get_track_direction ( track_id ) ) || ( get_track_segment_id ( itrack ) != get_track_segment_id ( track_id ) ) ) { continue ; } if ( ( false == is_track_start ( itrack ) ) || ( ( true == is_track_start ( itrack ) ) && ( itrack == track_id ) ) ) { group . push_back ( itrack ) ; continue ; } if ( true == is_track_start ( itrack ) ) { break ; } } return group ; }
Track_id is the starting point of group (whose is_start should be true)
 This function will try to find the track_ids with the same directionality as track_id and seg_length
 A group size is the number of such nodes between the starting points (include the 1st starting point)
Track_id is the starting point of group ( whose is_start should be true ) This function will try to find the track_ids with the same directionality as track_id and seg_length A group size is the number of such nodes between the starting points ( include the 1st starting point )
/* Make sure a clean start */ /* Bypass any nodes in different direction and segment information*/ /* Stop if this another starting point */