openfpga/src/repack/build_physical_lb_rr_graph.cpp
/***************************************************************************************
 * This functio will create physical lb_rr_graph for each pb_graph considering physical modes only
 * the lb_rr_graph willbe added to device annotation
 ***************************************************************************************/
This functio will create physical lb_rr_graph for each pb_graph considering physical modes only
the lb_rr_graph willbe added to device annotation
This functio will create physical lb_rr_graph for each pb_graph considering physical modes only the lb_rr_graph willbe added to device annotation
void build_physical_lb_rr_graphs(const DeviceContext& device_ctx,
                                 VprDeviceAnnotation& device_annotation,
                                 const bool& verbose) {
  vtr::ScopedStartFinishTimer timer("Build routing resource graph for the physical implementation of logical tile");
  for (const t_logical_block_type& lb_type : device_ctx.logical_block_types) {
    if (nullptr == lb_type.pb_graph_head) {
      continue;
    }
    VTR_LOGV(verbose,
             "Building routing resource graph for logical tile '%s'...",
             lb_type.pb_graph_head->pb_type->name);
    const LbRRGraph& lb_rr_graph = build_lb_type_physical_lb_rr_graph(lb_type.pb_graph_head, const_cast<const VprDeviceAnnotation&>(device_annotation), verbose); 
    if (false == lb_rr_graph.validate()) {
      exit(1);
    }
    if (false == check_lb_rr_graph(lb_rr_graph)) {
      exit(1);
    }
    VTR_LOGV(verbose, 
             "Check routing resource graph for logical tile passed\n");
    device_annotation.add_physical_lb_rr_graph(lb_type.pb_graph_head, lb_rr_graph);
  }
  VTR_LOGV(verbose, "Done\n");
}
void build_physical_lb_rr_graphs ( const DeviceContext & device_ctx , VprDeviceAnnotation & device_annotation , const bool & verbose ) { vtr :: ScopedStartFinishTimer timer ( " " ) ; for ( const t_logical_block_type & lb_type : device_ctx . logical_block_types ) { if ( nullptr == lb_type . pb_graph_head ) { continue ; } VTR_LOGV ( verbose , " " , lb_type . pb_graph_head -> pb_type -> name ) ; const LbRRGraph & lb_rr_graph = build_lb_type_physical_lb_rr_graph ( lb_type . pb_graph_head , const_cast < const VprDeviceAnnotation & > ( device_annotation ) , verbose ) ; if ( false == lb_rr_graph . validate ( ) ) { exit ( 1 ) ; } if ( false == check_lb_rr_graph ( lb_rr_graph ) ) { exit ( 1 ) ; } VTR_LOGV ( verbose , " \n " ) ; device_annotation . add_physical_lb_rr_graph ( lb_type . pb_graph_head , lb_rr_graph ) ; } VTR_LOGV ( verbose , " \n " ) ; }
This functio will create physical lb_rr_graph for each pb_graph considering physical modes only
 the lb_rr_graph willbe added to device annotation
This functio will create physical lb_rr_graph for each pb_graph considering physical modes only the lb_rr_graph willbe added to device annotation
/* By pass nullptr for pb_graph head */ /* Check the rr_graph */