Jspice3
messetup.c File Reference
#include "spice.h"
#include <stdio.h>
#include "mesdefs.h"
#include "const.h"
#include "sperror.h"
#include "util.h"
#include "cktext.h"
Include dependency graph for messetup.c:

Go to the source code of this file.

Functions

int MESsetup (SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
 

Function Documentation

int MESsetup ( SMPmatrix matrix,
GENmodel inModel,
CKTcircuit ckt,
int *  states 
)

Definition at line 18 of file messetup.c.

27 {
28  MESmodel *model = (MESmodel*)inModel;
29  MESinstance *here;
30  int error;
31  CKTnode *tmp;
32 
33  /* loop through all the diode models */
34  for ( ; model != NULL; model = model->MESnextModel) {
35 
36  if ( (model->MEStype != NMF) && (model->MEStype != PMF) ) {
37  model->MEStype = NMF;
38  }
39  if (!model->MESthresholdGiven) {
40  model->MESthreshold = -2;
41  }
42  if (!model->MESbetaGiven) {
43  model->MESbeta = 2.5e-3;
44  }
45  if (!model->MESbGiven) {
46  model->MESb = 0.3;
47  }
48  if (!model->MESalphaGiven) {
49  model->MESalpha = 2;
50  }
51  if (!model->MESlModulationGiven) {
52  model->MESlModulation = 0;
53  }
54  if (!model->MESdrainResistGiven) {
55  model->MESdrainResist = 0;
56  }
57  if (!model->MESsourceResistGiven) {
58  model->MESsourceResist = 0;
59  }
60  if (!model->MEScapGSGiven) {
61  model->MEScapGS = 0;
62  }
63  if (!model->MEScapGDGiven) {
64  model->MEScapGD = 0;
65  }
66  if (!model->MESgatePotentialGiven) {
67  model->MESgatePotential = 1;
68  }
69  if (!model->MESgateSatCurrentGiven) {
70  model->MESgateSatCurrent = 1e-14;
71  }
72  if (!model->MESdepletionCapCoeffGiven) {
73  model->MESdepletionCapCoeff = .5;
74  }
75  if (!model->MESfNcoefGiven) {
76  model->MESfNcoef = 0;
77  }
78  if (!model->MESfNexpGiven) {
79  model->MESfNexp = 1;
80  }
81 
82  /* loop through all the instances of the model */
83  for (here = model->MESinstances; here != NULL;
84  here = here->MESnextInstance) {
85 
86  if (!here->MESareaGiven) {
87  here->MESarea = 1;
88  }
89  here->MESstate = *states;
90  *states += MESnumStates;
91 
92  if (model->MESsourceResist != 0 &&
93  here->MESsourcePrimeNode == 0) {
94  error = CKTmkVolt(ckt,&tmp,here->MESname,"source");
95  if (error) return (error);
96  here->MESsourcePrimeNode = tmp->number;
97  }
98  else {
99  here->MESsourcePrimeNode = here->MESsourceNode;
100  }
101  if (model->MESdrainResist != 0 &&
102  here->MESdrainPrimeNode == 0) {
103  error = CKTmkVolt(ckt,&tmp,here->MESname,"drain");
104  if (error) return (error);
105  here->MESdrainPrimeNode = tmp->number;
106  }
107  else {
108  here->MESdrainPrimeNode = here->MESdrainNode;
109  }
110 
111  TSTALLOC(MESdrainDrainPrimePtr,MESdrainNode,MESdrainPrimeNode)
112  TSTALLOC(MESgateDrainPrimePtr,MESgateNode,MESdrainPrimeNode)
113  TSTALLOC(MESgateSourcePrimePtr,MESgateNode,MESsourcePrimeNode)
114  TSTALLOC(MESsourceSourcePrimePtr,MESsourceNode,
115  MESsourcePrimeNode)
116  TSTALLOC(MESdrainPrimeDrainPtr,MESdrainPrimeNode,MESdrainNode)
117  TSTALLOC(MESdrainPrimeGatePtr,MESdrainPrimeNode,MESgateNode)
118  TSTALLOC(MESdrainPrimeSourcePrimePtr,MESdrainPrimeNode,
119  MESsourcePrimeNode)
120  TSTALLOC(MESsourcePrimeGatePtr,MESsourcePrimeNode,MESgateNode)
121  TSTALLOC(MESsourcePrimeSourcePtr,MESsourcePrimeNode,
122  MESsourceNode)
123  TSTALLOC(MESsourcePrimeDrainPrimePtr,MESsourcePrimeNode,
124  MESdrainPrimeNode)
125  TSTALLOC(MESdrainDrainPtr,MESdrainNode,MESdrainNode)
126  TSTALLOC(MESgateGatePtr,MESgateNode,MESgateNode)
127  TSTALLOC(MESsourceSourcePtr,MESsourceNode,MESsourceNode)
128  TSTALLOC(MESdrainPrimeDrainPrimePtr,MESdrainPrimeNode,
129  MESdrainPrimeNode)
130  TSTALLOC(MESsourcePrimeSourcePrimePtr,MESsourcePrimeNode,
131  MESsourcePrimeNode)
132  }
133  }
134  return (OK);
135 }
#define MESnumStates
Definition: mesdefs.h:13
int MEStype
Definition: mesdefs.h:166
#define NMF
Definition: mesdefs.h:211
unsigned MESfNexpGiven
Definition: mesdefs.h:204
IFuid MESname
Definition: mesdefs.h:24
unsigned MEScapGSGiven
Definition: mesdefs.h:198
unsigned MESfNcoefGiven
Definition: mesdefs.h:203
double MESsourceResist
Definition: mesdefs.h:174
unsigned MESsourceResistGiven
Definition: mesdefs.h:197
unsigned MEScapGDGiven
Definition: mesdefs.h:199
double MESlModulation
Definition: mesdefs.h:171
double MESfNexp
Definition: mesdefs.h:181
double MESdrainResist
Definition: mesdefs.h:173
MESinstance * MESinstances
Definition: mesdefs.h:163
static double e
Definition: vectors.c:17
unsigned MESgateSatCurrentGiven
Definition: mesdefs.h:201
int MESstate
Definition: mesdefs.h:25
double MESdepletionCapCoeff
Definition: mesdefs.h:179
unsigned MESlModulationGiven
Definition: mesdefs.h:194
struct sMESmodel * MESnextModel
Definition: mesdefs.h:161
double MEScapGS
Definition: mesdefs.h:175
double MESalpha
Definition: mesdefs.h:169
unsigned MESthresholdGiven
Definition: mesdefs.h:191
unsigned MESbetaGiven
Definition: mesdefs.h:193
#define TSTALLOC(ptr, first, second)
Definition: devdefs.h:124
struct sMESinstance * MESnextInstance
Definition: mesdefs.h:22
#define OK
Definition: iferrmsg.h:17
unsigned MESdepletionCapCoeffGiven
Definition: mesdefs.h:202
#define NULL
Definition: spdefs.h:121
int MESdrainPrimeNode
Definition: mesdefs.h:30
unsigned MESbGiven
Definition: mesdefs.h:195
unsigned MESareaGiven
Definition: mesdefs.h:67
int number
Definition: cktdefs.h:39
double MESgatePotential
Definition: mesdefs.h:177
double MESarea
Definition: mesdefs.h:32
double MESb
Definition: mesdefs.h:172
#define PMF
Definition: mesdefs.h:212
double MESthreshold
Definition: mesdefs.h:168
static char model[32]
Definition: subckt.c:76
unsigned MESgatePotentialGiven
Definition: mesdefs.h:200
int MESsourceNode
Definition: mesdefs.h:29
return(True)
unsigned MESdrainResistGiven
Definition: mesdefs.h:196
double MEScapGD
Definition: mesdefs.h:176
int MESdrainNode
Definition: mesdefs.h:27
int CKTmkVolt()
int MESsourcePrimeNode
Definition: mesdefs.h:31
unsigned MESalphaGiven
Definition: mesdefs.h:192
double MESbeta
Definition: mesdefs.h:170
double MESfNcoef
Definition: mesdefs.h:180
double MESgateSatCurrent
Definition: mesdefs.h:178