VPR-7.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
rr_graph2.h
Go to the documentation of this file.
1 #ifndef RR_GRAPH2_H
2 #define RR_GRAPH2_H
3 
4 /************** Global variables shared only by the rr_* modules. ************/
5 
6 extern boolean *rr_edge_done; /* [0..num_rr_nodes-1]. Used to keep track *
7  * of whether or not a node has been put in *
8  * an edge list yet. TRUE if a node is already listed in the edges array *
9  * that's being constructed. Ensure that there are no duplicate edges. */
10 
11 /******************* Subroutines exported by rr_graph2.c *********************/
12 
13 struct s_ivec ***alloc_and_load_rr_node_indices(INP int nodes_per_chan,
14  INP int L_nx,
15  INP int L_ny,
16  INOUTP int *index,
17  INP t_seg_details * seg_details) ;
18 
19 void free_rr_node_indices(INP t_ivec *** L_rr_node_indices);
20 
21 int get_rr_node_index(int x, int y, t_rr_type rr_type, int ptc,
22  t_ivec *** L_rr_node_indices);
23 
24 void free_seg_details(t_seg_details * seg_details, int nodes_per_chan);
25 
27  INP int max_len,
28  INP int num_seg_types,
29  INP t_segment_inf * segment_inf,
30  INP boolean use_full_seg_groups,
31  INP boolean is_global_graph,
33  directionality);
34 
35 void dump_seg_details(t_seg_details * seg_details, int nodes_per_chan,
36  const char *fname);
37 
38 int get_seg_start(INP t_seg_details * seg_details,
39  INP int itrack,
40  INP int chan_num,
41  INP int seg_num);
42 
43 int get_seg_end(INP t_seg_details * seg_details,
44  INP int itrack,
45  INP int istart,
46  INP int chan_num,
47  INP int seg_max);
48 
49 boolean is_cbox(INP int chan,
50  INP int seg,
51  INP int track,
52  INP t_seg_details * seg_details,
53  INP enum e_directionality directionality);
54 
55 boolean is_sbox(INP int chan,
56  INP int wire_seg,
57  INP int sb_seg,
58  INP int track,
59  INP t_seg_details * seg_details,
60  INP enum e_directionality directionality);
61 
63  INP int j,
64  INP int ipin,
65  INP struct s_linked_edge **edge_list,
66  INP int *****opin_to_track_map,
67  INP int Fc,
68  INP boolean * L_rr_edge_done,
69  INP t_ivec *** L_rr_node_indices,
70  INP t_seg_details * seg_details);
71 
72 int get_unidir_opin_connections(INP int chan,
73  INP int seg,
74  INP int Fc,
75  INP t_rr_type chan_type,
76  INP t_seg_details * seg_details,
77  INOUTP t_linked_edge ** edge_list_ptr,
78  INOUTP int **Fc_ofs,
79  INOUTP boolean * L_rr_edge_done,
80  INP int max_len,
81  INP int nodes_per_chan,
82  INP t_ivec *** L_rr_node_indices,
83  OUTP boolean * Fc_clipped);
84 
85 int get_track_to_ipins(int seg, int chan, int track,
86  t_linked_edge ** edge_list_ptr, t_ivec *** L_rr_node_indices,
87  struct s_ivec ****track_to_ipin_lookup, t_seg_details * seg_details,
88  enum e_rr_type chan_type, int chan_length, int wire_to_ipin_switch,
89  enum e_directionality directionality);
90 
91 int get_track_to_tracks(INP int from_chan,
92  INP int from_seg,
93  INP int from_track,
94  INP t_rr_type from_type,
95  INP int to_seg,
96  INP t_rr_type to_type,
97  INP int chan_len,
98  INP int nodes_per_chan,
99  INP int *opin_mux_size,
100  INP int Fs_per_side,
101  INP short *****sblock_pattern,
102  INOUTP struct s_linked_edge **edge_list,
103  INP t_seg_details * seg_details,
104  INP enum e_directionality directionality,
105  INP t_ivec *** L_rr_node_indices,
106  INOUTP boolean * L_rr_edge_done,
107  INP struct s_ivec ***switch_block_conn);
108 
109 short *****alloc_sblock_pattern_lookup(INP int L_nx,
110  INP int L_ny,
111  INP int nodes_per_chan);
112 void free_sblock_pattern_lookup(INOUTP short *****sblock_pattern);
114  INP int j,
115  INP int nodes_per_chan,
116  INP t_seg_details * seg_details,
117  INP int Fs,
118  INP enum e_switch_block_type switch_block_type,
119  INOUTP short *****sblock_pattern);
120 
121 #endif
122 
boolean is_sbox(INP int chan, INP int wire_seg, INP int sb_seg, INP int track, INP t_seg_details *seg_details, INP enum e_directionality directionality)
Definition: rr_graph2.c:1332
short ***** alloc_sblock_pattern_lookup(INP int L_nx, INP int L_ny, INP int nodes_per_chan)
Definition: rr_graph2.c:1444
boolean * rr_edge_done
void dump_seg_details(t_seg_details *seg_details, int nodes_per_chan, const char *fname)
Definition: rr_graph2.c:373
e_switch_block_type
int get_track_to_ipins(int seg, int chan, int track, t_linked_edge **edge_list_ptr, t_ivec ***L_rr_node_indices, struct s_ivec ****track_to_ipin_lookup, t_seg_details *seg_details, enum e_rr_type chan_type, int chan_length, int wire_to_ipin_switch, enum e_directionality directionality)
Definition: rr_graph2.c:929
#define INOUTP
Definition: util.h:21
void free_rr_node_indices(INP t_ivec ***L_rr_node_indices)
Definition: rr_graph2.c:797
t_seg_details * alloc_and_load_seg_details(INOUTP int *nodes_per_chan, INP int max_len, INP int num_seg_types, INP t_segment_inf *segment_inf, INP boolean use_full_seg_groups, INP boolean is_global_graph, INP enum e_directionality directionality)
Definition: rr_graph2.c:175
#define INP
Definition: util.h:19
int get_unidir_opin_connections(INP int chan, INP int seg, INP int Fc, INP t_rr_type chan_type, INP t_seg_details *seg_details, INOUTP t_linked_edge **edge_list_ptr, INOUTP int **Fc_ofs, INOUTP boolean *L_rr_edge_done, INP int max_len, INP int nodes_per_chan, INP t_ivec ***L_rr_node_indices, OUTP boolean *Fc_clipped)
Definition: rr_graph2.c:551
int get_seg_start(INP t_seg_details *seg_details, INP int itrack, INP int chan_num, INP int seg_num)
Definition: rr_graph2.c:416
void free_sblock_pattern_lookup(INOUTP short *****sblock_pattern)
Definition: rr_graph2.c:1508
int get_rr_node_index(int x, int y, t_rr_type rr_type, int ptc, t_ivec ***L_rr_node_indices)
Definition: rr_graph2.c:846
void load_sblock_pattern_lookup(INP int i, INP int j, INP int nodes_per_chan, INP t_seg_details *seg_details, INP int Fs, INP enum e_switch_block_type switch_block_type, INOUTP short *****sblock_pattern)
Definition: rr_graph2.c:1524
int get_track_to_tracks(INP int from_chan, INP int from_seg, INP int from_track, INP t_rr_type from_type, INP int to_seg, INP t_rr_type to_type, INP int chan_len, INP int nodes_per_chan, INP int *opin_mux_size, INP int Fs_per_side, INP short *****sblock_pattern, INOUTP struct s_linked_edge **edge_list, INP t_seg_details *seg_details, INP enum e_directionality directionality, INP t_ivec ***L_rr_node_indices, INOUTP boolean *L_rr_edge_done, INP struct s_ivec ***switch_block_conn)
Definition: rr_graph2.c:1017
Definition: util.h:47
struct s_ivec *** alloc_and_load_rr_node_indices(INP int nodes_per_chan, INP int L_nx, INP int L_ny, INOUTP int *index, INP t_seg_details *seg_details)
Definition: rr_graph2.c:707
void free_seg_details(t_seg_details *seg_details, int nodes_per_chan)
Definition: rr_graph2.c:358
enum e_rr_type t_rr_type
boolean is_cbox(INP int chan, INP int seg, INP int track, INP t_seg_details *seg_details, INP enum e_directionality directionality)
Definition: rr_graph2.c:636
#define OUTP
Definition: util.h:20
e_rr_type
Definition: vpr_types.h:853
int get_seg_end(INP t_seg_details *seg_details, INP int itrack, INP int istart, INP int chan_num, INP int seg_max)
Definition: rr_graph2.c:446
int get_bidir_opin_connections(INP int i, INP int j, INP int ipin, INP struct s_linked_edge **edge_list, INP int *****opin_to_track_map, INP int Fc, INP boolean *L_rr_edge_done, INP t_ivec ***L_rr_node_indices, INP t_seg_details *seg_details)
Definition: rr_graph2.c:478
e_directionality