1 /* ----------------------------------------------------------------- 2 "@(#) groute.h (Yale) version 4.7 3/23/92" 3 FILE: globe.h 4 DESCRIPTION:global routing definitions and typedefs. 5 CONTENTS: 6 DATE: Mar 27, 1989 7 REVISIONS: Fri Jan 25 23:47:24 PST 1991 - removed redundant variables. 8 Fri Mar 22 15:16:41 CST 1991 - changed SHORT to 9 INT since it wasn't saving space and could 10 be a problem for large designs. 11 ----------------------------------------------------------------- */ 12 #ifndef GLOBE_H 13 #define GLOBE_H 14 15 #ifdef GLOBE_VARS 16 #define EXTERN 17 #else 18 #define EXTERN extern 19 #endif 20 21 #ifdef INFINITY 22 #undef INFINITY 23 #endif 24 #define INFINITY 0x7fffffff 25 #define LEFT -1 26 #define RIGHT 1 27 #define OLD 0 28 #define NEW 1 29 #define swLINE 1 30 #define nswLINE 2 31 #define swL_up 3 32 #define swL_down 4 33 #define VERTICAL 6 34 #define HORIZONTAL 7 35 #define swUP 8 36 #define swDOWN 9 37 38 typedef struct changrdbox { 39 PINBOXPTR netptr ; 40 SHORT cross ; 41 SHORT tracks ; 42 struct changrdbox *prevgrd ; 43 struct changrdbox *nextgrd ; 44 struct densitybox *dptr ; 45 } 46 *CHANGRDPTR , 47 CHANGRDBOX ; 48 49 typedef struct tgridbox { 50 CHANGRDPTR up ; 51 CHANGRDPTR down ; 52 } 53 *TGRIDPTR , 54 TGRIDBOX ; 55 56 typedef struct densitybox { 57 CHANGRDPTR grdptr ; 58 struct densitybox *next ; 59 struct densitybox *back ; 60 } 61 *DENSITYPTR , 62 DENSITYBOX ; 63 64 typedef struct segm_box { 65 SHORT flag ; 66 UNSIGNED_INT switchvalue : 8 ; 67 UNSIGNED_INT swap_flag : 8 ; 68 PINBOXPTR pin1ptr ; 69 PINBOXPTR pin2ptr ; 70 struct segm_box *next ; 71 struct segm_box *prev ; 72 } 73 *SEGBOXPTR , 74 SEGBOX ; 75 76 typedef struct adjacent_seg { 77 struct adjacent_seg *next ; 78 struct segm_box *segptr ; 79 } 80 *ADJASEGPTR , 81 ADJASEG ; 82 83 typedef struct imp_box { 84 char *pinname ; 85 char *eqpinname ; 86 INT txpos ; 87 struct imp_box *next ; 88 struct imp_box *prev ; 89 INT cell ; 90 INT xpos ; 91 INT terminal ; 92 } IPBOX , *IPBOXPTR ; 93 94 typedef struct feedcountbox { 95 SHORT needed ; 96 SHORT actual ; 97 struct imp_box *firstimp ; 98 struct imp_box *lastimp ; 99 } FEED_DBOX , 100 *FEED_DATA ; 101 102 103 #define GRDNULL ( ( CHANGRDPTR ) NULL ) 104 #define DENSENULL ( ( DENSITYPTR ) NULL ) 105 106 EXTERN CHANGRDPTR *BeginG ; 107 EXTERN CHANGRDPTR *EndG ; 108 EXTERN DENSITYPTR **DenseboxG ; 109 EXTERN DENSITYPTR **DboxHeadG ; 110 EXTERN TGRIDPTR *TgridG ; 111 EXTERN SEGBOXPTR *netsegHeadG ; 112 EXTERN SEGBOXPTR *netsegTailG ; 113 EXTERN DOUBLE mean_widthG ; 114 EXTERN INT **pairArrayG ; 115 extern INT numnetsG ; 116 EXTERN INT numSegsG ; 117 EXTERN INT numSwSegsG ; 118 EXTERN INT tracksG ; 119 EXTERN INT *maxTrackG ; 120 EXTERN INT *nmaxTrackG ; 121 EXTERN INT max_tdensityG ; 122 EXTERN INT gxstartG ; 123 EXTERN INT gxstopG ; 124 EXTERN INT blkleftG , blkriteG ; 125 EXTERN INT gtopChanG , gbotChanG ; 126 EXTERN INT uneven_cell_heightG ; 127 extern INT ffeedsG ; 128 extern INT track_pitchG ; 129 130 extern INT fdthrusG ; 131 EXTERN INT chan_node_noG ; 132 extern INT enough_built_in_feedG ; 133 extern INT *FeedInRowG ; 134 EXTERN INT blk_most_leftG ; 135 EXTERN INT blk_most_riteG ; 136 EXTERN INT *row_rite_classG ; 137 EXTERN INT *right_most_in_classG ; 138 EXTERN INT hznode_sepG ; 139 EXTERN INT add_Lcorner_feedG ; 140 EXTERN INT average_feed_sepG ; 141 EXTERN INT average_pin_sepG ; 142 EXTERN PINBOXPTR *steinerHeadG ; 143 EXTERN FEED_DATA **feedpptrG ; 144 EXTERN IPBOXPTR *impFeedsG ; 145 146 #undef EXTERN 147 148 #endif /* GLOBE_H */ 149