/*------------------------------------------------------------\ | | | Tool : RDS | | | | File : rpr214.h | | | | Authors : Jacomme Ludovic | | Picault Stephane *4p* | | | | Date : 27.06.95 | | 15.07.98 *4p* | | | \------------------------------------------------------------*/ # ifndef RPR_214_H # define RPR_214_H #ifndef __P # if defined(__STDC__) || defined(__GNUC__) # define __P(x) x # else # define __P(x) () # endif #endif /*------------------------------------------------------------\ | | | Constants | | | \------------------------------------------------------------*/ /*------------------------------------------------------------\ | | | Lynx Define | | | \------------------------------------------------------------*/ # define RDS_LYNX_GRAPH_FIELD 25 # define RDS_LYNX_GRAPH_EMPTY (unsigned char)255 # define RDS_LYNX_CAPA_FIELD 2 # define RDS_LYNX_CAPA_EMPTY 0.0 # define RDS_LYNX_RESISTOR_FIELD 1 # define RDS_LYNX_RESISTOR_EMPTY 0.0 # define RDS_LYNX_TRANSISTOR_FIELD 6 # define RDS_LYNX_TRANSISTOR_EMPTY (unsigned char)255 # define RDS_LYNX_DIFFUSION_FIELD 25 # define RDS_LYNX_DIFFUSION_EMPTY (unsigned char)255 # define RDS_IMPLICIT 1 /*4p*/ # define RDS_EXPLICIT (unsigned char)255 /*4p*/ # define RDS_LYNX_BULK_IMPLICIT_FIELD 1 /*4p*/ # define RDS_LYNX_BULK_IMPLICIT_EMPTY RDS_EXPLICIT /*4p*/ /*------------------------------------------------------------\ | | | S2R Define | | | \------------------------------------------------------------*/ # define S2R_NOTREAT (unsigned char)255 # define S2R_TREAT 1 # define RDS_S2R_POST_TREAT_FIELD 2 # define RDS_S2R_OVERSIZE_FIELD 1 # define RDS_S2R_RING_WIDTH_FIELD 1 # define RDS_S2R_LAYER_WIDTH_FIELD 1 # define RDS_S2R_POST_TREAT_EMPTY S2R_NOTREAT # define RDS_S2R_OVERSIZE_EMPTY (long)0 # define RDS_S2R_RING_WIDTH_EMPTY (long)0 # define RDS_S2R_LAYER_WIDTH_EMPTY (long)0 /*------------------------------------------------------------\ | | | Mbk Define | | | \------------------------------------------------------------*/ # define RDS_TRANS_VW (unsigned char)0 # define RDS_TRANS_LCW (unsigned char)1 # define RDS_TRANS_RCW (unsigned char)2 # define RDS_TRANS_VWS (unsigned char)3 # define RDS_TRANS_ALCW (unsigned char)4 # define RDS_TRANS_ARCW (unsigned char)5 # define RDS_MAX_TRANS ( RDS_TRANS_ARCW + 1 ) # define MBK_REF_REF 0 # define MBK_REF_CON 1 # define MBK_MAX_LAYER ( LAST_LAYER + 1 ) # define MBK_MAX_VIA ( LAST_CONTACT + 1 ) # define MBK_MAX_REFERENCE 2 # define MBK_MAX_SYMMETRY ( SY_RP + 1 ) # define MBK_MAX_ORIENT 4 # define RDS_SEGMENT_FIELD 120 # define RDS_VIA_FIELD 60 # define RDS_CONNECTOR_FIELD 3 # define RDS_REFERENCE_FIELD 60 # define RDS_SEGMENT_EMPTY (long)-1 # define RDS_VIA_EMPTY (long)-1 # define RDS_CONNECTOR_EMPTY (long)-1 # define RDS_REFERENCE_EMPTY (long)-1 # define RDS_USE_ALL (unsigned char)0 # define RDS_USE_EXTRACT (unsigned char)1 # define RDS_USE_DRC (unsigned char)2 # define RDS_MAX_USE ( RDS_USE_DRC + 1 ) # define RDS_BIGVIA_HOLE_FIELD 80 # define RDS_BIGVIA_METAL_FIELD 80 # define RDS_TURNVIA_FIELD 60 # define RDS_BIGVIA_HOLE_EMPTY (long)-1 # define RDS_BIGVIA_METAL_EMPTY (long)-1 # define RDS_TURNVIA_EMPTY (long)-1 /*------------------------------------------------------------\ | | | Parser Define | | | \------------------------------------------------------------*/ # define RDS_CIF_LAYER_FIELD 1 # define RDS_GDS_LAYER_FIELD 2 # define RDS_CIF_LAYER_EMPTY (char *)NULL # define RDS_GDS_LAYER_EMPTY (unsigned char)255 /*------------------------------------------------------------\ | | | Lynx Macros | | | \------------------------------------------------------------*/ # define GET_LYNX_GRAPH_LAYER( Layer, Index ) \ \ ( ( Index >= RDS_LYNX_GRAPH_FIELD ) ? \ ( RDS_LYNX_GRAPH_EMPTY ) : \ ( RDS_LYNX_GRAPH_TABLE [ (int)(Layer) ][ ( Index ) ] ) ) # define GET_LYNX_SURFACE_CAPA_LAYER( Layer ) \ \ ( RDS_LYNX_CAPA_TABLE [ (int)(Layer) ][ 0 ] ) # define GET_LYNX_PERIMETER_CAPA_LAYER( Layer ) \ \ ( RDS_LYNX_CAPA_TABLE [ (int)(Layer) ][ 1 ] ) # define GET_LYNX_DIFFUSION_LAYER( Layer, Index ) \ \ ( ( (int)(Index) * 2 >= RDS_LYNX_DIFFUSION_FIELD ) ? \ ( RDS_LYNX_DIFFUSION_EMPTY ) : \ ( RDS_LYNX_DIFFUSION_TABLE [ (int)(Layer) ][ (int)(Index)*2 + 0 ] ) ) # define GET_LYNX_DIFFUSION_Y_OR_N( Layer, Index ) \ \ ( ( (int)(Index) * 2 >= RDS_LYNX_DIFFUSION_FIELD ) ? \ ( RDS_LYNX_DIFFUSION_EMPTY ) : \ ( RDS_LYNX_DIFFUSION_TABLE [ (int)(Layer) ][ (int)(Index)*2 + 1 ] ) ) # define GET_LYNX_RESISTOR_LAYER( Layer ) \ \ ( RDS_LYNX_RESISTOR_TABLE [ (int)(Layer) ][ 0 ] ) # define GET_LYNX_TRANSISTOR_TYPE( Layer ) \ \ ( RDS_LYNX_TRANSISTOR_TABLE [ (int)(Layer) ][ 0 ] ) # define GET_LYNX_TRANSISTOR_CX( Layer ) \ \ ( RDS_LYNX_TRANSISTOR_TABLE [ (int)(Layer) ][ 1 ] ) # define GET_LYNX_TRANSISTOR_GATE_LAYER( Layer ) \ \ ( RDS_LYNX_TRANSISTOR_TABLE [ (int)(Layer) ][ 2 ] ) # define GET_LYNX_TRANSISTOR_DIFF_LAYER( Layer ) \ \ ( RDS_LYNX_TRANSISTOR_TABLE [ (int)(Layer) ][ 3 ] ) # define GET_LYNX_TRANSISTOR_ACTIV_LAYER( Layer ) \ \ ( RDS_LYNX_TRANSISTOR_TABLE [ (int)(Layer) ][ 4 ] ) /*4p*/ # define GET_LYNX_TRANSISTOR_BULK_LAYER( Layer ) \ \ ( RDS_LYNX_TRANSISTOR_TABLE [ (int)(Layer) ][ 5 ] ) /*4p*/ # define GET_LYNX_BULK_IMPLICIT( Layer ) \ \ ( RDS_LYNX_BULK_IMPLICIT_TABLE [ (int)(Layer) ][ 0 ] ) /*------------------------------------------------------------\ | | | S2R Macros | | | \------------------------------------------------------------*/ # define GET_S2R_POST_Y_OR_N( Layer ) \ \ ( RDS_S2R_POST_TREAT_TABLE [ (int)(Layer) ][ 0 ] ) # define GET_S2R_POST_COMPLEMENTARY( Layer ) \ \ ( RDS_S2R_POST_TREAT_TABLE [ (int)(Layer) ][ 1 ] ) # define GET_S2R_OVERSIZE( Layer ) \ \ ( RDS_S2R_OVERSIZE_TABLE [ (int)(Layer) ][ 0 ] ) # define GET_S2R_RING_WIDTH( Layer ) \ \ ( RDS_S2R_RING_WIDTH_TABLE [ (int)(Layer) ][ 0 ] ) # define GET_S2R_LAYER_WIDTH( Layer ) \ \ ( RDS_S2R_LAYER_WIDTH_TABLE [ (int)(Layer) ][ 0 ] ) /*------------------------------------------------------------\ | | | Mbk Macros | | | \------------------------------------------------------------*/ # define GET_SEGMENT_LAYER( Layer, Index ) \ \ ( ( (int)(Index) * 6 >= RDS_SEGMENT_FIELD ) ? \ ( RDS_SEGMENT_EMPTY ) : \ ( RDS_SEGMENT_TABLE [ (int)(Layer) ][ (int)(Index) * 6 + 0 ] ) ) # define GET_SEGMENT_TRANS( Layer, Index ) \ \ ( ( (int)(Index) * 6 >= RDS_SEGMENT_FIELD ) ? \ ( RDS_SEGMENT_EMPTY ) : \ ( RDS_SEGMENT_TABLE [ (int)(Layer) ][ (int)(Index) * 6 + 1 ] ) ) # define GET_SEGMENT_DLR( Layer, Index ) \ \ ( ( (int)(Index) * 6 >= RDS_SEGMENT_FIELD ) ? \ ( RDS_SEGMENT_EMPTY ) : \ ( RDS_SEGMENT_TABLE [ (int)(Layer) ][ (int)(Index) * 6 + 2 ] ) ) # define GET_SEGMENT_DWR( Layer, Index ) \ \ ( ( (int)(Index) * 6 >= RDS_SEGMENT_FIELD ) ? \ ( RDS_SEGMENT_EMPTY ) : \ ( RDS_SEGMENT_TABLE [ (int)(Layer) ][ (int)(Index) * 6 + 3 ] ) ) # define GET_SEGMENT_OFFSET( Layer, Index ) \ \ ( ( (int)(Index) * 6 >= RDS_SEGMENT_FIELD ) ? \ ( RDS_SEGMENT_EMPTY ) : \ ( RDS_SEGMENT_TABLE [ (int)(Layer) ][ (int)(Index) * 6 + 4 ] ) ) # define GET_SEGMENT_USE( Layer, Index ) \ \ ( ( (int)(Index) * 6 >= RDS_SEGMENT_FIELD ) ? \ ( RDS_SEGMENT_EMPTY ) : \ ( RDS_SEGMENT_TABLE [ (int)(Layer) ][ (int)(Index) * 6 + 5 ] ) ) # define GET_CONNECTOR_LAYER( Layer ) \ \ ( RDS_CONNECTOR_TABLE [ (int)(Layer) ][ 0 ] ) # define GET_CONNECTOR_DER( Layer ) \ \ ( RDS_CONNECTOR_TABLE [ (int)(Layer) ][ 1 ] ) # define GET_CONNECTOR_DWR( Layer ) \ \ ( RDS_CONNECTOR_TABLE [ (int)(Layer) ][ 2 ] ) # define GET_VIA_LAYER( Layer, Index ) \ \ ( ( (int)(Index) * 3 >= RDS_VIA_FIELD ) ? \ ( RDS_VIA_EMPTY ) : \ ( RDS_VIA_TABLE [ (int)(Layer) ][ (int)(Index) * 3 + 0 ] ) ) # define GET_VIA_SIZE( Layer, Index ) \ \ ( ( (int)(Index) * 3 >= RDS_VIA_FIELD ) ? \ ( RDS_VIA_EMPTY ) : \ ( RDS_VIA_TABLE [ (int)(Layer) ][ (int)(Index) * 3 + 1 ] ) ) # define GET_VIA_USE( Layer, Index ) \ \ ( ( (int)(Index) * 3 >= RDS_VIA_FIELD ) ? \ ( RDS_VIA_EMPTY ) : \ ( RDS_VIA_TABLE [ (int)(Layer) ][ (int)(Index) * 3 + 2 ] ) ) # define GET_REFERENCE_LAYER( Layer, Index ) \ \ ( ( (int)(Index) * 2 >= RDS_REFERENCE_FIELD ) ? \ ( RDS_REFERENCE_EMPTY ) : \ ( RDS_REFERENCE_TABLE [ (int)(Layer) ][ (int)(Index) * 2 + 0 ] )) # define GET_REFERENCE_SIZE( Layer, Index ) \ \ ( ( (int)(Index) * 2 >= RDS_REFERENCE_FIELD ) ? \ ( RDS_REFERENCE_EMPTY ) : \ ( RDS_REFERENCE_TABLE [ (int)(Layer) ][ (int)(Index) * 2 + 1 ] )) /*------------------------------------------------------------\ | | | Big Via Macros | | | \------------------------------------------------------------*/ # define GET_BIGVIA_HOLE_LAYER( Layer, Index ) \ \ ( ( (int)(Index) * 4 >= RDS_BIGVIA_HOLE_FIELD ) ? \ ( RDS_BIGVIA_HOLE_EMPTY ) : \ ( RDS_BIGVIA_HOLE_TABLE [ (int)(Layer) ][ (int)(Index) * 4 + 0 ] ) ) # define GET_BIGVIA_HOLE_SIDE( Layer, Index ) \ \ ( ( (int)(Index) * 4 >= RDS_BIGVIA_HOLE_FIELD ) ? \ ( RDS_BIGVIA_HOLE_EMPTY ) : \ ( RDS_BIGVIA_HOLE_TABLE [ (int)(Layer) ][ (int)(Index) * 4 + 1 ] ) ) # define GET_BIGVIA_HOLE_STEP( Layer, Index ) \ \ ( ( (int)(Index) * 4 >= RDS_BIGVIA_HOLE_FIELD ) ? \ ( RDS_BIGVIA_HOLE_EMPTY ) : \ ( RDS_BIGVIA_HOLE_TABLE [ (int)(Layer) ][ (int)(Index) * 4 + 2 ] ) ) # define GET_BIGVIA_HOLE_USE( Layer, Index ) \ \ ( ( (int)(Index) * 4 >= RDS_BIGVIA_HOLE_FIELD ) ? \ ( RDS_BIGVIA_HOLE_EMPTY ) : \ ( RDS_BIGVIA_HOLE_TABLE [ (int)(Layer) ][ (int)(Index) * 4 + 3 ] ) ) # define GET_BIGVIA_METAL_LAYER( Layer, Index ) \ \ ( ( (int)(Index) * 4 >= RDS_BIGVIA_METAL_FIELD ) ? \ ( RDS_BIGVIA_METAL_EMPTY ) : \ ( RDS_BIGVIA_METAL_TABLE [ (int)(Layer) ][ (int)(Index) * 4 + 0 ] ) ) # define GET_BIGVIA_METAL_DWR( Layer, Index ) \ \ ( ( (int)(Index) * 4 >= RDS_BIGVIA_METAL_FIELD ) ? \ ( RDS_BIGVIA_METAL_EMPTY ) : \ ( RDS_BIGVIA_METAL_TABLE [ (int)(Layer) ][ (int)(Index) * 4 + 1 ] ) ) # define GET_BIGVIA_METAL_OVERLAP( Layer, Index ) \ \ ( ( (int)(Index) * 4 >= RDS_BIGVIA_METAL_FIELD ) ? \ ( RDS_BIGVIA_METAL_EMPTY ) : \ ( RDS_BIGVIA_METAL_TABLE [ (int)(Layer) ][ (int)(Index) * 4 + 2 ] ) ) # define GET_BIGVIA_METAL_USE( Layer, Index ) \ \ ( ( (int)(Index) * 4 >= RDS_BIGVIA_METAL_FIELD ) ? \ ( RDS_BIGVIA_METAL_EMPTY ) : \ ( RDS_BIGVIA_METAL_TABLE [ (int)(Layer) ][ (int)(Index) * 4 + 3 ] ) ) /*------------------------------------------------------------\ | | | Turn Via Macros | | | \------------------------------------------------------------*/ # define GET_TURNVIA_LAYER( Layer, Index ) \ \ ( ( (int)(Index) * 3 >= RDS_TURNVIA_FIELD ) ? \ ( RDS_TURNVIA_EMPTY ) : \ ( RDS_TURNVIA_TABLE [ (int)(Layer) ][ (int)(Index) * 3 + 0 ] ) ) # define GET_TURNVIA_DWR( Layer, Index ) \ \ ( ( (int)(Index) * 3 >= RDS_TURNVIA_FIELD ) ? \ ( RDS_TURNVIA_EMPTY ) : \ ( RDS_TURNVIA_TABLE [ (int)(Layer) ][ (int)(Index) * 3 + 1 ] ) ) # define GET_TURNVIA_USE( Layer, Index ) \ \ ( ( (int)(Index) * 3 >= RDS_TURNVIA_FIELD ) ? \ ( RDS_TURNVIA_EMPTY ) : \ ( RDS_TURNVIA_TABLE [ (int)(Layer) ][ (int)(Index) * 3 + 2 ] ) ) /*------------------------------------------------------------\ | | | Parser Macros | | | \------------------------------------------------------------*/ # define GET_CIF_LAYER( Layer ) \ \ ( RDS_CIF_LAYER_TABLE [ (int)(Layer) ][ 0 ] ) # define GET_GDS_LAYER( Layer ) \ \ ( RDS_GDS_LAYER_TABLE [ (int)(Layer) ][ 0 ] ) # define GET_GDS_CONNECTOR_LAYER( Layer ) \ \ ( RDS_GDS_LAYER_TABLE [ (int)(Layer) ][ 1 ] ) /*------------------------------------------------------------\ | | | Types | | | \------------------------------------------------------------*/ /*------------------------------------------------------------\ | | | Variables | | | \------------------------------------------------------------*/ extern long RDS_PHYSICAL_GRID; extern long RDS_LAMBDA; extern long RDS_LAMBDA2; extern long RDS_UNIT; extern long RDS_UNIT2; extern unsigned char RDS_S2R_POST_TREAT_TABLE [ RDS_ALL_LAYER ][ RDS_S2R_POST_TREAT_FIELD ]; extern long RDS_S2R_OVERSIZE_TABLE [ RDS_ALL_LAYER ][ RDS_S2R_OVERSIZE_FIELD ]; extern long RDS_S2R_RING_WIDTH_TABLE [ RDS_ALL_LAYER ][ RDS_S2R_RING_WIDTH_FIELD ]; extern long RDS_S2R_LAYER_WIDTH_TABLE [ RDS_ALL_LAYER ][ RDS_S2R_LAYER_WIDTH_FIELD ]; extern long RDS_SEGMENT_TABLE [ MBK_MAX_LAYER ][ RDS_SEGMENT_FIELD ]; extern long RDS_VIA_TABLE [ MBK_MAX_VIA ][ RDS_VIA_FIELD ]; extern long RDS_CONNECTOR_TABLE [ MBK_MAX_LAYER ][ RDS_CONNECTOR_FIELD ]; extern long RDS_REFERENCE_TABLE [ MBK_MAX_REFERENCE ][ RDS_REFERENCE_FIELD ]; extern long RDS_BIGVIA_HOLE_TABLE[ MBK_MAX_VIA ][ RDS_BIGVIA_HOLE_FIELD ]; extern long RDS_BIGVIA_METAL_TABLE[ MBK_MAX_VIA ][ RDS_BIGVIA_METAL_FIELD ]; extern long RDS_TURNVIA_TABLE[ MBK_MAX_VIA ][ RDS_TURNVIA_FIELD ]; extern unsigned char RDS_GDS_LAYER_TABLE [ RDS_ALL_LAYER ][ RDS_GDS_LAYER_FIELD ]; extern char *RDS_CIF_LAYER_TABLE [ RDS_ALL_LAYER ][ RDS_CIF_LAYER_FIELD ]; extern unsigned char RDS_LYNX_BULK_IMPLICIT_TABLE [ RDS_ALL_LAYER ][ RDS_LYNX_BULK_IMPLICIT_FIELD ]; extern float RDS_LYNX_CAPA_TABLE [ RDS_ALL_LAYER ][ RDS_LYNX_CAPA_FIELD ]; extern float RDS_LYNX_RESISTOR_TABLE [ RDS_ALL_LAYER ][ RDS_LYNX_RESISTOR_FIELD ]; extern unsigned char RDS_LYNX_GRAPH_TABLE [ RDS_ALL_LAYER ][ RDS_LYNX_GRAPH_FIELD ]; extern unsigned char RDS_LYNX_TRANSISTOR_TABLE [ MBK_MAX_LAYER ][ RDS_LYNX_TRANSISTOR_FIELD ]; extern unsigned char RDS_LYNX_DIFFUSION_TABLE [ RDS_ALL_LAYER ][ RDS_LYNX_DIFFUSION_FIELD ]; extern char MBK_LAYER_NAME[ MBK_MAX_LAYER ][ 12 ]; extern char MBK_VIA_NAME [ MBK_MAX_VIA ][ 12 ]; extern char RDS_TRANS_NAME [ RDS_MAX_TRANS ][ 4 ]; extern char RDS_USE_NAME [ RDS_MAX_USE ][ 4 ]; /*------------------------------------------------------------\ | | | Functions | | | \------------------------------------------------------------*/ extern void loadrdsparam __P(()); extern void viewrdsparam __P(()); # endif