b3mpar.c

来自「ngspice又一个电子CAD仿真软件代码.功能更全」· C语言 代码 · 共 1,719 行 · 第 1/4 页

C
1,719
字号
/**** BSIM3v3.2.4, Released by Xuemei Xi 12/21/2001 ****//********** * Copyright 2001 Regents of the University of California. All rights reserved. * File: b3mpar.c of BSIM3v3.2.4 * Author: 1995 Min-Chie Jeng and Mansun Chan.  * Author: 1997-1999 Weidong Liu. * Author: 2001  Xuemei Xi * Modified by Paolo Nenzi 2002 and Dietmar Warning 2003 **********/#include "ngspice.h"#include "bsim3def.h"#include "ifsim.h"#include "sperror.h"#include "suffix.h"intBSIM3mParam(int param, IFvalue *value, GENmodel *inMod){    BSIM3model *mod = (BSIM3model*)inMod;    switch(param)    {   case  BSIM3_MOD_MOBMOD :            mod->BSIM3mobMod = value->iValue;            mod->BSIM3mobModGiven = TRUE;            break;        case  BSIM3_MOD_BINUNIT :            mod->BSIM3binUnit = value->iValue;            mod->BSIM3binUnitGiven = TRUE;            break;        case  BSIM3_MOD_PARAMCHK :            mod->BSIM3paramChk = value->iValue;            mod->BSIM3paramChkGiven = TRUE;            break;        case  BSIM3_MOD_CAPMOD :            mod->BSIM3capMod = value->iValue;            mod->BSIM3capModGiven = TRUE;            break;        case BSIM3_MOD_ACMMOD:            mod->BSIM3acmMod = value->iValue;            mod->BSIM3acmModGiven = TRUE;            break;        case  BSIM3_MOD_NOIMOD :            mod->BSIM3noiMod = value->iValue;            mod->BSIM3noiModGiven = TRUE;            break;        case  BSIM3_MOD_VERSION :            mod->BSIM3version = value->sValue;            mod->BSIM3versionGiven = TRUE;            break;        case  BSIM3_MOD_TOX :            mod->BSIM3tox = value->rValue;            mod->BSIM3toxGiven = TRUE;            break;        case  BSIM3_MOD_TOXM :            mod->BSIM3toxm = value->rValue;            mod->BSIM3toxmGiven = TRUE;            break;        case  BSIM3_MOD_CDSC :            mod->BSIM3cdsc = value->rValue;            mod->BSIM3cdscGiven = TRUE;            break;        case  BSIM3_MOD_CDSCB :            mod->BSIM3cdscb = value->rValue;            mod->BSIM3cdscbGiven = TRUE;            break;        case  BSIM3_MOD_CDSCD :            mod->BSIM3cdscd = value->rValue;            mod->BSIM3cdscdGiven = TRUE;            break;        case  BSIM3_MOD_CIT :            mod->BSIM3cit = value->rValue;            mod->BSIM3citGiven = TRUE;            break;        case  BSIM3_MOD_NFACTOR :            mod->BSIM3nfactor = value->rValue;            mod->BSIM3nfactorGiven = TRUE;            break;        case BSIM3_MOD_XJ:            mod->BSIM3xj = value->rValue;            mod->BSIM3xjGiven = TRUE;            break;        case BSIM3_MOD_VSAT:            mod->BSIM3vsat = value->rValue;            mod->BSIM3vsatGiven = TRUE;            break;        case BSIM3_MOD_A0:            mod->BSIM3a0 = value->rValue;            mod->BSIM3a0Given = TRUE;            break;                case BSIM3_MOD_AGS:            mod->BSIM3ags= value->rValue;            mod->BSIM3agsGiven = TRUE;            break;                case BSIM3_MOD_A1:            mod->BSIM3a1 = value->rValue;            mod->BSIM3a1Given = TRUE;            break;        case BSIM3_MOD_A2:            mod->BSIM3a2 = value->rValue;            mod->BSIM3a2Given = TRUE;            break;        case BSIM3_MOD_AT:            mod->BSIM3at = value->rValue;            mod->BSIM3atGiven = TRUE;            break;        case BSIM3_MOD_KETA:            mod->BSIM3keta = value->rValue;            mod->BSIM3ketaGiven = TRUE;            break;            case BSIM3_MOD_NSUB:            mod->BSIM3nsub = value->rValue;            mod->BSIM3nsubGiven = TRUE;            break;        case BSIM3_MOD_NPEAK:            mod->BSIM3npeak = value->rValue;            mod->BSIM3npeakGiven = TRUE;	    if (mod->BSIM3npeak > 1.0e20)		mod->BSIM3npeak *= 1.0e-6;            break;        case BSIM3_MOD_NGATE:            mod->BSIM3ngate = value->rValue;            mod->BSIM3ngateGiven = TRUE;	    if (mod->BSIM3ngate > 1.0e23)		mod->BSIM3ngate *= 1.0e-6;            break;        case BSIM3_MOD_GAMMA1:            mod->BSIM3gamma1 = value->rValue;            mod->BSIM3gamma1Given = TRUE;            break;        case BSIM3_MOD_GAMMA2:            mod->BSIM3gamma2 = value->rValue;            mod->BSIM3gamma2Given = TRUE;            break;        case BSIM3_MOD_VBX:            mod->BSIM3vbx = value->rValue;            mod->BSIM3vbxGiven = TRUE;            break;        case BSIM3_MOD_VBM:            mod->BSIM3vbm = value->rValue;            mod->BSIM3vbmGiven = TRUE;            break;        case BSIM3_MOD_XT:            mod->BSIM3xt = value->rValue;            mod->BSIM3xtGiven = TRUE;            break;        case  BSIM3_MOD_K1:            mod->BSIM3k1 = value->rValue;            mod->BSIM3k1Given = TRUE;            break;        case  BSIM3_MOD_KT1:            mod->BSIM3kt1 = value->rValue;            mod->BSIM3kt1Given = TRUE;            break;        case  BSIM3_MOD_KT1L:            mod->BSIM3kt1l = value->rValue;            mod->BSIM3kt1lGiven = TRUE;            break;        case  BSIM3_MOD_KT2:            mod->BSIM3kt2 = value->rValue;            mod->BSIM3kt2Given = TRUE;            break;        case  BSIM3_MOD_K2:            mod->BSIM3k2 = value->rValue;            mod->BSIM3k2Given = TRUE;            break;        case  BSIM3_MOD_K3:            mod->BSIM3k3 = value->rValue;            mod->BSIM3k3Given = TRUE;            break;        case  BSIM3_MOD_K3B:            mod->BSIM3k3b = value->rValue;            mod->BSIM3k3bGiven = TRUE;            break;        case  BSIM3_MOD_NLX:            mod->BSIM3nlx = value->rValue;            mod->BSIM3nlxGiven = TRUE;            break;        case  BSIM3_MOD_W0:            mod->BSIM3w0 = value->rValue;            mod->BSIM3w0Given = TRUE;            break;        case  BSIM3_MOD_DVT0:                           mod->BSIM3dvt0 = value->rValue;            mod->BSIM3dvt0Given = TRUE;            break;        case  BSIM3_MOD_DVT1:                         mod->BSIM3dvt1 = value->rValue;            mod->BSIM3dvt1Given = TRUE;            break;        case  BSIM3_MOD_DVT2:                         mod->BSIM3dvt2 = value->rValue;            mod->BSIM3dvt2Given = TRUE;            break;        case  BSIM3_MOD_DVT0W:                           mod->BSIM3dvt0w = value->rValue;            mod->BSIM3dvt0wGiven = TRUE;            break;        case  BSIM3_MOD_DVT1W:                         mod->BSIM3dvt1w = value->rValue;            mod->BSIM3dvt1wGiven = TRUE;            break;        case  BSIM3_MOD_DVT2W:                         mod->BSIM3dvt2w = value->rValue;            mod->BSIM3dvt2wGiven = TRUE;            break;        case  BSIM3_MOD_DROUT:                         mod->BSIM3drout = value->rValue;            mod->BSIM3droutGiven = TRUE;            break;        case  BSIM3_MOD_DSUB:                         mod->BSIM3dsub = value->rValue;            mod->BSIM3dsubGiven = TRUE;            break;        case BSIM3_MOD_VTH0:            mod->BSIM3vth0 = value->rValue;            mod->BSIM3vth0Given = TRUE;            break;        case BSIM3_MOD_UA:            mod->BSIM3ua = value->rValue;            mod->BSIM3uaGiven = TRUE;            break;        case BSIM3_MOD_UA1:            mod->BSIM3ua1 = value->rValue;            mod->BSIM3ua1Given = TRUE;            break;        case BSIM3_MOD_UB:            mod->BSIM3ub = value->rValue;            mod->BSIM3ubGiven = TRUE;            break;        case BSIM3_MOD_UB1:            mod->BSIM3ub1 = value->rValue;            mod->BSIM3ub1Given = TRUE;            break;        case BSIM3_MOD_UC:            mod->BSIM3uc = value->rValue;            mod->BSIM3ucGiven = TRUE;            break;        case BSIM3_MOD_UC1:            mod->BSIM3uc1 = value->rValue;            mod->BSIM3uc1Given = TRUE;            break;        case  BSIM3_MOD_U0 :            mod->BSIM3u0 = value->rValue;            mod->BSIM3u0Given = TRUE;            break;        case  BSIM3_MOD_UTE :            mod->BSIM3ute = value->rValue;            mod->BSIM3uteGiven = TRUE;            break;        case BSIM3_MOD_VOFF:            mod->BSIM3voff = value->rValue;            mod->BSIM3voffGiven = TRUE;            break;        case  BSIM3_MOD_DELTA :            mod->BSIM3delta = value->rValue;            mod->BSIM3deltaGiven = TRUE;            break;        case BSIM3_MOD_RDSW:            mod->BSIM3rdsw = value->rValue;            mod->BSIM3rdswGiven = TRUE;            break;                             case BSIM3_MOD_PRWG:            mod->BSIM3prwg = value->rValue;            mod->BSIM3prwgGiven = TRUE;            break;                             case BSIM3_MOD_PRWB:            mod->BSIM3prwb = value->rValue;            mod->BSIM3prwbGiven = TRUE;            break;                             case BSIM3_MOD_PRT:            mod->BSIM3prt = value->rValue;            mod->BSIM3prtGiven = TRUE;            break;                             case BSIM3_MOD_ETA0:            mod->BSIM3eta0 = value->rValue;            mod->BSIM3eta0Given = TRUE;            break;                         case BSIM3_MOD_ETAB:            mod->BSIM3etab = value->rValue;            mod->BSIM3etabGiven = TRUE;            break;                         case BSIM3_MOD_PCLM:            mod->BSIM3pclm = value->rValue;            mod->BSIM3pclmGiven = TRUE;            break;                         case BSIM3_MOD_PDIBL1:            mod->BSIM3pdibl1 = value->rValue;            mod->BSIM3pdibl1Given = TRUE;            break;                         case BSIM3_MOD_PDIBL2:            mod->BSIM3pdibl2 = value->rValue;            mod->BSIM3pdibl2Given = TRUE;            break;                         case BSIM3_MOD_PDIBLB:            mod->BSIM3pdiblb = value->rValue;            mod->BSIM3pdiblbGiven = TRUE;            break;                         case BSIM3_MOD_PSCBE1:            mod->BSIM3pscbe1 = value->rValue;            mod->BSIM3pscbe1Given = TRUE;            break;                         case BSIM3_MOD_PSCBE2:            mod->BSIM3pscbe2 = value->rValue;            mod->BSIM3pscbe2Given = TRUE;            break;                         case BSIM3_MOD_PVAG:            mod->BSIM3pvag = value->rValue;            mod->BSIM3pvagGiven = TRUE;            break;                         case  BSIM3_MOD_WR :            mod->BSIM3wr = value->rValue;            mod->BSIM3wrGiven = TRUE;            break;        case  BSIM3_MOD_DWG :            mod->BSIM3dwg = value->rValue;            mod->BSIM3dwgGiven = TRUE;            break;        case  BSIM3_MOD_DWB :            mod->BSIM3dwb = value->rValue;            mod->BSIM3dwbGiven = TRUE;            break;        case  BSIM3_MOD_B0 :            mod->BSIM3b0 = value->rValue;            mod->BSIM3b0Given = TRUE;            break;        case  BSIM3_MOD_B1 :            mod->BSIM3b1 = value->rValue;            mod->BSIM3b1Given = TRUE;            break;        case  BSIM3_MOD_ALPHA0 :            mod->BSIM3alpha0 = value->rValue;            mod->BSIM3alpha0Given = TRUE;            break;        case  BSIM3_MOD_ALPHA1 :            mod->BSIM3alpha1 = value->rValue;            mod->BSIM3alpha1Given = TRUE;            break;        case  BSIM3_MOD_BETA0 :            mod->BSIM3beta0 = value->rValue;            mod->BSIM3beta0Given = TRUE;            break;        case  BSIM3_MOD_IJTH :            mod->BSIM3ijth = value->rValue;            mod->BSIM3ijthGiven = TRUE;            break;        case  BSIM3_MOD_VFB :            mod->BSIM3vfb = value->rValue;            mod->BSIM3vfbGiven = TRUE;            break;        case  BSIM3_MOD_ELM :            mod->BSIM3elm = value->rValue;            mod->BSIM3elmGiven = TRUE;            break;        case  BSIM3_MOD_CGSL :            mod->BSIM3cgsl = value->rValue;            mod->BSIM3cgslGiven = TRUE;            break;        case  BSIM3_MOD_CGDL :            mod->BSIM3cgdl = value->rValue;            mod->BSIM3cgdlGiven = TRUE;            break;        case  BSIM3_MOD_CKAPPA :            mod->BSIM3ckappa = value->rValue;            mod->BSIM3ckappaGiven = TRUE;            break;        case  BSIM3_MOD_CF :            mod->BSIM3cf = value->rValue;            mod->BSIM3cfGiven = TRUE;            break;        case  BSIM3_MOD_CLC :            mod->BSIM3clc = value->rValue;            mod->BSIM3clcGiven = TRUE;            break;        case  BSIM3_MOD_CLE :            mod->BSIM3cle = value->rValue;            mod->BSIM3cleGiven = TRUE;            break;        case  BSIM3_MOD_DWC :            mod->BSIM3dwc = value->rValue;            mod->BSIM3dwcGiven = TRUE;            break;        case  BSIM3_MOD_DLC :            mod->BSIM3dlc = value->rValue;            mod->BSIM3dlcGiven = TRUE;            break;        case  BSIM3_MOD_VFBCV :            mod->BSIM3vfbcv = value->rValue;            mod->BSIM3vfbcvGiven = TRUE;            break;        case  BSIM3_MOD_ACDE :            mod->BSIM3acde = value->rValue;            mod->BSIM3acdeGiven = TRUE;            break;        case  BSIM3_MOD_MOIN :            mod->BSIM3moin = value->rValue;            mod->BSIM3moinGiven = TRUE;            break;        case  BSIM3_MOD_NOFF :            mod->BSIM3noff = value->rValue;            mod->BSIM3noffGiven = TRUE;            break;        case  BSIM3_MOD_VOFFCV :            mod->BSIM3voffcv = value->rValue;            mod->BSIM3voffcvGiven = TRUE;            break;        case  BSIM3_MOD_TCJ :            mod->BSIM3tcj = value->rValue;            mod->BSIM3tcjGiven = TRUE;            break;        case  BSIM3_MOD_TPB :            mod->BSIM3tpb = value->rValue;            mod->BSIM3tpbGiven = TRUE;            break;        case  BSIM3_MOD_TCJSW :            mod->BSIM3tcjsw = value->rValue;            mod->BSIM3tcjswGiven = TRUE;            break;        case  BSIM3_MOD_TPBSW :            mod->BSIM3tpbsw = value->rValue;            mod->BSIM3tpbswGiven = TRUE;            break;        case  BSIM3_MOD_TCJSWG :

⌨️ 快捷键说明

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