Browse Source

Some code cleanups and conformed to ngspice device interface.

pre-master-46
pnenzi 25 years ago
parent
commit
7fae91cd5f
  1. 3
      DEVICES
  2. 11
      src/spicelib/devices/bsim4/b4acld.c
  3. 2
      src/spicelib/devices/bsim4/b4ask.c
  4. 5
      src/spicelib/devices/bsim4/b4check.c
  5. 13
      src/spicelib/devices/bsim4/b4cvtest.c
  6. 1
      src/spicelib/devices/bsim4/b4del.c
  7. 1
      src/spicelib/devices/bsim4/b4dest.c
  8. 4
      src/spicelib/devices/bsim4/b4getic.c
  9. 44
      src/spicelib/devices/bsim4/b4ld.c
  10. 2
      src/spicelib/devices/bsim4/b4mask.c
  11. 2
      src/spicelib/devices/bsim4/b4mdel.c
  12. 1
      src/spicelib/devices/bsim4/b4mpar.c
  13. 7
      src/spicelib/devices/bsim4/b4noi.c
  14. 1
      src/spicelib/devices/bsim4/b4par.c
  15. 12
      src/spicelib/devices/bsim4/b4pzld.c
  16. 26
      src/spicelib/devices/bsim4/b4set.c
  17. 8
      src/spicelib/devices/bsim4/b4temp.c
  18. 8
      src/spicelib/devices/bsim4/b4trunc.c
  19. 1
      src/spicelib/devices/bsim4/bsim4def.h
  20. 78
      src/spicelib/devices/bsim4/bsim4itf.h

3
DEVICES

@ -154,6 +154,7 @@ BSIM3v2 - BSIM model level 3
BSIM4 - BSIM model level 4 (0.18 um) BSIM4 - BSIM model level 4 (0.18 um)
Initial Release. TO BE TESTED. Initial Release. TO BE TESTED.
Updated to 4.21 YET UNTESTED.
************************************** **************************************
@ -191,4 +192,4 @@ BSIM3SOI_DD - SOI Model (dynamic depletion model)
web site at: web site at:
http://www-device.eecs.berkeley.edu/~bsimsoi http://www-device.eecs.berkeley.edu/~bsimsoi
*) rework-14: removed #ifndef NEWCONV code.
*) rework-14: removed #ifndef NEWCONV code.

11
src/spicelib/devices/bsim4/b4acld.c

