mirror of
https://git.code.sf.net/p/ngspice/ngspice
synced 2026-08-22 13:57:32 +02:00
Added dtemp parameter.
This commit is contained in:
@@ -35,7 +35,8 @@ IFparm MOS2pTable[] = { /* parameters */
|
|||||||
IOPAU("icvds", MOS2_IC_VDS,IF_REAL , "Initial D-S voltage"),
|
IOPAU("icvds", MOS2_IC_VDS,IF_REAL , "Initial D-S voltage"),
|
||||||
IOPAU("icvgs", MOS2_IC_VGS,IF_REAL , "Initial G-S voltage"),
|
IOPAU("icvgs", MOS2_IC_VGS,IF_REAL , "Initial G-S voltage"),
|
||||||
IOPAU("icvbs", MOS2_IC_VBS,IF_REAL , "Initial B-S voltage"),
|
IOPAU("icvbs", MOS2_IC_VBS,IF_REAL , "Initial B-S voltage"),
|
||||||
IOPU("temp", MOS2_TEMP, IF_REAL , "Instance operating temperature"),
|
IOPU("temp", MOS2_TEMP, IF_REAL ,"Instance operating temperature"),
|
||||||
|
IOPU("dtemp", MOS2_DTEMP, IF_REAL , "Instance temperature difference"),
|
||||||
IP( "ic", MOS2_IC, IF_REALVEC, "Vector of D-S, G-S, B-S voltages"),
|
IP( "ic", MOS2_IC, IF_REALVEC, "Vector of D-S, G-S, B-S voltages"),
|
||||||
IP( "sens_l", MOS2_L_SENS,IF_FLAG, "flag to request sensitivity WRT length"),
|
IP( "sens_l", MOS2_L_SENS,IF_FLAG, "flag to request sensitivity WRT length"),
|
||||||
IP( "sens_w", MOS2_W_SENS,IF_FLAG, "flag to request sensitivity WRT width"),
|
IP( "sens_w", MOS2_W_SENS,IF_FLAG, "flag to request sensitivity WRT width"),
|
||||||
|
|||||||
@@ -14,9 +14,7 @@ Modified: 2000 AlansFixes
|
|||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2acLoad(inModel,ckt)
|
MOS2acLoad(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
GENmodel *inModel;
|
|
||||||
CKTcircuit *ckt;
|
|
||||||
{
|
{
|
||||||
MOS2model *model = (MOS2model *)inModel;
|
MOS2model *model = (MOS2model *)inModel;
|
||||||
MOS2instance *here;
|
MOS2instance *here;
|
||||||
|
|||||||
@@ -15,12 +15,8 @@ Modified: 2000 AlansFixes
|
|||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
int
|
int
|
||||||
MOS2ask(ckt,inst,which,value,select)
|
MOS2ask(CKTcircuit *ckt, GENinstance *inst, int which, IFvalue *value,
|
||||||
CKTcircuit *ckt;
|
IFvalue *select)
|
||||||
GENinstance *inst;
|
|
||||||
int which;
|
|
||||||
IFvalue *value;
|
|
||||||
IFvalue *select;
|
|
||||||
{
|
{
|
||||||
MOS2instance *here = (MOS2instance *)inst;
|
MOS2instance *here = (MOS2instance *)inst;
|
||||||
double vr;
|
double vr;
|
||||||
@@ -33,6 +29,9 @@ MOS2ask(ckt,inst,which,value,select)
|
|||||||
case MOS2_TEMP:
|
case MOS2_TEMP:
|
||||||
value->rValue = here->MOS2temp-CONSTCtoK;
|
value->rValue = here->MOS2temp-CONSTCtoK;
|
||||||
return(OK);
|
return(OK);
|
||||||
|
case MOS2_DTEMP:
|
||||||
|
value->rValue = here->MOS2dtemp;
|
||||||
|
return(OK);
|
||||||
case MOS2_CGS:
|
case MOS2_CGS:
|
||||||
value->rValue = 2* *(ckt->CKTstate0 + here->MOS2capgs);
|
value->rValue = 2* *(ckt->CKTstate0 + here->MOS2capgs);
|
||||||
return(OK);
|
return(OK);
|
||||||
|
|||||||
@@ -10,9 +10,7 @@ Author: 1985 Thomas L. Quarles
|
|||||||
#include "suffix.h"
|
#include "suffix.h"
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2convTest(inModel,ckt)
|
MOS2convTest(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
GENmodel *inModel;
|
|
||||||
CKTcircuit *ckt;
|
|
||||||
{
|
{
|
||||||
MOS2model *model = (MOS2model *)inModel;
|
MOS2model *model = (MOS2model *)inModel;
|
||||||
MOS2instance *here;
|
MOS2instance *here;
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ typedef struct sMOS2instance {
|
|||||||
unsigned MOS2vonGiven :1;
|
unsigned MOS2vonGiven :1;
|
||||||
unsigned MOS2vdsatGiven :1;
|
unsigned MOS2vdsatGiven :1;
|
||||||
unsigned MOS2tempGiven :1; /* per-instance temperature specified? */
|
unsigned MOS2tempGiven :1; /* per-instance temperature specified? */
|
||||||
|
unsigned MOS2dtempGiven :1; /* per-instance temperature difference specified? */
|
||||||
unsigned MOS2sens_l :1; /* field which indicates whether
|
unsigned MOS2sens_l :1; /* field which indicates whether
|
||||||
length of the mosfet is a design
|
length of the mosfet is a design
|
||||||
parameter or not */
|
parameter or not */
|
||||||
@@ -139,6 +140,7 @@ typedef struct sMOS2instance {
|
|||||||
#define MOS2dphibd_dw MOS2sens + 69
|
#define MOS2dphibd_dw MOS2sens + 69
|
||||||
|
|
||||||
double MOS2temp; /* temperature at which this instance operates */
|
double MOS2temp; /* temperature at which this instance operates */
|
||||||
|
double MOS2dtemp; /* difference of instance temperature from circuit temperature */
|
||||||
double MOS2tTransconductance; /* temperature corrected transconductance*/
|
double MOS2tTransconductance; /* temperature corrected transconductance*/
|
||||||
double MOS2tSurfMob; /* temperature corrected surface mobility */
|
double MOS2tSurfMob; /* temperature corrected surface mobility */
|
||||||
double MOS2tPhi; /* temperature corrected Phi */
|
double MOS2tPhi; /* temperature corrected Phi */
|
||||||
@@ -491,10 +493,11 @@ typedef struct sMOS2model { /* model structure for a resistor */
|
|||||||
#define MOS2_L_SENS_CPLX 74
|
#define MOS2_L_SENS_CPLX 74
|
||||||
#define MOS2_L_SENS_DC 75
|
#define MOS2_L_SENS_DC 75
|
||||||
#define MOS2_W_SENS_DC 76
|
#define MOS2_W_SENS_DC 76
|
||||||
#define MOS2_TEMP 77
|
#define MOS2_TEMP 77
|
||||||
#define MOS2_SOURCERESIST 78
|
#define MOS2_SOURCERESIST 78
|
||||||
#define MOS2_DRAINRESIST 79
|
#define MOS2_DRAINRESIST 79
|
||||||
#define MOS2_M 80
|
#define MOS2_M 80
|
||||||
|
#define MOS2_DTEMP 81
|
||||||
|
|
||||||
/* model paramerers */
|
/* model paramerers */
|
||||||
#define MOS2_MOD_VTO 101
|
#define MOS2_MOD_VTO 101
|
||||||
|
|||||||
@@ -12,10 +12,7 @@ Author: 1985 Thomas L. Quarles
|
|||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2delete(inModel,name,inst)
|
MOS2delete(GENmodel *inModel, IFuid name, GENinstance **inst)
|
||||||
GENmodel *inModel;
|
|
||||||
IFuid name;
|
|
||||||
GENinstance **inst;
|
|
||||||
{
|
{
|
||||||
MOS2model *model = (MOS2model *)inModel;
|
MOS2model *model = (MOS2model *)inModel;
|
||||||
MOS2instance **fast = (MOS2instance **)inst;
|
MOS2instance **fast = (MOS2instance **)inst;
|
||||||
|
|||||||
@@ -11,8 +11,7 @@ Author: 1985 Thomas L. Quarles
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MOS2destroy(inModel)
|
MOS2destroy(GENmodel **inModel)
|
||||||
GENmodel **inModel;
|
|
||||||
{
|
{
|
||||||
MOS2model **model = (MOS2model **)inModel;
|
MOS2model **model = (MOS2model **)inModel;
|
||||||
MOS2instance *here;
|
MOS2instance *here;
|
||||||
|
|||||||
@@ -11,11 +11,7 @@ Author: 1988 Jaijeet S Roychowdhury
|
|||||||
#include "suffix.h"
|
#include "suffix.h"
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2disto(mode,genmodel,ckt)
|
MOS2disto(int mode,GENmodel *genmodel, CKTcircuit *ckt)
|
||||||
GENmodel *genmodel;
|
|
||||||
CKTcircuit *ckt;
|
|
||||||
int mode;
|
|
||||||
|
|
||||||
/* assuming here that ckt->CKTomega has been initialised to
|
/* assuming here that ckt->CKTomega has been initialised to
|
||||||
* the correct value
|
* the correct value
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -21,9 +21,7 @@ static double sig1[4] = {1.0, -1.0, 1.0, -1.0};
|
|||||||
static double sig2[4] = {1.0, 1.0,-1.0, -1.0};
|
static double sig2[4] = {1.0, 1.0,-1.0, -1.0};
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2dSetup(inModel,ckt)
|
MOS2dSetup(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
GENmodel *inModel;
|
|
||||||
CKTcircuit *ckt;
|
|
||||||
/* actually load the current value into the
|
/* actually load the current value into the
|
||||||
* sparse matrix previously provided
|
* sparse matrix previously provided
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ Author: 1985 Thomas L. Quarles
|
|||||||
Modified: 2000 AlansFixes
|
Modified: 2000 AlansFixes
|
||||||
**********/
|
**********/
|
||||||
|
|
||||||
#ifdef __STDC__
|
|
||||||
extern int MOS2acLoad(GENmodel*,CKTcircuit*);
|
extern int MOS2acLoad(GENmodel*,CKTcircuit*);
|
||||||
extern int MOS2ask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*);
|
extern int MOS2ask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*);
|
||||||
extern int MOS2mAsk(CKTcircuit*,GENmodel*,int,IFvalue*);
|
extern int MOS2mAsk(CKTcircuit*,GENmodel*,int,IFvalue*);
|
||||||
@@ -30,29 +29,3 @@ extern int MOS2disto(int,GENmodel*,CKTcircuit*);
|
|||||||
extern int MOS2noise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
extern int MOS2noise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
||||||
|
|
||||||
extern int MOS2dSetup(GENmodel*,CKTcircuit*);
|
extern int MOS2dSetup(GENmodel*,CKTcircuit*);
|
||||||
|
|
||||||
#else /* stdc */
|
|
||||||
extern int MOS2acLoad();
|
|
||||||
extern int MOS2ask();
|
|
||||||
extern int MOS2mAsk();
|
|
||||||
extern int MOS2convTest();
|
|
||||||
extern int MOS2delete();
|
|
||||||
extern void MOS2destroy();
|
|
||||||
extern int MOS2getic();
|
|
||||||
extern int MOS2load();
|
|
||||||
extern int MOS2mDelete();
|
|
||||||
extern int MOS2mParam();
|
|
||||||
extern int MOS2param();
|
|
||||||
extern int MOS2pzLoad();
|
|
||||||
extern int MOS2sAcLoad();
|
|
||||||
extern int MOS2sLoad();
|
|
||||||
extern void MOS2sPrint();
|
|
||||||
extern int MOS2sSetup();
|
|
||||||
extern int MOS2sUpdate();
|
|
||||||
extern int MOS2setup();
|
|
||||||
extern int MOS2unsetup();
|
|
||||||
extern int MOS2temp();
|
|
||||||
extern int MOS2trunc();
|
|
||||||
extern int MOS2disto();
|
|
||||||
extern int MOS2noise();
|
|
||||||
#endif /* stdc */
|
|
||||||
|
|||||||
@@ -13,9 +13,7 @@ Author: 1985 Thomas L. Quarles
|
|||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2getic(inModel,ckt)
|
MOS2getic(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
GENmodel *inModel;
|
|
||||||
CKTcircuit *ckt;
|
|
||||||
{
|
{
|
||||||
MOS2model *model = (MOS2model *)inModel;
|
MOS2model *model = (MOS2model *)inModel;
|
||||||
MOS2instance *here;
|
MOS2instance *here;
|
||||||
|
|||||||
@@ -20,9 +20,7 @@ static double sig1[4] = {1.0, -1.0, 1.0, -1.0};
|
|||||||
static double sig2[4] = {1.0, 1.0,-1.0, -1.0};
|
static double sig2[4] = {1.0, 1.0,-1.0, -1.0};
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2load(inModel,ckt)
|
MOS2load(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
GENmodel *inModel;
|
|
||||||
CKTcircuit *ckt;
|
|
||||||
/* actually load the current value into the
|
/* actually load the current value into the
|
||||||
* sparse matrix previously provided
|
* sparse matrix previously provided
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -11,11 +11,8 @@ Author: 1985 Thomas L. Quarles
|
|||||||
#include "suffix.h"
|
#include "suffix.h"
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2mAsk(ckt,inModel,param,value)
|
MOS2mAsk(CKTcircuit *ckt, GENmodel *inModel, int param,
|
||||||
CKTcircuit *ckt;
|
IFvalue *value)
|
||||||
GENmodel *inModel;
|
|
||||||
int param;
|
|
||||||
IFvalue *value;
|
|
||||||
{
|
{
|
||||||
MOS2model *model = (MOS2model *)inModel;
|
MOS2model *model = (MOS2model *)inModel;
|
||||||
switch(param) {
|
switch(param) {
|
||||||
|
|||||||
@@ -12,10 +12,7 @@ Author: 1985 Thomas L. Quarles
|
|||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2mDelete(inModel,modname,kill)
|
MOS2mDelete(GENmodel **inModel, IFuid modname, GENmodel *kill)
|
||||||
GENmodel **inModel;
|
|
||||||
IFuid modname;
|
|
||||||
GENmodel *kill;
|
|
||||||
{
|
{
|
||||||
MOS2model **model = (MOS2model **)inModel;
|
MOS2model **model = (MOS2model **)inModel;
|
||||||
MOS2model *modfast = (MOS2model *)kill;
|
MOS2model *modfast = (MOS2model *)kill;
|
||||||
|
|||||||
@@ -14,10 +14,7 @@ Author: 1985 Thomas L. Quarles
|
|||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2mParam(param,value,inModel)
|
MOS2mParam(int param, IFvalue *value, GENmodel *inModel)
|
||||||
int param;
|
|
||||||
IFvalue *value;
|
|
||||||
GENmodel *inModel;
|
|
||||||
{
|
{
|
||||||
MOS2model *model = (MOS2model *)inModel;
|
MOS2model *model = (MOS2model *)inModel;
|
||||||
switch(param) {
|
switch(param) {
|
||||||
|
|||||||
@@ -24,13 +24,8 @@ extern void NevalSrc();
|
|||||||
extern double Nintegrate();
|
extern double Nintegrate();
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2noise (mode, operation, genmodel, ckt, data, OnDens)
|
MOS2noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
|
||||||
int mode;
|
Ndata *data, double *OnDens)
|
||||||
int operation;
|
|
||||||
GENmodel *genmodel;
|
|
||||||
CKTcircuit *ckt;
|
|
||||||
Ndata *data;
|
|
||||||
double *OnDens;
|
|
||||||
{
|
{
|
||||||
MOS2model *firstModel = (MOS2model *) genmodel;
|
MOS2model *firstModel = (MOS2model *) genmodel;
|
||||||
MOS2model *model;
|
MOS2model *model;
|
||||||
|
|||||||
@@ -16,11 +16,8 @@ Modified: 2000 AlansFixes
|
|||||||
|
|
||||||
/* ARGSUSED */
|
/* ARGSUSED */
|
||||||
int
|
int
|
||||||
MOS2param(param,value,inst,select)
|
MOS2param(int param, IFvalue *value, GENinstance *inst,
|
||||||
int param;
|
IFvalue *select)
|
||||||
IFvalue *value;
|
|
||||||
GENinstance *inst;
|
|
||||||
IFvalue *select;
|
|
||||||
{
|
{
|
||||||
MOS2instance *here = (MOS2instance *)inst;
|
MOS2instance *here = (MOS2instance *)inst;
|
||||||
switch(param) {
|
switch(param) {
|
||||||
@@ -28,6 +25,10 @@ MOS2param(param,value,inst,select)
|
|||||||
here->MOS2temp = value->rValue+CONSTCtoK;
|
here->MOS2temp = value->rValue+CONSTCtoK;
|
||||||
here->MOS2tempGiven = TRUE;
|
here->MOS2tempGiven = TRUE;
|
||||||
break;
|
break;
|
||||||
|
case MOS2_DTEMP:
|
||||||
|
here->MOS2dtemp = value->rValue;
|
||||||
|
here->MOS2dtempGiven = TRUE;
|
||||||
|
break;
|
||||||
case MOS2_M:
|
case MOS2_M:
|
||||||
here->MOS2m = value->rValue;
|
here->MOS2m = value->rValue;
|
||||||
here->MOS2mGiven = TRUE;
|
here->MOS2mGiven = TRUE;
|
||||||
|
|||||||
@@ -15,10 +15,7 @@ Modified: 2000 AlansFixes
|
|||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2pzLoad(inModel,ckt,s)
|
MOS2pzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
|
||||||
GENmodel *inModel;
|
|
||||||
CKTcircuit *ckt;
|
|
||||||
SPcomplex *s;
|
|
||||||
{
|
{
|
||||||
MOS2model *model = (MOS2model *)inModel;
|
MOS2model *model = (MOS2model *)inModel;
|
||||||
MOS2instance *here;
|
MOS2instance *here;
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
/**********
|
/**********
|
||||||
Copyright 1990 Regents of the University of California. All rights reserved.
|
Copyright 1990 Regents of the University of California. All rights reserved.
|
||||||
Author: 1985 Thomas L. Quarles
|
Author: 1985 Thomas L. Quarles
|
||||||
|
|
||||||
|
This function is obsolete (was used by an old sensitivity analysis)
|
||||||
**********/
|
**********/
|
||||||
|
|
||||||
/* actually load the current ac sensitivity
|
/* actually load the current ac sensitivity
|
||||||
@@ -16,9 +18,7 @@ Author: 1985 Thomas L. Quarles
|
|||||||
#include "suffix.h"
|
#include "suffix.h"
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2sAcLoad(inModel,ckt)
|
MOS2sAcLoad(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
GENmodel *inModel;
|
|
||||||
CKTcircuit *ckt;
|
|
||||||
{
|
{
|
||||||
MOS2model *model = (MOS2model *)inModel;
|
MOS2model *model = (MOS2model *)inModel;
|
||||||
MOS2instance *here;
|
MOS2instance *here;
|
||||||
|
|||||||
@@ -13,11 +13,7 @@ Modified: 2000 AlansFixes
|
|||||||
#include "suffix.h"
|
#include "suffix.h"
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2setup(matrix,inModel,ckt,states)
|
MOS2setup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
|
||||||
SMPmatrix *matrix;
|
|
||||||
GENmodel *inModel;
|
|
||||||
CKTcircuit *ckt;
|
|
||||||
int *states;
|
|
||||||
/* load the MOS2 device structure with those pointers needed later
|
/* load the MOS2 device structure with those pointers needed later
|
||||||
* for fast matrix loading
|
* for fast matrix loading
|
||||||
*/
|
*/
|
||||||
@@ -238,9 +234,7 @@ if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2unsetup(inModel,ckt)
|
MOS2unsetup(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
GENmodel *inModel;
|
|
||||||
CKTcircuit *ckt;
|
|
||||||
{
|
{
|
||||||
MOS2model *model;
|
MOS2model *model;
|
||||||
MOS2instance *here;
|
MOS2instance *here;
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
/**********
|
/**********
|
||||||
Copyright 1990 Regents of the University of California. All rights reserved.
|
Copyright 1990 Regents of the University of California. All rights reserved.
|
||||||
Author: 1985 Thomas L. Quarles
|
Author: 1985 Thomas L. Quarles
|
||||||
|
|
||||||
|
This function is obsolete (was used by an old sensitivity analysis)
|
||||||
**********/
|
**********/
|
||||||
|
|
||||||
/* actually load the current sensitivity
|
/* actually load the current sensitivity
|
||||||
@@ -15,9 +17,7 @@ Author: 1985 Thomas L. Quarles
|
|||||||
#include "suffix.h"
|
#include "suffix.h"
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2sLoad(inModel,ckt)
|
MOS2sLoad(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
GENmodel *inModel;
|
|
||||||
CKTcircuit *ckt;
|
|
||||||
{
|
{
|
||||||
MOS2model *model = (MOS2model *)inModel;
|
MOS2model *model = (MOS2model *)inModel;
|
||||||
MOS2instance *here;
|
MOS2instance *here;
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
Copyright 1990 Regents of the University of California. All rights reserved.
|
Copyright 1990 Regents of the University of California. All rights reserved.
|
||||||
Author: 1985 Thomas L. Quarles
|
Author: 1985 Thomas L. Quarles
|
||||||
Modified: 2000 AlansFixes
|
Modified: 2000 AlansFixes
|
||||||
|
|
||||||
|
This function is obsolete (was used by an old sensitivity analysis)
|
||||||
**********/
|
**********/
|
||||||
|
|
||||||
#include "ngspice.h"
|
#include "ngspice.h"
|
||||||
@@ -12,9 +14,7 @@ Modified: 2000 AlansFixes
|
|||||||
#include "suffix.h"
|
#include "suffix.h"
|
||||||
|
|
||||||
void
|
void
|
||||||
MOS2sPrint(inModel,ckt)
|
MOS2sPrint(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
GENmodel *inModel;
|
|
||||||
CKTcircuit *ckt;
|
|
||||||
/* Pretty print the sensitivity info for all the MOS2
|
/* Pretty print the sensitivity info for all the MOS2
|
||||||
* devices in the circuit.
|
* devices in the circuit.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
/**********
|
/**********
|
||||||
Copyright 1990 Regents of the University of California. All rights reserved.
|
Copyright 1990 Regents of the University of California. All rights reserved.
|
||||||
Author: 1985 Thomas L. Quarles
|
Author: 1985 Thomas L. Quarles
|
||||||
|
|
||||||
|
This function is obsolete (was used by an old sensitivity analysis)
|
||||||
**********/
|
**********/
|
||||||
|
|
||||||
#include "ngspice.h"
|
#include "ngspice.h"
|
||||||
@@ -11,9 +13,7 @@ Author: 1985 Thomas L. Quarles
|
|||||||
#include "suffix.h"
|
#include "suffix.h"
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2sSetup(info,inModel)
|
MOS2sSetup(SENstruct *info, GENmodel *inModel)
|
||||||
SENstruct *info;
|
|
||||||
GENmodel *inModel;
|
|
||||||
/* loop through all the devices and
|
/* loop through all the devices and
|
||||||
* allocate parameter #s to design parameters
|
* allocate parameter #s to design parameters
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
/**********
|
/**********
|
||||||
Copyright 1990 Regents of the University of California. All rights reserved.
|
Copyright 1990 Regents of the University of California. All rights reserved.
|
||||||
Author: 1985 Thomas L. Quarles
|
Author: 1985 Thomas L. Quarles
|
||||||
|
|
||||||
|
This function is obsolete (was used by an old sensitivity analysis)
|
||||||
**********/
|
**********/
|
||||||
|
|
||||||
/* update the charge sensitivities and their derivatives */
|
/* update the charge sensitivities and their derivatives */
|
||||||
@@ -13,9 +15,7 @@ Author: 1985 Thomas L. Quarles
|
|||||||
#include "suffix.h"
|
#include "suffix.h"
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2sUpdate(inModel,ckt)
|
MOS2sUpdate(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
GENmodel *inModel;
|
|
||||||
CKTcircuit *ckt;
|
|
||||||
{
|
{
|
||||||
MOS2model *model = (MOS2model *)inModel;
|
MOS2model *model = (MOS2model *)inModel;
|
||||||
MOS2instance *here;
|
MOS2instance *here;
|
||||||
|
|||||||
@@ -15,9 +15,7 @@ Modified: 2000 AlansFixes
|
|||||||
#define EPSSIL (11.7 * 8.854214871e-12)
|
#define EPSSIL (11.7 * 8.854214871e-12)
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2temp(inModel,ckt)
|
MOS2temp(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
GENmodel *inModel;
|
|
||||||
CKTcircuit *ckt;
|
|
||||||
{
|
{
|
||||||
MOS2model *model = (MOS2model *)inModel;
|
MOS2model *model = (MOS2model *)inModel;
|
||||||
MOS2instance *here;
|
MOS2instance *here;
|
||||||
@@ -130,8 +128,12 @@ MOS2temp(inModel,ckt)
|
|||||||
if (here->MOS2owner != ARCHme) continue;
|
if (here->MOS2owner != ARCHme) continue;
|
||||||
|
|
||||||
/* perform the parameter defaulting */
|
/* perform the parameter defaulting */
|
||||||
|
if(!here->MOS2dtempGiven) {
|
||||||
|
here->MOS2dtemp = 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
if(!here->MOS2tempGiven) {
|
if(!here->MOS2tempGiven) {
|
||||||
here->MOS2temp = ckt->CKTtemp;
|
here->MOS2temp = ckt->CKTtemp + here->MOS2dtemp;
|
||||||
}
|
}
|
||||||
here->MOS2mode = 1;
|
here->MOS2mode = 1;
|
||||||
here->MOS2von = 0;
|
here->MOS2von = 0;
|
||||||
|
|||||||
@@ -13,10 +13,7 @@ Author: 1985 Thomas L. Quarles
|
|||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
MOS2trunc(inModel,ckt,timeStep)
|
MOS2trunc(GENmodel *inModel, CKTcircuit *ckt, double *timeStep)
|
||||||
GENmodel *inModel;
|
|
||||||
CKTcircuit *ckt;
|
|
||||||
double *timeStep;
|
|
||||||
{
|
{
|
||||||
MOS2model *model = (MOS2model *)inModel;
|
MOS2model *model = (MOS2model *)inModel;
|
||||||
MOS2instance *here;
|
MOS2instance *here;
|
||||||
|
|||||||
Reference in New Issue
Block a user