VPR-6.0
|
00001 #ifndef RR_GRAPH_H 00002 #define RR_GRAPH_H 00003 00004 enum e_graph_type 00005 { 00006 GRAPH_GLOBAL, /**< One node per channel with wire capacity > 1 and full connectivity */ 00007 GRAPH_BIDIR, /**< Detailed bidirectional graph */ 00008 GRAPH_UNIDIR, /**< Detailed unidir graph, untilable */ 00009 /* RESEARCH TODO: Get this option debugged */ 00010 GRAPH_UNIDIR_TILEABLE /**< Detail unidir graph with wire groups multiples of 2*L */ 00011 }; 00012 typedef enum e_graph_type t_graph_type; 00013 00014 /** Warnings about the routing graph that can be returned. 00015 * This is to avoid output messages during a value sweep 00016 */ 00017 enum 00018 { 00019 RR_GRAPH_NO_WARN = 0x00, 00020 RR_GRAPH_WARN_FC_CLIPPED = 0x01, 00021 RR_GRAPH_WARN_CHAN_WIDTH_CHANGED = 0x02 00022 }; 00023 00024 void build_rr_graph(INP t_graph_type graph_type, 00025 INP int num_types, 00026 INP t_type_ptr types, 00027 INP int nx, 00028 INP int ny, 00029 INP struct s_grid_tile **grid, 00030 INP int chan_width, 00031 INP struct s_chan_width_dist *chan_capacity_inf, 00032 INP enum e_switch_block_type sb_type, 00033 INP int Fs, 00034 INP int num_seg_types, 00035 INP int num_switches, 00036 INP t_segment_inf * segment_inf, 00037 INP int global_route_switch, 00038 INP int delayless_switch, 00039 INP t_timing_inf timing_inf, 00040 INP int wire_to_ipin_switch, 00041 INP enum e_base_cost_type base_cost_type, 00042 OUTP int *Warnings); 00043 00044 void free_rr_graph(void); 00045 00046 void dump_rr_graph(INP const char *file_name); 00047 /** For debugging only */ 00048 void print_rr_indexed_data(FILE * fp, 00049 int index); 00050 void load_net_rr_terminals(t_ivec *** rr_node_indices); 00051 00052 void print_rr_node(FILE *fp, t_rr_node *rr_node, int inode); 00053 00054 #endif 00055