diff --git a/src/spicelib/devices/vdmos/vdmos.c b/src/spicelib/devices/vdmos/vdmos.c index 9a41c074b..a8a3b2eee 100644 --- a/src/spicelib/devices/vdmos/vdmos.c +++ b/src/spicelib/devices/vdmos/vdmos.c @@ -103,6 +103,9 @@ IFparm VDMOSmPTable[] = { /* model parameters */ IOP("tnom", VDMOS_MOD_TNOM, IF_REAL, "Parameter measurement temperature"), IOP("kf", VDMOS_MOD_KF, IF_REAL, "Flicker noise coefficient"), IOP("af", VDMOS_MOD_AF, IF_REAL, "Flicker noise exponent"), + IP("vdmosn", VDMOS_MOD_NMOS, IF_FLAG, "N type DMOSfet model"), + IP("vdmosp", VDMOS_MOD_PMOS, IF_FLAG, "P type DMOSfet model"), + IP("vdmos", VDMOS_MOD_DMOS, IF_REAL, "DMOS transistor"), /* MOS1 */ IOPR("vt0", VDMOS_MOD_VTO, IF_REAL, "Threshold voltage"), @@ -125,8 +128,6 @@ IFparm VDMOSmPTable[] = { /* model parameters */ IOP("u0", VDMOS_MOD_U0, IF_REAL, "Surface mobility"), IOPR("uo", VDMOS_MOD_U0, IF_REAL, "Surface mobility"), IOP("fc", VDMOS_MOD_FC, IF_REAL, "Forward bias jct. fit parm."), - IP("nmos", VDMOS_MOD_NMOS, IF_FLAG, "N type MOSfet model"), - IP("pmos", VDMOS_MOD_PMOS, IF_FLAG, "P type MOSfet model"), IOP("nsub", VDMOS_MOD_NSUB, IF_REAL, "Substrate doping"), IOP("tpg", VDMOS_MOD_TPG, IF_INTEGER,"Gate type"), IOP("nss", VDMOS_MOD_NSS, IF_REAL, "Surface state density") diff --git a/src/spicelib/devices/vdmos/vdmosdefs.h b/src/spicelib/devices/vdmos/vdmosdefs.h index 4cf9b9a98..d253e409a 100644 --- a/src/spicelib/devices/vdmos/vdmosdefs.h +++ b/src/spicelib/devices/vdmos/vdmosdefs.h @@ -408,6 +408,7 @@ enum { VDMOS_MOD_KF, VDMOS_MOD_AF, VDMOS_MOD_TYPE, + VDMOS_MOD_DMOS, }; /* device questions */ diff --git a/src/spicelib/devices/vdmos/vdmosmask.c b/src/spicelib/devices/vdmos/vdmosmask.c index bf39964d2..071e47551 100644 --- a/src/spicelib/devices/vdmos/vdmosmask.c +++ b/src/spicelib/devices/vdmos/vdmosmask.c @@ -48,6 +48,12 @@ VDMOSmAsk(CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value) case VDMOS_MOD_CBD: value->rValue = model->VDMOScapBD; return(OK); + case VDMOS_MOD_TYPE: + if (model->VDMOStype > 0) + value->sValue = "vdmosn"; + else + value->sValue = "vdmosp"; + return(OK); case VDMOS_MOD_CBS: value->rValue = model->VDMOScapBS; return(OK); @@ -105,12 +111,6 @@ VDMOSmAsk(CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value) case VDMOS_MOD_NSS: value->rValue = model->VDMOSsurfaceStateDensity; return(OK); - case VDMOS_MOD_TYPE: - if (model->VDMOStype > 0) - value->sValue = "nmos"; - else - value->sValue = "pmos"; - return(OK); default: return(E_BADPARM); } diff --git a/src/spicelib/devices/vdmos/vdmosmpar.c b/src/spicelib/devices/vdmos/vdmosmpar.c index 38a28e950..44636c293 100644 --- a/src/spicelib/devices/vdmos/vdmosmpar.c +++ b/src/spicelib/devices/vdmos/vdmosmpar.c @@ -147,6 +147,12 @@ VDMOSmParam(int param, IFvalue *value, GENmodel *inModel) model->VDMOSfNexp = value->rValue; model->VDMOSfNexpGiven = TRUE; break; + case VDMOS_MOD_DMOS: + if (value->iValue) { + model->VDMOStype = 1; + model->VDMOStypeGiven = TRUE; + } + break; default: return(E_BADPARM); }