19 #define EPSSIL (11.7 * 8.854214871e-12) 48 double pbfact,pbfact1,pbo;
70 pbfact1= -2*vtnom*(1.5*log(fact1) +
CHARGE*tmp);
104 if (error)
return (error);
142 pbfact= -2*vt*(1.5*log(fact2) +
CHARGE*tmp);
144 tmp = 1/(ratio*sqrt(ratio));
151 tmp = (model->
MOSphi - pbfact1)/fact1;
152 here->
MOStPhi = fact2*tmp + pbfact;
169 tmp = exp(-egfet/vt + egfet1/vtnom);
285 double doping = model->MOSsubstrateDoping *
CM3PM3;
287 if (doping > 1.45e16) {
288 if (!model->MOSphiGiven) {
289 model->MOSphi = 2*vtnom*log(doping/1.45e16);
290 model->MOSphi =
MAX(.1,model->MOSphi);
292 if (!model->MOSgateTypeGiven) {
293 model->MOSgateType = 1;
295 if (!model->MOSgammaGiven) {
299 if (!model->MOSvt0Given) {
302 if (model->MOSgateType != 0) {
303 if (model->MOStype > 0)
304 wkfng = 3.25 + .5*egfet1*(1 - model->MOSgateType);
306 wkfng = 3.25 + .5*egfet1*(1 + model->MOSgateType);
308 if (model->MOStype > 0)
309 wkfngs = wkfng - (3.25 + .5*(egfet1 + model->MOSphi));
311 wkfngs = wkfng - (3.25 + .5*(egfet1 - model->MOSphi));
313 if (!model->MOSsurfaceStateDensityGiven) {
314 model->MOSsurfaceStateDensity = 0;
320 model->MOSoxideCapFactor;
322 if (model->MOStype > 0)
323 model->MOSvt0 = vfb +
324 (model->MOSgamma*sqrt(model->MOSphi) + model->MOSphi);
326 model->MOSvt0 = vfb -
327 (model->MOSgamma*sqrt(model->MOSphi) + model->MOSphi);
331 model->MOSsubstrateDoping = 0;
333 &(model->MOSmodName));
352 arg = 1 - model->MOSfwdCapDepCoeff;
353 sarg = exp( (-model->MOSbulkJctBotGradingCoeff) * log(arg) );
354 sargsw = exp( (-model->MOSbulkJctSideGradingCoeff) * log(arg) );
356 if (model->MOSlevel == 3)
357 pot = model->MOSbulkJctPotential;
361 tmp1 = (1 - model->MOSfwdCapDepCoeff*
362 (1 + model->MOSbulkJctBotGradingCoeff))/arg;
368 (here->
MOSCbd*model->MOSbulkJctBotGradingCoeff*sarg +
369 here->
MOSCbdsw*model->MOSbulkJctSideGradingCoeff*sargsw)*tmp2;
372 here->
MOSCbd*pot*(1 - arg*sarg)/
373 (1 - model->MOSbulkJctBotGradingCoeff)
374 + here->
MOSCbdsw*pot*(1 - arg*sargsw)/
375 (1 - model->MOSbulkJctSideGradingCoeff)
392 arg = 1 - model->MOSfwdCapDepCoeff;
393 sarg = exp( (-model->MOSbulkJctBotGradingCoeff) * log(arg) );
394 sargsw = exp( (-model->MOSbulkJctSideGradingCoeff) * log(arg) );
396 if (model->MOSlevel == 3)
397 pot = model->MOSbulkJctPotential;
401 tmp1 = (1 - model->MOSfwdCapDepCoeff*
402 (1 + model->MOSbulkJctBotGradingCoeff))/arg;
408 (here->
MOSCbs*model->MOSbulkJctBotGradingCoeff*sarg +
409 here->
MOSCbssw*model->MOSbulkJctSideGradingCoeff*sargsw)*tmp2;
412 here->
MOSCbs*pot*(1 - arg*sarg)/
413 (1 - model->MOSbulkJctBotGradingCoeff)
414 + here->
MOSCbssw*pot*(1 - arg*sargsw)/
415 (1 - model->MOSbulkJctSideGradingCoeff)
struct sMOSmodel * MOSnextModel
double MOSgateBulkOverlapCap
MOSinstance * MOSinstances
double MOSbulkJctPotential
unsigned MOSoxideThicknessGiven
double MOStransconductance
unsigned MOSbulkCapFactorGiven
double MOSbulkJctBotGradingCoeff
double MOSsourcePerimeter
unsigned MOSsubstrateDopingGiven
unsigned MOSsurfaceMobilityGiven
double MOSbulkJctSideGradingCoeff
double MOSgateSourceOverlapCap
void MOSfd(MOSmodel *model, MOSinstance *here)
unsigned MOStransconductanceGiven
double MOSjctSatCurDensity
double MOSsubstrateDoping
double MOSsideWallCapFactor
static int mos_dopsetup()
unsigned MOSsideWallCapFactorGiven
double MOSgateSourceOverlapCapFactor
double MOSgateDrainOverlapCap
double MOSeffectiveLength
double MOSgateBulkOverlapCapFactor
double MOSsurfaceMobility
double MOSgateDrainOverlapCapFactor
double MOStTransconductance
struct sMOSinstance * MOSnextInstance
int MOStemp(GENmodel *inModel, CKTcircuit *ckt)
void MOSfs(MOSmodel *model, MOSinstance *here)