@ -15,16 +15,16 @@
#include "cktdefs.h" #include "cktdefs.h"
#include "bsim4def.h" #include "bsim4def.h"
#include "sperror.h" #include "sperror.h"
#include "suffix.h"
int int
BSIM4acLoad(inModel,ckt) BSIM4acLoad(inModel,ckt)
GENmodel *inModel; GENmodel *inModel;
register CKTcircuit *ckt;
CKTcircuit *ckt;
{ {
register BSIM4model *model = (BSIM4model*)inModel;
register BSIM4instance *here;
BSIM4model *model = (BSIM4model*)inModel;
BSIM4instance *here;
double gjbd, gjbs, geltd, gcrg, gcrgg, gcrgd, gcrgs, gcrgb; double gjbd, gjbs, geltd, gcrg, gcrgg, gcrgd, gcrgs, gcrgb;
double xcbgb, xcbdb, xcbsb, xcbbb; double xcbgb, xcbdb, xcbsb, xcbbb;
@ -58,7 +58,8 @@ double ggidld, ggidlg, ggidlb,ggisld, ggislg, ggislb, ggisls;
for (; model != NULL; model = model->BSIM4nextModel) for (; model != NULL; model = model->BSIM4nextModel)
{ for (here = model->BSIM4instances; here!= NULL; { for (here = model->BSIM4instances; here!= NULL;
here = here->BSIM4nextInstance) here = here->BSIM4nextInstance)
{ pParam = here->pParam;
{ if (here->BSIM4owner != ARCHme) continue;
pParam = here->pParam;
capbd = here->BSIM4capbd; capbd = here->BSIM4capbd;
capbs = here->BSIM4capbs; capbs = here->BSIM4capbs;
cgso = here->BSIM4cgso; cgso = here->BSIM4cgso;

2
src/spicelib/devices/bsim4/b4ask.c

@ -18,7 +18,7 @@
#include "devdefs.h" #include "devdefs.h"
#include "bsim4def.h" #include "bsim4def.h"
#include "sperror.h" #include "sperror.h"
#include "suffix.h"
int int
BSIM4ask(ckt,inst,which,value,select) BSIM4ask(ckt,inst,which,value,select)

5
src/spicelib/devices/bsim4/b4check.c

@ -19,12 +19,11 @@
#include "const.h" #include "const.h"
#include "sperror.h" #include "sperror.h"
#include "devdefs.h" #include "devdefs.h"
#include "suffix.h"
int int
BSIM4checkModel(model, here, ckt) BSIM4checkModel(model, here, ckt)
register BSIM4model *model;
register BSIM4instance *here;
BSIM4model *model;
BSIM4instance *here;
CKTcircuit *ckt; CKTcircuit *ckt;
{ {
struct bsim4SizeDependParam *pParam; struct bsim4SizeDependParam *pParam;

13
src/spicelib/devices/bsim4/b4cvtest.c

@ -19,16 +19,16 @@
#include "const.h" #include "const.h"
#include "devdefs.h" #include "devdefs.h"
#include "sperror.h" #include "sperror.h"
#include "suffix.h"
int int
BSIM4convTest(inModel,ckt) BSIM4convTest(inModel,ckt)
GENmodel *inModel; GENmodel *inModel;
register CKTcircuit *ckt;
CKTcircuit *ckt;
{ {
register BSIM4model *model = (BSIM4model*)inModel;
register BSIM4instance *here;
BSIM4model *model = (BSIM4model*)inModel;
BSIM4instance *here;
double delvbd, delvbs, delvds, delvgd, delvgs; double delvbd, delvbs, delvds, delvgd, delvgs;
double delvdbd, delvsbs; double delvdbd, delvsbs;
double delvbd_jct, delvbs_jct; double delvbd_jct, delvbs_jct;
@ -43,7 +43,10 @@ double tol0, tol1, tol2, tol3, tol4, tol5, tol6;
for (; model != NULL; model = model->BSIM4nextModel) for (; model != NULL; model = model->BSIM4nextModel)
{ for (here = model->BSIM4instances; here != NULL ; { for (here = model->BSIM4instances; here != NULL ;
here=here->BSIM4nextInstance) here=here->BSIM4nextInstance)
{ vds = model->BSIM4type
{
if (here->BSIM4owner != ARCHme) continue;
vds = model->BSIM4type
* (*(ckt->CKTrhsOld + here->BSIM4dNodePrime) * (*(ckt->CKTrhsOld + here->BSIM4dNodePrime)
- *(ckt->CKTrhsOld + here->BSIM4sNodePrime)); - *(ckt->CKTrhsOld + here->BSIM4sNodePrime));
vgs = model->BSIM4type vgs = model->BSIM4type

1
src/spicelib/devices/bsim4/b4del.c

@ -13,7 +13,6 @@
#include "bsim4def.h" #include "bsim4def.h"
#include "sperror.h" #include "sperror.h"
#include "gendefs.h" #include "gendefs.h"
#include "suffix.h"
int int

1
src/spicelib/devices/bsim4/b4dest.c

@ -11,7 +11,6 @@
#include "ngspice.h" #include "ngspice.h"
#include <stdio.h> #include <stdio.h>
#include "bsim4def.h" #include "bsim4def.h"
#include "suffix.h"
void void
BSIM4destroy(inModel) BSIM4destroy(inModel)

4
src/spicelib/devices/bsim4/b4getic.c

@ -13,7 +13,6 @@
#include "cktdefs.h" #include "cktdefs.h"
#include "bsim4def.h" #include "bsim4def.h"
#include "sperror.h" #include "sperror.h"
#include "suffix.h"
int int
@ -26,7 +25,8 @@ BSIM4instance *here;
for (; model ; model = model->BSIM4nextModel) for (; model ; model = model->BSIM4nextModel)
{ for (here = model->BSIM4instances; here; here = here->BSIM4nextInstance) { for (here = model->BSIM4instances; here; here = here->BSIM4nextInstance)
{ if (!here->BSIM4icVDSGiven)
{ if (here->BSIM4owner != ARCHme) continue;
if (!here->BSIM4icVDSGiven)
{ here->BSIM4icVDS = *(ckt->CKTrhs + here->BSIM4dNode) { here->BSIM4icVDS = *(ckt->CKTrhs + here->BSIM4dNode)
- *(ckt->CKTrhs + here->BSIM4sNode); - *(ckt->CKTrhs + here->BSIM4sNode);
} }

44
src/spicelib/devices/bsim4/b4ld.c

@ -19,7 +19,6 @@
#include "const.h" #include "const.h"
#include "sperror.h" #include "sperror.h"
#include "devdefs.h" #include "devdefs.h"
#include "suffix.h"
#define MAX_EXP 5.834617425e14 #define MAX_EXP 5.834617425e14
#define MIN_EXP 1.713908431e-15 #define MIN_EXP 1.713908431e-15
@ -184,7 +183,8 @@ ChargeComputationNeeded =
for (; model != NULL; model = model->BSIM4nextModel) for (; model != NULL; model = model->BSIM4nextModel)
{ for (here = model->BSIM4instances; here != NULL; { for (here = model->BSIM4instances; here != NULL;
here = here->BSIM4nextInstance) here = here->BSIM4nextInstance)
{ Check = Check1 = Check2 = 1;
{ if (here->BSIM4owner != ARCHme) continue;
Check = Check1 = Check2 = 1;
ByPass = 0; ByPass = 0;
pParam = here->pParam; pParam = here->pParam;
@ -3376,46 +3376,6 @@ finished:
if ((here->BSIM4off == 0) || (!(ckt->CKTmode & MODEINITFIX))) if ((here->BSIM4off == 0) || (!(ckt->CKTmode & MODEINITFIX)))
{ if (Check == 1) { if (Check == 1)
{ ckt->CKTnoncon++; { ckt->CKTnoncon++;
#ifndef NEWCONV
}
else
{ if (here->BSIM4mode >= 0)
{ Idtot = here->BSIM4cd + here->BSIM4csub
+ here->BSIM4Igidl - here->BSIM4cbd;
}
else
{ Idtot = here->BSIM4cd + here->BSIM4cbd;
}
tol0 = ckt->CKTreltol * MAX(fabs(cdhat), fabs(Idtot))
+ ckt->CKTabstol;
tol1 = ckt->CKTreltol * MAX(fabs(cseshat), fabs(Isestot))
+ ckt->CKTabstol;
tol2 = ckt->CKTreltol * MAX(fabs(cdedhat), fabs(Idedtot))
+ ckt->CKTabstol;
tol3 = ckt->CKTreltol * MAX(fabs(cgshat), fabs(Igstot))
+ ckt->CKTabstol;
tol4 = ckt->CKTreltol * MAX(fabs(cgdhat), fabs(Igdtot))
+ ckt->CKTabstol;
tol5 = ckt->CKTreltol * MAX(fabs(cgbhat), fabs(Igbtot))
+ ckt->CKTabstol;
if ((fabs(cdhat - Idtot) >= tol0) || (fabs(cseshat - Isestot) >= tol1)
|| (fabs(cdedhat - Idedtot) >= tol2))
{ ckt->CKTnoncon++;
}
else if ((fabs(cgshat - Igstot) >= tol3) || (fabs(cgdhat - Igdtot) >= tol4)
|| (fabs(cgbhat - Igbtot) >= tol5))
{ ckt->CKTnoncon++;
}
else
{ Ibtot = here->BSIM4cbs + here->BSIM4cbd
- here->BSIM4Igidl - here->BSIM4Igisl - here->BSIM4csub;
tol6 = ckt->CKTreltol * MAX(fabs(cbhat), fabs(Ibtot))
+ ckt->CKTabstol;
if (fabs(cbhat - Ibtot) > tol6)
{ ckt->CKTnoncon++;
}
}
#endif /* NEWCONV */
} }
} }
*(ckt->CKTstate0 + here->BSIM4vds) = vds; *(ckt->CKTstate0 + here->BSIM4vds) = vds;

2
src/spicelib/devices/bsim4/b4mask.c

@ -16,7 +16,7 @@
#include "devdefs.h" #include "devdefs.h"
#include "bsim4def.h" #include "bsim4def.h"
#include "sperror.h" #include "sperror.h"
#include "suffix.h"
int int
BSIM4mAsk(ckt,inst,which,value) BSIM4mAsk(ckt,inst,which,value)

2
src/spicelib/devices/bsim4/b4mdel.c

@ -12,7 +12,7 @@
#include <stdio.h> #include <stdio.h>
#include "bsim4def.h" #include "bsim4def.h"
#include "sperror.h" #include "sperror.h"
#include "suffix.h"
int int
BSIM4mDelete(inModel,modname,kill) BSIM4mDelete(inModel,modname,kill)

1
src/spicelib/devices/bsim4/b4mpar.c

@ -15,7 +15,6 @@
#include "bsim4def.h" #include "bsim4def.h"
#include "ifsim.h" #include "ifsim.h"
#include "sperror.h" #include "sperror.h"
#include "suffix.h"
#include "const.h" #include "const.h"
int int

7
src/spicelib/devices/bsim4/b4noi.c

@ -17,7 +17,6 @@
#include "cktdefs.h" #include "cktdefs.h"
#include "iferrmsg.h" #include "iferrmsg.h"
#include "noisedef.h" #include "noisedef.h"
#include "suffix.h"
#include "const.h" #include "const.h"
@ -78,11 +77,11 @@ BSIM4noise (mode, operation, inModel, ckt, data, OnDens)
int mode, operation; int mode, operation;
GENmodel *inModel; GENmodel *inModel;
CKTcircuit *ckt; CKTcircuit *ckt;
register Ndata *data;
Ndata *data;
double *OnDens; double *OnDens;
{ {
register BSIM4model *model = (BSIM4model *)inModel;
register BSIM4instance *here;
BSIM4model *model = (BSIM4model *)inModel;
BSIM4instance *here;
struct bsim4SizeDependParam *pParam; struct bsim4SizeDependParam *pParam;
char name[N_MXVLNTH]; char name[N_MXVLNTH];
double tempOnoise; double tempOnoise;

1
src/spicelib/devices/bsim4/b4par.c

@ -13,7 +13,6 @@
#include "ifsim.h" #include "ifsim.h"
#include "bsim4def.h" #include "bsim4def.h"
#include "sperror.h" #include "sperror.h"
#include "suffix.h"
int int
BSIM4param(param,value,inst,select) BSIM4param(param,value,inst,select)

12
src/spicelib/devices/bsim4/b4pzld.c

@ -16,16 +16,15 @@
#include "complex.h" #include "complex.h"
#include "sperror.h" #include "sperror.h"
#include "bsim4def.h" #include "bsim4def.h"
#include "suffix.h"
int int
BSIM4pzLoad(inModel,ckt,s) BSIM4pzLoad(inModel,ckt,s)
GENmodel *inModel; GENmodel *inModel;
register CKTcircuit *ckt;
register SPcomplex *s;
CKTcircuit *ckt;
SPcomplex *s;
{ {
register BSIM4model *model = (BSIM4model*)inModel;
register BSIM4instance *here;
BSIM4model *model = (BSIM4model*)inModel;
BSIM4instance *here;
double gjbd, gjbs, geltd, gcrg, gcrgg, gcrgd, gcrgs, gcrgb; double gjbd, gjbs, geltd, gcrg, gcrgg, gcrgd, gcrgs, gcrgb;
double xcggb, xcgdb, xcgsb, xcgbb, xcbgb, xcbdb, xcbsb, xcbbb; double xcggb, xcgdb, xcgsb, xcgbb, xcbgb, xcbdb, xcbsb, xcbbb;
@ -54,7 +53,8 @@ double ggidld, ggidlg, ggidlb,ggisld, ggislg, ggislb, ggisls;
for (; model != NULL; model = model->BSIM4nextModel) for (; model != NULL; model = model->BSIM4nextModel)
{ for (here = model->BSIM4instances; here!= NULL; { for (here = model->BSIM4instances; here!= NULL;
here = here->BSIM4nextInstance) here = here->BSIM4nextInstance)
{ pParam = here->pParam;
{ if (here->BSIM4owner != ARCHme) continue;
pParam = here->pParam;
capbd = here->BSIM4capbd; capbd = here->BSIM4capbd;
capbs = here->BSIM4capbs; capbs = here->BSIM4capbs;
cgso = here->BSIM4cgso; cgso = here->BSIM4cgso;

26
src/spicelib/devices/bsim4/b4set.c

@ -13,14 +13,14 @@
#include "ngspice.h" #include "ngspice.h"
#include <stdio.h> #include <stdio.h>
#include <math.h> #include <math.h>
#include "jobdefs.h"
#include "ftedefs.h"
#include "jobdefs.h" /* Needed because the model searches for noise Analysis */
#include "ftedefs.h" /* " " */
#include "smpdefs.h" #include "smpdefs.h"
#include "cktdefs.h" #include "cktdefs.h"
#include "bsim4def.h" #include "bsim4def.h"
#include "const.h" #include "const.h"
#include "sperror.h" #include "sperror.h"
#include "suffix.h"
#define MAX_EXP 5.834617425e14 #define MAX_EXP 5.834617425e14
#define MIN_EXP 1.713908431e-15 #define MIN_EXP 1.713908431e-15
@ -32,13 +32,13 @@
int int
BSIM4setup(matrix,inModel,ckt,states) BSIM4setup(matrix,inModel,ckt,states)
register SMPmatrix *matrix;
register GENmodel *inModel;
register CKTcircuit *ckt;
SMPmatrix *matrix;
GENmodel *inModel;
CKTcircuit *ckt;
int *states; int *states;
{ {
register BSIM4model *model = (BSIM4model*)inModel;
register BSIM4instance *here;
BSIM4model *model = (BSIM4model*)inModel;
BSIM4instance *here;
int error; int error;
CKTnode *tmp; CKTnode *tmp;
double tmp1, tmp2; double tmp1, tmp2;
@ -1335,10 +1335,13 @@ JOB *job;
*/ */
for (here = model->BSIM4instances; here != NULL ; for (here = model->BSIM4instances; here != NULL ;
here=here->BSIM4nextInstance)
{ /* allocate a chunk of the state vector */
here=here->BSIM4nextInstance)
{
if (here->BSIM4owner == ARCHme) {
/* allocate a chunk of the state vector */
here->BSIM4states = *states; here->BSIM4states = *states;
*states += BSIM4numStates; *states += BSIM4numStates;
}
/* perform the parameter defaulting */ /* perform the parameter defaulting */
if (!here->BSIM4lGiven) if (!here->BSIM4lGiven)
here->BSIM4l = 5.0e-6; here->BSIM4l = 5.0e-6;
@ -1648,7 +1651,7 @@ BSIM4unsetup(inModel,ckt)
GENmodel *inModel; GENmodel *inModel;
CKTcircuit *ckt; CKTcircuit *ckt;
{ {
#ifndef HAS_BATCHSIM
BSIM4model *model; BSIM4model *model;
BSIM4instance *here; BSIM4instance *here;
@ -1672,6 +1675,5 @@ BSIM4unsetup(inModel,ckt)
} }
} }
} }
#endif
return OK; return OK;
} }

8
src/spicelib/devices/bsim4/b4temp.c

@ -18,7 +18,6 @@
#include "bsim4def.h" #include "bsim4def.h"
#include "const.h" #include "const.h"
#include "sperror.h" #include "sperror.h"
#include "suffix.h"
#define Kb 1.3806226e-23 #define Kb 1.3806226e-23
#define KboQ 8.617087e-5 #define KboQ 8.617087e-5
@ -51,8 +50,8 @@ BSIM4temp(inModel,ckt)
GENmodel *inModel; GENmodel *inModel;
CKTcircuit *ckt; CKTcircuit *ckt;
{ {
register BSIM4model *model = (BSIM4model*) inModel;
register BSIM4instance *here;
BSIM4model *model = (BSIM4model*) inModel;
BSIM4instance *here;
struct bsim4SizeDependParam *pSizeDependParamKnot, *pLastKnot, *pParam; struct bsim4SizeDependParam *pSizeDependParamKnot, *pLastKnot, *pParam;
double tmp, tmp1, tmp2, tmp3, Eg, Eg0, ni; double tmp, tmp1, tmp2, tmp3, Eg, Eg0, ni;
double T0, T1, T2, T3, T4, T5, T8, T9, Lnew, Wnew; double T0, T1, T2, T3, T4, T5, T8, T9, Lnew, Wnew;
@ -321,7 +320,8 @@ int Size_Not_Found;
/* loop through all the instances of the model */ /* loop through all the instances of the model */
for (here = model->BSIM4instances; here != NULL; for (here = model->BSIM4instances; here != NULL;
here = here->BSIM4nextInstance) here = here->BSIM4nextInstance)
{ pSizeDependParamKnot = model->pSizeDependParamKnot;
{ if (here->BSIM4owner != ARCHme) continue;
pSizeDependParamKnot = model->pSizeDependParamKnot;
Size_Not_Found = 1; Size_Not_Found = 1;
while ((pSizeDependParamKnot != NULL) && Size_Not_Found) while ((pSizeDependParamKnot != NULL) && Size_Not_Found)
{ if ((here->BSIM4l == pSizeDependParamKnot->Length) { if ((here->BSIM4l == pSizeDependParamKnot->Length)

8
src/spicelib/devices/bsim4/b4trunc.c

@ -14,17 +14,16 @@
#include "cktdefs.h" #include "cktdefs.h"
#include "bsim4def.h" #include "bsim4def.h"
#include "sperror.h" #include "sperror.h"
#include "suffix.h"
int int
BSIM4trunc(inModel,ckt,timeStep) BSIM4trunc(inModel,ckt,timeStep)
GENmodel *inModel; GENmodel *inModel;
register CKTcircuit *ckt;
CKTcircuit *ckt;
double *timeStep; double *timeStep;
{ {
register BSIM4model *model = (BSIM4model*)inModel;
register BSIM4instance *here;
BSIM4model *model = (BSIM4model*)inModel;
BSIM4instance *here;
#ifdef STEPDEBUG #ifdef STEPDEBUG
double debugtemp; double debugtemp;
@ -34,6 +33,7 @@ register BSIM4instance *here;
{ for (here = model->BSIM4instances; here != NULL; { for (here = model->BSIM4instances; here != NULL;
here = here->BSIM4nextInstance) here = here->BSIM4nextInstance)
{ {
if (here->BSIM4owner != ARCHme) continue;
#ifdef STEPDEBUG #ifdef STEPDEBUG
debugtemp = *timeStep; debugtemp = *timeStep;
#endif /* STEPDEBUG */ #endif /* STEPDEBUG */

1
src/spicelib/devices/bsim4/bsim4def.h

@ -19,6 +19,7 @@ typedef struct sBSIM4instance
struct sBSIM4model *BSIM4modPtr; struct sBSIM4model *BSIM4modPtr;
struct sBSIM4instance *BSIM4nextInstance; struct sBSIM4instance *BSIM4nextInstance;
IFuid BSIM4name; IFuid BSIM4name;
int BSIM4owner; /* Number of owner process */
int BSIM4states; /* index into state table for this device */ int BSIM4states; /* index into state table for this device */
int BSIM4dNode; int BSIM4dNode;
int BSIM4gNodeExt; int BSIM4gNodeExt;

78
src/spicelib/devices/bsim4/bsim4itf.h

@ -4,86 +4,10 @@ Author: 2000 Weidong Liu.
Author: 2001 Xuemei Xi Author: 2001 Xuemei Xi
File: bsim4itf.h File: bsim4itf.h
**********/ **********/
#ifdef DEV_bsim4
#ifndef DEV_BSIM4 #ifndef DEV_BSIM4
#define DEV_BSIM4 #define DEV_BSIM4
#include "bsim4ext.h"
SPICEdev *get_bsim4_info(void);
extern IFparm BSIM4pTable[ ];
extern IFparm BSIM4mPTable[ ];
extern char *BSIM4names[ ];
extern int BSIM4pTSize;
extern int BSIM4mPTSize;
extern int BSIM4nSize;
extern int BSIM4iSize;
extern int BSIM4mSize;
SPICEdev B4info = {
{ "BSIM4",
"Berkeley Short Channel IGFET Model-4",
&BSIM4nSize,
&BSIM4nSize,
BSIM4names,
&BSIM4pTSize,
BSIM4pTable,
&BSIM4mPTSize,
BSIM4mPTable,
DEV_DEFAULT
},
BSIM4param,
BSIM4mParam,
BSIM4load,
BSIM4setup,
BSIM4unsetup,
BSIM4setup,
BSIM4temp,
BSIM4trunc,
NULL,
BSIM4acLoad,
NULL,
BSIM4destroy,
#ifdef DELETES
BSIM4mDelete,
BSIM4delete,
#else /* DELETES */
NULL,
NULL,
#endif /* DELETES */
BSIM4getic,
BSIM4ask,
BSIM4mAsk,
#ifdef AN_pz
BSIM4pzLoad,
#else /* AN_pz */
NULL,
#endif /* AN_pz */
#ifdef NEWCONV
BSIM4convTest,
#else /* NEWCONV */
NULL,
#endif /* NEWCONV */
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
#ifdef AN_noise
BSIM4noise,
#else /* AN_noise */
NULL,
#endif /* AN_noise */
&BSIM4iSize,
&BSIM4mSize
};
#endif
#endif #endif
Loading…
Cancel
Save