⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 route_common.h

📁 用于学术研究的FPGA布局布线软件VPR
💻 H
字号:
/************ Defines and types shared by all route files ********************/struct s_heap{    int index;    float cost;    union    {	int prev_node;	struct s_heap *next;    }    u;    int prev_edge;    float backward_path_cost;    float R_upstream;};/* Used by the heap as its fundamental data structure.                      *  * index:   Index (ID) of this routing resource node.                       *  * cost:    Cost up to and including this node.                             *  * u.prev_node:  Index (ID) of the predecessor to this node for             *  *          use in traceback.  NO_PREVIOUS if none.                         *  * u.next:  pointer to the next s_heap structure in the free                *  *          linked list.  Not used when on the heap.                        *  * prev_edge:  Index of the edge (between 0 and num_edges-1) used to        * *             connect the previous node to this one.  NO_PREVIOUS if       * *             there is no previous node.                                   * * backward_path_cost:  Used only by the timing-driven router.  The "known" * *                      cost of the path up to and including this node.     * *                      In this case, the .cost member contains not only    * *                      the known backward cost but also an expected cost   * *                      to the target.                                      * * R_upstream: Used only by the timing-driven router.  Stores the upstream  * *             resistance to ground from this node, including the           * *             resistance of the node itself (rr_node[index].R).            */typedef struct{    int prev_node;    float pres_cost;    float acc_cost;    float path_cost;    float backward_path_cost;    short prev_edge;    short target_flag;}t_rr_node_route_inf;/* Extra information about each rr_node needed only during routing (i.e.    * * during the maze expansion).                                              * *                                                                          * * prev_node:  Index of the previous node used to reach this one;           * *             used to generate the traceback.  If there is no              * *             predecessor, prev_node = NO_PREVIOUS.                        * * pres_cost:  Present congestion cost term for this node.                  * * acc_cost:   Accumulated cost term from previous Pathfinder iterations.   * * path_cost:  Total cost of the path up to and including this node +       * *             the expected cost to the target if the timing_driven router  * *             is being used.                                               * * backward_path_cost:  Total cost of the path up to and including this     * *                      node.  Not used by breadth-first router.            * * prev_edge:  Index of the edge (from 0 to num_edges-1) that was used      * *             to reach this node from the previous node.  If there is      * *             no predecessor, prev_edge = NO_PREVIOUS.                     * * target_flag:  Is this node a target (sink) for the current routing?      * *               Number of times this node must be reached to fully route.  *//**************** Variables shared by all route_files ***********************/extern t_rr_node_route_inf *rr_node_route_inf;	/* [0..num_rr_nodes-1] */extern struct s_bb *route_bb;	/* [0..num_nets-1]     *//******* Subroutines in route_common used only by other router modules ******/void pathfinder_update_one_cost(struct s_trace *route_segment_start,				int add_or_sub,				float pres_fac);void pathfinder_update_cost(float pres_fac,			    float acc_fac);struct s_trace *update_traceback(struct s_heap *hptr,				 int inet);void reset_path_costs(void);float get_rr_cong_cost(int inode);void mark_ends(int inet);void node_to_heap(int inode,		  float cost,		  int prev_node,		  int prev_edge,		  float backward_path_cost,		  float R_upstream);boolean is_empty_heap(void);void free_traceback(int inet);void add_to_mod_list(float *fptr);struct s_heap *get_heap_head(void);void empty_heap(void);void free_heap_data(struct s_heap *hptr);void invalidate_heap_entries(int sink_node,			     int ipin_node);void init_route_structs(int bb_factor);void free_rr_node_route_structs(void);void alloc_and_load_rr_node_route_structs(void);void free_trace_structs(void);void reserve_locally_used_opins(float pres_fac,				boolean rip_up_local_opins,				t_ivec ** fb_opins_used_locally);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -