VPR-7.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
cluster_feasibility_filter.h
Go to the documentation of this file.
1 /*
2  Feasibility filter used during packing that determines if various necessary conditions for legality are met
3 
4  Important for 2 reasons:
5  1) Quickly reject cases that are bad so that we don't waste time exploring useless cases in packing
6  2) Robustness issue. During packing, we have a limited size queue to store candidates to try to pack. A good filter helps keep that queue filled with candidates likely to pass.
7 
8  1st major filter: Pin counting based on pin classes
9  Rationale: If the number of a particular gruop of pins supplied by the pb_graph_node in the architecture is insufficient to meet a candidate packing solution's demand for that group of pins, then that
10  candidate solution is for sure invalid without any further legalization checks. For example, if a candidate solution requires 2 clock pins but the architecture only has one clock, then that solution
11  can't be legal.
12 
13  Implementation details:
14  a) Definition of a pin class - If there exists a path (ignoring directionality of connections) from pin A to pin B and pin A and pin B are of the same type (input, output, or clock), then pin A and pin B are in the same pin class. Otherwise, pin A and pin B are in different pin classes.
15  b) Code Identifies pin classes. Given a candidate solution
16 
17  Author: Jason Luu
18  Date: May 16, 2012
19 
20  */
21 
22 #ifndef CLUSTER_FEASIBILITY_CHECK_H
23 #define CLUSTER_FEASIBILITY_CHECK_H
24 #include "arch_types.h"
25 #include "util.h"
26 
28 
29 #endif
#define INOUTP
Definition: util.h:21
void load_pin_classes_in_pb_graph_head(INOUTP t_pb_graph_node *pb_graph_node)