/*************************************************************************** JSPICE3 adaptation of Spice3f2 - Copyright (c) Stephen R. Whiteley 1992 Copyright 1990 Regents of the University of California. All rights reserved. Authors: 1985 Thomas L. Quarles 1993 Stephen R. Whiteley ****************************************************************************/ #ifndef RES #define RES #include "devdefs.h" /* definitions used to describe resistors */ /* information used to describe a single instance */ typedef struct sRESinstance { struct sRESmodel *RESmodPtr; /* backpointer to model */ struct sRESinstance *RESnextInstance; /* pointer to next instance of * current model*/ IFuid RESname; /* pointer to character string naming this instance */ int RESstate; /* not used, placeholder for GENinstance */ int RESposNode; /* number of positive node of resistor */ int RESnegNode; /* number of negative node of resistor */ double REStemp; /* temperature at which this resistor operates */ double RESconduct; /* conductance at current analysis temperature */ double RESresist; /* resistance at temperature Tnom */ double RESwidth; /* width of the resistor */ double RESlength; /* length of the resistor */ double *RESposPosptr; /* pointer to sparse matrix diagonal at * (positive,positive) */ double *RESnegNegptr; /* pointer to sparse matrix diagonal at * (negative,negative) */ double *RESposNegptr; /* pointer to sparse matrix offdiagonal at * (positive,negative) */ double *RESnegPosptr; /* pointer to sparse matrix offdiagonal at * (negative,positive) */ /* flag to indicate... */ unsigned RESresGiven : 1; /* resistance was specified */ unsigned RESwidthGiven : 1; /* width given */ unsigned RESlengthGiven : 1; /* length given */ unsigned REStempGiven : 1; /* temperature specified */ double RESnVar[NSTATVARS]; } RESinstance; /* per model data */ typedef struct sRESmodel { /* model structure for a resistor */ int RESmodType; /* type index of this device type */ struct sRESmodel *RESnextModel; /* pointer to next possible model in * linked list */ RESinstance *RESinstances; /* pointer to list of instances that have this * model */ IFuid RESmodName; /* pointer to character string naming this model */ double REStnom; /* temperature at which resistance measured */ double REStempCoeff1; /* first temperature coefficient of resistors */ double REStempCoeff2; /* second temperature coefficient of resistors */ double RESsheetRes; /* sheet resistance of devices in ohms/square */ double RESdefWidth; /* default width of a resistor */ double RESnarrow; /* amount by which device is narrower than drawn */ /* flag to indicate... */ unsigned REStnomGiven: 1; /* nominal temp. was given */ unsigned REStc1Given : 1; /* tc1 was specified */ unsigned REStc2Given : 1; /* tc2 was specified */ unsigned RESsheetResGiven :1; /* sheet resistance given */ unsigned RESdefWidthGiven :1; /* default width given */ unsigned RESnarrowGiven :1; /* narrow effect given */ } RESmodel; /* device parameters */ #define RES_RESIST 1 #define RES_WIDTH 2 #define RES_LENGTH 3 #define RES_CONDUCT 4 #define RES_CURRENT 5 #define RES_POWER 6 #define RES_TEMP 7 /* model parameters */ #define RES_MOD_TC1 101 #define RES_MOD_TC2 102 #define RES_MOD_RSH 103 #define RES_MOD_DEFWIDTH 104 #define RES_MOD_NARROW 105 #define RES_MOD_R 106 #define RES_MOD_TNOM 107 #ifdef __STDC__ extern int RESacLoad(GENmodel*,CKTcircuit*); extern int RESask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int RESmAsk(CKTcircuit*,GENmodel*,int,IFvalue*); extern int RESmParam(int,IFvalue*,GENmodel*); extern int RESnoise(int,int,GENmodel*,CKTcircuit*,GENERIC*,double*); extern int RESparam(CKTcircuit*,int,IFvalue*,GENinstance*,IFvalue*); extern void RESparse(int,GENERIC*,GENERIC*,GENERIC*); extern int RESpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int RESsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); extern int REStemp(GENmodel*,CKTcircuit*); #else /* stdc */ extern int RESacLoad(); extern int RESask(); extern int RESmAsk(); extern int RESmParam(); extern int RESnoise(); extern int RESparam(); extern void RESparse(); extern int RESpzLoad(); extern int RESsetup(); extern int REStemp(); #endif /* stdc */ #endif /*RES*/