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