VPR-7.0
|
#include <stdio.h>
#include <assert.h>
#include "util.h"
#include "vpr_types.h"
#include "globals.h"
#include "rr_graph_util.h"
#include "rr_graph2.h"
#include "rr_graph_sbox.h"
#include "read_xml_arch_file.h"
Go to the source code of this file.
Macros | |
#define | ALLOW_SWITCH_OFF |
#define | ENABLE_REVERSE 0 |
#define | SAME_TRACK -5 |
#define | UN_SET -1 |
Functions | |
static void | get_switch_type (boolean is_from_sbox, boolean is_to_sbox, short from_node_switch, short to_node_switch, short switch_types[2]) |
static void | load_chan_rr_indices (INP int nodes_per_chan, INP int chan_len, INP int num_chans, INP t_rr_type type, INP t_seg_details *seg_details, INOUTP int *index, INOUTP t_ivec ***indices) |
static int | get_bidir_track_to_chan_seg (INP struct s_ivec conn_tracks, INP t_ivec ***L_rr_node_indices, INP int to_chan, INP int to_seg, INP int to_sb, INP t_rr_type to_type, INP t_seg_details *seg_details, INP boolean from_is_sbox, INP int from_switch, INOUTP boolean *L_rr_edge_done, INP enum e_directionality directionality, INOUTP struct s_linked_edge **edge_list) |
static int | get_unidir_track_to_chan_seg (INP boolean is_end_sb, INP int from_track, INP int to_chan, INP int to_seg, INP int to_sb, INP t_rr_type to_type, INP int nodes_per_chan, INP int L_nx, INP int L_ny, INP enum e_side from_side, INP enum e_side to_side, INP int Fs_per_side, INP int *opin_mux_size, INP short *****sblock_pattern, INP t_ivec ***L_rr_node_indices, INP t_seg_details *seg_details, INOUTP boolean *L_rr_edge_done, OUTP boolean *Fs_clipped, INOUTP struct s_linked_edge **edge_list) |
static int | vpr_to_phy_track (INP int itrack, INP int chan_num, INP int seg_num, INP t_seg_details *seg_details, INP enum e_directionality directionality) |
static int * | get_seg_track_counts (INP int num_sets, INP int num_seg_types, INP t_segment_inf *segment_inf, INP boolean use_full_seg_groups) |
static int * | label_wire_muxes (INP int chan_num, INP int seg_num, INP t_seg_details *seg_details, INP int max_len, INP enum e_direction dir, INP int nodes_per_chan, OUTP int *num_wire_muxes) |
static int * | label_wire_muxes_for_balance (INP int chan_num, INP int seg_num, INP t_seg_details *seg_details, INP int max_len, INP enum e_direction direction, INP int nodes_per_chan, INP int *num_wire_muxes, INP t_rr_type chan_type, INP int *opin_mux_size, INP t_ivec ***L_rr_node_indices) |
static int * | label_incoming_wires (INP int chan_num, INP int seg_num, INP int sb_seg, INP t_seg_details *seg_details, INP int max_len, INP enum e_direction dir, INP int nodes_per_chan, OUTP int *num_incoming_wires, OUTP int *num_ending_wires) |
static int | find_label_of_track (int *wire_mux_on_track, int num_wire_muxes, int from_track) |
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) |
void | free_seg_details (t_seg_details *seg_details, int nodes_per_chan) |
void | dump_seg_details (t_seg_details *seg_details, int nodes_per_chan, const char *fname) |
int | get_seg_start (INP t_seg_details *seg_details, INP int itrack, INP int chan_num, INP int seg_num) |
int | get_seg_end (INP t_seg_details *seg_details, INP int itrack, INP int istart, INP int chan_num, INP int seg_max) |
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) |
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) |
boolean | is_cbox (INP int chan, INP int seg, INP int track, INP t_seg_details *seg_details, INP enum e_directionality directionality) |
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) |
void | free_rr_node_indices (INP t_ivec ***L_rr_node_indices) |
int | get_rr_node_index (int x, int y, t_rr_type rr_type, int ptc, t_ivec ***L_rr_node_indices) |
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) |
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) |
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) |
short ***** | alloc_sblock_pattern_lookup (INP int L_nx, INP int L_ny, INP int nodes_per_chan) |
void | free_sblock_pattern_lookup (INOUTP short *****sblock_pattern) |
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) |
Variables | |
t_linked_edge * | free_edge_list_head = NULL |
#define ALLOW_SWITCH_OFF |
Definition at line 11 of file rr_graph2.c.
#define ENABLE_REVERSE 0 |
Definition at line 16 of file rr_graph2.c.
#define SAME_TRACK -5 |
Definition at line 18 of file rr_graph2.c.
#define UN_SET -1 |
Definition at line 19 of file rr_graph2.c.
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 at line 707 of file rr_graph2.c.
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 at line 175 of file rr_graph2.c.
Definition at line 1444 of file rr_graph2.c.
void dump_seg_details | ( | t_seg_details * | seg_details, |
int | nodes_per_chan, | ||
const char * | fname | ||
) |
Definition at line 373 of file rr_graph2.c.
|
static |
Definition at line 2035 of file rr_graph2.c.
Definition at line 797 of file rr_graph2.c.
void free_sblock_pattern_lookup | ( | INOUTP short ***** | sblock_pattern | ) |
void free_seg_details | ( | t_seg_details * | seg_details, |
int | nodes_per_chan | ||
) |
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 at line 478 of file rr_graph2.c.
|
static |
Definition at line 1168 of file rr_graph2.c.
Definition at line 846 of file rr_graph2.c.
int get_seg_end | ( | INP t_seg_details * | seg_details, |
INP int | itrack, | ||
INP int | istart, | ||
INP int | chan_num, | ||
INP int | seg_max | ||
) |
int get_seg_start | ( | INP t_seg_details * | seg_details, |
INP int | itrack, | ||
INP int | chan_num, | ||
INP int | seg_num | ||
) |
|
static |
Definition at line 109 of file rr_graph2.c.
|
static |
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 at line 929 of file rr_graph2.c.
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 at line 1017 of file rr_graph2.c.
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 at line 551 of file rr_graph2.c.
|
static |
Definition at line 1228 of file rr_graph2.c.
boolean is_cbox | ( | INP int | chan, |
INP int | seg, | ||
INP int | track, | ||
INP t_seg_details * | seg_details, | ||
INP enum e_directionality | directionality | ||
) |
Definition at line 636 of file rr_graph2.c.
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 at line 1332 of file rr_graph2.c.
|
static |
Definition at line 1970 of file rr_graph2.c.
|
static |
Definition at line 1917 of file rr_graph2.c.
|
static |
Definition at line 1819 of file rr_graph2.c.
|
static |
Definition at line 660 of file rr_graph2.c.
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 at line 1524 of file rr_graph2.c.
|
static |
Definition at line 1415 of file rr_graph2.c.
t_linked_edge* free_edge_list_head = NULL |
Definition at line 25 of file rr_graph2.c.