Golden Parse data structures

From: Paul Munsey <73053.721@compuserve.com>
Date: Sat Sep 03 1994 - 21:46:57 PDT

IBIS Members,

    Included is the data structures that Ron Neville and I are using for building
the 2.0 version of the Golden Parser. You may notice that the package model
data structure is not included in this. Ron and I still had not fully decided
exactly how we wanted to represent the matrix's (matrices?), plus I figured that
the following structures will be fun enough to read through all by themselves.

   Note: The following structures are just a cutting and pasting from the various
C header files that we're using.

    Enjoy!

Paul Munsey

---------------------------------------------------------------------------------------------------------------
/**********************************************************************
name: ibis_chk.h
**********************************************************************/
#define UL unsigned long
#define IBIS_LINE_MAX 80
#define IBIS_PATH_MAX 256 /* debug/todo is not this defined someplace */
/**********************************************************************
   typdefs
**********************************************************************/
typedef enum bool {FALSE, TRUE} BOOL;
typedef enum numstat {NOT_SET, SET, NA} NUMSTAT;
typedef enum ibis_ver {UNKNOWN, VER_1, VER_2} IBIS_VER;

/**********************************************************************
name: ibis.h
desc: Defines the structure for the ibis struct.
**********************************************************************/
/**********************************************************************
   structure definitions
**********************************************************************/
typedef struct ibis {
   HDR *pHdr;
               /* this structure holds all the header info */
   CMPNT *pCmpnts;
               /* this is a ptr to a linked list of structures that
               hold all the components */
   MDL *pMdls;
               /* this is a ptr to a linked list of structures that
               hold all the models */
   PKGMDL *pPkgmdls;
               /* this is a ptr to a linked list of structures that
               hold all the package models */
} IBIS;

/**********************************************************************
name: hdr.h
desc: Defines the structure for the "header" information in a .ibs
         file.
**********************************************************************/
#define HDR_VER_LEN 70
#define HDR_REV_LEN 70
#define HDR_DATE_LEN 40
#define HDR_FILENAME_LEN 12 /* MSDOS max 8 + 1 + 3 */
/**********************************************************************
   structure definitions
**********************************************************************/
typedef struct hdr {
   char sIBIS_Ver[HDR_VER_LEN + 1];
   char sFile_name[HDR_FILENAME_LEN + 1];
   char sFile_Rev[HDR_REV_LEN + 1];
   char sDate[HDR_DATE_LEN + 1];
   char *sSource; /* ptr to a dynamically maintained array of text. */
   char *sNotes; /* ptr to a dynamically maintained array of text. */
   char *sDisclaimer; /* ptr to a dynamically maintained array of text. */
   char *sCopyright; /* ptr to a dynamically maintained array of text. */
} HDR;

/**********************************************************************
name: cmpnt.h
desc: Defines the structure for a single component within a .ibs file.
**********************************************************************/
#define CMPNT_CMPNT_LEN 40
#define CMPNT_MNFCTR_LEN 40
#define CMPNT_PKGMDL_LEN 40
/**********************************************************************
   structure definition
**********************************************************************/
typedef struct cmpnt {
   struct cmpnt *pNext; /* link list */
   char sComponent[CMPNT_CMPNT_LEN + 1];
   char sManufacturer[CMPNT_MNFCTR_LEN + 1];
   PKG *pPackage;
   PIN *pPin; /* linked list of pins */
   char sPackage_Model[CMPNT_PKGMDL_LEN + 1];
   PINMPG *pPin_Mapping; /* linked list of pinmappings */
   DIFPIN *pDiff_Pin; /* linked list of diffpins */
} CMPNT;

/**********************************************************************
name: mdl.h
desc: Defines the structure for a single model within a .ibs file.
**********************************************************************/
#define MDL_NAME_LEN 20
/**********************************************************************
   model types
**********************************************************************/
typedef enum model_type {
   NO_TYPE,
   INPUT,
   OUTPUT,
   IO,
   THREE_STATE,
   OPEN_DRAIN,
   IO_OPEN_DRAIN,
   OPEN_SINK,
   IO_OPEN_SINK,
   OPEN_SOURCE,
   IO_OPEN_SOURCE,
   INPUT_ECL,
   OUTPUT_ECL,
   IO_ECL,
   TERMINATOR
} MODEL_TYPE;

/**********************************************************************
   model polarity
**********************************************************************/
typedef enum model_polarity {
   NON_INVERTING,
   INVERTING
} MODEL_POLARITY;

/**********************************************************************
   model enable
**********************************************************************/
typedef enum model_enable {
   ACTIVE_HIGH,
   ACTIVE_LOW
} MODEL_ENABLE;

