mirror of
https://github.com/RTimothyEdwards/magic.git
synced 2026-09-04 08:33:55 +02:00
supported). Fixed the long-standing issue in which DRC does not get stopped by the "drc off" command (the behavior for interrupting the DRC was dependent on the DRC being turned on, and the "drc off" command was turning it off before breaking, causing the interrupt to be ignored).
242 lines
6.7 KiB
C
242 lines
6.7 KiB
C
/*
|
|
* calma.h --
|
|
*
|
|
* This file defines constants used internally by the calma
|
|
* module, but not exported to the rest of the world.
|
|
*
|
|
* *********************************************************************
|
|
* * Copyright (C) 1985, 1990 Regents of the University of California. *
|
|
* * Permission to use, copy, modify, and distribute this *
|
|
* * software and its documentation for any purpose and without *
|
|
* * fee is hereby granted, provided that the above copyright *
|
|
* * notice appear in all copies. The University of California *
|
|
* * makes no representations about the suitability of this *
|
|
* * software for any purpose. It is provided "as is" without *
|
|
* * express or implied warranty. Export of this software outside *
|
|
* * of the United States of America may require an export license. *
|
|
* *********************************************************************
|
|
*
|
|
* rcsid $Header: /usr/cvsroot/magic-8.0/calma/calmaInt.h,v 1.2 2010/06/24 12:37:15 tim Exp $
|
|
*/
|
|
|
|
#ifndef _CALMAINT_H
|
|
#define _CALMAINT_H
|
|
|
|
#include "utils/magic.h"
|
|
#include "database/database.h"
|
|
|
|
/* Record data types */
|
|
#define CALMA_NODATA 0 /* No data present */
|
|
#define CALMA_BITARRAY 1 /* Bit array */
|
|
#define CALMA_I2 2 /* 2 byte integer */
|
|
#define CALMA_I4 3 /* 4 byte integer */
|
|
#define CALMA_R4 4 /* 4 byte real */
|
|
#define CALMA_R8 5 /* 8 byte real */
|
|
#define CALMA_ASCII 6 /* ASCII string */
|
|
|
|
/* Record types */
|
|
#define CALMA_HEADER 0
|
|
#define CALMA_BGNLIB 1
|
|
#define CALMA_LIBNAME 2
|
|
#define CALMA_UNITS 3
|
|
#define CALMA_ENDLIB 4
|
|
#define CALMA_BGNSTR 5
|
|
#define CALMA_STRNAME 6
|
|
#define CALMA_ENDSTR 7
|
|
#define CALMA_BOUNDARY 8
|
|
#define CALMA_PATH 9
|
|
#define CALMA_SREF 10
|
|
#define CALMA_AREF 11
|
|
#define CALMA_TEXT 12
|
|
#define CALMA_LAYER 13
|
|
#define CALMA_DATATYPE 14
|
|
#define CALMA_WIDTH 15
|
|
#define CALMA_XY 16
|
|
#define CALMA_ENDEL 17
|
|
#define CALMA_SNAME 18
|
|
#define CALMA_COLROW 19
|
|
#define CALMA_TEXTNODE 20
|
|
#define CALMA_NODE 21
|
|
#define CALMA_TEXTTYPE 22
|
|
#define CALMA_PRESENTATION 23
|
|
#define CALMA_SPACING 24
|
|
#define CALMA_STRING 25
|
|
#define CALMA_STRANS 26
|
|
#define CALMA_MAG 27
|
|
#define CALMA_ANGLE 28
|
|
#define CALMA_UINTEGER 29
|
|
#define CALMA_USTRING 30
|
|
#define CALMA_REFLIBS 31
|
|
#define CALMA_FONTS 32
|
|
#define CALMA_PATHTYPE 33
|
|
#define CALMA_GENERATIONS 34
|
|
#define CALMA_ATTRTABLE 35
|
|
#define CALMA_STYPTABLE 36
|
|
#define CALMA_STRTYPE 37
|
|
#define CALMA_ELFLAGS 38
|
|
#define CALMA_ELKEY 39
|
|
#define CALMA_LINKTYPE 40
|
|
#define CALMA_LINKKEYS 41
|
|
#define CALMA_NODETYPE 42
|
|
#define CALMA_PROPATTR 43
|
|
#define CALMA_PROPVALUE 44
|
|
#define CALMA_BOX 45
|
|
#define CALMA_BOXTYPE 46
|
|
#define CALMA_PLEX 47
|
|
#define CALMA_BGNEXTN 48
|
|
#define CALMA_ENDEXTN 49
|
|
#define CALMA_TAPENUM 50
|
|
#define CALMA_TAPECODE 51
|
|
#define CALMA_STRCLASS 52
|
|
#define CALMA_RESERVED 53
|
|
#define CALMA_FORMAT 54
|
|
#define CALMA_MASK 55
|
|
#define CALMA_ENDMASKS 56
|
|
#define CALMA_LIBDIRSIZE 57
|
|
#define CALMA_SRFNAME 58
|
|
#define CALMA_LIBSECUR 59
|
|
|
|
#define CALMA_NUMRECORDTYPES 60 /* Number of above types */
|
|
|
|
/* Property types defined for magic */
|
|
#define CALMA_PROP_USENAME_STD 61 /* To record non-default cell use ids */
|
|
#define CALMA_PROP_USENAME 98 /* To record non-default cell use ids */
|
|
#define CALMA_PROP_ARRAY_LIMITS 99 /* To record non-default array limits */
|
|
|
|
/* Flags for transforms */
|
|
#define CALMA_STRANS_UPSIDEDOWN 0x8000 /* Mirror about X axis before rot */
|
|
#define CALMA_STRANS_ROTATE 0x0002 /* Rotate by absolute angle */
|
|
|
|
/* Path types */
|
|
#define CALMAPATH_SQUAREFLUSH 0 /* Square end flush with endpoint */
|
|
#define CALMAPATH_ROUND 1 /* Round end */
|
|
#define CALMAPATH_SQUAREPLUS 2 /* Square end plus half-width extent */
|
|
#define CALMAPATH_CUSTOM 4 /* Endcaps at specified lengths */
|
|
|
|
/* Largest calma layer or data type numbers */
|
|
#define CALMA_LAYER_MAX 255
|
|
|
|
#define CalmaIsValidLayer(n) ((n) >= 0 && (n) <= CALMA_LAYER_MAX)
|
|
|
|
/* Used to index hash tables of (layer, datatype) pairs */
|
|
typedef struct
|
|
{
|
|
int clt_layer;
|
|
int clt_type;
|
|
} CalmaLayerType;
|
|
|
|
/* Biggest calma string */
|
|
#define CALMANAMELENGTH 32
|
|
|
|
/* Length of record header */
|
|
#define CALMAHEADERLENGTH 4
|
|
|
|
/* Label types */
|
|
typedef enum { LABEL_TYPE_NONE, LABEL_TYPE_TEXT, LABEL_TYPE_PORT, LABEL_TYPE_CELLID } labelType;
|
|
|
|
/* ------------------------- Input macros ----------------------------- */
|
|
|
|
/* Globals for Calma reading */
|
|
extern FILETYPE calmaInputFile;
|
|
extern FILE *calmaInputFileNoCompression;
|
|
extern char *calmaFilename;
|
|
extern int calmaReadScale1;
|
|
extern int calmaReadScale2;
|
|
extern bool calmaLApresent;
|
|
extern int calmaLAnbytes;
|
|
extern int calmaLArtype;
|
|
|
|
/*
|
|
* Macros for number representation conversion.
|
|
*/
|
|
#ifdef ibm032
|
|
#include <netinet/in.h> /* as macros in in.h and don't exist as routines */
|
|
#endif
|
|
|
|
#ifndef ntohl
|
|
# ifdef WORDS_BIGENDIAN
|
|
# define ntohl(x) (x)
|
|
# define ntohs(x) (x)
|
|
# define htonl(x) (x)
|
|
# define htons(x) (x)
|
|
# endif
|
|
#endif
|
|
|
|
typedef union { char uc[2]; unsigned short us; } TwoByteInt;
|
|
typedef union { char uc[4]; unsigned int ul; } FourByteInt;
|
|
|
|
/* Macro to read a 2-byte integer */
|
|
#define READI2(z) \
|
|
{ \
|
|
TwoByteInt u; \
|
|
u.uc[0] = FGETC(calmaInputFile); \
|
|
u.uc[1] = FGETC(calmaInputFile); \
|
|
(z) = (int) ntohs(u.us); \
|
|
}
|
|
|
|
/* Macro to read a 4-byte integer */
|
|
#define READI4(z) \
|
|
{ \
|
|
FourByteInt u; \
|
|
u.uc[0] = FGETC(calmaInputFile); \
|
|
u.uc[1] = FGETC(calmaInputFile); \
|
|
u.uc[2] = FGETC(calmaInputFile); \
|
|
u.uc[3] = FGETC(calmaInputFile); \
|
|
(z) = (int) ntohl(u.ul); \
|
|
}
|
|
|
|
/* Macros for reading and unreading record headers */
|
|
#define READRH(nb, rt) \
|
|
{ \
|
|
if (calmaLApresent) { \
|
|
(nb) = calmaLAnbytes; \
|
|
(rt) = calmaLArtype; \
|
|
calmaLApresent = FALSE; \
|
|
} else { \
|
|
READI2(nb); \
|
|
if (FEOF(calmaInputFile)) nb = -1; \
|
|
else { \
|
|
(rt) = FGETC(calmaInputFile); \
|
|
(void) FGETC(calmaInputFile); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define UNREADRH(nb, rt) \
|
|
{ \
|
|
ASSERT(!calmaLApresent, "UNREADRH"); \
|
|
calmaLApresent = TRUE; \
|
|
calmaLAnbytes = (nb); \
|
|
calmaLArtype = (rt); \
|
|
}
|
|
|
|
#define PEEKRH(nb, rt) \
|
|
{ \
|
|
READRH(nb, rt); \
|
|
UNREADRH(nb, rt); \
|
|
}
|
|
|
|
/* Other commonly used globals */
|
|
extern HashTable calmaLayerHash;
|
|
extern int calmaElementIgnore[];
|
|
extern CellDef *calmaFindCell();
|
|
|
|
/* (Added by Nishit, 8/18/2004--8/24/2004) */
|
|
extern CellDef *calmaLookCell();
|
|
extern void calmaWriteContact();
|
|
extern CellDef *calmaGetContactCell();
|
|
extern bool calmaIsContactCell;
|
|
|
|
extern char *calmaRecordName();
|
|
extern void calmaSkipSet();
|
|
|
|
/* ------------------- Imports from CIF reading ----------------------- */
|
|
|
|
extern CellDef *cifReadCellDef;
|
|
extern Plane *cifSubcellPlanes[];
|
|
extern Plane **cifCurReadPlanes;
|
|
extern HashTable CifCellTable;
|
|
extern Plane *cifEditCellPlanes[];
|
|
|
|
#endif /* _CALMAINT_H */
|