VPR-7.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
cad_types.h
Go to the documentation of this file.
1 /*
2  Data types used to give architectural hints for the CAD algorithm
3  */
4 #ifndef CAD_TYPES_H
5 #define CAD_TYPES_H
6 
7 #include "logic_types.h"
8 #include "physical_types.h"
9 #include "util.h"
10 
12 typedef struct s_pack_pattern_block {
13  int pattern_index; /* index of pattern that this block is a part of */
14  const t_pb_type *pb_type; /* pb_type that this block is an instance of */
15  struct s_pack_pattern_connections *connections; /* linked list of connections of logic blocks in pattern */
16  int block_id;
18 
19 /* Describes connections of s_pack_pattern_block */
23 
26 
29 
30 typedef struct s_pack_patterns {
31  char *name; /* name of this logic model pattern */
32  int index; /* array index for pattern*/
33  t_pack_pattern_block *root_block; /* root block used by this pattern */
34  float base_cost; /* base cost of pattern eg. If a group of logical blocks match a pattern of smaller primitives, that is better than the same group using bigger primitives */
35  int num_blocks; /* number of blocks in pattern */
36  boolean *is_block_optional; /* [0..num_blocks-1] is the block_id in this pattern mandatory or optional to form a molecule */
37 
38  boolean is_chain; /* Does this pattern chain across logic blocks */
39  t_pb_graph_pin *chain_root_pin; /* pointer to logic block input pin that drives this chain from the preceding logic block */
41 
42 typedef struct s_model_chain_pattern {
43  char *name; /* name of this chain of logic */
44  t_model *model; /* block associated with chain */
45  t_model_ports *input_link_port; /* pointer to port of chain input */
46  int inport_link_pin; /* applicable pin of chain input port */
47  t_model_ports *output_link_port; /* pointer to port of chain output */
48  int outport_link_pin; /* applicable pin of chain output port */
49  struct s_model_chain_pattern *next; /* next chain (linked list) */
51 
52 /**
53  * Keeps track of locations that a primitive can go to during packing
54  * Linked list for easy insertion/deletion
55  */
59  boolean valid;
60  float base_cost; /* cost independant of current status of packing */
61  float incremental_cost; /* cost dependant on current status of packing */
63 
64 #endif
struct s_model_chain_pattern t_model_chain_pattern
const t_pb_type * pb_type
Definition: cad_types.h:14
boolean is_chain
Definition: cad_types.h:38
boolean * is_block_optional
Definition: cad_types.h:36
t_pb_graph_pin * chain_root_pin
Definition: cad_types.h:39
t_pack_pattern_block * from_block
Definition: cad_types.h:21
struct s_cluster_placement_primitive t_cluster_placement_primitive
struct s_pack_pattern_block t_pack_pattern_block
t_pack_pattern_block * to_block
Definition: cad_types.h:24
t_pb_graph_pin * to_pin
Definition: cad_types.h:25
struct s_model_chain_pattern * next
Definition: cad_types.h:49
struct s_pack_patterns t_pack_patterns
struct s_cluster_placement_primitive * next_primitive
Definition: cad_types.h:58
t_pb_graph_pin * from_pin
Definition: cad_types.h:22
struct s_pack_pattern_connections * next
Definition: cad_types.h:27
struct s_pack_pattern_connections t_pack_pattern_connections
struct s_pack_pattern_connections * connections
Definition: cad_types.h:15
t_model_ports * output_link_port
Definition: cad_types.h:47
t_pb_graph_node * pb_graph_node
Definition: cad_types.h:57
t_model_ports * input_link_port
Definition: cad_types.h:45
t_pack_pattern_block * root_block
Definition: cad_types.h:33
float base_cost
Definition: cad_types.h:34