You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
158 lines
4.7 KiB
158 lines
4.7 KiB
/**********
|
|
Copyright 1990 Regents of the University of California. All rights reserved.
|
|
Author: 1985 Thomas L. Quarles
|
|
Modified: 2000 AlansFixes
|
|
**********/
|
|
|
|
#ifndef ngspice_INPDEFS_H
|
|
#define ngspice_INPDEFS_H
|
|
|
|
/* structure declarations used by either/both input package */
|
|
|
|
#include "ngspice/gendefs.h"
|
|
#include "ngspice/ifsim.h"
|
|
#include "ngspice/inpptree.h"
|
|
|
|
typedef struct INPtables INPtables;
|
|
typedef struct INPmodel INPmodel;
|
|
|
|
struct INPtab {
|
|
char *t_ent;
|
|
struct INPtab *t_next;
|
|
};
|
|
|
|
struct INPnTab {
|
|
char *t_ent;
|
|
CKTnode *t_node;
|
|
struct INPnTab *t_next;
|
|
};
|
|
|
|
struct INPtables {
|
|
struct INPtab **INPsymtab;
|
|
struct INPnTab **INPtermsymtab;
|
|
int INPsize;
|
|
int INPtermsize;
|
|
GENmodel *defAmod;
|
|
GENmodel *defBmod;
|
|
GENmodel *defCmod;
|
|
GENmodel *defDmod;
|
|
GENmodel *defEmod;
|
|
GENmodel *defFmod;
|
|
GENmodel *defGmod;
|
|
GENmodel *defHmod;
|
|
GENmodel *defImod;
|
|
GENmodel *defJmod;
|
|
GENmodel *defKmod;
|
|
GENmodel *defLmod;
|
|
GENmodel *defMmod;
|
|
GENmodel *defNmod;
|
|
GENmodel *defOmod;
|
|
GENmodel *defPmod;
|
|
GENmodel *defQmod;
|
|
GENmodel *defRmod;
|
|
GENmodel *defSmod;
|
|
GENmodel *defTmod;
|
|
GENmodel *defUmod;
|
|
GENmodel *defVmod;
|
|
GENmodel *defWmod;
|
|
GENmodel *defYmod;
|
|
GENmodel *defZmod;
|
|
};
|
|
|
|
/* Linked list of scoping information for each netlist line entry */
|
|
struct nscope {
|
|
struct nscope *next;
|
|
struct card_assoc *subckts;
|
|
struct modellist *models;
|
|
};
|
|
|
|
/* A linked list of netlist line entries, associated for a specific reason */
|
|
struct card_assoc {
|
|
const char *name;
|
|
struct card *line;
|
|
struct card_assoc *next;
|
|
};
|
|
|
|
/* The linked list of netlist line entries */
|
|
struct card {
|
|
int linenum;
|
|
int linenum_orig;
|
|
char *line;
|
|
char *error;
|
|
struct card *nextcard;
|
|
struct card *actualLine;
|
|
struct nscope *level;
|
|
float w;
|
|
float l;
|
|
float nf;
|
|
};
|
|
|
|
/* structure used to save models in after they are read during pass 1 */
|
|
struct INPmodel {
|
|
IFuid INPmodName; /* uid of model */
|
|
int INPmodType; /* type index of device type */
|
|
INPmodel *INPnextModel; /* link to next model */
|
|
struct card *INPmodLine; /* pointer to line describing model */
|
|
GENmodel *INPmodfast; /* high speed pointer to model for access */
|
|
};
|
|
|
|
|
|
|
|
/* listing types - used for debug listings */
|
|
#define LOGICAL 1
|
|
#define PHYSICAL 2
|
|
|
|
int IFnewUid(CKTcircuit *, IFuid *, IFuid, char *, int, CKTnode **);
|
|
int IFdelUid(CKTcircuit *, IFuid, int);
|
|
int INPaName(char *, IFvalue *, CKTcircuit *, int *, char *, GENinstance **,
|
|
IFsimulator *, int *, IFvalue *);
|
|
int INPapName(CKTcircuit *, int, JOB *, char *, IFvalue *);
|
|
void INPcaseFix(char *);
|
|
char *INPdevParse(char **, CKTcircuit *, int, GENinstance *, double *, int *,
|
|
INPtables *);
|
|
char *INPdomodel(CKTcircuit *, struct card *, INPtables *);
|
|
void INPdoOpts(CKTcircuit *, JOB *, struct card *, INPtables *);
|
|
char *INPerrCat(char *, char *);
|
|
char *INPstrCat(char *, char, char *);
|
|
char *INPerror(int);
|
|
double INPevaluate(char **, int *, int);
|
|
double INPevaluateRKM(char **, int *, int);
|
|
char *INPfindLev(char *, int *);
|
|
char *INPgetMod(CKTcircuit *, char *, INPmodel **, INPtables *);
|
|
char *INPgetModBin(CKTcircuit *, char *, INPmodel **, INPtables *, char *);
|
|
int INPgetTok(char **, char **, int);
|
|
int INPgetNetTok(char **, char **, int);
|
|
void INPgetTree(char **, INPparseTree **, CKTcircuit *, INPtables *);
|
|
void INPfreeTree(IFparseTree *);
|
|
IFvalue *INPgetValue(CKTcircuit *, char **, int, INPtables *);
|
|
int INPgndInsert(CKTcircuit *, char **, INPtables *, CKTnode **);
|
|
int INPinsertNofree(char **token, INPtables *tab);
|
|
int INPinsert(char **, INPtables *);
|
|
int INPretrieve(char **, INPtables *);
|
|
int INPremove(char *, INPtables *);
|
|
INPmodel *INPlookMod(const char *);
|
|
int INPmakeMod(char *, int, struct card *);
|
|
char *INPmkTemp(char *);
|
|
void INPpas1(CKTcircuit *, struct card *, INPtables *);
|
|
void INPpas2(CKTcircuit *, struct card *, INPtables *, TSKtask *);
|
|
void INPpas3(
|
|
CKTcircuit *, struct card *, INPtables *, TSKtask *, IFparm *, int);
|
|
void INPpas4(CKTcircuit *, INPtables *);
|
|
int INPpName(char *, IFvalue *, CKTcircuit *, int, GENinstance *);
|
|
int INPtermInsert(CKTcircuit *, char **, INPtables *, CKTnode **);
|
|
int INPtermSearch(CKTcircuit*, char**, INPtables*, CKTnode**);
|
|
int INPmkTerm(CKTcircuit *, char **, INPtables *, CKTnode **);
|
|
int INPtypelook(char *);
|
|
int INP2dot(CKTcircuit *, INPtables *, struct card *, TSKtask *, CKTnode *);
|
|
INPtables *INPtabInit(int);
|
|
void INPkillMods(void);
|
|
void INPtabEnd(INPtables *);
|
|
char *INPfindVer(char *line, char *version);
|
|
int INPgetStr(char **line, char **token, int gobble);
|
|
int INPgetTitle(CKTcircuit **ckt, struct card **data);
|
|
int INPgetUTok(char **line, char **token, int gobble);
|
|
int INPremTerm(char *token, INPtables *tab);
|
|
|
|
|
|
|
|
#endif
|