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 "vpr_utils.h"
#include "hash.h"
#include "cluster_placement.h"
Go to the source code of this file.
t_cluster_placement_stats* alloc_and_load_cluster_placement_stats | ( | void | ) |
[0..num_pb_types-1] array of cluster placement stats, one for each type_descriptors
Definition at line 56 of file cluster_placement.c.
void commit_primitive | ( | INOUTP t_cluster_placement_stats * | cluster_placement_stats, |
INP t_pb_graph_node * | primitive | ||
) |
Commit primitive, invalidate primitives blocked by mode assignment and update costs for primitives in same cluster as current Costing is done to try to pack blocks closer to existing primitives actual value based on closest common ancestor to committed placement, the farther the ancestor, the less reduction in cost there is Side effects: All cluster_placement_primitives may be invalidated/costed in this algorithm Al intermediate queues are requeued
Definition at line 347 of file cluster_placement.c.
boolean exists_free_primitive_for_logical_block | ( | INOUTP t_cluster_placement_stats * | cluster_placement_stats, |
INP int | ilogical_block | ||
) |
Definition at line 701 of file cluster_placement.c.
|
static |
Expand molecule at pb_graph_node Assumes molecule and pack pattern connections have fan-out 1
Definition at line 492 of file cluster_placement.c.
|
static |
Find next primitive pb_graph_pin
Definition at line 569 of file cluster_placement.c.
|
static |
Definition at line 670 of file cluster_placement.c.
void free_cluster_placement_stats | ( | INOUTP t_cluster_placement_stats * | cluster_placement_stats_list | ) |
Free linked lists found in cluster_placement_stats_list
Definition at line 214 of file cluster_placement.c.
int get_array_size_of_molecule | ( | t_pack_molecule * | molecule | ) |
Definition at line 692 of file cluster_placement.c.
boolean get_next_primitive_list | ( | INOUTP t_cluster_placement_stats * | cluster_placement_stats, |
INP t_pack_molecule * | molecule, | ||
INOUTP t_pb_graph_node ** | primitives_list, | ||
INP int | clb_index | ||
) |
get next list of primitives for list of logical blocks primitives is the list of ptrs to primitives that matches with the list of logical_blocks (by index), assumes memory is preallocated
return TRUE if can find next primitive, FALSE otherwise
cluster_placement_stats - ptr to the current cluster_placement_stats of open complex block molecule - molecule to pack into open complex block primitives_list - a list of primitives indexed to match logical_block_ptrs of molecule. Expects an allocated array of primitives ptrs as inputs. This function loads the array with the lowest cost primitives that implement molecule
Definition at line 88 of file cluster_placement.c.
|
static |
Add any primitives found in pb_graph_nodes to cluster_placement_stats Adds backward link from pb_graph_node to cluster_placement_primitive
Definition at line 292 of file cluster_placement.c.
|
static |
Put primitive back on queue of valid primitives Note that valid status is not changed because if the primitive is not valid, it will get properly collected later
Definition at line 256 of file cluster_placement.c.
void reset_cluster_placement_stats | ( | INOUTP t_cluster_placement_stats * | cluster_placement_stats | ) |
Resets one cluster placement stats by clearing incremental costs and returning all primitives to valid queue
Definition at line 183 of file cluster_placement.c.
void reset_tried_but_unused_cluster_placements | ( | INOUTP t_cluster_placement_stats * | cluster_placement_stats | ) |
Definition at line 744 of file cluster_placement.c.
|
static |
Definition at line 760 of file cluster_placement.c.
void set_mode_cluster_placement_stats | ( | INP t_pb_graph_node * | pb_graph_node, |
int | mode | ||
) |
Set mode of cluster
Definition at line 394 of file cluster_placement.c.
|
static |
Try place molecule at root location, populate primitives list with locations of placement if successful
Definition at line 454 of file cluster_placement.c.
|
static |
For sibling primitives of pb_graph node, decrease cost For modes invalidated by pb_graph_node, invalidate primitive int distance is the distance of current pb_graph_node from original
Definition at line 420 of file cluster_placement.c.