|
VPR-7.0
|
#include <stdio.h>#include <assert.h>#include <string.h>#include "read_xml_arch_file.h"#include "util.h"#include "vpr_types.h"#include "globals.h"#include "hash.h"#include "prepack.h"#include "vpr_utils.h"#include "ReadOptions.h"
Include dependency graph for prepack.c:Go to the source code of this file.
Functions | |
| static int | add_pattern_name_to_hash (INOUTP struct s_hash **nhash, INP char *pattern_name, INOUTP int *ncount) |
| static void | discover_pattern_names_in_pb_graph_node (INOUTP t_pb_graph_node *pb_graph_node, INOUTP struct s_hash **nhash, INOUTP int *ncount) |
| static void | forward_infer_pattern (INOUTP t_pb_graph_pin *pb_graph_pin) |
| static void | backward_infer_pattern (INOUTP t_pb_graph_pin *pb_graph_pin) |
| static t_pack_patterns * | alloc_and_init_pattern_list_from_hash (INP int ncount, INOUTP struct s_hash **nhash) |
| static t_pb_graph_edge * | find_expansion_edge_of_pattern (INP int pattern_index, INP t_pb_graph_node *pb_graph_node) |
| static void | forward_expand_pack_pattern_from_edge (INP t_pb_graph_edge *expansion_edge, INOUTP t_pack_patterns *list_of_packing_patterns, INP int curr_pattern_index, INP int *L_num_blocks, INP boolean make_root_of_chain) |
| static void | backward_expand_pack_pattern_from_edge (INP t_pb_graph_edge *expansion_edge, INOUTP t_pack_patterns *list_of_packing_patterns, INP int curr_pattern_index, INP t_pb_graph_pin *destination_pin, INP t_pack_pattern_block *destination_block, INP int *L_num_blocks) |
| static int | compare_pack_pattern (const t_pack_patterns *pattern_a, const t_pack_patterns *pattern_b) |
| static void | free_pack_pattern (INOUTP t_pack_pattern_block *pattern_block, INOUTP t_pack_pattern_block **pattern_block_list) |
| static t_pack_molecule * | try_create_molecule (INP t_pack_patterns *list_of_pack_patterns, INP int pack_pattern_index, INP int block_index) |
| static boolean | try_expand_molecule (INOUTP t_pack_molecule *molecule, INP int logical_block_index, INP t_pack_pattern_block *current_pattern_block) |
| static void | print_pack_molecules (INP const char *fname, INP t_pack_patterns *list_of_pack_patterns, INP int num_pack_patterns, INP t_pack_molecule *list_of_molecules) |
| static t_pb_graph_node * | get_expected_lowest_cost_primitive_for_logical_block (INP int ilogical_block) |
| static t_pb_graph_node * | get_expected_lowest_cost_primitive_for_logical_block_in_pb_graph_node (INP int ilogical_block, INP t_pb_graph_node *curr_pb_graph_node, OUTP float *cost) |
| static int | find_new_root_atom_for_chain (INP int block_index, INP t_pack_patterns *list_of_pack_pattern) |
| t_pack_patterns * | alloc_and_load_pack_patterns (OUTP int *num_packing_patterns) |
| void | free_list_of_pack_patterns (INP t_pack_patterns *list_of_pack_patterns, INP int num_packing_patterns) |
| static void | forward_expand_pack_pattern_from_edge (INP t_pb_graph_edge *expansion_edge, INOUTP t_pack_patterns *list_of_packing_patterns, INP int curr_pattern_index, INP int *L_num_blocks, INOUTP boolean make_root_of_chain) |
| t_pack_molecule * | alloc_and_load_pack_molecules (INP t_pack_patterns *list_of_pack_patterns, INP int num_packing_patterns, OUTP int *num_pack_molecule) |
|
static |
Adds pack pattern name to hashtable of pack pattern names.
Definition at line 130 of file prepack.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Allocates memory for models and loads the name of the packing pattern so that it can be identified and loaded with more complete information later
Definition at line 298 of file prepack.c.
Here is the call graph for this function:
Here is the caller graph for this function:| t_pack_molecule* alloc_and_load_pack_molecules | ( | INP t_pack_patterns * | list_of_pack_patterns, |
| INP int | num_packing_patterns, | ||
| OUTP int * | num_pack_molecule | ||
| ) |
Pre-pack atoms in netlist to molecules
Definition at line 756 of file prepack.c.
Here is the call graph for this function:
Here is the caller graph for this function:| t_pack_patterns* alloc_and_load_pack_patterns | ( | OUTP int * | num_packing_patterns | ) |
Find all packing patterns in architecture [0..num_packing_patterns-1]
Limitations: Currently assumes that forced pack nets must be single-fanout as this covers all the reasonable architectures we wanted. More complicated structures should probably be handled either downstream (general packing) or upstream (in tech mapping) If this limitation is too constraining, code is designed so that this limitation can be removed
Definition at line 75 of file prepack.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Find if driver of edge is in the same pattern, if yes, add to pattern Convention: Connections are made on backward expansion only (to make future multi-fanout support easier) so this function must update both source and destination blocks
Definition at line 572 of file prepack.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 285 of file prepack.c.
Here is the caller graph for this function:
|
static |
|
static |
Locate all pattern names Side-effect: set all pb_graph_node temp_scratch_pad field to NULL For cases where a pattern inference is "obvious", mark it as obvious.
Definition at line 147 of file prepack.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Locate first edge that belongs to pattern index
Definition at line 341 of file prepack.c.
Here is the caller graph for this function:
|
static |
Definition at line 1155 of file prepack.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Here is the caller graph for this function:
|
static |
Find if receiver of edge is in the same pattern, if yes, add to pattern Convention: Connections are made on backward expansion only (to make future multi-fanout support easier) so this function will not update connections
Definition at line 426 of file prepack.c.
Here is the call graph for this function:
|
static |
In obvious cases where a pattern edge has only one path to go, set that path to be inferred
Definition at line 277 of file prepack.c.
Here is the caller graph for this function:| void free_list_of_pack_patterns | ( | INP t_pack_patterns * | list_of_pack_patterns, |
| INP int | num_packing_patterns | ||
| ) |
Definition at line 319 of file prepack.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 841 of file prepack.c.
Here is the caller graph for this function:
|
static |
Definition at line 1063 of file prepack.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 1084 of file prepack.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 1009 of file prepack.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Given a pattern and a logical block to serve as the root block, determine if the candidate logical block serving as the root node matches the pattern If yes, return the molecule with this logical block as the root, if not, return NULL Limitations: Currently assumes that forced pack nets must be single-fanout as this covers all the reasonable architectures we wanted More complicated structures should probably be handled either downstream (general packing) or upstream (in tech mapping) If this limitation is too constraining, code is designed so that this limitation can be removed Side Effect: If successful, link atom to molecule
Definition at line 867 of file prepack.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Determine if logical block can match with the pattern to form a molecule return TRUE if it matches, return FALSE otherwise
Definition at line 919 of file prepack.c.
Here is the call graph for this function:
Here is the caller graph for this function: