1 /*------------------------------------------------------------\ 2 | | 3 | Tool : RDS | 4 | | 5 | File : rpr214.h | 6 | | 7 | Authors : Jacomme Ludovic | 8 | Picault Stephane *4p* | 9 | | 10 | Date : 27.06.95 | 11 | 15.07.98 *4p* | 12 | | 13 \------------------------------------------------------------*/ 14 15 # ifndef RPR_214_H 16 # define RPR_214_H 17 18 #ifndef __P 19 # if defined(__STDC__) || defined(__GNUC__) 20 # define __P(x) x 21 # else 22 # define __P(x) () 23 # endif 24 #endif 25 26 /*------------------------------------------------------------\ 27 | | 28 | Constants | 29 | | 30 \------------------------------------------------------------*/ 31 /*------------------------------------------------------------\ 32 | | 33 | Lynx Define | 34 | | 35 \------------------------------------------------------------*/ 36 37 # define RDS_LYNX_GRAPH_FIELD 25 38 # define RDS_LYNX_GRAPH_EMPTY (unsigned char)255 39 # define RDS_LYNX_CAPA_FIELD 2 40 # define RDS_LYNX_CAPA_EMPTY 0.0 41 # define RDS_LYNX_RESISTOR_FIELD 1 42 # define RDS_LYNX_RESISTOR_EMPTY 0.0 43 # define RDS_LYNX_TRANSISTOR_FIELD 6 44 # define RDS_LYNX_TRANSISTOR_EMPTY (unsigned char)255 45 # define RDS_LYNX_DIFFUSION_FIELD 25 46 # define RDS_LYNX_DIFFUSION_EMPTY (unsigned char)255 47 48 # define RDS_IMPLICIT 1 /*4p*/ 49 # define RDS_EXPLICIT (unsigned char)255 /*4p*/ 50 51 # define RDS_LYNX_BULK_IMPLICIT_FIELD 1 /*4p*/ 52 # define RDS_LYNX_BULK_IMPLICIT_EMPTY RDS_EXPLICIT /*4p*/ 53 54 /*------------------------------------------------------------\ 55 | | 56 | S2R Define | 57 | | 58 \------------------------------------------------------------*/ 59 60 # define S2R_NOTREAT (unsigned char)255 61 # define S2R_TREAT 1 62 63 # define RDS_S2R_POST_TREAT_FIELD 2 64 # define RDS_S2R_OVERSIZE_FIELD 1 65 # define RDS_S2R_RING_WIDTH_FIELD 1 66 # define RDS_S2R_LAYER_WIDTH_FIELD 1 67 68 # define RDS_S2R_POST_TREAT_EMPTY S2R_NOTREAT 69 # define RDS_S2R_OVERSIZE_EMPTY (long)0 70 # define RDS_S2R_RING_WIDTH_EMPTY (long)0 71 # define RDS_S2R_LAYER_WIDTH_EMPTY (long)0 72 73 /*------------------------------------------------------------\ 74 | | 75 | Mbk Define | 76 | | 77 \------------------------------------------------------------*/ 78 79 # define RDS_TRANS_VW (unsigned char)0 80 # define RDS_TRANS_LCW (unsigned char)1 81 # define RDS_TRANS_RCW (unsigned char)2 82 # define RDS_TRANS_VWS (unsigned char)3 83 # define RDS_TRANS_ALCW (unsigned char)4 84 # define RDS_TRANS_ARCW (unsigned char)5 85 86 # define RDS_MAX_TRANS ( RDS_TRANS_ARCW + 1 ) 87 88 # define MBK_REF_REF 0 89 # define MBK_REF_CON 1 90 91 # define MBK_MAX_LAYER ( LAST_LAYER + 1 ) 92 # define MBK_MAX_VIA ( LAST_CONTACT + 1 ) 93 # define MBK_MAX_REFERENCE 2 94 # define MBK_MAX_SYMMETRY ( SY_RP + 1 ) 95 # define MBK_MAX_ORIENT 4 96 97 # define RDS_SEGMENT_FIELD 120 98 # define RDS_VIA_FIELD 60 99 # define RDS_CONNECTOR_FIELD 3 100 # define RDS_REFERENCE_FIELD 60 101 102 # define RDS_SEGMENT_EMPTY (long)-1 103 # define RDS_VIA_EMPTY (long)-1 104 # define RDS_CONNECTOR_EMPTY (long)-1 105 # define RDS_REFERENCE_EMPTY (long)-1 106 107 # define RDS_USE_ALL (unsigned char)0 108 # define RDS_USE_EXTRACT (unsigned char)1 109 # define RDS_USE_DRC (unsigned char)2 110 111 # define RDS_MAX_USE ( RDS_USE_DRC + 1 ) 112 113 # define RDS_BIGVIA_HOLE_FIELD 80 114 # define RDS_BIGVIA_METAL_FIELD 80 115 # define RDS_TURNVIA_FIELD 60 116 117 # define RDS_BIGVIA_HOLE_EMPTY (long)-1 118 # define RDS_BIGVIA_METAL_EMPTY (long)-1 119 # define RDS_TURNVIA_EMPTY (long)-1 120 121 /*------------------------------------------------------------\ 122 | | 123 | Parser Define | 124 | | 125 \------------------------------------------------------------*/ 126 127 # define RDS_CIF_LAYER_FIELD 1 128 # define RDS_GDS_LAYER_FIELD 2 129 130 # define RDS_CIF_LAYER_EMPTY (char *)NULL 131 # define RDS_GDS_LAYER_EMPTY (unsigned char)255 132 133 /*------------------------------------------------------------\ 134 | | 135 | Lynx Macros | 136 | | 137 \------------------------------------------------------------*/ 138 139 # define GET_LYNX_GRAPH_LAYER( Layer, Index ) \ 140 \ 141 ( ( Index >= RDS_LYNX_GRAPH_FIELD ) ? \ 142 ( RDS_LYNX_GRAPH_EMPTY ) : \ 143 ( RDS_LYNX_GRAPH_TABLE [ (int)(Layer) ][ ( Index ) ] ) ) 144 145 # define GET_LYNX_SURFACE_CAPA_LAYER( Layer ) \ 146 \ 147 ( RDS_LYNX_CAPA_TABLE [ (int)(Layer) ][ 0 ] ) 148 149 # define GET_LYNX_PERIMETER_CAPA_LAYER( Layer ) \ 150 \ 151 ( RDS_LYNX_CAPA_TABLE [ (int)(Layer) ][ 1 ] ) 152 153 # define GET_LYNX_DIFFUSION_LAYER( Layer, Index ) \ 154 \ 155 ( ( (int)(Index) * 2 >= RDS_LYNX_DIFFUSION_FIELD ) ? \ 156 ( RDS_LYNX_DIFFUSION_EMPTY ) : \ 157 ( RDS_LYNX_DIFFUSION_TABLE [ (int)(Layer) ][ (int)(Index)*2 + 0 ] ) ) 158 159 # define GET_LYNX_DIFFUSION_Y_OR_N( Layer, Index ) \ 160 \ 161 ( ( (int)(Index) * 2 >= RDS_LYNX_DIFFUSION_FIELD ) ? \ 162 ( RDS_LYNX_DIFFUSION_EMPTY ) : \ 163 ( RDS_LYNX_DIFFUSION_TABLE [ (int)(Layer) ][ (int)(Index)*2 + 1 ] ) ) 164 165 # define GET_LYNX_RESISTOR_LAYER( Layer ) \ 166 \ 167 ( RDS_LYNX_RESISTOR_TABLE [ (int)(Layer) ][ 0 ] ) 168 169 # define GET_LYNX_TRANSISTOR_TYPE( Layer ) \ 170 \ 171 ( RDS_LYNX_TRANSISTOR_TABLE [ (int)(Layer) ][ 0 ] ) 172 173 # define GET_LYNX_TRANSISTOR_CX( Layer ) \ 174 \ 175 ( RDS_LYNX_TRANSISTOR_TABLE [ (int)(Layer) ][ 1 ] ) 176 177 # define GET_LYNX_TRANSISTOR_GATE_LAYER( Layer ) \ 178 \ 179 ( RDS_LYNX_TRANSISTOR_TABLE [ (int)(Layer) ][ 2 ] ) 180 181 # define GET_LYNX_TRANSISTOR_DIFF_LAYER( Layer ) \ 182 \ 183 ( RDS_LYNX_TRANSISTOR_TABLE [ (int)(Layer) ][ 3 ] ) 184 185 # define GET_LYNX_TRANSISTOR_ACTIV_LAYER( Layer ) \ 186 \ 187 ( RDS_LYNX_TRANSISTOR_TABLE [ (int)(Layer) ][ 4 ] ) 188 189 /*4p*/ 190 # define GET_LYNX_TRANSISTOR_BULK_LAYER( Layer ) \ 191 \ 192 ( RDS_LYNX_TRANSISTOR_TABLE [ (int)(Layer) ][ 5 ] ) 193 194 /*4p*/ 195 # define GET_LYNX_BULK_IMPLICIT( Layer ) \ 196 \ 197 ( RDS_LYNX_BULK_IMPLICIT_TABLE [ (int)(Layer) ][ 0 ] ) 198 199 200 /*------------------------------------------------------------\ 201 | | 202 | S2R Macros | 203 | | 204 \------------------------------------------------------------*/ 205 206 # define GET_S2R_POST_Y_OR_N( Layer ) \ 207 \ 208 ( RDS_S2R_POST_TREAT_TABLE [ (int)(Layer) ][ 0 ] ) 209 210 # define GET_S2R_POST_COMPLEMENTARY( Layer ) \ 211 \ 212 ( RDS_S2R_POST_TREAT_TABLE [ (int)(Layer) ][ 1 ] ) 213 214 # define GET_S2R_OVERSIZE( Layer ) \ 215 \ 216 ( RDS_S2R_OVERSIZE_TABLE [ (int)(Layer) ][ 0 ] ) 217 218 # define GET_S2R_RING_WIDTH( Layer ) \ 219 \ 220 ( RDS_S2R_RING_WIDTH_TABLE [ (int)(Layer) ][ 0 ] ) 221 222 # define GET_S2R_LAYER_WIDTH( Layer ) \ 223 \ 224 ( RDS_S2R_LAYER_WIDTH_TABLE [ (int)(Layer) ][ 0 ] ) 225 226 /*------------------------------------------------------------\ 227 | | 228 | Mbk Macros | 229 | | 230 \------------------------------------------------------------*/ 231 232 # define GET_SEGMENT_LAYER( Layer, Index ) \ 233 \ 234 ( ( (int)(Index) * 6 >= RDS_SEGMENT_FIELD ) ? \ 235 ( RDS_SEGMENT_EMPTY ) : \ 236 ( RDS_SEGMENT_TABLE [ (int)(Layer) ][ (int)(Index) * 6 + 0 ] ) ) 237 238 # define GET_SEGMENT_TRANS( Layer, Index ) \ 239 \ 240 ( ( (int)(Index) * 6 >= RDS_SEGMENT_FIELD ) ? \ 241 ( RDS_SEGMENT_EMPTY ) : \ 242 ( RDS_SEGMENT_TABLE [ (int)(Layer) ][ (int)(Index) * 6 + 1 ] ) ) 243 244 # define GET_SEGMENT_DLR( Layer, Index ) \ 245 \ 246 ( ( (int)(Index) * 6 >= RDS_SEGMENT_FIELD ) ? \ 247 ( RDS_SEGMENT_EMPTY ) : \ 248 ( RDS_SEGMENT_TABLE [ (int)(Layer) ][ (int)(Index) * 6 + 2 ] ) ) 249 250 # define GET_SEGMENT_DWR( Layer, Index ) \ 251 \ 252 ( ( (int)(Index) * 6 >= RDS_SEGMENT_FIELD ) ? \ 253 ( RDS_SEGMENT_EMPTY ) : \ 254 ( RDS_SEGMENT_TABLE [ (int)(Layer) ][ (int)(Index) * 6 + 3 ] ) ) 255 256 # define GET_SEGMENT_OFFSET( Layer, Index ) \ 257 \ 258 ( ( (int)(Index) * 6 >= RDS_SEGMENT_FIELD ) ? \ 259 ( RDS_SEGMENT_EMPTY ) : \ 260 ( RDS_SEGMENT_TABLE [ (int)(Layer) ][ (int)(Index) * 6 + 4 ] ) ) 261 262 # define GET_SEGMENT_USE( Layer, Index ) \ 263 \ 264 ( ( (int)(Index) * 6 >= RDS_SEGMENT_FIELD ) ? \ 265 ( RDS_SEGMENT_EMPTY ) : \ 266 ( RDS_SEGMENT_TABLE [ (int)(Layer) ][ (int)(Index) * 6 + 5 ] ) ) 267 268 # define GET_CONNECTOR_LAYER( Layer ) \ 269 \ 270 ( RDS_CONNECTOR_TABLE [ (int)(Layer) ][ 0 ] ) 271 272 # define GET_CONNECTOR_DER( Layer ) \ 273 \ 274 ( RDS_CONNECTOR_TABLE [ (int)(Layer) ][ 1 ] ) 275 276 # define GET_CONNECTOR_DWR( Layer ) \ 277 \ 278 ( RDS_CONNECTOR_TABLE [ (int)(Layer) ][ 2 ] ) 279 280 # define GET_VIA_LAYER( Layer, Index ) \ 281 \ 282 ( ( (int)(Index) * 3 >= RDS_VIA_FIELD ) ? \ 283 ( RDS_VIA_EMPTY ) : \ 284 ( RDS_VIA_TABLE [ (int)(Layer) ][ (int)(Index) * 3 + 0 ] ) ) 285 286 # define GET_VIA_SIZE( Layer, Index ) \ 287 \ 288 ( ( (int)(Index) * 3 >= RDS_VIA_FIELD ) ? \ 289 ( RDS_VIA_EMPTY ) : \ 290 ( RDS_VIA_TABLE [ (int)(Layer) ][ (int)(Index) * 3 + 1 ] ) ) 291 292 # define GET_VIA_USE( Layer, Index ) \ 293 \ 294 ( ( (int)(Index) * 3 >= RDS_VIA_FIELD ) ? \ 295 ( RDS_VIA_EMPTY ) : \ 296 ( RDS_VIA_TABLE [ (int)(Layer) ][ (int)(Index) * 3 + 2 ] ) ) 297 298 # define GET_REFERENCE_LAYER( Layer, Index ) \ 299 \ 300 ( ( (int)(Index) * 2 >= RDS_REFERENCE_FIELD ) ? \ 301 ( RDS_REFERENCE_EMPTY ) : \ 302 ( RDS_REFERENCE_TABLE [ (int)(Layer) ][ (int)(Index) * 2 + 0 ] )) 303 304 # define GET_REFERENCE_SIZE( Layer, Index ) \ 305 \ 306 ( ( (int)(Index) * 2 >= RDS_REFERENCE_FIELD ) ? \ 307 ( RDS_REFERENCE_EMPTY ) : \ 308 ( RDS_REFERENCE_TABLE [ (int)(Layer) ][ (int)(Index) * 2 + 1 ] )) 309 310 /*------------------------------------------------------------\ 311 | | 312 | Big Via Macros | 313 | | 314 \------------------------------------------------------------*/ 315 316 # define GET_BIGVIA_HOLE_LAYER( Layer, Index ) \ 317 \ 318 ( ( (int)(Index) * 4 >= RDS_BIGVIA_HOLE_FIELD ) ? \ 319 ( RDS_BIGVIA_HOLE_EMPTY ) : \ 320 ( RDS_BIGVIA_HOLE_TABLE [ (int)(Layer) ][ (int)(Index) * 4 + 0 ] ) ) 321 322 # define GET_BIGVIA_HOLE_SIDE( Layer, Index ) \ 323 \ 324 ( ( (int)(Index) * 4 >= RDS_BIGVIA_HOLE_FIELD ) ? \ 325 ( RDS_BIGVIA_HOLE_EMPTY ) : \ 326 ( RDS_BIGVIA_HOLE_TABLE [ (int)(Layer) ][ (int)(Index) * 4 + 1 ] ) ) 327 328 # define GET_BIGVIA_HOLE_STEP( Layer, Index ) \ 329 \ 330 ( ( (int)(Index) * 4 >= RDS_BIGVIA_HOLE_FIELD ) ? \ 331 ( RDS_BIGVIA_HOLE_EMPTY ) : \ 332 ( RDS_BIGVIA_HOLE_TABLE [ (int)(Layer) ][ (int)(Index) * 4 + 2 ] ) ) 333 334 # define GET_BIGVIA_HOLE_USE( Layer, Index ) \ 335 \ 336 ( ( (int)(Index) * 4 >= RDS_BIGVIA_HOLE_FIELD ) ? \ 337 ( RDS_BIGVIA_HOLE_EMPTY ) : \ 338 ( RDS_BIGVIA_HOLE_TABLE [ (int)(Layer) ][ (int)(Index) * 4 + 3 ] ) ) 339 340 # define GET_BIGVIA_METAL_LAYER( Layer, Index ) \ 341 \ 342 ( ( (int)(Index) * 4 >= RDS_BIGVIA_METAL_FIELD ) ? \ 343 ( RDS_BIGVIA_METAL_EMPTY ) : \ 344 ( RDS_BIGVIA_METAL_TABLE [ (int)(Layer) ][ (int)(Index) * 4 + 0 ] ) ) 345 346 # define GET_BIGVIA_METAL_DWR( Layer, Index ) \ 347 \ 348 ( ( (int)(Index) * 4 >= RDS_BIGVIA_METAL_FIELD ) ? \ 349 ( RDS_BIGVIA_METAL_EMPTY ) : \ 350 ( RDS_BIGVIA_METAL_TABLE [ (int)(Layer) ][ (int)(Index) * 4 + 1 ] ) ) 351 352 # define GET_BIGVIA_METAL_OVERLAP( Layer, Index ) \ 353 \ 354 ( ( (int)(Index) * 4 >= RDS_BIGVIA_METAL_FIELD ) ? \ 355 ( RDS_BIGVIA_METAL_EMPTY ) : \ 356 ( RDS_BIGVIA_METAL_TABLE [ (int)(Layer) ][ (int)(Index) * 4 + 2 ] ) ) 357 358 # define GET_BIGVIA_METAL_USE( Layer, Index ) \ 359 \ 360 ( ( (int)(Index) * 4 >= RDS_BIGVIA_METAL_FIELD ) ? \ 361 ( RDS_BIGVIA_METAL_EMPTY ) : \ 362 ( RDS_BIGVIA_METAL_TABLE [ (int)(Layer) ][ (int)(Index) * 4 + 3 ] ) ) 363 364 /*------------------------------------------------------------\ 365 | | 366 | Turn Via Macros | 367 | | 368 \------------------------------------------------------------*/ 369 370 # define GET_TURNVIA_LAYER( Layer, Index ) \ 371 \ 372 ( ( (int)(Index) * 3 >= RDS_TURNVIA_FIELD ) ? \ 373 ( RDS_TURNVIA_EMPTY ) : \ 374 ( RDS_TURNVIA_TABLE [ (int)(Layer) ][ (int)(Index) * 3 + 0 ] ) ) 375 376 # define GET_TURNVIA_DWR( Layer, Index ) \ 377 \ 378 ( ( (int)(Index) * 3 >= RDS_TURNVIA_FIELD ) ? \ 379 ( RDS_TURNVIA_EMPTY ) : \ 380 ( RDS_TURNVIA_TABLE [ (int)(Layer) ][ (int)(Index) * 3 + 1 ] ) ) 381 382 # define GET_TURNVIA_USE( Layer, Index ) \ 383 \ 384 ( ( (int)(Index) * 3 >= RDS_TURNVIA_FIELD ) ? \ 385 ( RDS_TURNVIA_EMPTY ) : \ 386 ( RDS_TURNVIA_TABLE [ (int)(Layer) ][ (int)(Index) * 3 + 2 ] ) ) 387 388 /*------------------------------------------------------------\ 389 | | 390 | Parser Macros | 391 | | 392 \------------------------------------------------------------*/ 393 394 # define GET_CIF_LAYER( Layer ) \ 395 \ 396 ( RDS_CIF_LAYER_TABLE [ (int)(Layer) ][ 0 ] ) 397 398 # define GET_GDS_LAYER( Layer ) \ 399 \ 400 ( RDS_GDS_LAYER_TABLE [ (int)(Layer) ][ 0 ] ) 401 402 # define GET_GDS_CONNECTOR_LAYER( Layer ) \ 403 \ 404 ( RDS_GDS_LAYER_TABLE [ (int)(Layer) ][ 1 ] ) 405 406 /*------------------------------------------------------------\ 407 | | 408 | Types | 409 | | 410 \------------------------------------------------------------*/ 411 /*------------------------------------------------------------\ 412 | | 413 | Variables | 414 | | 415 \------------------------------------------------------------*/ 416 417 extern long RDS_PHYSICAL_GRID; 418 extern long RDS_LAMBDA; 419 extern long RDS_LAMBDA2; 420 extern long RDS_UNIT; 421 extern long RDS_UNIT2; 422 423 extern unsigned char RDS_S2R_POST_TREAT_TABLE [ RDS_ALL_LAYER ][ RDS_S2R_POST_TREAT_FIELD ]; 424 extern long RDS_S2R_OVERSIZE_TABLE [ RDS_ALL_LAYER ][ RDS_S2R_OVERSIZE_FIELD ]; 425 extern long RDS_S2R_RING_WIDTH_TABLE [ RDS_ALL_LAYER ][ RDS_S2R_RING_WIDTH_FIELD ]; 426 extern long RDS_S2R_LAYER_WIDTH_TABLE [ RDS_ALL_LAYER ][ RDS_S2R_LAYER_WIDTH_FIELD ]; 427 428 extern long RDS_SEGMENT_TABLE [ MBK_MAX_LAYER ][ RDS_SEGMENT_FIELD ]; 429 extern long RDS_VIA_TABLE [ MBK_MAX_VIA ][ RDS_VIA_FIELD ]; 430 extern long RDS_CONNECTOR_TABLE [ MBK_MAX_LAYER ][ RDS_CONNECTOR_FIELD ]; 431 extern long RDS_REFERENCE_TABLE [ MBK_MAX_REFERENCE ][ RDS_REFERENCE_FIELD ]; 432 433 extern long RDS_BIGVIA_HOLE_TABLE[ MBK_MAX_VIA ][ RDS_BIGVIA_HOLE_FIELD ]; 434 extern long RDS_BIGVIA_METAL_TABLE[ MBK_MAX_VIA ][ RDS_BIGVIA_METAL_FIELD ]; 435 extern long RDS_TURNVIA_TABLE[ MBK_MAX_VIA ][ RDS_TURNVIA_FIELD ]; 436 437 extern unsigned char RDS_GDS_LAYER_TABLE [ RDS_ALL_LAYER ][ RDS_GDS_LAYER_FIELD ]; 438 extern char *RDS_CIF_LAYER_TABLE [ RDS_ALL_LAYER ][ RDS_CIF_LAYER_FIELD ]; 439 440 extern unsigned char RDS_LYNX_BULK_IMPLICIT_TABLE [ RDS_ALL_LAYER ][ RDS_LYNX_BULK_IMPLICIT_FIELD ]; 441 442 extern float RDS_LYNX_CAPA_TABLE [ RDS_ALL_LAYER ][ RDS_LYNX_CAPA_FIELD ]; 443 extern float RDS_LYNX_RESISTOR_TABLE [ RDS_ALL_LAYER ][ RDS_LYNX_RESISTOR_FIELD ]; 444 445 extern unsigned char RDS_LYNX_GRAPH_TABLE [ RDS_ALL_LAYER ][ RDS_LYNX_GRAPH_FIELD ]; 446 extern unsigned char RDS_LYNX_TRANSISTOR_TABLE [ MBK_MAX_LAYER ][ RDS_LYNX_TRANSISTOR_FIELD ]; 447 extern unsigned char RDS_LYNX_DIFFUSION_TABLE [ RDS_ALL_LAYER ][ RDS_LYNX_DIFFUSION_FIELD ]; 448 449 extern char MBK_LAYER_NAME[ MBK_MAX_LAYER ][ 12 ]; 450 extern char MBK_VIA_NAME [ MBK_MAX_VIA ][ 12 ]; 451 extern char RDS_TRANS_NAME [ RDS_MAX_TRANS ][ 4 ]; 452 extern char RDS_USE_NAME [ RDS_MAX_USE ][ 4 ]; 453 454 /*------------------------------------------------------------\ 455 | | 456 | Functions | 457 | | 458 \------------------------------------------------------------*/ 459 460 extern void loadrdsparam __P(()); 461 extern void viewrdsparam __P(()); 462 extern long RprTranslateParam __P(( double Param )); 463 464 # endif 465