whitespace change, cleanup, untabify
This commit is contained in:
parent
a321d7f419
commit
68c0ee9cd3
|
|
@ -1,3 +1,12 @@
|
|||
2010-07-03 Robert Larice
|
||||
* src/include/cktdefs.h ,
|
||||
* src/include/gendefs.h ,
|
||||
* src/include/graph.h ,
|
||||
* src/include/ifsim.h ,
|
||||
* src/include/inpdefs.h ,
|
||||
* src/include/tfdefs.h :
|
||||
whitespace change, cleanup, untabify
|
||||
|
||||
2010-07-03 Robert Larice
|
||||
* src/include/cktdefs.h ,
|
||||
* src/include/gendefs.h ,
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@
|
|||
/* gtri - evt - wbk - 5/20/91 - add event-driven and enhancements data */
|
||||
|
||||
|
||||
#define MAXNUMDEVS 64 /* Max number of possible devices PN:XXX may cause toubles*/
|
||||
extern int DEVmaxnum; /* Not sure if still used */
|
||||
#define MAXNUMDEVNODES 4 /* Max No. of nodes per device */
|
||||
#define MAXNUMDEVS 64 /* Max number of possible devices PN:XXX may cause toubles*/
|
||||
extern int DEVmaxnum; /* Not sure if still used */
|
||||
#define MAXNUMDEVNODES 4 /* Max No. of nodes per device */
|
||||
/* Need to change for SOI devs ? */
|
||||
|
||||
#include "smpdefs.h"
|
||||
|
|
@ -33,6 +33,7 @@ extern int DEVmaxnum; /* Not sure if still used */
|
|||
typedef struct CKTnode CKTnode;
|
||||
typedef struct CKTcircuit CKTcircuit;
|
||||
|
||||
|
||||
struct CKTnode {
|
||||
IFuid name;
|
||||
int type;
|
||||
|
|
@ -42,20 +43,19 @@ struct CKTnode {
|
|||
#define NODE_VOLTAGE SP_VOLTAGE
|
||||
#define NODE_CURRENT SP_CURRENT
|
||||
|
||||
int number; /* Number of the node */
|
||||
double ic; /* Value of the initial condition */
|
||||
double nodeset; /* Value of the .nodeset option */
|
||||
double *ptr; /* ??? */
|
||||
CKTnode *next; /* pointer to the next node */
|
||||
unsigned int icGiven:1; /* FLAG ic given */
|
||||
unsigned int nsGiven:1; /* FLAG nodeset given */
|
||||
int number; /* Number of the node */
|
||||
double ic; /* Value of the initial condition */
|
||||
double nodeset; /* Value of the .nodeset option */
|
||||
double *ptr; /* ??? */
|
||||
CKTnode *next; /* pointer to the next node */
|
||||
unsigned int icGiven:1; /* FLAG ic given */
|
||||
unsigned int nsGiven:1; /* FLAG nodeset given */
|
||||
};
|
||||
|
||||
/* defines for node parameters */
|
||||
#define PARM_NS 1
|
||||
#define PARM_IC 2
|
||||
#define PARM_NODETYPE 3
|
||||
|
||||
#define PARM_NS 1
|
||||
#define PARM_IC 2
|
||||
#define PARM_NODETYPE 3
|
||||
|
||||
|
||||
struct CKTcircuit {
|
||||
|
|
@ -75,8 +75,8 @@ struct CKTcircuit {
|
|||
/* GENmodel *CKThead[MAXNUMDEVS]; maschmann : deleted */
|
||||
|
||||
|
||||
STATistics *CKTstat; /* The STATistics structure */
|
||||
double *(CKTstates[8]); /* Used as memory of past steps ??? */
|
||||
STATistics *CKTstat; /* The STATistics structure */
|
||||
double *(CKTstates[8]); /* Used as memory of past steps ??? */
|
||||
|
||||
/* Some shortcut for CKTstates */
|
||||
#define CKTstate0 CKTstates[0]
|
||||
|
|
@ -87,43 +87,43 @@ struct CKTcircuit {
|
|||
#define CKTstate5 CKTstates[5]
|
||||
#define CKTstate6 CKTstates[6]
|
||||
#define CKTstate7 CKTstates[7]
|
||||
double CKTtime; /* ??? */
|
||||
double CKTdelta; /* ??? */
|
||||
double CKTdeltaOld[7]; /* Memory for ??? */
|
||||
double CKTtemp; /* Actual temperature of CKT */
|
||||
double CKTnomTemp; /* Reference temperature 27 C ? */
|
||||
double CKTvt; /* Thernmal voltage at CKTtemp */
|
||||
double CKTag[7]; /* the gear variable coefficient matrix */
|
||||
double CKTtime; /* ??? */
|
||||
double CKTdelta; /* ??? */
|
||||
double CKTdeltaOld[7]; /* Memory for ??? */
|
||||
double CKTtemp; /* Actual temperature of CKT */
|
||||
double CKTnomTemp; /* Reference temperature 27 C ? */
|
||||
double CKTvt; /* Thernmal voltage at CKTtemp */
|
||||
double CKTag[7]; /* the gear variable coefficient matrix */
|
||||
#ifdef PREDICTOR
|
||||
double CKTagp[7]; /* the gear predictor variable
|
||||
double CKTagp[7]; /* the gear predictor variable
|
||||
coefficient matrix */
|
||||
#endif /*PREDICTOR*/
|
||||
int CKTorder; /* the integration method order */
|
||||
int CKTmaxOrder; /* maximum integration method order */
|
||||
int CKTintegrateMethod; /* the integration method to be used */
|
||||
int CKTorder; /* the integration method order */
|
||||
int CKTmaxOrder; /* maximum integration method order */
|
||||
int CKTintegrateMethod; /* the integration method to be used */
|
||||
|
||||
/* known integration methods */
|
||||
#define TRAPEZOIDAL 1
|
||||
#define GEAR 2
|
||||
|
||||
SMPmatrix *CKTmatrix; /* pointer to sparse matrix */
|
||||
int CKTniState; /* internal state */
|
||||
double *CKTrhs; /* current rhs value - being loaded */
|
||||
double *CKTrhsOld; /* previous rhs value for convergence
|
||||
SMPmatrix *CKTmatrix; /* pointer to sparse matrix */
|
||||
int CKTniState; /* internal state */
|
||||
double *CKTrhs; /* current rhs value - being loaded */
|
||||
double *CKTrhsOld; /* previous rhs value for convergence
|
||||
testing */
|
||||
double *CKTrhsSpare; /* spare rhs value for reordering */
|
||||
double *CKTirhs; /* current rhs value - being loaded
|
||||
double *CKTrhsSpare; /* spare rhs value for reordering */
|
||||
double *CKTirhs; /* current rhs value - being loaded
|
||||
(imag) */
|
||||
double *CKTirhsOld; /* previous rhs value (imaginary)*/
|
||||
double *CKTirhsSpare; /* spare rhs value (imaginary)*/
|
||||
double *CKTirhsOld; /* previous rhs value (imaginary)*/
|
||||
double *CKTirhsSpare; /* spare rhs value (imaginary)*/
|
||||
#ifdef PREDICTOR
|
||||
double *CKTpred; /* predicted solution vector */
|
||||
double *CKTsols[8]; /* previous 8 solutions */
|
||||
double *CKTpred; /* predicted solution vector */
|
||||
double *CKTsols[8]; /* previous 8 solutions */
|
||||
#endif /* PREDICTOR */
|
||||
|
||||
double *CKTrhsOp; /* opearating point values */
|
||||
double *CKTsenRhs; /* current sensitivity rhs values */
|
||||
double *CKTseniRhs; /* current sensitivity rhs values
|
||||
double *CKTrhsOp; /* opearating point values */
|
||||
double *CKTsenRhs; /* current sensitivity rhs values */
|
||||
double *CKTseniRhs; /* current sensitivity rhs values
|
||||
(imag)*/
|
||||
|
||||
|
||||
|
|
@ -133,17 +133,17 @@ struct CKTcircuit {
|
|||
* What is their meaning ????
|
||||
*/
|
||||
|
||||
#define NISHOULDREORDER 0x1
|
||||
#define NIREORDERED 0x2
|
||||
#define NIUNINITIALIZED 0x4
|
||||
#define NIACSHOULDREORDER 0x10
|
||||
#define NIACREORDERED 0x20
|
||||
#define NIACUNINITIALIZED 0x40
|
||||
#define NIDIDPREORDER 0x100
|
||||
#define NIPZSHOULDREORDER 0x200
|
||||
#define NISHOULDREORDER 0x1
|
||||
#define NIREORDERED 0x2
|
||||
#define NIUNINITIALIZED 0x4
|
||||
#define NIACSHOULDREORDER 0x10
|
||||
#define NIACREORDERED 0x20
|
||||
#define NIACUNINITIALIZED 0x40
|
||||
#define NIDIDPREORDER 0x100
|
||||
#define NIPZSHOULDREORDER 0x200
|
||||
|
||||
int CKTmaxEqNum; /* And this ? */
|
||||
int CKTcurrentAnalysis; /* the analysis in progress (if any) */
|
||||
int CKTmaxEqNum; /* And this ? */
|
||||
int CKTcurrentAnalysis; /* the analysis in progress (if any) */
|
||||
|
||||
/* defines for the value of CKTcurrentAnalysis */
|
||||
/* are in TSKdefs.h */
|
||||
|
|
@ -153,108 +153,108 @@ struct CKTcircuit {
|
|||
|
||||
/* This define should be somewhere else ??? */
|
||||
#define NODENAME(ckt,nodenum) CKTnodName(ckt,nodenum)
|
||||
int CKTnumStates; /* Number of sates effectively valid
|
||||
int CKTnumStates; /* Number of sates effectively valid
|
||||
??? */
|
||||
long CKTmode; /* Mode of operation of the circuit
|
||||
long CKTmode; /* Mode of operation of the circuit
|
||||
??? */
|
||||
|
||||
/* defines for CKTmode */
|
||||
|
||||
/* old 'mode' parameters */
|
||||
#define MODE 0x3
|
||||
#define MODETRAN 0x1
|
||||
#define MODEAC 0x2
|
||||
#define MODE 0x3
|
||||
#define MODETRAN 0x1
|
||||
#define MODEAC 0x2
|
||||
|
||||
/* old 'modedc' parameters */
|
||||
#define MODEDC 0x70
|
||||
#define MODEDCOP 0x10
|
||||
#define MODETRANOP 0x20
|
||||
#define MODEDCTRANCURVE 0x40
|
||||
#define MODEDC 0x70
|
||||
#define MODEDCOP 0x10
|
||||
#define MODETRANOP 0x20
|
||||
#define MODEDCTRANCURVE 0x40
|
||||
|
||||
/* old 'initf' parameters */
|
||||
#define INITF 0x3f00
|
||||
#define MODEINITFLOAT 0x100
|
||||
#define MODEINITJCT 0x200
|
||||
#define MODEINITFIX 0x400
|
||||
#define MODEINITSMSIG 0x800
|
||||
#define MODEINITTRAN 0x1000
|
||||
#define MODEINITPRED 0x2000
|
||||
#define INITF 0x3f00
|
||||
#define MODEINITFLOAT 0x100
|
||||
#define MODEINITJCT 0x200
|
||||
#define MODEINITFIX 0x400
|
||||
#define MODEINITSMSIG 0x800
|
||||
#define MODEINITTRAN 0x1000
|
||||
#define MODEINITPRED 0x2000
|
||||
|
||||
/* old 'nosolv' paramater */
|
||||
#define MODEUIC 0x10000l
|
||||
|
||||
int CKTbypass; /* bypass option, how does it work ? */
|
||||
int CKTdcMaxIter; /* iteration limit for dc op. (itl1) */
|
||||
int CKTdcTrcvMaxIter; /* iteration limit for dc tran. curv
|
||||
int CKTbypass; /* bypass option, how does it work ? */
|
||||
int CKTdcMaxIter; /* iteration limit for dc op. (itl1) */
|
||||
int CKTdcTrcvMaxIter; /* iteration limit for dc tran. curv
|
||||
(itl2) */
|
||||
int CKTtranMaxIter; /* iteration limit for each timepoint
|
||||
int CKTtranMaxIter; /* iteration limit for each timepoint
|
||||
for tran*/
|
||||
/* (itl4) */
|
||||
int CKTbreakSize; /* ??? */
|
||||
int CKTbreak; /* ??? */
|
||||
double CKTsaveDelta; /* ??? */
|
||||
double CKTminBreak; /* ??? */
|
||||
double *CKTbreaks; /* List of breakpoints ??? */
|
||||
double CKTabstol; /* --- */
|
||||
double CKTpivotAbsTol; /* --- */
|
||||
double CKTpivotRelTol; /* --- */
|
||||
double CKTreltol; /* --- */
|
||||
double CKTchgtol; /* --- */
|
||||
double CKTvoltTol; /* --- */
|
||||
int CKTbreakSize; /* ??? */
|
||||
int CKTbreak; /* ??? */
|
||||
double CKTsaveDelta; /* ??? */
|
||||
double CKTminBreak; /* ??? */
|
||||
double *CKTbreaks; /* List of breakpoints ??? */
|
||||
double CKTabstol; /* --- */
|
||||
double CKTpivotAbsTol; /* --- */
|
||||
double CKTpivotRelTol; /* --- */
|
||||
double CKTreltol; /* --- */
|
||||
double CKTchgtol; /* --- */
|
||||
double CKTvoltTol; /* --- */
|
||||
/* What is this define for ? */
|
||||
#ifdef NEWTRUNC
|
||||
double CKTlteReltol;
|
||||
double CKTlteReltol;
|
||||
double CKTlteAbstol;
|
||||
#endif /* NEWTRUNC */
|
||||
double CKTgmin; /* Parallel Conductance --- */
|
||||
double CKTgshunt;
|
||||
double CKTdelmin; /* ??? */
|
||||
double CKTtrtol; /* ??? */
|
||||
double CKTfinalTime; /* ??? */
|
||||
double CKTstep; /* ??? */
|
||||
double CKTmaxStep; /* ??? */
|
||||
double CKTinitTime; /* ??? */
|
||||
double CKTomega; /* ??? */
|
||||
double CKTsrcFact; /* ??? */
|
||||
double CKTdiagGmin; /* ??? */
|
||||
int CKTnumSrcSteps; /* ??? */
|
||||
int CKTnumGminSteps; /* ??? */
|
||||
double CKTgminFactor;
|
||||
int CKTnoncon; /* ??? */
|
||||
double CKTdefaultMosM;
|
||||
double CKTdefaultMosL; /* Default Channel Lenght of MOS devices */
|
||||
double CKTdefaultMosW; /* Default Channel Width of MOS devics */
|
||||
double CKTdefaultMosAD; /* Default Drain Area of MOS */
|
||||
double CKTdefaultMosAS; /* Default Source Area of MOS */
|
||||
double CKTgmin; /* Parallel Conductance --- */
|
||||
double CKTgshunt;
|
||||
double CKTdelmin; /* ??? */
|
||||
double CKTtrtol; /* ??? */
|
||||
double CKTfinalTime; /* ??? */
|
||||
double CKTstep; /* ??? */
|
||||
double CKTmaxStep; /* ??? */
|
||||
double CKTinitTime; /* ??? */
|
||||
double CKTomega; /* ??? */
|
||||
double CKTsrcFact; /* ??? */
|
||||
double CKTdiagGmin; /* ??? */
|
||||
int CKTnumSrcSteps; /* ??? */
|
||||
int CKTnumGminSteps; /* ??? */
|
||||
double CKTgminFactor;
|
||||
int CKTnoncon; /* ??? */
|
||||
double CKTdefaultMosM;
|
||||
double CKTdefaultMosL; /* Default Channel Lenght of MOS devices */
|
||||
double CKTdefaultMosW; /* Default Channel Width of MOS devics */
|
||||
double CKTdefaultMosAD; /* Default Drain Area of MOS */
|
||||
double CKTdefaultMosAS; /* Default Source Area of MOS */
|
||||
unsigned int CKThadNodeset:1; /* ??? */
|
||||
unsigned int CKTfixLimit:1; /* flag to indicate that the limiting
|
||||
of MOSFETs should be done as in
|
||||
SPICE2 */
|
||||
unsigned int CKTnoOpIter:1; /* flag to indicate not to try the operating
|
||||
point brute force, but to use gmin stepping
|
||||
first */
|
||||
unsigned int CKTisSetup:1; /* flag to indicate if CKTsetup done */
|
||||
JOB *CKTcurJob; /* Next analysis to be performed ??? */
|
||||
unsigned int CKTfixLimit:1; /* flag to indicate that the limiting
|
||||
of MOSFETs should be done as in
|
||||
SPICE2 */
|
||||
unsigned int CKTnoOpIter:1; /* flag to indicate not to try the operating
|
||||
point brute force, but to use gmin stepping
|
||||
first */
|
||||
unsigned int CKTisSetup:1; /* flag to indicate if CKTsetup done */
|
||||
JOB *CKTcurJob; /* Next analysis to be performed ??? */
|
||||
|
||||
SENstruct *CKTsenInfo; /* the sensitivity information */
|
||||
double *CKTtimePoints; /* list of all accepted timepoints in
|
||||
the current transient simulation */
|
||||
double *CKTdeltaList; /* list of all timesteps in the
|
||||
current transient simulation */
|
||||
int CKTtimeListSize; /* size of above lists */
|
||||
int CKTtimeIndex; /* current position in above lists */
|
||||
int CKTsizeIncr; /* amount to increment size of above
|
||||
arrays when you run out of space */
|
||||
SENstruct *CKTsenInfo; /* the sensitivity information */
|
||||
double *CKTtimePoints; /* list of all accepted timepoints in
|
||||
the current transient simulation */
|
||||
double *CKTdeltaList; /* list of all timesteps in the
|
||||
current transient simulation */
|
||||
int CKTtimeListSize; /* size of above lists */
|
||||
int CKTtimeIndex; /* current position in above lists */
|
||||
int CKTsizeIncr; /* amount to increment size of above
|
||||
arrays when you run out of space */
|
||||
unsigned int CKTtryToCompact:1; /* try to compact past history for LTRA
|
||||
lines */
|
||||
unsigned int CKTbadMos3:1; /* Use old, unfixed MOS3 equations */
|
||||
lines */
|
||||
unsigned int CKTbadMos3:1; /* Use old, unfixed MOS3 equations */
|
||||
unsigned int CKTkeepOpInfo:1; /* flag for small signal analyses */
|
||||
unsigned int CKTcopyNodesets:1; /* NodesetFIX */
|
||||
unsigned int CKTnodeDamping:1; /* flag for node damping fix */
|
||||
double CKTabsDv; /* abs limit for iter-iter voltage change */
|
||||
double CKTrelDv; /* rel limit for iter-iter voltage change */
|
||||
int CKTtroubleNode; /* Non-convergent node number */
|
||||
GENinstance *CKTtroubleElt; /* Non-convergent device instance */
|
||||
double CKTabsDv; /* abs limit for iter-iter voltage change */
|
||||
double CKTrelDv; /* rel limit for iter-iter voltage change */
|
||||
int CKTtroubleNode; /* Non-convergent node number */
|
||||
GENinstance *CKTtroubleElt; /* Non-convergent device instance */
|
||||
int CKTvarHertz; /* variable HERTZ in B source */
|
||||
/* gtri - evt - wbk - 5/20/91 - add event-driven and enhancements data */
|
||||
#ifdef XSPICE
|
||||
|
|
@ -265,132 +265,135 @@ struct CKTcircuit {
|
|||
|
||||
};
|
||||
|
||||
|
||||
/* Now function prottypes */
|
||||
|
||||
extern int ACan( CKTcircuit *, int );
|
||||
extern int ACaskQuest( CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int ACsetParm( CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int CKTacDump( CKTcircuit *, double , void *);
|
||||
extern int CKTacLoad( CKTcircuit *);
|
||||
extern int CKTaccept( CKTcircuit *);
|
||||
extern int CKTacct( CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int CKTask( void *, void *, int , IFvalue *, IFvalue *);
|
||||
extern int CKTaskAnalQ( void *, void *, int , IFvalue *, IFvalue *);
|
||||
extern int CKTaskNodQst( void *, void *, int , IFvalue *, IFvalue *);
|
||||
extern int CKTbindNode( void *, void *, int , void *);
|
||||
extern void CKTbreakDump( CKTcircuit *);
|
||||
extern int CKTclrBreak( CKTcircuit *);
|
||||
extern int CKTconvTest( CKTcircuit *);
|
||||
extern int CKTcrtElt( void *, void *, void **, IFuid );
|
||||
extern int CKTdelTask( void *, void *);
|
||||
extern int CKTdestroy( void *);
|
||||
extern int CKTdltAnal( void *, void *, void *);
|
||||
extern int CKTdltInst( void *, void *);
|
||||
extern int CKTdltMod( void *, void *);
|
||||
extern int CKTdltNNum(void *, int );
|
||||
extern int CKTdltNod( void *, void *);
|
||||
extern int CKTdoJob( void *, int , void *);
|
||||
extern void CKTdump( CKTcircuit *, double, void *);
|
||||
extern int ACan(CKTcircuit *, int);
|
||||
extern int ACaskQuest(CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int ACsetParm(CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int CKTacDump(CKTcircuit *, double , void *);
|
||||
extern int CKTacLoad(CKTcircuit *);
|
||||
extern int CKTaccept(CKTcircuit *);
|
||||
extern int CKTacct(CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int CKTask(void *, void *, int , IFvalue *, IFvalue *);
|
||||
extern int CKTaskAnalQ(void *, void *, int , IFvalue *, IFvalue *);
|
||||
extern int CKTaskNodQst(void *, void *, int , IFvalue *, IFvalue *);
|
||||
extern int CKTbindNode(void *, void *, int , void *);
|
||||
extern void CKTbreakDump(CKTcircuit *);
|
||||
extern int CKTclrBreak(CKTcircuit *);
|
||||
extern int CKTconvTest(CKTcircuit *);
|
||||
extern int CKTcrtElt(void *, void *, void **, IFuid);
|
||||
extern int CKTdelTask(void *, void *);
|
||||
extern int CKTdestroy(void *);
|
||||
extern int CKTdltAnal(void *, void *, void *);
|
||||
extern int CKTdltInst(void *, void *);
|
||||
extern int CKTdltMod(void *, void *);
|
||||
extern int CKTdltNNum(void *, int);
|
||||
extern int CKTdltNod(void *, void *);
|
||||
extern int CKTdoJob(void *, int , void *);
|
||||
extern void CKTdump(CKTcircuit *, double, void *);
|
||||
#ifdef CIDER
|
||||
extern void NDEVacct(CKTcircuit *ckt, FILE *file);
|
||||
#endif /* CIDER */
|
||||
extern void CKTncDump(CKTcircuit *);
|
||||
extern int CKTfndAnal( void *, int *, void **, IFuid , void *, IFuid );
|
||||
extern int CKTfndBranch( CKTcircuit *, IFuid);
|
||||
extern int CKTfndDev( void *, int *, void **, IFuid , void *, IFuid );
|
||||
extern int CKTfndMod( void *, int *, void **, IFuid );
|
||||
extern int CKTfndNode( void *, void **, IFuid );
|
||||
extern int CKTfndTask( void *, void **, IFuid );
|
||||
extern int CKTground( void *, void **, IFuid );
|
||||
extern int CKTic( CKTcircuit *);
|
||||
extern int CKTinit( void **);
|
||||
extern int CKTinst2Node( void *, void *, int , CKTnode **, IFuid *);
|
||||
extern int CKTlinkEq(CKTcircuit*,CKTnode*);
|
||||
extern int CKTload( CKTcircuit *);
|
||||
extern int CKTmapNode( void *, void **, IFuid );
|
||||
extern int CKTmkCur( CKTcircuit *, CKTnode **, IFuid , char *);
|
||||
extern int CKTmkNode(CKTcircuit*,CKTnode**);
|
||||
extern int CKTmkVolt( CKTcircuit *, CKTnode **, IFuid , char *);
|
||||
extern int CKTmodAsk( void *, void *, int , IFvalue *, IFvalue *);
|
||||
extern int CKTmodCrt( void *, int , void **, IFuid );
|
||||
extern int CKTmodParam( void *, void *, int , IFvalue *, IFvalue *);
|
||||
extern int CKTfndAnal(void *, int *, void **, IFuid , void *, IFuid);
|
||||
extern int CKTfndBranch(CKTcircuit *, IFuid);
|
||||
extern int CKTfndDev(void *, int *, void **, IFuid , void *, IFuid);
|
||||
extern int CKTfndMod(void *, int *, void **, IFuid);
|
||||
extern int CKTfndNode(void *, void **, IFuid);
|
||||
extern int CKTfndTask(void *, void **, IFuid );
|
||||
extern int CKTground(void *, void **, IFuid);
|
||||
extern int CKTic(CKTcircuit *);
|
||||
extern int CKTinit(void **);
|
||||
extern int CKTinst2Node(void *, void *, int , CKTnode **, IFuid *);
|
||||
extern int CKTlinkEq(CKTcircuit *, CKTnode *);
|
||||
extern int CKTload(CKTcircuit *);
|
||||
extern int CKTmapNode(void *, void **, IFuid);
|
||||
extern int CKTmkCur(CKTcircuit *, CKTnode **, IFuid , char *);
|
||||
extern int CKTmkNode(CKTcircuit *, CKTnode **);
|
||||
extern int CKTmkVolt(CKTcircuit *, CKTnode **, IFuid , char *);
|
||||
extern int CKTmodAsk(void *, void *, int , IFvalue *, IFvalue *);
|
||||
extern int CKTmodCrt(void *, int , void **, IFuid);
|
||||
extern int CKTmodParam(void *, void *, int , IFvalue *, IFvalue *);
|
||||
extern int CKTnames(CKTcircuit *, int *, IFuid **);
|
||||
extern int CKTnewAnal( void *, int , IFuid , void **, void *);
|
||||
extern int CKTnewEq( void *, void **, IFuid );
|
||||
extern int CKTnewNode( void *, void **, IFuid );
|
||||
extern int CKTnewTask( void *, void **, IFuid, void ** );
|
||||
extern int CKTnewAnal(void *, int , IFuid , void **, void *);
|
||||
extern int CKTnewEq(void *, void **, IFuid);
|
||||
extern int CKTnewNode(void *, void **, IFuid);
|
||||
extern int CKTnewTask(void *, void **, IFuid, void **);
|
||||
extern int CKTnoise (CKTcircuit *ckt, int mode, int operation, Ndata *data);
|
||||
extern IFuid CKTnodName( CKTcircuit *, int );
|
||||
extern void CKTnodOut( CKTcircuit *);
|
||||
extern CKTnode * CKTnum2nod( CKTcircuit *, int );
|
||||
extern int CKTop(CKTcircuit *, long, long, int );
|
||||
extern int CKTpModName( char *, IFvalue *, CKTcircuit *, int , IFuid , GENmodel **);
|
||||
extern int CKTpName( char *, IFvalue *, CKTcircuit *, int , char *, GENinstance **);
|
||||
extern int CKTparam( void *, void *, int , IFvalue *, IFvalue *);
|
||||
extern IFuid CKTnodName(CKTcircuit *, int);
|
||||
extern void CKTnodOut(CKTcircuit *);
|
||||
extern CKTnode * CKTnum2nod(CKTcircuit *, int);
|
||||
extern int CKTop(CKTcircuit *, long, long, int);
|
||||
extern int CKTpModName(char *, IFvalue *, CKTcircuit *, int , IFuid , GENmodel **);
|
||||
extern int CKTpName(char *, IFvalue *, CKTcircuit *, int , char *, GENinstance **);
|
||||
extern int CKTparam(void *, void *, int , IFvalue *, IFvalue *);
|
||||
extern int CKTpartition(register CKTcircuit *ckt);
|
||||
extern int CKTpzFindZeros( CKTcircuit *, PZtrial **, int * );
|
||||
extern int CKTpzLoad( CKTcircuit *, SPcomplex * );
|
||||
extern int CKTpzSetup( CKTcircuit *, int);
|
||||
extern int CKTsenAC( CKTcircuit *);
|
||||
extern int CKTsenComp( CKTcircuit *);
|
||||
extern int CKTsenDCtran( CKTcircuit *);
|
||||
extern int CKTsenLoad( CKTcircuit *);
|
||||
extern void CKTsenPrint( CKTcircuit *);
|
||||
extern int CKTsenSetup( CKTcircuit *);
|
||||
extern int CKTsenUpdate( CKTcircuit *);
|
||||
extern int CKTsetAnalPm( void *, void *, int , IFvalue *, IFvalue *);
|
||||
extern int CKTsetBreak( CKTcircuit *, double );
|
||||
extern int CKTsetNodPm( void *, void *, int , IFvalue *, IFvalue *);
|
||||
extern int CKTsetOpt( CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int CKTsetup( CKTcircuit *);
|
||||
extern int CKTunsetup(CKTcircuit *);
|
||||
extern int CKTtemp( CKTcircuit *);
|
||||
extern int CKTpzFindZeros(CKTcircuit *, PZtrial **, int *);
|
||||
extern int CKTpzLoad(CKTcircuit *, SPcomplex *);
|
||||
extern int CKTpzSetup(CKTcircuit *, int);
|
||||
extern int CKTsenAC(CKTcircuit *);
|
||||
extern int CKTsenComp(CKTcircuit *);
|
||||
extern int CKTsenDCtran(CKTcircuit *);
|
||||
extern int CKTsenLoad(CKTcircuit *);
|
||||
extern void CKTsenPrint(CKTcircuit *);
|
||||
extern int CKTsenSetup(CKTcircuit *);
|
||||
extern int CKTsenUpdate(CKTcircuit *);
|
||||
extern int CKTsetAnalPm(void *, void *, int , IFvalue *, IFvalue *);
|
||||
extern int CKTsetBreak(CKTcircuit *, double);
|
||||
extern int CKTsetNodPm(void *, void *, int , IFvalue *, IFvalue *);
|
||||
extern int CKTsetOpt(CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int CKTsetup(CKTcircuit *);
|
||||
extern int CKTunsetup(CKTcircuit *);
|
||||
extern int CKTtemp(CKTcircuit *);
|
||||
extern char *CKTtrouble(void *, char *);
|
||||
extern void CKTterr( int , CKTcircuit *, double *);
|
||||
extern int CKTtrunc( CKTcircuit *, double *);
|
||||
extern int CKTtypelook( char *);
|
||||
extern int DCOaskQuest( CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int DCOsetParm( CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int DCTaskQuest( CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int DCTsetParm( CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int DCop( CKTcircuit *ckt, int notused); /* va: notused avoids "init from incompatible pointer type" */
|
||||
extern int DCtrCurv( CKTcircuit *, int );
|
||||
extern int DCtran( CKTcircuit *, int );
|
||||
extern void CKTterr(int , CKTcircuit *, double *);
|
||||
extern int CKTtrunc(CKTcircuit *, double *);
|
||||
extern int CKTtypelook(char *);
|
||||
extern int DCOaskQuest(CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int DCOsetParm(CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int DCTaskQuest(CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int DCTsetParm(CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int DCop(CKTcircuit *ckt, int notused); /* va: notused avoids "init from incompatible pointer type" */
|
||||
extern int DCtrCurv(CKTcircuit *, int);
|
||||
extern int DCtran(CKTcircuit *, int);
|
||||
extern int DISTOan(CKTcircuit *, int);
|
||||
extern int NOISEan(CKTcircuit *, int);
|
||||
extern int PZan( CKTcircuit *, int );
|
||||
extern int PZinit( CKTcircuit * );
|
||||
extern int PZpost( CKTcircuit * );
|
||||
extern int PZaskQuest( CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int PZsetParm( CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int SENaskQuest( CKTcircuit *, void *, int , IFvalue *);
|
||||
extern void SENdestroy( SENstruct *);
|
||||
extern int SENsetParm( CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int SENstartup( CKTcircuit *);
|
||||
extern int SPIinit( IFfrontEnd *, IFsimulator **);
|
||||
extern int TFanal( CKTcircuit *, int );
|
||||
extern int TFaskQuest( CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int TFsetParm( CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int TRANaskQuest( CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int TRANsetParm( CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int PZan(CKTcircuit *, int);
|
||||
extern int PZinit(CKTcircuit *);
|
||||
extern int PZpost(CKTcircuit *);
|
||||
extern int PZaskQuest(CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int PZsetParm(CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int SENaskQuest(CKTcircuit *, void *, int , IFvalue *);
|
||||
extern void SENdestroy(SENstruct *);
|
||||
extern int SENsetParm(CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int SENstartup(CKTcircuit *);
|
||||
extern int SPIinit(IFfrontEnd *, IFsimulator **);
|
||||
extern int TFanal(CKTcircuit *, int);
|
||||
extern int TFaskQuest(CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int TFsetParm(CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int TRANaskQuest(CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int TRANsetParm(CKTcircuit *, void *, int , IFvalue *);
|
||||
extern int TRANinit(CKTcircuit *, JOB *);
|
||||
extern int NaskQuest(CKTcircuit *, void *, int, IFvalue *);
|
||||
extern int NsetParm(CKTcircuit *, void *, int, IFvalue *);
|
||||
extern int NIacIter( CKTcircuit * );
|
||||
extern int NIcomCof( CKTcircuit * );
|
||||
extern int NIconvTest(CKTcircuit * );
|
||||
extern void NIdestroy(CKTcircuit * );
|
||||
extern int NIinit( CKTcircuit * );
|
||||
extern int NIintegrate( CKTcircuit *, double *, double *, double , int );
|
||||
extern int NIiter( CKTcircuit * , int );
|
||||
extern int NIacIter(CKTcircuit *);
|
||||
extern int NIcomCof(CKTcircuit *);
|
||||
extern int NIconvTest(CKTcircuit *);
|
||||
extern void NIdestroy(CKTcircuit *);
|
||||
extern int NIinit(CKTcircuit *);
|
||||
extern int NIintegrate(CKTcircuit *, double *, double *, double , int);
|
||||
extern int NIiter(CKTcircuit * , int);
|
||||
extern int NIpzMuller(PZtrial **, PZtrial *);
|
||||
extern int NIpzComplex(PZtrial **, PZtrial *);
|
||||
extern int NIpzSym(PZtrial **, PZtrial *);
|
||||
extern int NIpzSym2(PZtrial **, PZtrial *);
|
||||
extern int NIreinit( CKTcircuit *);
|
||||
extern int NIsenReinit( CKTcircuit *);
|
||||
extern int NIreinit(CKTcircuit *);
|
||||
extern int NIsenReinit(CKTcircuit *);
|
||||
extern int NIdIter (CKTcircuit *);
|
||||
extern void NInzIter(CKTcircuit*, int, int );
|
||||
extern void NInzIter(CKTcircuit *, int, int);
|
||||
|
||||
|
||||
extern IFfrontEnd *SPfrontEnd;
|
||||
|
||||
#endif /*CKT*/
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@ typedef struct GENmodel GENmodel;
|
|||
|
||||
struct GENinstance {
|
||||
GENmodel *GENmodPtr; /* backpointer to model */
|
||||
GENinstance *GENnextInstance; /* pointer to next instance of
|
||||
* current model*/
|
||||
GENinstance *GENnextInstance; /* pointer to next instance of
|
||||
* current model*/
|
||||
IFuid GENname; /* pointer to character string naming this instance */
|
||||
int GENowner; /* number of owner process */
|
||||
int GENstate; /* state index number */
|
||||
|
|
@ -37,15 +37,16 @@ struct GENinstance {
|
|||
|
||||
typedef void GENcircuit;
|
||||
|
||||
|
||||
/* per model data */
|
||||
|
||||
struct GENmodel { /* model structure for a resistor */
|
||||
int GENmodType; /* type index of this device type */
|
||||
GENmodel *GENnextModel; /* pointer to next possible model in
|
||||
* linked list */
|
||||
GENinstance * GENinstances; /* pointer to list of instances that have this
|
||||
int GENmodType; /* type index of this device type */
|
||||
GENmodel *GENnextModel; /* pointer to next possible model in
|
||||
* linked list */
|
||||
GENinstance *GENinstances; /* pointer to list of instances that have this
|
||||
* model */
|
||||
IFuid GENmodName; /* pointer to character string naming this model */
|
||||
IFuid GENmodName; /* pointer to character string naming this model */
|
||||
};
|
||||
|
||||
#endif /*GEN*/
|
||||
|
|
|
|||
|
|
@ -27,8 +27,8 @@ struct graph {
|
|||
struct dveclist *plotdata; /* normalized data */
|
||||
char *plotname; /* name of plot this graph is in */
|
||||
int onevalue; /* boolean variable,
|
||||
true if plotting one value
|
||||
against itself (real vs imaginary) */
|
||||
true if plotting one value
|
||||
against itself (real vs imaginary) */
|
||||
int degree; /* degree of polynomial interpretation */
|
||||
|
||||
int currentcolor;
|
||||
|
|
@ -73,26 +73,26 @@ struct graph {
|
|||
int circular; /* TRUE if circular plot area */
|
||||
union {
|
||||
struct {
|
||||
char units[16]; /* unit labels */
|
||||
int spacing, numspace;
|
||||
double distance, lowlimit, highlimit;
|
||||
int mult;
|
||||
int onedec; /* a boolean */
|
||||
int hacked; /* true if hi - lo already hacked up */
|
||||
double tenpowmag;
|
||||
double tenpowmagx;
|
||||
int digits;
|
||||
char units[16]; /* unit labels */
|
||||
int spacing, numspace;
|
||||
double distance, lowlimit, highlimit;
|
||||
int mult;
|
||||
int onedec; /* a boolean */
|
||||
int hacked; /* true if hi - lo already hacked up */
|
||||
double tenpowmag;
|
||||
double tenpowmagx;
|
||||
int digits;
|
||||
} lin;
|
||||
struct {
|
||||
char units[16]; /* unit labels */
|
||||
int hmt, lmt, decsp, subs, pp;
|
||||
char units[16]; /* unit labels */
|
||||
int hmt, lmt, decsp, subs, pp;
|
||||
} log;
|
||||
struct {
|
||||
char units[16]; /* unit labels */
|
||||
int radius, center;
|
||||
double mrad;
|
||||
int lmt;
|
||||
int hmt, mag; /* added, p.w.h. */
|
||||
char units[16]; /* unit labels */
|
||||
int radius, center;
|
||||
double mrad;
|
||||
int lmt;
|
||||
int hmt, mag; /* added, p.w.h. */
|
||||
} circular; /* bogus, rework when write polar grids, etc */
|
||||
} xaxis, yaxis;
|
||||
int xdatatype, ydatatype;
|
||||
|
|
@ -117,7 +117,7 @@ struct graph {
|
|||
int messageyoff;
|
||||
|
||||
/* characters the user typed on graph */
|
||||
/* note: think up better names */
|
||||
/* note: think up better names */
|
||||
struct _keyed *keyed;
|
||||
|
||||
/* for zoomin */
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ typedef struct IFsimulator IFsimulator;
|
|||
typedef struct IFfrontEnd IFfrontEnd;
|
||||
|
||||
|
||||
/*
|
||||
/*
|
||||
* structure: IFparm
|
||||
*
|
||||
*
|
||||
|
|
@ -55,8 +55,8 @@ struct IFparm {
|
|||
char *description;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* datatype: IFuid
|
||||
*
|
||||
* unique identifier for all name-type data in the simulator.
|
||||
|
|
@ -68,7 +68,8 @@ struct IFparm {
|
|||
|
||||
typedef char *IFuid;
|
||||
|
||||
/*
|
||||
|
||||
/*
|
||||
*
|
||||
* types for IFnewUid
|
||||
*
|
||||
|
|
@ -82,12 +83,12 @@ typedef char *IFuid;
|
|||
#define UID_OTHER 0x20
|
||||
|
||||
|
||||
/*
|
||||
/*
|
||||
* dataType values:
|
||||
*
|
||||
* Note: These structures are put together by ORing together the
|
||||
* appropriate bits from the fields below as is shown for the vector
|
||||
* types.
|
||||
* types.
|
||||
* IF_REQUIRED indicates that the parameter must be specified.
|
||||
* The front end does not NEED to check for this, but can to save time,
|
||||
* since failure to do so will cause the simulator to fail.
|
||||
|
|
@ -133,24 +134,25 @@ typedef char *IFuid;
|
|||
#define IF_ASK 0x1000
|
||||
|
||||
/* If you AND with IF_UNIMP_MASK and get 0, it is recognized, but not
|
||||
* implemented
|
||||
* implemented
|
||||
*/
|
||||
#define IF_UNIMP_MASK (~0xfff)
|
||||
|
||||
/* Used by sensetivity to check if a parameter is or is not useful */
|
||||
#define IF_REDUNDANT 0x0010000
|
||||
#define IF_PRINCIPAL 0x0020000
|
||||
#define IF_AC 0x0040000
|
||||
#define IF_AC_ONLY 0x0080000
|
||||
#define IF_NOISE 0x0100000
|
||||
#define IF_NONSENSE 0x0200000
|
||||
#define IF_REDUNDANT 0x0010000
|
||||
#define IF_PRINCIPAL 0x0020000
|
||||
#define IF_AC 0x0040000
|
||||
#define IF_AC_ONLY 0x0080000
|
||||
#define IF_NOISE 0x0100000
|
||||
#define IF_NONSENSE 0x0200000
|
||||
|
||||
#define IF_SETQUERY 0x0400000
|
||||
#define IF_ORQUERY 0x0800000
|
||||
#define IF_CHKQUERY 0x1000000
|
||||
#define IF_SETQUERY 0x0400000
|
||||
#define IF_ORQUERY 0x0800000
|
||||
#define IF_CHKQUERY 0x1000000
|
||||
|
||||
/* For "show" command: do not print value in a table by default */
|
||||
#define IF_UNINTERESTING 0x2000000
|
||||
#define IF_UNINTERESTING 0x2000000
|
||||
|
||||
|
||||
/* Structure: IFparseTree
|
||||
*
|
||||
|
|
@ -160,7 +162,7 @@ typedef char *IFuid;
|
|||
* It is expected that the front end will have a more extensive
|
||||
* structure which this structure will be a prefix of.
|
||||
*
|
||||
* Note that the function pointer is provided as a hook for
|
||||
* Note that the function pointer is provided as a hook for
|
||||
* versions which may want to compile code for the parse trees
|
||||
* if they are used heavily.
|
||||
*
|
||||
|
|
@ -169,11 +171,11 @@ typedef char *IFuid;
|
|||
struct IFparseTree {
|
||||
int numVars; /* number of variables used */
|
||||
int *varTypes; /* array of types of variables */
|
||||
IFvalue * vars; /* array of structures describing values */
|
||||
IFvalue *vars; /* array of structures describing values */
|
||||
#ifdef __STDC__
|
||||
int ((*IFeval)(IFparseTree*,double,double*,double*,double*));
|
||||
int (*IFeval) (IFparseTree *, double, double *, double *, double *);
|
||||
#else
|
||||
int ((*IFeval)()); /* function to call to get evaluated */
|
||||
int (*IFeval) (); /* function to call to get evaluated */
|
||||
#endif /* STDC */
|
||||
};
|
||||
|
||||
|
|
@ -190,8 +192,8 @@ struct IFparseTree {
|
|||
* should arrange to free it when appropriate.
|
||||
*
|
||||
* The responsibilities of the data supplier are:
|
||||
* Any vectors referenced by the structure are to be tmalloc()'d
|
||||
* and are assumed to have been turned over to the recipient and
|
||||
* Any vectors referenced by the structure are to be tmalloc()'d
|
||||
* and are assumed to have been turned over to the recipient and
|
||||
* thus should not be re-used or tfree()'d.
|
||||
*
|
||||
* The responsibilities of the data recipient are:
|
||||
|
|
@ -200,7 +202,7 @@ struct IFparseTree {
|
|||
* and must be tfree()'d when no longer needed.
|
||||
*
|
||||
* Character strings are a special case: Since it is assumed
|
||||
* that all character strings are directly descended from input
|
||||
* that all character strings are directly descended from input
|
||||
* tokens, it is assumed that they are static, thus nobody
|
||||
* frees them until the circuit is deleted, when the front end
|
||||
* may do so.
|
||||
|
|
@ -215,18 +217,19 @@ struct IFparseTree {
|
|||
/*
|
||||
* Some preliminary definitions:
|
||||
*
|
||||
* IFnode's are returned by the simulator, thus we don't really
|
||||
* IFnode's are returned by the simulator, thus we don't really
|
||||
* know what they look like, just that we get to carry pointers
|
||||
* to them around all the time, and will need to save them occasionally
|
||||
*
|
||||
*/
|
||||
|
||||
typedef void *IFnode;
|
||||
|
||||
typedef void * IFnode;
|
||||
|
||||
/*
|
||||
* and of course, the standard complex data type
|
||||
* and of course, the standard complex data type
|
||||
*/
|
||||
|
||||
struct IFcomplex {
|
||||
double real;
|
||||
double imag;
|
||||
|
|
@ -250,8 +253,8 @@ union IFvalue {
|
|||
char **sVec; /* pointer to string vector */
|
||||
IFuid *uVec; /* pointer to UID vector */
|
||||
IFnode *nVec; /* pointer to node vector */
|
||||
}vec;
|
||||
}v;
|
||||
} vec;
|
||||
} v;
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -289,10 +292,10 @@ struct IFdevice {
|
|||
/* gtri - modify - wbk - 10/11/90 - add entries to hold data required */
|
||||
/* by new parser */
|
||||
#ifdef XSPICE
|
||||
void ((*cm_func)(Mif_Private_t *)); /* pointer to code model function */
|
||||
void (*cm_func) (Mif_Private_t *); /* pointer to code model function */
|
||||
|
||||
int num_conn; /* number of code model connections */
|
||||
Mif_Conn_Info_t *conn; /* array of connection info for mif parser */
|
||||
Mif_Conn_Info_t *conn; /* array of connection info for mif parser */
|
||||
|
||||
int num_param; /* number of parameters = numModelParms */
|
||||
Mif_Param_Info_t *param; /* array of parameter info for mif parser */
|
||||
|
|
@ -301,8 +304,8 @@ struct IFdevice {
|
|||
Mif_Inst_Var_Info_t *inst_var; /* array of instance var info for mif parser */
|
||||
/* gtri - end - wbk - 10/11/90 */
|
||||
#endif
|
||||
int flags; /* DEV_ */
|
||||
|
||||
int flags; /* DEV_ */
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -311,7 +314,7 @@ struct IFdevice {
|
|||
*
|
||||
* This structure contains all the information available to the
|
||||
* front end about a particular analysis type. The simulator will
|
||||
* present the front end with an array of pointers to these structures
|
||||
* present the front end with an array of pointers to these structures
|
||||
* which it will use to determine legal analysis types and parameters.
|
||||
*
|
||||
* Note to simulators: As for IFdevice above, you pass an array of pointers
|
||||
|
|
@ -326,7 +329,6 @@ struct IFanalysis {
|
|||
|
||||
int numParms; /* number of analysis parameter descriptors */
|
||||
IFparm *analysisParms; /* array of analysis parameter descriptors */
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -346,67 +348,67 @@ struct IFsimulator {
|
|||
char *description; /* description of this simulator */
|
||||
char *version; /* version or revision level of simulator*/
|
||||
|
||||
int ((*newCircuit)(void **));
|
||||
int (*newCircuit) (void **);
|
||||
/* create new circuit */
|
||||
int ((*deleteCircuit)(void *));
|
||||
int (*deleteCircuit) (void *);
|
||||
/* destroy old circuit's data structures*/
|
||||
|
||||
int ((*newNode)(void *,void**,IFuid));
|
||||
int (*newNode) (void *, void **, IFuid);
|
||||
/* create new node */
|
||||
int ((*groundNode)(void*,void**,IFuid));
|
||||
int (*groundNode) (void *, void **, IFuid);
|
||||
/* create ground node */
|
||||
int ((*bindNode)(void *,void*,int,void*));
|
||||
int (*bindNode) (void *, void *, int, void *);
|
||||
/* bind a node to a terminal */
|
||||
int ((*findNode)(void *,void**,IFuid));
|
||||
int (*findNode) (void *, void **, IFuid);
|
||||
/* find a node by name */
|
||||
int ((*instToNode)(void *,void *,int,void **,IFuid *));
|
||||
int (*instToNode) (void *, void *, int, void **, IFuid *);
|
||||
/* find the node attached to a terminal */
|
||||
int ((*setNodeParm)(void*,void*,int,IFvalue*,IFvalue*));
|
||||
int (*setNodeParm) (void *, void *, int, IFvalue *, IFvalue *);
|
||||
/* set a parameter on a node */
|
||||
int ((*askNodeQuest)(void*,void*,int,IFvalue*,IFvalue*));
|
||||
int (*askNodeQuest) (void *, void *, int, IFvalue *, IFvalue *);
|
||||
/* ask a question about a node */
|
||||
int ((*deleteNode)(void*,void*));
|
||||
int (*deleteNode) (void *, void *);
|
||||
/* delete a node from the circuit */
|
||||
|
||||
int ((*newInstance)(void*,void*,void**,IFuid));
|
||||
int (*newInstance) (void *, void *, void **, IFuid);
|
||||
/* create new instance */
|
||||
int ((*setInstanceParm)(void*,void*,int,IFvalue*,IFvalue*));
|
||||
int (*setInstanceParm) (void *, void *, int, IFvalue *, IFvalue *);
|
||||
/* set a parameter on an instance */
|
||||
int ((*askInstanceQuest)(void*,void*,int,IFvalue*,IFvalue*));
|
||||
int (*askInstanceQuest) (void *, void *, int, IFvalue *, IFvalue *);
|
||||
/* ask a question about an instance */
|
||||
int ((*findInstance)(void*,int*,void**,IFuid,void*,IFuid));
|
||||
int (*findInstance) (void *, int *, void **, IFuid, void *, IFuid);
|
||||
/* find a specific instance */
|
||||
int ((*deleteInstance)(void*,void*));
|
||||
int (*deleteInstance) (void *, void *);
|
||||
/* delete an instance from the circuit */
|
||||
|
||||
int ((*newModel)(void*,int,void**,IFuid));
|
||||
int (*newModel) (void *, int, void **, IFuid);
|
||||
/* create new model */
|
||||
int ((*setModelParm)(void*,void*,int,IFvalue*,IFvalue*));
|
||||
int (*setModelParm) (void *, void *, int, IFvalue *, IFvalue *);
|
||||
/* set a parameter on a model */
|
||||
int ((*askModelQuest)(void*,void*,int,IFvalue*,IFvalue*));
|
||||
int (*askModelQuest) (void *, void *, int, IFvalue *, IFvalue *);
|
||||
/* ask a questions about a model */
|
||||
int ((*findModel)(void*,int*,void**,IFuid));
|
||||
int (*findModel) (void *, int *, void **, IFuid);
|
||||
/* find a specific model */
|
||||
int ((*deleteModel)(void*,void*));
|
||||
int (*deleteModel) (void *, void *);
|
||||
/* delete a model from the circuit*/
|
||||
|
||||
int ((*newTask)(void*,void**,IFuid, void**)); /*CDHW*/
|
||||
int (*newTask) (void *, void **, IFuid, void **); /*CDHW*/
|
||||
/* create a new task */
|
||||
int ((*newAnalysis)(void*,int,IFuid,void**,void*));
|
||||
int (*newAnalysis) (void *, int, IFuid, void **, void *);
|
||||
/* create new analysis within a task */
|
||||
int ((*setAnalysisParm)(void*,void*,int,IFvalue*,IFvalue*));
|
||||
int (*setAnalysisParm) (void *, void *, int, IFvalue *, IFvalue *);
|
||||
/* set a parameter on an analysis */
|
||||
int ((*askAnalysisQuest)(void*,void*,int,IFvalue*,IFvalue*));
|
||||
int (*askAnalysisQuest) (void *, void *, int, IFvalue *, IFvalue *);
|
||||
/* ask a question about an analysis */
|
||||
int ((*findAnalysis)(void*,int*,void**,IFuid,void*,IFuid));
|
||||
int (*findAnalysis) (void *, int *, void **, IFuid, void *, IFuid);
|
||||
/* find a specific analysis */
|
||||
int ((*findTask)(void*,void**,IFuid));
|
||||
int (*findTask) (void *, void **, IFuid);
|
||||
/* find a specific task */
|
||||
int ((*deleteTask)(void*,void*));
|
||||
int (*deleteTask) (void *, void *);
|
||||
/* delete a task */
|
||||
|
||||
int ((*doAnalyses)(void*,int,void*));
|
||||
char *((*nonconvErr)(void*,char *)); /* return nonconvergence error */
|
||||
int (*doAnalyses) (void *, int, void *);
|
||||
char *(*nonconvErr) (void *, char *); /* return nonconvergence error */
|
||||
|
||||
int numDevices; /* number of device types supported */
|
||||
IFdevice **devices; /* array of device type descriptors */
|
||||
|
|
@ -419,9 +421,9 @@ struct IFsimulator {
|
|||
|
||||
int numSpecSigs; /* number of special signals legal in parse trees */
|
||||
char **specSigs; /* names of special signals legal in parse trees */
|
||||
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Structure: IFfrontEnd
|
||||
*
|
||||
|
|
@ -433,40 +435,41 @@ struct IFsimulator {
|
|||
*/
|
||||
|
||||
struct IFfrontEnd {
|
||||
int ((*IFnewUid)(void*,IFuid*,IFuid,char*,int,void**));
|
||||
int (*IFnewUid) (void *, IFuid *, IFuid, char *, int, void **);
|
||||
/* create a new UID in the circuit */
|
||||
int ((*IFdelUid)(void*,IFuid,int));
|
||||
/* create a new UID in the circuit */
|
||||
int ((*IFpauseTest)(void));
|
||||
int (*IFdelUid) (void *, IFuid, int);
|
||||
/* create a new UID in the circuit */
|
||||
int (*IFpauseTest) (void);
|
||||
/* should we stop now? */
|
||||
double ((*IFseconds)(void));
|
||||
double (*IFseconds) (void);
|
||||
/* what time is it? */
|
||||
int ((*IFerror)(int,char*,IFuid*));
|
||||
int (*IFerror) (int, char *, IFuid *);
|
||||
/* output an error or warning message */
|
||||
int ((*OUTpBeginPlot)(void*,void*,IFuid,IFuid,int,
|
||||
int,IFuid*,int,void**));
|
||||
int (*OUTpBeginPlot) (void *, void *, IFuid, IFuid, int,
|
||||
int, IFuid *, int, void **);
|
||||
/* start pointwise output plot */
|
||||
int ((*OUTpData)(void*,IFvalue*,IFvalue*));
|
||||
int (*OUTpData) (void *, IFvalue *, IFvalue *);
|
||||
/* data for pointwise plot */
|
||||
int ((*OUTwBeginPlot)(void*,void*,IFuid,IFuid,int,
|
||||
int,IFuid*,int,void**));
|
||||
int (*OUTwBeginPlot) (void *, void *, IFuid, IFuid, int,
|
||||
int, IFuid *, int, void **);
|
||||
/* start windowed output plot */
|
||||
int ((*OUTwReference)(void*,IFvalue*,void**));
|
||||
int (*OUTwReference) (void *, IFvalue *, void **);
|
||||
/* independent vector for windowed plot */
|
||||
int ((*OUTwData)(void*,int,IFvalue*,void*));
|
||||
int (*OUTwData) (void *, int, IFvalue *, void *);
|
||||
/* data for windowed plot */
|
||||
int ((*OUTwEnd)(void*));
|
||||
int (*OUTwEnd) (void *);
|
||||
/* signal end of windows */
|
||||
int ((*OUTendPlot)(void*));
|
||||
int (*OUTendPlot) (void *);
|
||||
/* end of plot */
|
||||
int ((*OUTbeginDomain)(void*,IFuid,int,IFvalue*));
|
||||
int (*OUTbeginDomain) (void *, IFuid, int, IFvalue *);
|
||||
/* start nested domain */
|
||||
int ((*OUTendDomain)(void*));
|
||||
int (*OUTendDomain) (void *);
|
||||
/* end nested domain */
|
||||
int ((*OUTattributes)(void *,IFuid,int,IFvalue*));
|
||||
int (*OUTattributes) (void *, IFuid, int, IFvalue *);
|
||||
/* specify output attributes of node */
|
||||
};
|
||||
|
||||
|
||||
/* flags for the first argument to IFerror */
|
||||
#define ERR_WARNING 0x1
|
||||
#define ERR_FATAL 0x2
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ struct INPtab {
|
|||
|
||||
struct INPnTab {
|
||||
char *t_ent;
|
||||
void* t_node;
|
||||
void *t_node;
|
||||
struct INPnTab *t_next;
|
||||
};
|
||||
|
||||
|
|
@ -63,7 +63,7 @@ struct INPtables{
|
|||
|
||||
struct card{
|
||||
int linenum;
|
||||
int linenum_orig;
|
||||
int linenum_orig;
|
||||
char *line;
|
||||
char *error;
|
||||
card *nextcard;
|
||||
|
|
@ -86,65 +86,66 @@ struct INPmodel{
|
|||
#define LOGICAL 1
|
||||
#define PHYSICAL 2
|
||||
|
||||
int IFnewUid(void*,IFuid*,IFuid,char*,int,void**);
|
||||
int IFdelUid(void*,IFuid,int);
|
||||
int INPaName(char*,IFvalue*,void*,int*,char*,void**,IFsimulator*,int*,
|
||||
IFvalue*);
|
||||
int INPapName(void*,int,void*,char*,IFvalue*);
|
||||
void INPcaseFix(char*);
|
||||
char * INPdevParse(char**,void*,int,void*,double*,int*,INPtables*);
|
||||
char *INPdomodel(void *,card*, INPtables*);
|
||||
void INPdoOpts(void*,void*,card*,INPtables*);
|
||||
int IFnewUid(void *, IFuid *, IFuid, char *, int, void **);
|
||||
int IFdelUid(void *, IFuid, int);
|
||||
int INPaName(char *, IFvalue *, void *, int *, char *, void **, IFsimulator *, int *,
|
||||
IFvalue *);
|
||||
int INPapName(void *, int, void *, char *, IFvalue *);
|
||||
void INPcaseFix(char *);
|
||||
char *INPdevParse(char **, void *, int, void *, double *, int *, INPtables *);
|
||||
char *INPdomodel(void *, card *, INPtables *);
|
||||
void INPdoOpts(void *, void *, card *, INPtables *);
|
||||
char *INPerrCat(char *, char *);
|
||||
char *INPerror(int);
|
||||
double INPevaluate(char**,int*,int);
|
||||
char * INPfindLev(char*,int*);
|
||||
char * INPgetMod(void*,char*,INPmodel**,INPtables*);
|
||||
char * INPgetModBin(void*,char*,INPmodel**,INPtables*,char*);
|
||||
int INPgetTok(char**,char**,int);
|
||||
int INPgetNetTok(char**,char**,int);
|
||||
void INPgetTree(char**,INPparseTree**,void*,INPtables*);
|
||||
IFvalue * INPgetValue(void*,char**,int,INPtables*);
|
||||
int INPgndInsert(void*,char**,INPtables*,void**);
|
||||
double INPevaluate(char **, int *, int);
|
||||
char *INPfindLev(char *, int *);
|
||||
char *INPgetMod(void *, char *, INPmodel **, INPtables *);
|
||||
char *INPgetModBin(void *, char *, INPmodel **, INPtables *, char *);
|
||||
int INPgetTok(char **, char **, int);
|
||||
int INPgetNetTok(char **, char **, int);
|
||||
void INPgetTree(char **, INPparseTree **, void *, INPtables *);
|
||||
IFvalue *INPgetValue(void *, char **, int, INPtables *);
|
||||
int INPgndInsert(void *, char **, INPtables *, void **);
|
||||
int INPinsertNofree(char **token, INPtables *tab);
|
||||
int INPinsert(char**,INPtables*);
|
||||
int INPretrieve(char**,INPtables*);
|
||||
int INPremove(char*,INPtables*);
|
||||
int INPlookMod(char*);
|
||||
int INPmakeMod(char*,int,card*);
|
||||
char *INPmkTemp(char*);
|
||||
void INPpas1(void*,card*,INPtables*);
|
||||
void INPpas2(void*,card*,INPtables*,void *);
|
||||
void INPpas3(void*,card*,INPtables*,void *,IFparm*,int);
|
||||
int INPpName(char*,IFvalue*,void*,int,void*);
|
||||
int INPtermInsert(void*,char**,INPtables*,void**);
|
||||
int INPmkTerm(void*,char**,INPtables*,void**);
|
||||
int INPtypelook(char*);
|
||||
void INP2B(void*,INPtables*,card*);
|
||||
void INP2C(void*,INPtables*,card*);
|
||||
void INP2D(void*,INPtables*,card*);
|
||||
void INP2E(void*,INPtables*,card*);
|
||||
void INP2F(void*,INPtables*,card*);
|
||||
void INP2G(void*,INPtables*,card*);
|
||||
void INP2H(void*,INPtables*,card*);
|
||||
void INP2I(void*,INPtables*,card*);
|
||||
void INP2J(void*,INPtables*,card*);
|
||||
void INP2K(void*,INPtables*,card*);
|
||||
void INP2L(void*,INPtables*,card*);
|
||||
void INP2M(void*,INPtables*,card*);
|
||||
void INP2O(void*,INPtables*,card*);
|
||||
void INP2P(void*,INPtables*,card*);
|
||||
void INP2Q(void*,INPtables*,card*,void*);
|
||||
void INP2R(void*,INPtables*,card*);
|
||||
void INP2S(void*,INPtables*,card*);
|
||||
void INP2T(void*,INPtables*,card*);
|
||||
void INP2U(void*,INPtables*,card*);
|
||||
void INP2V(void*,INPtables*,card*);
|
||||
void INP2W(void*,INPtables*,card*);
|
||||
void INP2Y(void*,INPtables*,card*);
|
||||
void INP2Z(void*,INPtables*,card*);
|
||||
int INP2dot(void*,INPtables*,card*,void*,void*);
|
||||
int INPinsert(char **, INPtables *);
|
||||
int INPretrieve(char **, INPtables *);
|
||||
int INPremove(char *, INPtables *);
|
||||
int INPlookMod(char *);
|
||||
int INPmakeMod(char *, int, card *);
|
||||
char *INPmkTemp(char *);
|
||||
void INPpas1(void *, card *, INPtables *);
|
||||
void INPpas2(void *, card *, INPtables *, void *);
|
||||
void INPpas3(void *, card *, INPtables *, void *, IFparm *, int);
|
||||
int INPpName(char *, IFvalue *, void *, int, void *);
|
||||
int INPtermInsert(void *, char **, INPtables *, void **);
|
||||
int INPmkTerm(void *, char **, INPtables *, void **);
|
||||
int INPtypelook(char *);
|
||||
void INP2B(void *, INPtables *, card *);
|
||||
void INP2C(void *, INPtables *, card *);
|
||||
void INP2D(void *, INPtables *, card *);
|
||||
void INP2E(void *, INPtables *, card *);
|
||||
void INP2F(void *, INPtables *, card *);
|
||||
void INP2G(void *, INPtables *, card *);
|
||||
void INP2H(void *, INPtables *, card *);
|
||||
void INP2I(void *, INPtables *, card *);
|
||||
void INP2J(void *, INPtables *, card *);
|
||||
void INP2K(void *, INPtables *, card *);
|
||||
void INP2L(void *, INPtables *, card *);
|
||||
void INP2M(void *, INPtables *, card *);
|
||||
void INP2O(void *, INPtables *, card *);
|
||||
void INP2P(void *, INPtables *, card *);
|
||||
void INP2Q(void *, INPtables *, card *, void *);
|
||||
void INP2R(void *, INPtables *, card *);
|
||||
void INP2S(void *, INPtables *, card *);
|
||||
void INP2T(void *, INPtables *, card *);
|
||||
void INP2U(void *, INPtables *, card *);
|
||||
void INP2V(void *, INPtables *, card *);
|
||||
void INP2W(void *, INPtables *, card *);
|
||||
void INP2Y(void *, INPtables *, card *);
|
||||
void INP2Z(void *, INPtables *, card *);
|
||||
int INP2dot(void *, INPtables *, card *, void *, void *);
|
||||
INPtables *INPtabInit(int);
|
||||
void INPkillMods(void);
|
||||
void INPtabEnd(INPtables *);
|
||||
|
||||
#endif /*INP*/
|
||||
|
|
|
|||
|
|
@ -30,11 +30,14 @@ struct TFan {
|
|||
unsigned int TFinIsI :1;
|
||||
};
|
||||
|
||||
|
||||
#define TF_OUTPOS 1
|
||||
#define TF_OUTNEG 2
|
||||
#define TF_OUTSRC 3
|
||||
#define TF_INSRC 4
|
||||
#define TF_OUTNAME 5
|
||||
|
||||
extern int TFsetParm(CKTcircuit *ckt, void *anal, int which, IFvalue *value);
|
||||
extern int TFaskQuest(CKTcircuit *ckt, void *anal, int which, IFvalue *value);
|
||||
#endif /*TF*/
|
||||
|
||||
#endif /*TF*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue