remove never used sensitivity analysis code
This commit is contained in:
parent
b6a8613427
commit
b87f5c0563
|
|
@ -28,8 +28,6 @@ IFparm VDMOSpTable[] = { /* parameters */
|
|||
IOPU("temp", VDMOS_TEMP, IF_REAL, "Instance temperature"),
|
||||
IOPU("dtemp", VDMOS_DTEMP, IF_REAL, "Instance temperature difference"),
|
||||
IP( "ic", VDMOS_IC, IF_REALVEC, "Vector of D-S, G-S, B-S voltages"),
|
||||
IP( "sens_l", VDMOS_L_SENS, IF_FLAG, "flag to request sensitivity WRT length"),
|
||||
IP( "sens_w", VDMOS_W_SENS, IF_FLAG, "flag to request sensitivity WRT width"),
|
||||
|
||||
OP( "id", VDMOS_CD, IF_REAL, "Drain current"),
|
||||
OP( "is", VDMOS_CS, IF_REAL, "Source current"),
|
||||
|
|
@ -92,26 +90,6 @@ IFparm VDMOSpTable[] = { /* parameters */
|
|||
OPU( "qbd", VDMOS_QBD, IF_REAL, "Bulk-Drain charge storage"),
|
||||
OPU( "qbs", VDMOS_QBS, IF_REAL, "Bulk-Source charge storage"),
|
||||
OPU( "p", VDMOS_POWER, IF_REAL, "Instaneous power"),
|
||||
OPU( "sens_l_dc", VDMOS_L_SENS_DC, IF_REAL, "dc sensitivity wrt length"),
|
||||
OPU( "sens_l_real", VDMOS_L_SENS_REAL,IF_REAL,
|
||||
"real part of ac sensitivity wrt length"),
|
||||
OPU( "sens_l_imag", VDMOS_L_SENS_IMAG,IF_REAL,
|
||||
"imag part of ac sensitivity wrt length"),
|
||||
OPU( "sens_l_mag", VDMOS_L_SENS_MAG, IF_REAL,
|
||||
"sensitivity wrt l of ac magnitude"),
|
||||
OPU( "sens_l_ph", VDMOS_L_SENS_PH, IF_REAL,
|
||||
"sensitivity wrt l of ac phase"),
|
||||
OPU( "sens_l_cplx", VDMOS_L_SENS_CPLX,IF_COMPLEX, "ac sensitivity wrt length"),
|
||||
OPU( "sens_w_dc", VDMOS_W_SENS_DC, IF_REAL, "dc sensitivity wrt width"),
|
||||
OPU( "sens_w_real", VDMOS_W_SENS_REAL,IF_REAL,
|
||||
"real part of ac sensitivity wrt width"),
|
||||
OPU( "sens_w_imag", VDMOS_W_SENS_IMAG,IF_REAL,
|
||||
"imag part of ac sensitivity wrt width"),
|
||||
OPU( "sens_w_mag", VDMOS_W_SENS_MAG, IF_REAL,
|
||||
"sensitivity wrt w of ac magnitude"),
|
||||
OPU( "sens_w_ph", VDMOS_W_SENS_PH, IF_REAL,
|
||||
"sensitivity wrt w of ac phase"),
|
||||
OPU( "sens_w_cplx", VDMOS_W_SENS_CPLX,IF_COMPLEX, "ac sensitivity wrt width")
|
||||
};
|
||||
|
||||
IFparm VDMOSmPTable[] = { /* model parameters */
|
||||
|
|
|
|||
|
|
@ -19,12 +19,9 @@ VDMOSask(CKTcircuit *ckt, GENinstance *inst, int which, IFvalue *value,
|
|||
IFvalue *select)
|
||||
{
|
||||
VDMOSinstance *here = (VDMOSinstance*)inst;
|
||||
double vr;
|
||||
double vi;
|
||||
double sr;
|
||||
double si;
|
||||
double vm;
|
||||
static char *msg = "Current and power not available for ac analysis";
|
||||
NG_IGNORE(select);
|
||||
|
||||
switch(which) {
|
||||
case VDMOS_TEMP:
|
||||
value->rValue = here->VDMOStemp - CONSTCtoK;
|
||||
|
|
@ -231,126 +228,6 @@ VDMOSask(CKTcircuit *ckt, GENinstance *inst, int which, IFvalue *value,
|
|||
case VDMOS_CQBS:
|
||||
value->rValue = *(ckt->CKTstate0 + here->VDMOScqbs);
|
||||
return(OK);
|
||||
case VDMOS_L_SENS_DC:
|
||||
if(ckt->CKTsenInfo && here->VDMOSsens_l){
|
||||
value->rValue = *(ckt->CKTsenInfo->SEN_Sap[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo);
|
||||
}
|
||||
return(OK);
|
||||
case VDMOS_L_SENS_REAL:
|
||||
if(ckt->CKTsenInfo && here->VDMOSsens_l){
|
||||
value->rValue = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo);
|
||||
}
|
||||
return(OK);
|
||||
case VDMOS_L_SENS_IMAG:
|
||||
if(ckt->CKTsenInfo && here->VDMOSsens_l){
|
||||
value->rValue = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo);
|
||||
}
|
||||
return(OK);
|
||||
case VDMOS_L_SENS_MAG:
|
||||
if(ckt->CKTsenInfo && here->VDMOSsens_l){
|
||||
vr = *(ckt->CKTrhsOld + select->iValue + 1);
|
||||
vi = *(ckt->CKTirhsOld + select->iValue + 1);
|
||||
vm = sqrt(vr*vr + vi*vi);
|
||||
if(vm == 0){
|
||||
value->rValue = 0;
|
||||
return(OK);
|
||||
}
|
||||
sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo);
|
||||
si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo);
|
||||
value->rValue = (vr * sr + vi * si)/vm;
|
||||
}
|
||||
return(OK);
|
||||
case VDMOS_L_SENS_PH:
|
||||
if(ckt->CKTsenInfo && here->VDMOSsens_l){
|
||||
vr = *(ckt->CKTrhsOld + select->iValue + 1);
|
||||
vi = *(ckt->CKTirhsOld + select->iValue + 1);
|
||||
vm = vr*vr + vi*vi;
|
||||
if(vm == 0){
|
||||
value->rValue = 0;
|
||||
return(OK);
|
||||
}
|
||||
sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo);
|
||||
si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo);
|
||||
value->rValue = (vr * si - vi * sr)/vm;
|
||||
}
|
||||
return(OK);
|
||||
case VDMOS_L_SENS_CPLX:
|
||||
if(ckt->CKTsenInfo && here->VDMOSsens_l){
|
||||
value->cValue.real=
|
||||
*(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo);
|
||||
value->cValue.imag=
|
||||
*(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo);
|
||||
}
|
||||
return(OK);
|
||||
case VDMOS_W_SENS_DC:
|
||||
if(ckt->CKTsenInfo && here->VDMOSsens_w){
|
||||
value->rValue = *(ckt->CKTsenInfo->SEN_Sap[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo + here->VDMOSsens_l);
|
||||
}
|
||||
return(OK);
|
||||
case VDMOS_W_SENS_REAL:
|
||||
if(ckt->CKTsenInfo && here->VDMOSsens_w){
|
||||
value->rValue = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo + here->VDMOSsens_l);
|
||||
}
|
||||
return(OK);
|
||||
case VDMOS_W_SENS_IMAG:
|
||||
if(ckt->CKTsenInfo && here->VDMOSsens_w){
|
||||
value->rValue = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo + here->VDMOSsens_l);
|
||||
}
|
||||
return(OK);
|
||||
case VDMOS_W_SENS_MAG:
|
||||
if(ckt->CKTsenInfo && here->VDMOSsens_w){
|
||||
vr = *(ckt->CKTrhsOld + select->iValue + 1);
|
||||
vi = *(ckt->CKTirhsOld + select->iValue + 1);
|
||||
vm = sqrt(vr*vr + vi*vi);
|
||||
if(vm == 0){
|
||||
value->rValue = 0;
|
||||
return(OK);
|
||||
}
|
||||
sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo + here->VDMOSsens_l);
|
||||
si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo + here->VDMOSsens_l);
|
||||
value->rValue = (vr * sr + vi * si)/vm;
|
||||
}
|
||||
return(OK);
|
||||
case VDMOS_W_SENS_PH:
|
||||
if(ckt->CKTsenInfo && here->VDMOSsens_w){
|
||||
vr = *(ckt->CKTrhsOld + select->iValue + 1);
|
||||
vi = *(ckt->CKTirhsOld + select->iValue + 1);
|
||||
vm = vr*vr + vi*vi;
|
||||
if(vm == 0){
|
||||
value->rValue = 0;
|
||||
return(OK);
|
||||
}
|
||||
sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo + here->VDMOSsens_l);
|
||||
si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo + here->VDMOSsens_l);
|
||||
value->rValue = (vr * si - vi * sr)/vm;
|
||||
}
|
||||
return(OK);
|
||||
case VDMOS_W_SENS_CPLX:
|
||||
if(ckt->CKTsenInfo && here->VDMOSsens_w){
|
||||
value->cValue.real=
|
||||
*(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo + here->VDMOSsens_l);
|
||||
value->cValue.imag=
|
||||
*(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+
|
||||
here->VDMOSsenParmNo + here->VDMOSsens_l);
|
||||
}
|
||||
return(OK);
|
||||
case VDMOS_CB :
|
||||
if (ckt->CKTcurrentAnalysis & DOING_AC) {
|
||||
errMsg = TMALLOC(char, strlen(msg) + 1);
|
||||
|
|
|
|||
|
|
@ -231,45 +231,6 @@ typedef struct sVDMOSinstance {
|
|||
double *VDMOSSPdpPtr; /* pointer to sparse matrix element at
|
||||
* (source prime node,drain prime node) */
|
||||
|
||||
int VDMOSsenParmNo; /* parameter # for sensitivity use;
|
||||
set equal to 0 if neither length
|
||||
nor width of the mosfet is a design
|
||||
parameter */
|
||||
unsigned VDMOSsens_l :1; /* field which indicates whether
|
||||
length of the mosfet is a design
|
||||
parameter or not */
|
||||
unsigned VDMOSsens_w :1; /* field which indicates whether
|
||||
width of the mosfet is a design
|
||||
parameter or not */
|
||||
unsigned VDMOSsenPertFlag :1; /* indictes whether the the
|
||||
parameter of the particular instance is
|
||||
to be perturbed */
|
||||
double VDMOScgs;
|
||||
double VDMOScgd;
|
||||
double VDMOScgb;
|
||||
double *VDMOSsens;
|
||||
|
||||
#define VDMOSsenCgs VDMOSsens /* contains pertured values of cgs */
|
||||
#define VDMOSsenCgd VDMOSsens + 6 /* contains perturbed values of cgd*/
|
||||
#define VDMOSsenCgb VDMOSsens + 12 /* contains perturbed values of cgb*/
|
||||
#define VDMOSsenCbd VDMOSsens + 18 /* contains perturbed values of cbd*/
|
||||
#define VDMOSsenCbs VDMOSsens + 24 /* contains perturbed values of cbs*/
|
||||
#define VDMOSsenGds VDMOSsens + 30 /* contains perturbed values of gds*/
|
||||
#define VDMOSsenGbs VDMOSsens + 36 /* contains perturbed values of gbs*/
|
||||
#define VDMOSsenGbd VDMOSsens + 42 /* contains perturbed values of gbd*/
|
||||
#define VDMOSsenGm VDMOSsens + 48 /* contains perturbed values of gm*/
|
||||
#define VDMOSsenGmbs VDMOSsens + 54 /* contains perturbed values of gmbs*/
|
||||
#define VDMOSdphigs_dl VDMOSsens + 60
|
||||
#define VDMOSdphigd_dl VDMOSsens + 61
|
||||
#define VDMOSdphigb_dl VDMOSsens + 62
|
||||
#define VDMOSdphibs_dl VDMOSsens + 63
|
||||
#define VDMOSdphibd_dl VDMOSsens + 64
|
||||
#define VDMOSdphigs_dw VDMOSsens + 65
|
||||
#define VDMOSdphigd_dw VDMOSsens + 66
|
||||
#define VDMOSdphigb_dw VDMOSsens + 67
|
||||
#define VDMOSdphibs_dw VDMOSsens + 68
|
||||
#define VDMOSdphibd_dw VDMOSsens + 69
|
||||
|
||||
} VDMOSinstance ;
|
||||
|
||||
#define VDMOSvbd VDMOSstates+ 0 /* bulk-drain voltage */
|
||||
|
|
@ -297,16 +258,6 @@ typedef struct sVDMOSinstance {
|
|||
|
||||
#define VDMOSnumStates 17
|
||||
|
||||
#define VDMOSsensxpgs VDMOSstates+17 /* charge sensitivities and their derivatives.
|
||||
* +18 for the derivatives
|
||||
* pointer to the beginning of the array */
|
||||
#define VDMOSsensxpgd VDMOSstates+19
|
||||
#define VDMOSsensxpgb VDMOSstates+21
|
||||
#define VDMOSsensxpbs VDMOSstates+23
|
||||
#define VDMOSsensxpbd VDMOSstates+25
|
||||
|
||||
#define VDMOSnumSenStates 10
|
||||
|
||||
|
||||
/* per model data */
|
||||
|
||||
|
|
@ -413,8 +364,6 @@ enum {
|
|||
VDMOS_IC_VBS,
|
||||
VDMOS_IC_VDS,
|
||||
VDMOS_IC_VGS,
|
||||
VDMOS_W_SENS,
|
||||
VDMOS_L_SENS,
|
||||
VDMOS_CB,
|
||||
VDMOS_CG,
|
||||
VDMOS_CS,
|
||||
|
|
@ -508,18 +457,6 @@ enum {
|
|||
VDMOS_CQBD,
|
||||
VDMOS_QBS,
|
||||
VDMOS_CQBS,
|
||||
VDMOS_L_SENS_REAL,
|
||||
VDMOS_L_SENS_IMAG,
|
||||
VDMOS_L_SENS_MAG,
|
||||
VDMOS_L_SENS_PH,
|
||||
VDMOS_L_SENS_CPLX,
|
||||
VDMOS_W_SENS_REAL,
|
||||
VDMOS_W_SENS_IMAG,
|
||||
VDMOS_W_SENS_MAG,
|
||||
VDMOS_W_SENS_PH,
|
||||
VDMOS_W_SENS_CPLX,
|
||||
VDMOS_L_SENS_DC,
|
||||
VDMOS_W_SENS_DC,
|
||||
VDMOS_SOURCERESIST,
|
||||
VDMOS_DRAINRESIST,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -13,6 +13,5 @@ int
|
|||
VDMOSdelete(GENinstance *gen_inst)
|
||||
{
|
||||
VDMOSinstance *inst = (VDMOSinstance *) gen_inst;
|
||||
FREE(inst->VDMOSsens);
|
||||
return OK;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -80,7 +80,6 @@ VDMOSload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
double tempv;
|
||||
#endif /*NOBYPASS*/
|
||||
int error;
|
||||
int SenCond;
|
||||
|
||||
/* loop through all the VDMOS device models */
|
||||
for( ; model != NULL; model = VDMOSnextModel(model)) {
|
||||
|
|
@ -91,17 +90,6 @@ VDMOSload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
vt = CONSTKoverQ * here->VDMOStemp;
|
||||
Check=1;
|
||||
if(ckt->CKTsenInfo){
|
||||
#ifdef SENSDEBUG
|
||||
printf("VDMOSload \n");
|
||||
#endif /* SENSDEBUG */
|
||||
|
||||
if((ckt->CKTsenInfo->SENstatus == PERTURBATION)&&
|
||||
(here->VDMOSsenPertFlag == OFF))continue;
|
||||
|
||||
}
|
||||
SenCond = ckt->CKTsenInfo && here->VDMOSsenPertFlag;
|
||||
|
||||
/*
|
||||
|
||||
*/
|
||||
|
|
@ -145,44 +133,6 @@ VDMOSload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
* share some code, so we put them first - others later on
|
||||
*/
|
||||
|
||||
if(SenCond){
|
||||
#ifdef SENSDEBUG
|
||||
printf("VDMOSsenPertFlag = ON \n");
|
||||
#endif /* SENSDEBUG */
|
||||
if((ckt->CKTsenInfo->SENmode == TRANSEN) &&
|
||||
(ckt->CKTmode & MODEINITTRAN)) {
|
||||
vgs = *(ckt->CKTstate1 + here->VDMOSvgs);
|
||||
vds = *(ckt->CKTstate1 + here->VDMOSvds);
|
||||
vbs = *(ckt->CKTstate1 + here->VDMOSvbs);
|
||||
vbd = *(ckt->CKTstate1 + here->VDMOSvbd);
|
||||
vgb = vgs - vbs;
|
||||
vgd = vgs - vds;
|
||||
}
|
||||
else if (ckt->CKTsenInfo->SENmode == ACSEN){
|
||||
vgb = model->VDMOStype * (
|
||||
*(ckt->CKTrhsOp+here->VDMOSgNode) -
|
||||
*(ckt->CKTrhsOp+here->VDMOSbNode));
|
||||
vbs = *(ckt->CKTstate0 + here->VDMOSvbs);
|
||||
vbd = *(ckt->CKTstate0 + here->VDMOSvbd);
|
||||
vgd = vgb + vbd ;
|
||||
vgs = vgb + vbs ;
|
||||
vds = vbs - vbd ;
|
||||
}
|
||||
else{
|
||||
vgs = *(ckt->CKTstate0 + here->VDMOSvgs);
|
||||
vds = *(ckt->CKTstate0 + here->VDMOSvds);
|
||||
vbs = *(ckt->CKTstate0 + here->VDMOSvbs);
|
||||
vbd = *(ckt->CKTstate0 + here->VDMOSvbd);
|
||||
vgb = vgs - vbs;
|
||||
vgd = vgs - vds;
|
||||
}
|
||||
#ifdef SENSDEBUG
|
||||
printf(" vbs = %.7e ,vbd = %.7e,vgb = %.7e\n",vbs,vbd,vgb);
|
||||
printf(" vgs = %.7e ,vds = %.7e,vgd = %.7e\n",vgs,vds,vgd);
|
||||
#endif /* SENSDEBUG */
|
||||
goto next1;
|
||||
}
|
||||
|
||||
|
||||
if((ckt->CKTmode & (MODEINITFLOAT | MODEINITPRED | MODEINITSMSIG
|
||||
| MODEINITTRAN)) ||
|
||||
|
|
@ -322,11 +272,6 @@ VDMOSload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate1+here->VDMOScapgb) +
|
||||
GateBulkOverlapCap );
|
||||
|
||||
if(ckt->CKTsenInfo){
|
||||
here->VDMOScgs = capgs;
|
||||
here->VDMOScgd = capgd;
|
||||
here->VDMOScgb = capgb;
|
||||
}
|
||||
}
|
||||
goto bypass;
|
||||
}
|
||||
|
|
@ -418,7 +363,7 @@ VDMOSload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
* here we just evaluate the ideal diode current and the
|
||||
* corresponding derivative (conductance).
|
||||
*/
|
||||
next1: if(vbs <= -3*vt) {
|
||||
if(vbs <= -3*vt) {
|
||||
here->VDMOSgbs = ckt->CKTgmin;
|
||||
here->VDMOScbs = here->VDMOSgbs*vbs-SourceSatCur;
|
||||
} else {
|
||||
|
|
@ -649,7 +594,6 @@ next1: if(vbs <= -3*vt) {
|
|||
|
||||
*/
|
||||
|
||||
if(SenCond && (ckt->CKTsenInfo->SENmode==TRANSEN)) goto next2;
|
||||
|
||||
if ( (ckt->CKTmode & MODETRAN) || ( (ckt->CKTmode&MODEINITTRAN)
|
||||
&& !(ckt->CKTmode&MODEUIC)) ) {
|
||||
|
|
@ -681,8 +625,6 @@ next1: if(vbs <= -3*vt) {
|
|||
|
||||
*/
|
||||
|
||||
if(SenCond) goto next2;
|
||||
|
||||
|
||||
/*
|
||||
* check convergence
|
||||
|
|
@ -700,7 +642,7 @@ next1: if(vbs <= -3*vt) {
|
|||
|
||||
/* save things away for next time */
|
||||
|
||||
next2: *(ckt->CKTstate0 + here->VDMOSvbs) = vbs;
|
||||
*(ckt->CKTstate0 + here->VDMOSvbs) = vbs;
|
||||
*(ckt->CKTstate0 + here->VDMOSvbd) = vbd;
|
||||
*(ckt->CKTstate0 + here->VDMOSvgs) = vgs;
|
||||
*(ckt->CKTstate0 + here->VDMOSvds) = vds;
|
||||
|
|
@ -757,26 +699,10 @@ next1: if(vbs <= -3*vt) {
|
|||
*(ckt->CKTstate1+here->VDMOScapgb) +
|
||||
GateBulkOverlapCap );
|
||||
}
|
||||
if(ckt->CKTsenInfo){
|
||||
here->VDMOScgs = capgs;
|
||||
here->VDMOScgd = capgd;
|
||||
here->VDMOScgb = capgb;
|
||||
}
|
||||
/*
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
* store small-signal parameters (for meyer's model)
|
||||
* all parameters already stored, so done...
|
||||
*/
|
||||
if(SenCond){
|
||||
if((ckt->CKTsenInfo->SENmode == DCSEN)||
|
||||
(ckt->CKTsenInfo->SENmode == ACSEN)){
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef PREDICTOR
|
||||
if (ckt->CKTmode & (MODEINITPRED | MODEINITTRAN) ) {
|
||||
*(ckt->CKTstate0 + here->VDMOSqgs) =
|
||||
|
|
@ -810,7 +736,6 @@ next1: if(vbs <= -3*vt) {
|
|||
#ifndef NOBYPASS
|
||||
bypass:
|
||||
#endif
|
||||
if(SenCond) continue;
|
||||
|
||||
if ( (ckt->CKTmode & (MODEINITTRAN)) ||
|
||||
(! (ckt->CKTmode & (MODETRAN)) ) ) {
|
||||
|
|
|
|||
|
|
@ -104,18 +104,6 @@ VDMOSparam(int param, IFvalue *value, GENinstance *inst, IFvalue *select)
|
|||
return(E_BADPARM);
|
||||
}
|
||||
break;
|
||||
case VDMOS_L_SENS:
|
||||
if(value->iValue) {
|
||||
here->VDMOSsenParmNo = 1;
|
||||
here->VDMOSsens_l = 1;
|
||||
}
|
||||
break;
|
||||
case VDMOS_W_SENS:
|
||||
if(value->iValue) {
|
||||
here->VDMOSsenParmNo = 1;
|
||||
here->VDMOSsens_w = 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return(E_BADPARM);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -96,10 +96,6 @@ VDMOSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt,
|
|||
here->VDMOSstates = *states;
|
||||
*states += VDMOSnumStates;
|
||||
|
||||
if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode & TRANSEN) ){
|
||||
*states += VDMOSnumSenStates * (ckt->CKTsenInfo->SENparms);
|
||||
}
|
||||
|
||||
if(!here->VDMOSdrainPerimiterGiven) {
|
||||
here->VDMOSdrainPerimiter = 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue