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

📄 vpr_types.h

📁 用于学术研究的FPGA布局布线软件VPR
💻 H
📖 第 1 页 / 共 3 页
字号:
    int frequency;    int length;    short wire_switch;    short opin_switch;    float frac_cb;    float frac_sb;    boolean longline;    float Rmetal;    float Cmetal;    enum e_directionality directionality;    boolean *cb;    int cb_len;    boolean *sb;    int sb_len;}t_segment_inf;/* Lists all the important information about a certain segment type.  Only   * * used if the route_type is DETAILED.  [0 .. det_routing_arch.num_segment]  * * frequency:  ratio of tracks which are of this segment type.            * * length:     Length (in clbs) of the segment.                              * * wire_switch:  Index of the switch type that connects other wires *to*     * *               this segment.                                               * * opin_switch:  Index of the switch type that connects output pins (OPINs)  * *               *to* this segment.                                          * * frac_cb:  The fraction of logic blocks along its length to which this     * *           segment can connect.  (i.e. internal population).               * * frac_sb:  The fraction of the length + 1 switch blocks along the segment  * *           to which the segment can connect.  Segments that aren't long    * *           lines must connect to at least two switch boxes.                * * Cmetal: Capacitance of a routing track, per unit logic block length.      * * Rmetal: Resistance of a routing track, per unit logic block length.        * (UDSD by AY) drivers: How do signals driving a routing track connect to   * *                       the track?                                          */struct s_switch_inf{    boolean buffered;    float R;    float Cin;    float Cout;    float Tdel;    float mux_trans_size;    float buf_size;    char *name;};/* Lists all the important information about a switch type.                  * * [0 .. det_routing_arch.num_switch]                                        * * buffered:  Does this switch include a buffer?                             * * R:  Equivalent resistance of the buffer/switch.                           * * Cin:  Input capacitance.                                                  * * Cout:  Output capacitance.                                                * * Tdel:  Intrinsic delay.  The delay through an unloaded switch is          * *        Tdel + R * Cout.                                                   * * mux_trans_size:  The area of each transistor in the segment's driving mux * *                  measured in minimum width transistor units               * * buf_size:  The area of the buffer. If set to zero, area should be         * *            calculated from R                                              */enum e_direction{    INC_DIRECTION = 0,    DEC_DIRECTION = 1,    BI_DIRECTION = 2};				/* UDSD by AY */typedef struct s_seg_details{    int length;    int start;    boolean longline;    boolean *sb;    boolean *cb;    short wire_switch;    short opin_switch;    float Rmetal;    float Cmetal;    boolean twisted;    enum e_direction direction;	/* UDSD by AY */    enum e_drivers drivers;	/* UDSD by AY */    int start_track;		/* UDSD by AY */    int end_track;		/* UDSD by AY */    int group_start;    int group_size;    int index;}t_seg_details;/* Lists detailed information about segmentation.  [0 .. W-1].              * * length:  length of segment.                                              * * start:  index at which a segment starts in channel 0.                    * * longline:  TRUE if this segment spans the entire channel.                * * sb:  [0..length]:  TRUE for every channel intersection, relative to the  * *      segment start, at which there is a switch box.                      * * cb:  [0..length-1]:  TRUE for every logic block along the segment at     * *      which there is a connection box.                                    * * wire_switch:  Index of the switch type that connects other wires *to*    * *               this segment.                                              * * opin_switch:  Index of the switch type that connects output pins (OPINs) * *               *to* this segment.                                         * * Cmetal: Capacitance of a routing track, per unit logic block length.     * * Rmetal: Resistance of a routing track, per unit logic block length.      * * (UDSD by AY) direction: The direction of a routing track.                * * (UDSD by AY) drivers: How do signals driving a routing track connect to  * *                       the track?                                         * * (UDSD by AY) start_track: The index of the first track of this segment   * *                           type.                                          * * (UDSD by AY) end_track: The index of the last track of this segment type.* * index: index of the segment type used for this track.                    */struct s_linked_f_pointer{    struct s_linked_f_pointer *next;    float *fptr;};/* A linked list of float pointers.  Used for keeping track of   * * which pathcosts in the router have been changed.              *//* Uncomment lines below to save some memory, at the cost of debugging ease. *//*enum e_rr_type {SOURCE, SINK, IPIN, OPIN, CHANX, CHANY}; *//* typedef short t_rr_type */typedef enum e_rr_type{ SOURCE, SINK, IPIN, OPIN, CHANX, CHANY, NUM_RR_TYPES }t_rr_type;/* Type of a routing resource node.  x-directed channel segment,   * * y-directed channel segment, input pin to a clb to pad, output   * * from a clb or pad (i.e. output pin of a net) and:               * * SOURCE:  A dummy node that is a logical output within a block   * *          -- i.e., the gate that generates a signal.             * * SINK:    A dummy node that is a logical input within a block    * *          -- i.e. the gate that needs a signal.                  */struct s_trace{    int index;    short iswitch;    struct s_trace *next;};/* Basic element used to store the traceback (routing) of each net.        * * index:   Array index (ID) of this routing resource node.                * * iswitch:  Index of the switch type used to go from this rr_node to      * *           the next one in the routing.  OPEN if there is no next node   * *           (i.e. this node is the last one (a SINK) in a branch of the   * *           net's routing).                                               * * next:    pointer to the next traceback element in this route.           */#define NO_PREVIOUS -1typedef struct s_rr_node{    short xlow;    short xhigh;    short ylow;    short yhigh;    short ptc_num;    short cost_index;    short occ;    short capacity;    short fan_in;    short num_edges;    t_rr_type type;    int *edges;    short *switches;    float R;    float C;    enum e_direction direction;	/* UDSD by AY */    enum e_drivers drivers;	/* UDSD by AY */    int num_wire_drivers;	/* UDSD by WMF */    int num_opin_drivers;	/* UDSD by WMF (could use "short") */}t_rr_node;/* Main structure describing one routing resource node.  Everything in       * * this structure should describe the graph -- information needed only       * * to store algorithm-specific data should be stored in one of the           * * parallel rr_node_?? structures.                                           * *                                                                           * * xlow, xhigh, ylow, yhigh:  Integer coordinates (see route.c for           * *       coordinate system) of the ends of this routing resource.            * *       xlow = xhigh and ylow = yhigh for pins or for segments of           * *       length 1.  These values are used to decide whether or not this      * *       node should be added to the expansion heap, based on things         * *       like whether it's outside the net bounding box or is moving         * *       further away from the target, etc.                                  * * type:  What is this routing resource?                                     * * ptc_num:  Pin, track or class number, depending on rr_node type.          * *           Needed to properly draw.                                        * * cost_index: An integer index into the table of routing resource indexed   * *             data (this indirection allows quick dynamic changes of rr     * *             base costs, and some memory storage savings for fields that   * *             have only a few distinct values).                             * * occ:        Current occupancy (usage) of this node.                       * * capacity:   Capacity of this node (number of routes that can use it).     * * num_edges:  Number of edges exiting this node.  That is, the number       * *             of nodes to which it connects.                                * * edges[0..num_edges-1]:  Array of indices of the neighbours of this        * *                         node.                                             * * switches[0..num_edges-1]:  Array of switch indexes for each of the        * *                            edges leaving this node.                       * *                                                                           * * The following parameters are only needed for timing analysis.             * * R:  Resistance to go through this node.  This is only metal               * *     resistance (end to end, so conservative) -- it doesn't include the    * *     switch that leads to another rr_node.                                 * * C:  Total capacitance of this node.  Includes metal capacitance, the      * *     input capacitance of all switches hanging off the node, the           * *     output capacitance of all switches to the node, and the connection    * *     box buffer capacitances hanging off it.                               * * (UDSD by AY) direction: if the node represents a track, this field        * *                         indicates the direction of the track. Otherwise   * *                         the value contained in the field should be        * *                         ignored.                                          * * (UDSD by AY) drivers: if the node represents a track, this field          * *                       indicates the driving architecture of the track.    * *                       Otherwise the value contained in the field should   * *                       be ignored.                                         */typedef struct s_rr_indexed_data{    float base_cost;    float saved_base_cost;    int ortho_cost_index;    int seg_index;    float inv_length;    float T_linear;    float T_quadratic;    float C_load;}t_rr_indexed_data;/* Data that is pointed to by the .cost_index member of t_rr_node.  It's     * * purpose is to store the base_cost so that it can be quickly changed       * * and to store fields that have only a few different values (like           * * seg_index) or whose values should be an average over all rr_nodes of a    * * certain type (like T_linear etc., which are used to predict remaining     * * delay in the timing_driven router).                                       * *                                                                           * * base_cost:  The basic cost of using an rr_node.                           * * ortho_cost_index:  The index of the type of rr_node that generally        * *                    connects to this type of rr_node, but runs in the      * *                    orthogonal direction (e.g. vertical if the direction   * *                    of this member is horizontal).                         * * seg_index:  Index into segment_inf of this segment type if this type of   * *             rr_node is an CHANX or CHANY; OPEN (-1) otherwise.            * * inv_length:  1/length of this type of segment.                            * * T_linear:  Delay through N segments of this type is N * T_linear + N^2 *  * *            T_quadratic.  For buffered segments all delay is T_linear.     * * T_quadratic:  Dominant delay for unbuffered segments, 0 for buffered      * *               segments.                                                   * * C_load:  Load capacitance seen by the driver for each segment added to    * *          the chain driven by the driver.  0 for buffered segments.        */enum e_cost_indices{ SOURCE_COST_INDEX = 0, SINK_COST_INDEX, OPIN_COST_INDEX,    IPIN_COST_INDEX, CHANX_COST_INDEX_START};/* Gives the index of the SOURCE, SINK, OPIN, IPIN, etc. member of           * * rr_indexed_data.                                                          *//* Type to store our list of token to enum pairings */struct s_TokenPair{    char *Str;    int Enum;};

⌨️ 快捷键说明

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