VPR-7.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
route_tree_timing.h
Go to the documentation of this file.
1 /************** Types and defines exported by route_tree_timing.c ************/
2 
4  struct s_rt_node *child;
5  short iswitch;
7 };
8 
10 
11 /* Linked list listing the children of an rt_node. *
12  * child: Pointer to an rt_node (child of the current node). *
13  * iswitch: Index of the switch type used to connect to the child node. *
14  * next: Pointer to the next linked_rt_edge in the linked list (allows *
15  * you to get the next child of the current rt_node). */
16 
17 struct s_rt_node {
18  union {
20  struct s_rt_node *next;
21  } u;
24  short re_expand;
25  int inode;
26  float C_downstream;
27  float R_upstream;
28  float Tdel;
29 };
30 
31 typedef struct s_rt_node t_rt_node;
32 
33 /* Structure describing one node in a routing tree (used to get net delays *
34  * incrementally during routing, as pieces are being added). *
35  * u.child_list: Pointer to a linked list of linked_rt_edge. Each one of *
36  * the linked list entries gives a child of this node. *
37  * u.next: Used only when this node is on the free list. Gives the next *
38  * node on the free list. *
39  * parent_node: Pointer to the rt_node that is this node's parent (used to *
40  * make bottom to top traversals). *
41  * re_expand: (really boolean). Should this node be put on the heap as *
42  * part of the partial routing to act as a source for subsequent *
43  * connections? TRUE->yes, FALSE-> no. *
44  * parent_switch: Index of the switch type driving this node (by its *
45  * parent). *
46  * inode: index (ID) of the rr_node that corresponds to this rt_node. *
47  * C_downstream: Total downstream capacitance from this rt_node. That is, *
48  * the total C of the subtree rooted at the current node, *
49  * including the C of the current node. *
50  * R_upstream: Total upstream resistance from this rt_node to the net *
51  * source, including any rr_node[].R of this node. *
52  * Tdel: Time delay for the signal to get from the net source to this node. *
53  * Includes the time to go through this node. */
54 
55 /**************** Subroutines exported by route_tree_timing.c ***************/
56 
58 
60 
62 
63 void free_route_tree(t_rt_node * rt_node);
64 
65 t_rt_node *update_route_tree(struct s_heap *hptr);
66 
68  t_rt_node ** rt_node_of_sink, int inet);
float C_downstream
struct s_rt_node * parent_node
void update_net_delays_from_route_tree(float *net_delay, t_rt_node **rt_node_of_sink, int inet)
static float ** net_delay
struct s_linked_rt_edge * next
void alloc_route_tree_timing_structs(void)
short parent_switch
union s_rt_node::@1 u
t_rt_node * init_route_tree_to_source(int inet)
void free_route_tree(t_rt_node *rt_node)
t_linked_rt_edge * child_list
struct s_rt_node * child
static t_rt_node ** rt_node_of_sink
void free_route_tree_timing_structs(void)
t_rt_node * update_route_tree(struct s_heap *hptr)
struct s_rt_node * next