VPR-6.0

vpr/SRC/route/rr_graph.h

Go to the documentation of this file.
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