📄 b3v1atemp.c
字号:
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 + -