VPR-7.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
pb_type_graph_annotations.h File Reference
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void load_pb_graph_pin_to_pin_annotations (INOUTP t_pb_graph_node *pb_graph_node)
 

Function Documentation

void load_pb_graph_pin_to_pin_annotations ( INOUTP t_pb_graph_node pb_graph_node)

Jason Luu April 15, 2011 pb_type_graph_annotations loads statistical information onto the different nodes/edges of a pb_type_graph. These statistical informations include delays, capacitance, etc.

Definition at line 29 of file pb_type_graph_annotations.c.

29  {
30  int i, j, k, m;
31  const t_pb_type *pb_type;
32  t_pin_to_pin_annotation *annotations;
33 
34  pb_type = pb_graph_node->pb_type;
35 
36  /* Load primitive critical path delays */
37  if (pb_type->num_modes == 0) {
38  annotations = pb_type->annotations;
39  for (i = 0; i < pb_type->num_annotations; i++) {
40  if (annotations[i].type == E_ANNOT_PIN_TO_PIN_DELAY) {
41  for (j = 0; j < annotations[i].num_value_prop_pairs; j++) {
42  if (annotations[i].prop[j] == E_ANNOT_PIN_TO_PIN_DELAY_MAX
43  || annotations[i].prop[j]
45  || annotations[i].prop[j]
47  load_critical_path_annotations(annotations[i].line_num, pb_graph_node, OPEN,
48  annotations[i].format, (enum e_pin_to_pin_delay_annotations)annotations[i].prop[j],
49  annotations[i].input_pins,
50  annotations[i].output_pins,
51  annotations[i].value[j]);
52  } else {
53  assert(
54  annotations[i].prop[j] == E_ANNOT_PIN_TO_PIN_DELAY_MIN || annotations[i].prop[j] == E_ANNOT_PIN_TO_PIN_DELAY_CLOCK_TO_Q_MIN || annotations[i].prop[j] == E_ANNOT_PIN_TO_PIN_DELAY_THOLD);
55  }
56  }
57  } else {
58  /* Todo:
59  load_hold_time_constraints_annotations(pb_graph_node);
60  load_power_annotations(pb_graph_node);
61  */
62  }
63  }
64  } else {
65  /* Load interconnect delays */
66  for (i = 0; i < pb_type->num_modes; i++) {
67  for (j = 0; j < pb_type->modes[i].num_interconnect; j++) {
68  annotations = pb_type->modes[i].interconnect[j].annotations;
69  for (k = 0;
70  k < pb_type->modes[i].interconnect[j].num_annotations;
71  k++) {
72  if (annotations[k].type == E_ANNOT_PIN_TO_PIN_DELAY) {
73  for (m = 0; m < annotations[k].num_value_prop_pairs;
74  m++) {
75  if (annotations[k].prop[m]
77  || annotations[k].prop[m]
79  || annotations[k].prop[m]
81  load_critical_path_annotations(annotations[k].line_num, pb_graph_node, i,
82  annotations[k].format,
83  (enum e_pin_to_pin_delay_annotations)annotations[k].prop[m],
84  annotations[k].input_pins,
85  annotations[k].output_pins,
86  annotations[k].value[m]);
87  } else {
88  assert(
89  annotations[k].prop[m] == E_ANNOT_PIN_TO_PIN_DELAY_MIN || annotations[k].prop[m] == E_ANNOT_PIN_TO_PIN_DELAY_CLOCK_TO_Q_MIN || annotations[k].prop[m] == E_ANNOT_PIN_TO_PIN_DELAY_THOLD);
90  }
91  }
92  } else if (annotations[k].type
94  assert(annotations[k].num_value_prop_pairs == 1);
95  load_pack_pattern_annotations(annotations[k].line_num, pb_graph_node, i,
96  annotations[k].input_pins,
97  annotations[k].output_pins,
98  annotations[k].value[0]);
99  } else {
100  /* Todo:
101  load_hold_time_constraints_annotations(pb_graph_node);
102  load_power_annotations(pb_graph_node);
103  */
104  }
105  }
106  }
107  }
108  }
109 
110  for (i = 0; i < pb_type->num_modes; i++) {
111  for (j = 0; j < pb_type->modes[i].num_pb_type_children; j++) {
112  for (k = 0; k < pb_type->modes[i].pb_type_children[j].num_pb; k++) {
114  &pb_graph_node->child_pb_graph_nodes[i][j][k]);
115  }
116  }
117  }
118 }
t_interconnect * interconnect
void load_pb_graph_pin_to_pin_annotations(INOUTP t_pb_graph_node *pb_graph_node)
e_pin_to_pin_delay_annotations
struct s_pb_type * pb_type_children
t_mode * modes
int num_interconnect
t_pin_to_pin_annotation * annotations
int num_annotations
static void load_pack_pattern_annotations(INP int line_num, INOUTP t_pb_graph_node *pb_graph_node, INP int mode, INP char *annot_in_pins, INP char *annot_out_pins, INP char *value)
t_pin_to_pin_annotation * annotations
int num_pb_type_children
Definition: slre.c:50
static void load_critical_path_annotations(INP int line_num, INOUTP t_pb_graph_node *pb_graph_node, INP int mode, INP enum e_pin_to_pin_annotation_format input_format, INP enum e_pin_to_pin_delay_annotations delay_type, INP char *annot_in_pins, INP char *annot_out_pins, INP char *value)

+ Here is the call graph for this function:

+ Here is the caller graph for this function: