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

📄 b3v1atemp.c

📁 ngspice又一个电子CAD仿真软件代码.功能更全
💻 C
📖 第 1 页 / 共 2 页
字号:
		  pParam->BSIM3v1Avth0 = model->BSIM3v1Avth0				    + model->BSIM3v1Alvth0 * Inv_L				    + model->BSIM3v1Awvth0 * Inv_W				    + model->BSIM3v1Apvth0 * Inv_LW;		  pParam->BSIM3v1Aua = model->BSIM3v1Aua				  + model->BSIM3v1Alua * Inv_L				  + model->BSIM3v1Awua * Inv_W				  + model->BSIM3v1Apua * Inv_LW;		  pParam->BSIM3v1Aua1 = model->BSIM3v1Aua1				   + model->BSIM3v1Alua1 * Inv_L				   + model->BSIM3v1Awua1 * Inv_W				   + model->BSIM3v1Apua1 * Inv_LW;		  pParam->BSIM3v1Aub = model->BSIM3v1Aub				  + model->BSIM3v1Alub * Inv_L				  + model->BSIM3v1Awub * Inv_W				  + model->BSIM3v1Apub * Inv_LW;		  pParam->BSIM3v1Aub1 = model->BSIM3v1Aub1				   + model->BSIM3v1Alub1 * Inv_L				   + model->BSIM3v1Awub1 * Inv_W				   + model->BSIM3v1Apub1 * Inv_LW;		  pParam->BSIM3v1Auc = model->BSIM3v1Auc				  + model->BSIM3v1Aluc * Inv_L				  + model->BSIM3v1Awuc * Inv_W				  + model->BSIM3v1Apuc * Inv_LW;		  pParam->BSIM3v1Auc1 = model->BSIM3v1Auc1				   + model->BSIM3v1Aluc1 * Inv_L				   + model->BSIM3v1Awuc1 * Inv_W				   + model->BSIM3v1Apuc1 * Inv_LW;		  pParam->BSIM3v1Au0 = model->BSIM3v1Au0				  + model->BSIM3v1Alu0 * Inv_L				  + model->BSIM3v1Awu0 * Inv_W				  + model->BSIM3v1Apu0 * Inv_LW;		  pParam->BSIM3v1Aute = model->BSIM3v1Aute				   + model->BSIM3v1Alute * Inv_L				   + model->BSIM3v1Awute * Inv_W				   + model->BSIM3v1Apute * Inv_LW;		  pParam->BSIM3v1Avoff = model->BSIM3v1Avoff				    + model->BSIM3v1Alvoff * Inv_L				    + model->BSIM3v1Awvoff * Inv_W				    + model->BSIM3v1Apvoff * Inv_LW;		  pParam->BSIM3v1Adelta = model->BSIM3v1Adelta				     + model->BSIM3v1Aldelta * Inv_L				     + model->BSIM3v1Awdelta * Inv_W				     + model->BSIM3v1Apdelta * Inv_LW;		  pParam->BSIM3v1Ardsw = model->BSIM3v1Ardsw				    + model->BSIM3v1Alrdsw * Inv_L				    + model->BSIM3v1Awrdsw * Inv_W				    + model->BSIM3v1Aprdsw * Inv_LW;		  pParam->BSIM3v1Aprwg = model->BSIM3v1Aprwg				    + model->BSIM3v1Alprwg * Inv_L				    + model->BSIM3v1Awprwg * Inv_W				    + model->BSIM3v1Apprwg * Inv_LW;		  pParam->BSIM3v1Aprwb = model->BSIM3v1Aprwb				    + model->BSIM3v1Alprwb * Inv_L				    + model->BSIM3v1Awprwb * Inv_W				    + model->BSIM3v1Apprwb * Inv_LW;		  pParam->BSIM3v1Aprt = model->BSIM3v1Aprt				    + model->BSIM3v1Alprt * Inv_L				    + model->BSIM3v1Awprt * Inv_W				    + model->BSIM3v1Apprt * Inv_LW;		  pParam->BSIM3v1Aeta0 = model->BSIM3v1Aeta0				    + model->BSIM3v1Aleta0 * Inv_L				    + model->BSIM3v1Aweta0 * Inv_W				    + model->BSIM3v1Apeta0 * Inv_LW;		  pParam->BSIM3v1Aetab = model->BSIM3v1Aetab				    + model->BSIM3v1Aletab * Inv_L				    + model->BSIM3v1Awetab * Inv_W				    + model->BSIM3v1Apetab * Inv_LW;		  pParam->BSIM3v1Apclm = model->BSIM3v1Apclm				    + model->BSIM3v1Alpclm * Inv_L				    + model->BSIM3v1Awpclm * Inv_W				    + model->BSIM3v1Appclm * Inv_LW;		  pParam->BSIM3v1Apdibl1 = model->BSIM3v1Apdibl1				      + model->BSIM3v1Alpdibl1 * Inv_L				      + model->BSIM3v1Awpdibl1 * Inv_W				      + model->BSIM3v1Appdibl1 * Inv_LW;		  pParam->BSIM3v1Apdibl2 = model->BSIM3v1Apdibl2				      + model->BSIM3v1Alpdibl2 * Inv_L				      + model->BSIM3v1Awpdibl2 * Inv_W				      + model->BSIM3v1Appdibl2 * Inv_LW;		  pParam->BSIM3v1Apdiblb = model->BSIM3v1Apdiblb				      + model->BSIM3v1Alpdiblb * Inv_L				      + model->BSIM3v1Awpdiblb * Inv_W				      + model->BSIM3v1Appdiblb * Inv_LW;		  pParam->BSIM3v1Apscbe1 = model->BSIM3v1Apscbe1				      + model->BSIM3v1Alpscbe1 * Inv_L				      + model->BSIM3v1Awpscbe1 * Inv_W				      + model->BSIM3v1Appscbe1 * Inv_LW;		  pParam->BSIM3v1Apscbe2 = model->BSIM3v1Apscbe2				      + model->BSIM3v1Alpscbe2 * Inv_L				      + model->BSIM3v1Awpscbe2 * Inv_W				      + model->BSIM3v1Appscbe2 * Inv_LW;		  pParam->BSIM3v1Apvag = model->BSIM3v1Apvag				    + model->BSIM3v1Alpvag * Inv_L				    + model->BSIM3v1Awpvag * Inv_W				    + model->BSIM3v1Appvag * Inv_LW;		  pParam->BSIM3v1Awr = model->BSIM3v1Awr				  + model->BSIM3v1Alwr * Inv_L				  + model->BSIM3v1Awwr * Inv_W				  + model->BSIM3v1Apwr * Inv_LW;		  pParam->BSIM3v1Adwg = model->BSIM3v1Adwg				   + model->BSIM3v1Aldwg * Inv_L				   + model->BSIM3v1Awdwg * Inv_W				   + model->BSIM3v1Apdwg * Inv_LW;		  pParam->BSIM3v1Adwb = model->BSIM3v1Adwb				   + model->BSIM3v1Aldwb * Inv_L				   + model->BSIM3v1Awdwb * Inv_W				   + model->BSIM3v1Apdwb * Inv_LW;		  pParam->BSIM3v1Ab0 = model->BSIM3v1Ab0				  + model->BSIM3v1Alb0 * Inv_L				  + model->BSIM3v1Awb0 * Inv_W				  + model->BSIM3v1Apb0 * Inv_LW;		  pParam->BSIM3v1Ab1 = model->BSIM3v1Ab1				  + model->BSIM3v1Alb1 * Inv_L				  + model->BSIM3v1Awb1 * Inv_W				  + model->BSIM3v1Apb1 * Inv_LW;		  pParam->BSIM3v1Aalpha0 = model->BSIM3v1Aalpha0				      + model->BSIM3v1Alalpha0 * Inv_L				      + model->BSIM3v1Awalpha0 * Inv_W				      + model->BSIM3v1Apalpha0 * Inv_LW;		  pParam->BSIM3v1Abeta0 = model->BSIM3v1Abeta0				     + model->BSIM3v1Albeta0 * Inv_L				     + model->BSIM3v1Awbeta0 * Inv_W				     + model->BSIM3v1Apbeta0 * Inv_LW;		  /* CV model */		  pParam->BSIM3v1Aelm = model->BSIM3v1Aelm				  + model->BSIM3v1Alelm * Inv_L				  + model->BSIM3v1Awelm * Inv_W				  + model->BSIM3v1Apelm * Inv_LW;		  pParam->BSIM3v1Acgsl = model->BSIM3v1Acgsl				    + model->BSIM3v1Alcgsl * Inv_L				    + model->BSIM3v1Awcgsl * Inv_W				    + model->BSIM3v1Apcgsl * Inv_LW;		  pParam->BSIM3v1Acgdl = model->BSIM3v1Acgdl				    + model->BSIM3v1Alcgdl * Inv_L				    + model->BSIM3v1Awcgdl * Inv_W				    + model->BSIM3v1Apcgdl * Inv_LW;		  pParam->BSIM3v1Ackappa = model->BSIM3v1Ackappa				      + model->BSIM3v1Alckappa * Inv_L				      + model->BSIM3v1Awckappa * Inv_W				      + model->BSIM3v1Apckappa * Inv_LW;		  pParam->BSIM3v1Acf = model->BSIM3v1Acf				  + model->BSIM3v1Alcf * Inv_L				  + model->BSIM3v1Awcf * Inv_W				  + model->BSIM3v1Apcf * Inv_LW;		  pParam->BSIM3v1Aclc = model->BSIM3v1Aclc				   + model->BSIM3v1Alclc * Inv_L				   + model->BSIM3v1Awclc * Inv_W				   + model->BSIM3v1Apclc * Inv_LW;		  pParam->BSIM3v1Acle = model->BSIM3v1Acle				   + model->BSIM3v1Alcle * Inv_L				   + model->BSIM3v1Awcle * Inv_W				   + model->BSIM3v1Apcle * Inv_LW;                  pParam->BSIM3v1AabulkCVfactor = 1.0 + pow((pParam->BSIM3v1Aclc					     / pParam->BSIM3v1Aleff),					     pParam->BSIM3v1Acle);                  pParam->BSIM3v1Acgdo = (model->BSIM3v1Acgdo + pParam->BSIM3v1Acf)				    * pParam->BSIM3v1AweffCV;                  pParam->BSIM3v1Acgso = (model->BSIM3v1Acgso + pParam->BSIM3v1Acf)				    * pParam->BSIM3v1AweffCV;                  pParam->BSIM3v1Acgbo = model->BSIM3v1Acgbo * pParam->BSIM3v1AleffCV;	          T0 = (TRatio - 1.0);	          pParam->BSIM3v1Aua = pParam->BSIM3v1Aua + pParam->BSIM3v1Aua1 * T0;	          pParam->BSIM3v1Aub = pParam->BSIM3v1Aub + pParam->BSIM3v1Aub1 * T0;	          pParam->BSIM3v1Auc = pParam->BSIM3v1Auc + pParam->BSIM3v1Auc1 * T0;                  pParam->BSIM3v1Au0temp = pParam->BSIM3v1Au0				      * pow(TRatio, pParam->BSIM3v1Aute);                   pParam->BSIM3v1Avsattemp = pParam->BSIM3v1Avsat - pParam->BSIM3v1Aat 			                * T0;	          pParam->BSIM3v1Ards0 = (pParam->BSIM3v1Ardsw + pParam->BSIM3v1Aprt * T0)                                    / pow(pParam->BSIM3v1Aweff * 1E6, pParam->BSIM3v1Awr);                  if (!model->BSIM3v1AnpeakGiven && model->BSIM3v1Agamma1Given)                  {   T0 = pParam->BSIM3v1Agamma1 * model->BSIM3v1Acox;                      pParam->BSIM3v1Anpeak = 3.021E22 * T0 * T0;                  }	          Vtm0 = KboQ * Tnom;	          Eg = 1.16 - 7.02e-4 * Tnom * Tnom / (Tnom + 1108.0);	          ni = 1.45e10 * (Tnom / 300.15) * sqrt(Tnom / 300.15)                      * exp(21.5565981 - Eg / (2.0 * Vtm0));		  pParam->BSIM3v1Aphi = 2.0 * Vtm0 			           * log(pParam->BSIM3v1Anpeak / ni);	          pParam->BSIM3v1AsqrtPhi = sqrt(pParam->BSIM3v1Aphi);	          pParam->BSIM3v1Aphis3 = pParam->BSIM3v1AsqrtPhi * pParam->BSIM3v1Aphi;                  pParam->BSIM3v1AXdep0 = sqrt(2.0 * EPSSI / (Charge_q				     * pParam->BSIM3v1Anpeak * 1.0e6))                                     * pParam->BSIM3v1AsqrtPhi;                   pParam->BSIM3v1AsqrtXdep0 = sqrt(pParam->BSIM3v1AXdep0);                  pParam->BSIM3v1Alitl = sqrt(3.0 * pParam->BSIM3v1Axj				    * model->BSIM3v1Atox);                  pParam->BSIM3v1Avbi = Vtm0 * log(1.0e20			           * pParam->BSIM3v1Anpeak / (ni * ni));                  pParam->BSIM3v1Acdep0 = sqrt(Charge_q * EPSSI				     * pParam->BSIM3v1Anpeak * 1.0e6 / 2.0				     / pParam->BSIM3v1Aphi);                          if (model->BSIM3v1Ak1Given || model->BSIM3v1Ak2Given)	          {   if (!model->BSIM3v1Ak1Given)	              {   fprintf(stdout, "Warning: k1 should be specified with k2.\n");                          pParam->BSIM3v1Ak1 = 0.53;                      }                      if (!model->BSIM3v1Ak2Given)	              {   fprintf(stdout, "Warning: k2 should be specified with k1.\n");                          pParam->BSIM3v1Ak2 = -0.0186;                      }                      if (model->BSIM3v1AnsubGiven)                          fprintf(stdout, "Warning: nsub is ignored because k1 or k2 is given.\n");                      if (model->BSIM3v1AxtGiven)                          fprintf(stdout, "Warning: xt is ignored because k1 or k2 is given.\n");                      if (model->BSIM3v1AvbxGiven)                          fprintf(stdout, "Warning: vbx is ignored because k1 or k2 is given.\n");                      if (model->BSIM3v1AvbmGiven)                          fprintf(stdout, "Warning: vbm is ignored because k1 or k2 is given.\n");                      if (model->BSIM3v1Agamma1Given)                          fprintf(stdout, "Warning: gamma1 is ignored because k1 or k2 is given.\n");                      if (model->BSIM3v1Agamma2Given)                          fprintf(stdout, "Warning: gamma2 is ignored because k1 or k2 is given.\n");                  }                  else	          {   if (!model->BSIM3v1AvbxGiven)                          pParam->BSIM3v1Avbx = pParam->BSIM3v1Aphi - 7.7348e-4                                            * pParam->BSIM3v1Anpeak					   * pParam->BSIM3v1Axt * pParam->BSIM3v1Axt;	              if (pParam->BSIM3v1Avbx > 0.0)		          pParam->BSIM3v1Avbx = -pParam->BSIM3v1Avbx;	              if (pParam->BSIM3v1Avbm > 0.0)                          pParam->BSIM3v1Avbm = -pParam->BSIM3v1Avbm;                                 if (!model->BSIM3v1Agamma1Given)                          pParam->BSIM3v1Agamma1 = 5.753e-12					      * sqrt(pParam->BSIM3v1Anpeak)                                              / model->BSIM3v1Acox;                      if (!model->BSIM3v1Agamma2Given)                          pParam->BSIM3v1Agamma2 = 5.753e-12					      * sqrt(pParam->BSIM3v1Ansub)                                              / model->BSIM3v1Acox;                      T0 = pParam->BSIM3v1Agamma1 - pParam->BSIM3v1Agamma2;                      T1 = sqrt(pParam->BSIM3v1Aphi - pParam->BSIM3v1Avbx)			 - pParam->BSIM3v1AsqrtPhi;                      T2 = sqrt(pParam->BSIM3v1Aphi * (pParam->BSIM3v1Aphi			 - pParam->BSIM3v1Avbm)) - pParam->BSIM3v1Aphi;                      pParam->BSIM3v1Ak2 = T0 * T1 / (2.0 * T2 + pParam->BSIM3v1Avbm);                      pParam->BSIM3v1Ak1 = pParam->BSIM3v1Agamma2 - 2.0				      * pParam->BSIM3v1Ak2 * sqrt(pParam->BSIM3v1Aphi				      - pParam->BSIM3v1Avbm);                  } 		  if (pParam->BSIM3v1Ak2 > 0.0)		  {   T0 = 0.5 * pParam->BSIM3v1Ak1 / pParam->BSIM3v1Ak2;                      pParam->BSIM3v1Avbsc = 0.9 * (pParam->BSIM3v1Aphi - T0 * T0);		      if (pParam->BSIM3v1Avbsc > -3.0)		          pParam->BSIM3v1Avbsc = -3.0;		      else if (pParam->BSIM3v1Avbsc < -30.0)		          pParam->BSIM3v1Avbsc = -30.0;		  }		  else		  {   pParam->BSIM3v1Avbsc = -10.0;		  }	          model->BSIM3v1Avtm = KboQ * Temp;	          if (model->BSIM3v1Avth0Given)                      pParam->BSIM3v1Avfb = model->BSIM3v1Atype * pParam->BSIM3v1Avth0                                        - pParam->BSIM3v1Aphi - pParam->BSIM3v1Ak1                                        * pParam->BSIM3v1AsqrtPhi;                  else                      pParam->BSIM3v1Avth0 = model->BSIM3v1Atype * (-1.0                                        + pParam->BSIM3v1Aphi + pParam->BSIM3v1Ak1                                         * pParam->BSIM3v1AsqrtPhi);                  T1 = sqrt(EPSSI / EPSOX * model->BSIM3v1Atox		     * pParam->BSIM3v1AXdep0);                  T0 = exp(-0.5 * pParam->BSIM3v1Adsub * pParam->BSIM3v1Aleff / T1);                  pParam->BSIM3v1Atheta0vb0 = (T0 + 2.0 * T0 * T0);                  T0 = exp(-0.5 * pParam->BSIM3v1Adrout * pParam->BSIM3v1Aleff / T1);                  T2 = (T0 + 2.0 * T0 * T0);                  pParam->BSIM3v1AthetaRout = pParam->BSIM3v1Apdibl1 * T2				         + pParam->BSIM3v1Apdibl2;                  /* process source/drain series resistance */                  here->BSIM3v1AdrainConductance = model->BSIM3v1AsheetResistance 		                              * here->BSIM3v1AdrainSquares;                  if (here->BSIM3v1AdrainConductance > 0.0)                      here->BSIM3v1AdrainConductance = 1.0						  / here->BSIM3v1AdrainConductance;	          else                      here->BSIM3v1AdrainConductance = 0.0;                                     here->BSIM3v1AsourceConductance = model->BSIM3v1AsheetResistance 		                               * here->BSIM3v1AsourceSquares;                  if (here->BSIM3v1AsourceConductance > 0.0)                       here->BSIM3v1AsourceConductance = 1.0						   / here->BSIM3v1AsourceConductance;	          else                      here->BSIM3v1AsourceConductance = 0.0;	      }	      here->BSIM3v1Acgso = pParam->BSIM3v1Acgso;	      here->BSIM3v1Acgdo = pParam->BSIM3v1Acgdo;         }    }    return(OK);}

⌨️ 快捷键说明

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