/**********************************************************************
   structure definitions
**********************************************************************/
typedef struct mdl {
   struct mdl *pNext;
   char sModel[MDL_NAME_LEN + 1];
   MODEL_TYPE *pType;
   MODEL_POLARITY *pPolarity;
   MODEL_ENABLE *pEnable;
   double *pdVinl;
   double *pdVinh;
   RNG *pC_comp;
   double *pdVmeas;
   double *pdCref;
   double *pdRref;
   double *pdVref;
   RNG *pTemp_Range;
   RNG *pVoltage_Range;
   RNG *pPullup_Ref;
   RNG *pPulldown_Ref;
   RNG *pPOWER_Clamp_Ref;
   RNG *pGND_Clamp_Ref;
   VRNG *pPulldown;
   VRNG *pPullup;
   VRNG *pGND_Clamp;
   VRNG *pPOWER_Clamp;
   RNG *pRgnd;
   RNG *pRpower;
   RNG *pRac;
   RNG *pCac;
   RAMP *pDVDT_r;
   RAMP *pDVDT_f;
   double *pdR_load;
   WVFRM *pRising_Waveform;
   WVFRM *pFalling_Waveform;
} MDL;

/**********************************************************************
name: pkg.h
desc: Defines the structure for the Package.
**********************************************************************/
/**********************************************************************
   structure definitions
**********************************************************************/
typedef struct pkg {
   RNG *pR_pkg;
   RNG *pL_pkg;
   RNG *pC_pkg;
} PKG;

/**********************************************************************
name: pin.h
desc: Defines the structure for the Pin data.
**********************************************************************/
#define PIN_NAME_LEN 5
#define PIN_SIGNAL_LEN 20
#define PIN_MODEL_LEN 20
/**********************************************************************
   structure definitions
**********************************************************************/
typedef struct pin {
   struct pin *pNext; /* linked list of pins... */
   int iColumnCount; /* must be 3 or 6 */
   char sPin[PIN_NAME_LEN + 1];
   char sSignal_name[PIN_SIGNAL_LEN + 1];
   char sModel_name[PIN_MODEL_LEN + 1];
   double dR_pin;
   BOOL bR_pinNA;
   double dL_pin;
   BOOL bL_pinNA;
   double dC_pin;
   BOOL bC_pinNA;
} PIN;

/**********************************************************************
name: pinmpg.h
desc: Defines the structure for the pin mapping.
**********************************************************************/
#define PINMPG_NAME_LEN 5
#define PINMPG_REF_LEN 15
/**********************************************************************
   structure definitions
**********************************************************************/
typedef struct pinmpg {
   struct pinmpg *pNext; /* link list */
   int iColumnCount;
   char sPin_Mapping[PINMPG_NAME_LEN + 1];
   char sPulldown_ref[PINMPG_REF_LEN + 1];
   char sPullup_ref[PINMPG_REF_LEN + 1];
   char sGnd_clamp_ref[PINMPG_REF_LEN + 1];
   char sPower_clamp_ref[PINMPG_REF_LEN + 1];
} PINMPG;

/**********************************************************************
name: difpin.h
desc: Defines the structure for the Diff Pin data.
**********************************************************************/
#define DIFPIN_NAME_LEN 5
#define DIFPIN_INVPIN_LEN 5
/**********************************************************************
   structure definitions
**********************************************************************/
typedef struct difpin {
   struct difpin *pNext; /* linked list of difpins... */
   int iColumnCount;
   char sDiff_Pin[DIFPIN_NAME_LEN + 1];
   char sInv_pin[DIFPIN_INVPIN_LEN + 1];
   VRNG pVrng;
} DIFPIN;

/**********************************************************************
name: rng.h
desc: Defines the structure for the range values.
**********************************************************************/
/**********************************************************************
   structure definitions
**********************************************************************/
typedef struct rng {
   double dTyp;
   NUMSTAT eTypStat;
   double dMin;
   NUMSTAT eMinStat;
   double dMax;
   NUMSTAT eMaxStat;
} RNG;

/**********************************************************************
name: vrng.h
desc: Defines the structure for the v range values.
        Also contains function prototypes for the access methods for
        that structure.
**********************************************************************/
/**********************************************************************
   structure definitions
**********************************************************************/
typedef struct vrng {
   double dVolt;
   BOOL bVoltNA;
   RNG *pTdelay;
} VRNG;

/**********************************************************************
name: ramp.h
desc: Defines the structure for the ramp.
**********************************************************************/
/**********************************************************************
   structure definitions
**********************************************************************/
typedef struct ramp {
   double dTyp_dV;
   double dTyp_dt;
   double dMin_dV;
   double dMin_dt;
   BOOL bMinNA;
   double dMax_dV;
   double dMax_dt;
   BOOL bMaxNA;
} RAMP;

/**********************************************************************
name: wvfrm.h
desc: Defines the structure for the wavefrom values.
**********************************************************************/
/**********************************************************************
   structure definitions
**********************************************************************/
typedef struct wvfrm {
   struct wvfrm *pNext; /* link list */
   double R_fixture;
   double V_fixture;
   double C_fixture;
   double L_fixture;
   double R_dut;
   double L_dut;
   double C_dut;
   TRNG *pTrng;
} WVFRM;

/**********************************************************************
name: trng.h
desc: Defines the structure for the time range values.
**********************************************************************/
/**********************************************************************
   structure definitions
**********************************************************************/
typedef struct trng {
   struct trng *pNext; /* link list */
   double time;
   RNG range;
} TRNG;
Received on Sat Sep 3 21:53:17 1994

This archive was generated by hypermail 2.1.8 : Fri Jun 03 2011 - 09:52:28 PDT