⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 b4temp.c

📁 ngspice又一个电子CAD仿真软件代码.功能更全
💻 C
📖 第 1 页 / 共 5 页
字号:
                                       + model->BSIM4pbigbinv * Inv_LW;                  pParam->BSIM4cigbinv = model->BSIM4cigbinv                                       + model->BSIM4lcigbinv * Inv_L                                       + model->BSIM4wcigbinv * Inv_W                                       + model->BSIM4pcigbinv * Inv_LW;                  pParam->BSIM4nigc = model->BSIM4nigc                                       + model->BSIM4lnigc * Inv_L                                       + model->BSIM4wnigc * Inv_W                                       + model->BSIM4pnigc * Inv_LW;                  pParam->BSIM4nigbacc = model->BSIM4nigbacc                                       + model->BSIM4lnigbacc * Inv_L                                       + model->BSIM4wnigbacc * Inv_W                                       + model->BSIM4pnigbacc * Inv_LW;                  pParam->BSIM4nigbinv = model->BSIM4nigbinv                                       + model->BSIM4lnigbinv * Inv_L                                       + model->BSIM4wnigbinv * Inv_W                                       + model->BSIM4pnigbinv * Inv_LW;                  pParam->BSIM4ntox = model->BSIM4ntox                                    + model->BSIM4lntox * Inv_L                                    + model->BSIM4wntox * Inv_W                                    + model->BSIM4pntox * Inv_LW;                  pParam->BSIM4eigbinv = model->BSIM4eigbinv                                       + model->BSIM4leigbinv * Inv_L                                       + model->BSIM4weigbinv * Inv_W                                       + model->BSIM4peigbinv * Inv_LW;                  pParam->BSIM4pigcd = model->BSIM4pigcd                                     + model->BSIM4lpigcd * Inv_L                                     + model->BSIM4wpigcd * Inv_W                                     + model->BSIM4ppigcd * Inv_LW;                  pParam->BSIM4poxedge = model->BSIM4poxedge                                       + model->BSIM4lpoxedge * Inv_L                                       + model->BSIM4wpoxedge * Inv_W                                       + model->BSIM4ppoxedge * Inv_LW;                  pParam->BSIM4xrcrg1 = model->BSIM4xrcrg1                                      + model->BSIM4lxrcrg1 * Inv_L                                      + model->BSIM4wxrcrg1 * Inv_W                                      + model->BSIM4pxrcrg1 * Inv_LW;                  pParam->BSIM4xrcrg2 = model->BSIM4xrcrg2                                      + model->BSIM4lxrcrg2 * Inv_L                                      + model->BSIM4wxrcrg2 * Inv_W                                      + model->BSIM4pxrcrg2 * Inv_LW;                  pParam->BSIM4lambda = model->BSIM4lambda                                      + model->BSIM4llambda * Inv_L                                      + model->BSIM4wlambda * Inv_W                                      + model->BSIM4plambda * Inv_LW;                  pParam->BSIM4vtl = model->BSIM4vtl                                      + model->BSIM4lvtl * Inv_L                                      + model->BSIM4wvtl * Inv_W                                      + model->BSIM4pvtl * Inv_LW;                  pParam->BSIM4xn = model->BSIM4xn                                      + model->BSIM4lxn * Inv_L                                      + model->BSIM4wxn * Inv_W                                      + model->BSIM4pxn * Inv_LW;                  pParam->BSIM4vfbsdoff = model->BSIM4vfbsdoff                                      + model->BSIM4lvfbsdoff * Inv_L                                      + model->BSIM4wvfbsdoff * Inv_W                                      + model->BSIM4pvfbsdoff * Inv_LW;		  pParam->BSIM4cgsl = model->BSIM4cgsl				    + model->BSIM4lcgsl * Inv_L				    + model->BSIM4wcgsl * Inv_W				    + model->BSIM4pcgsl * Inv_LW;		  pParam->BSIM4cgdl = model->BSIM4cgdl				    + model->BSIM4lcgdl * Inv_L				    + model->BSIM4wcgdl * Inv_W				    + model->BSIM4pcgdl * Inv_LW;		  pParam->BSIM4ckappas = model->BSIM4ckappas				       + model->BSIM4lckappas * Inv_L				       + model->BSIM4wckappas * Inv_W 				       + model->BSIM4pckappas * Inv_LW;                  pParam->BSIM4ckappad = model->BSIM4ckappad                                       + model->BSIM4lckappad * Inv_L                                       + model->BSIM4wckappad * Inv_W                                       + model->BSIM4pckappad * Inv_LW;		  pParam->BSIM4cf = model->BSIM4cf				  + model->BSIM4lcf * Inv_L				  + model->BSIM4wcf * Inv_W				  + model->BSIM4pcf * Inv_LW;		  pParam->BSIM4clc = model->BSIM4clc				   + model->BSIM4lclc * Inv_L				   + model->BSIM4wclc * Inv_W				   + model->BSIM4pclc * Inv_LW;		  pParam->BSIM4cle = model->BSIM4cle				   + model->BSIM4lcle * Inv_L				   + model->BSIM4wcle * Inv_W				   + model->BSIM4pcle * Inv_LW;		  pParam->BSIM4vfbcv = model->BSIM4vfbcv				     + model->BSIM4lvfbcv * Inv_L				     + model->BSIM4wvfbcv * Inv_W				     + model->BSIM4pvfbcv * Inv_LW;                  pParam->BSIM4acde = model->BSIM4acde                                    + model->BSIM4lacde * Inv_L                                    + model->BSIM4wacde * Inv_W                                    + model->BSIM4pacde * Inv_LW;                  pParam->BSIM4moin = model->BSIM4moin                                    + model->BSIM4lmoin * Inv_L                                    + model->BSIM4wmoin * Inv_W                                    + model->BSIM4pmoin * Inv_LW;                  pParam->BSIM4noff = model->BSIM4noff                                    + model->BSIM4lnoff * Inv_L                                    + model->BSIM4wnoff * Inv_W                                    + model->BSIM4pnoff * Inv_LW;                  pParam->BSIM4voffcv = model->BSIM4voffcv                                      + model->BSIM4lvoffcv * Inv_L                                      + model->BSIM4wvoffcv * Inv_W                                      + model->BSIM4pvoffcv * Inv_LW;                  pParam->BSIM4abulkCVfactor = 1.0 + pow((pParam->BSIM4clc					     / pParam->BSIM4leffCV),					     pParam->BSIM4cle);	          T0 = (TRatio - 1.0);		  PowWeffWr = pow(pParam->BSIM4weffCJ * 1.0e6, pParam->BSIM4wr) * here->BSIM4nf;	          T1 = T2 = T3 = T4 = 0.0;	          if(model->BSIM4tempMod == 0) {	          	pParam->BSIM4ua = pParam->BSIM4ua + pParam->BSIM4ua1 * T0;	          	pParam->BSIM4ub = pParam->BSIM4ub + pParam->BSIM4ub1 * T0;	          	pParam->BSIM4uc = pParam->BSIM4uc + pParam->BSIM4uc1 * T0;                  	pParam->BSIM4vsattemp = pParam->BSIM4vsat - pParam->BSIM4at * T0;		  	T10 = pParam->BSIM4prt * T0;		     if(model->BSIM4rdsMod) {		  	/* External Rd(V) */		  	T1 = pParam->BSIM4rdw + T10;                  	T2 = model->BSIM4rdwmin + T10;		  	/* External Rs(V) */		  	T3 = pParam->BSIM4rsw + T10;                  	T4 = model->BSIM4rswmin + T10;                     }		  	/* Internal Rds(V) in IV */	          	pParam->BSIM4rds0 = (pParam->BSIM4rdsw + T10)				    	* here->BSIM4nf / PowWeffWr;		  	pParam->BSIM4rdswmin = (model->BSIM4rdswmin + T10)				       	* here->BSIM4nf / PowWeffWr;                  } else { /* tempMod = 1 */	          	pParam->BSIM4ua = pParam->BSIM4ua * (1.0 + pParam->BSIM4ua1 * delTemp) ;	          	pParam->BSIM4ub = pParam->BSIM4ub * (1.0 + pParam->BSIM4ub1 * delTemp);	          	pParam->BSIM4uc = pParam->BSIM4uc * (1.0 + pParam->BSIM4uc1 * delTemp);                  	pParam->BSIM4vsattemp = pParam->BSIM4vsat * (1.0 - pParam->BSIM4at * delTemp);		  	T10 = 1.0 + pParam->BSIM4prt * delTemp;		     if(model->BSIM4rdsMod) {		  	/* External Rd(V) */		  	T1 = pParam->BSIM4rdw * T10;                  	T2 = model->BSIM4rdwmin * T10;		  	/* External Rs(V) */		  	T3 = pParam->BSIM4rsw * T10;                  	T4 = model->BSIM4rswmin * T10;                     }		  	/* Internal Rds(V) in IV */	          	pParam->BSIM4rds0 = pParam->BSIM4rdsw * T10 * here->BSIM4nf / PowWeffWr;		  	pParam->BSIM4rdswmin = model->BSIM4rdswmin * T10 * here->BSIM4nf / PowWeffWr;                  }		  if (T1 < 0.0)		  {   T1 = 0.0;		      printf("Warning: Rdw at current temperature is negative; set to 0.\n");		  }		  if (T2 < 0.0)                  {   T2 = 0.0;                      printf("Warning: Rdwmin at current temperature is negative; set to 0.\n");                  }		  pParam->BSIM4rd0 = T1 / PowWeffWr;                  pParam->BSIM4rdwmin = T2 / PowWeffWr;                  if (T3 < 0.0)                  {   T3 = 0.0;                      printf("Warning: Rsw at current temperature is negative; set to 0.\n");                  }                  if (T4 < 0.0)                  {   T4 = 0.0;                      printf("Warning: Rswmin at current temperature is negative; set to 0.\n");                  }                  pParam->BSIM4rs0 = T3 / PowWeffWr;                  pParam->BSIM4rswmin = T4 / PowWeffWr;                  if (pParam->BSIM4u0 > 1.0)                       pParam->BSIM4u0 = pParam->BSIM4u0 / 1.0e4;                  pParam->BSIM4u0temp = pParam->BSIM4u0				      * pow(TRatio, pParam->BSIM4ute);                   if (pParam->BSIM4eu < 0.0)                  {   pParam->BSIM4eu = 0.0;		      printf("Warning: eu has been negative; reset to 0.0.\n");		  }                /* Source End Velocity Limit  */      	          if((model->BSIM4vtlGiven) && (model->BSIM4vtl > 0.0) )            	  {                       if(model->BSIM4lc < 0.0) pParam->BSIM4lc = 0.0;                     else   pParam->BSIM4lc = model->BSIM4lc ;                     T0 = pParam->BSIM4leff / (pParam->BSIM4xn * pParam->BSIM4leff + pParam->BSIM4lc);                     pParam->BSIM4tfactor = (1.0 - T0) / (1.0 + T0 );             	  }                  pParam->BSIM4cgdo = (model->BSIM4cgdo + pParam->BSIM4cf)				    * pParam->BSIM4weffCV;                  pParam->BSIM4cgso = (model->BSIM4cgso + pParam->BSIM4cf)				    * pParam->BSIM4weffCV;                  pParam->BSIM4cgbo = model->BSIM4cgbo * pParam->BSIM4leffCV * here->BSIM4nf;                  if (!model->BSIM4ndepGiven && model->BSIM4gamma1Given)                  {   T0 = pParam->BSIM4gamma1 * model->BSIM4coxe;                      pParam->BSIM4ndep = 3.01248e22 * T0 * T0;                  }		  pParam->BSIM4phi = Vtm0 * log(pParam->BSIM4ndep / ni)				   + pParam->BSIM4phin + 0.4;	          pParam->BSIM4sqrtPhi = sqrt(pParam->BSIM4phi);	          pParam->BSIM4phis3 = pParam->BSIM4sqrtPhi * pParam->BSIM4phi;                  pParam->BSIM4Xdep0 = sqrt(2.0 * EPSSI / (Charge_q				     * pParam->BSIM4ndep * 1.0e6))                                     * pParam->BSIM4sqrtPhi;                   pParam->BSIM4sqrtXdep0 = sqrt(pParam->BSIM4Xdep0);                  pParam->BSIM4litl = sqrt(3.0 * pParam->BSIM4xj				    * model->BSIM4toxe);                  pParam->BSIM4vbi = Vtm0 * log(pParam->BSIM4nsd			           * pParam->BSIM4ndep / (ni * ni));		  if (pParam->BSIM4ngate > 0.0)                  {   pParam->BSIM4vfbsd = Vtm0 * log(pParam->BSIM4ngate                                         / pParam->BSIM4nsd);		  }		  else		      pParam->BSIM4vfbsd = 0.0;                  pParam->BSIM4cdep0 = sqrt(Charge_q * EPSSI				     * pParam->BSIM4ndep * 1.0e6 / 2.0				     / pParam->BSIM4phi);                  pParam->BSIM4ToxRatio = exp(pParam->BSIM4ntox					* log(model->BSIM4toxref / model->BSIM4toxe))					/ model->BSIM4toxe / model->BSIM4toxe;                  pParam->BSIM4ToxRatioEdge = exp(pParam->BSIM4ntox                                            * log(model->BSIM4toxref                                            / (model->BSIM4toxe * pParam->BSIM4poxedge)))                                            / model->BSIM4toxe / model->BSIM4toxe                                            / pParam->BSIM4poxedge / pParam->BSIM4poxedge;                  pParam->BSIM4Aechvb = (model->BSIM4type == NMOS) ? 4.97232e-7 : 3.42537e-7;                  pParam->BSIM4Bechvb = (model->BSIM4type == NMOS) ? 7.45669e11 : 1.16645e12;                  pParam->BSIM4AechvbEdge = pParam->BSIM4Aechvb * pParam->BSIM4weff					  * pParam->BSIM4dlcig * pParam->BSIM4ToxRatioEdge;                  pParam->BSIM4BechvbEdge = -pParam->BSIM4Bechvb					  * model->BSIM4toxe * pParam->BSIM4poxedge;                  pParam->BSIM4Aechvb *= pParam->BSIM4weff * pParam->BSIM4leff				       * pParam->BSIM4ToxRatio;                  pParam->BSIM4Bechvb *= -model->BSIM4toxe;                  pParam->BSIM4mstar = 0.5 + atan(pParam->BSIM4minv) / PI;                  pParam->BSIM4voffcbn =  pParam->BSIM4voff + model->BSIM4voffl / pParam->BSIM4leff;                  pParam->BSIM4ldeb = sqrt(EPSSI * Vtm0 / (Charge_q                                    * pParam->BSIM4ndep * 1.0e6)) / 3.0;                  pParam->BSIM4acde *= pow((pParam->BSIM4ndep / 2.0e16), -0.25);                  if (model->BSIM4k1Given || model->BSIM4k2Given)	          {   if (!model->BSIM4k1Given)	              {   fprintf(stdout, "Warning: k1 should be specified with k2.\n");                          pParam->BSIM4k1 = 0.53;                      }                      if (!model->BSIM4k2Given)	              {   fprintf(stdout, "Warning: k2 should be specified with k1.\n");                          pParam->BSIM4k2 = -0.0186;                      }                      if (model->BSIM4nsubGiven)                          fprintf(stdout, "Warning: nsub is ignored because k1 or k2 is given.\n");                      if (model->BSIM4xtGiven)                          fprintf(stdout, "Warning: xt is ignored because k1 or k2 is given.\n");                      if (model->BSIM4vbxGiven)                          fprintf(stdout, "Warning: vbx is ignored because k1 or k2 is given.\n");                      if (model->BSIM4gamma1Given)                          fprintf(stdout, "Warning: gamma1 is ignored because k1 or k2 is given.\n");                      if (model->BSIM4gamma2Given)                          fprintf(stdout, "Warning: gamma2 is ignored because k1 or k2 is given.\n");                  }                  else	          {   if (!model->BSIM4vbxGiven)                          pParam->BSIM4vbx = pParam->BSIM4phi - 7.7348e-4                                            * pParam->BSIM4ndep					   * pParam->BSIM4xt * pParam->BSIM4xt;	              if (pParam->BSIM4vbx > 0.0)		          pParam->BSIM4vbx = -pParam->BSIM4vbx;	              if (pParam->BSIM4vbm > 0.0)                          pParam->BSIM4vbm = -pParam->BSIM4vbm;           

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -