home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 13 / 13.iso / p / p064 / 3.ddi / M.H < prev    next >
Encoding:
C/C++ Source or Header  |  1991-07-01  |  18.9 KB  |  546 lines

  1. /****************************************************************************/
  2. /*        Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991                  */
  3. /*          By MicroSim Corporation, All Rights Reserved                    */
  4. /****************************************************************************/
  5. /* m.h
  6.  *   $Revision:   1.15  $
  7.  *   $Author:   pwt  $
  8.  *   $Date:   13 Jun 1991 20:23:20  $ */
  9.  
  10. /******************* USERS OF DEVICE EQUATIONS OPTION ***********************/
  11.  
  12. /* WARNING: the procedure for adding user-specified parameters has changed  */
  13. /*        slightly from version 4.00 and up.                    */
  14.  
  15. /******** To add model parameters, see the comments just before    **********/
  16. /******** the definition of the model's structure (M_).  Do not    **********/
  17. /******** change the device structure (m_).               **********/
  18.  
  19. /* MOSFET definitions */
  20.  
  21. /*
  22. pwt    ?? Aug 86    creation
  23. pwt    17 Mar 88    implement shared data area in device instance
  24. imw    17 Aug 88    expressions
  25. pwt    06 Oct 88    add "M" (multiplier) for device instance
  26. pwt    04 May 90    remove instance values saved for bypass calculations
  27. */
  28.  
  29. struct mac_def {    /* AC values */
  30.   double        /* capacitances */
  31.     mac_cgdb,    /* Ward-Dutton capacitance values */
  32.     mac_cggb,    /* note: aliases below */
  33.     mac_cgsb,
  34.     mac_cbdb,
  35.     mac_cbgb,
  36.     mac_cbsb,
  37.     mac_cddb,    /* capacitance values for BSIM */
  38.     mac_cdgb,
  39.     mac_cdsb,
  40.     mac_cbd,    /* substrate-junction capacitance values */
  41.     mac_cbs;
  42. #define mac_cgdo    mac_cgdb    /* aliases: Meyer capacitance values */
  43. #define mac_cgso    mac_cgsb
  44. #define mac_cgbo    mac_cggb
  45.   };
  46.  
  47. struct msv_def {    /* state vector */
  48.   struct qi_def     /* capacitor charges & currents */
  49.     msv_cgs,    /* note: aliases below */
  50.     msv_cgd,
  51.     msv_cgb,
  52.     msv_cbd,
  53.     msv_cbs;
  54. #define msv_cb        msv_cgs /* aliases: capacitor currents & charges */
  55. #define msv_cg        msv_cgd
  56. #define msv_cd        msv_cgb
  57.  
  58.   double        /* voltages */
  59.     msv_vds,
  60.     msv_vgs,
  61.     msv_vbs;
  62.  
  63.   double        /* device capacitances (w/o overlaps)*/
  64.     msv_capgs,
  65.     msv_capgd,
  66.     msv_capgb;
  67.   };
  68.  
  69. /* state-vector access */
  70.  
  71. #define M_VDS(vect)    (sv[vect]->msv_vds)
  72. #define M_VGS(vect)    (sv[vect]->msv_vgs)
  73. #define M_VBS(vect)    (sv[vect]->msv_vbs)
  74.  
  75. #define M_CGS(vect)    (sv[vect]->msv_capgs)
  76. #define M_CGD(vect)    (sv[vect]->msv_capgd)
  77. #define M_CGB(vect)    (sv[vect]->msv_capgb)
  78.  
  79. #define M_QIGS(vect)    (sv[vect]->msv_cgs)
  80. #define M_QCGS(vect)    (sv[vect]->msv_cgs.qi_q)
  81. #define M_ICGS(vect)    (sv[vect]->msv_cgs.qi_i)
  82.  
  83. #define M_QIGD(vect)    (sv[vect]->msv_cgd)
  84. #define M_QCGD(vect)    (sv[vect]->msv_cgd.qi_q)
  85. #define M_ICGD(vect)    (sv[vect]->msv_cgd.qi_i)
  86.  
  87. #define M_QIGB(vect)    (sv[vect]->msv_cgb)
  88. #define M_QCGB(vect)    (sv[vect]->msv_cgb.qi_q)
  89. #define M_ICGB(vect)    (sv[vect]->msv_cgb.qi_i)
  90.  
  91. #define M_QIBD(vect)    (sv[vect]->msv_cbd)
  92. #define M_QCBD(vect)    (sv[vect]->msv_cbd.qi_q)
  93. #define M_ICBD(vect)    (sv[vect]->msv_cbd.qi_i)
  94.  
  95. #define M_QIBS(vect)    (sv[vect]->msv_cbs)
  96. #define M_QCBS(vect)    (sv[vect]->msv_cbs.qi_q)
  97. #define M_ICBS(vect)    (sv[vect]->msv_cbs.qi_i)
  98.  
  99. #define M_QICB(vect)    (sv[vect]->msv_cb)
  100. #define M_QCB(vect)    (sv[vect]->msv_cb.qi_q)
  101. #define M_ICB(vect)    (sv[vect]->msv_cb.qi_i)
  102.  
  103. #define M_QICG(vect)    (sv[vect]->msv_cg)
  104. #define M_QCG(vect)    (sv[vect]->msv_cg.qi_q)
  105. #define M_ICG(vect)    (sv[vect]->msv_cg.qi_i)
  106.  
  107. #define M_QICD(vect)    (sv[vect]->msv_cd)
  108. #define M_QCD(vect)    (sv[vect]->msv_cd.qi_q)
  109. #define M_ICD(vect)    (sv[vect]->msv_cd.qi_i)
  110.  
  111. /* device instance */
  112.  
  113. struct m_ {
  114.   struct m_ *m_next;
  115.   char        *m_name;
  116.   struct M_ *m_model;
  117.  
  118.   CKT_IDX        /* circuit matrix indices: external nodes */
  119.     m_D,
  120.     m_G,
  121.     m_S,
  122.     m_B;
  123.  
  124.   int    m_off;
  125.  
  126.   /* device parameters and expressions */
  127.   /* MUST FOLLOW m_off */
  128.  
  129.   DXPR( m_vds,    mx_vds);  /* IC= */
  130.   DXPR( m_vgs,    mx_vgs);
  131.   DXPR( m_vbs,    mx_vbs);
  132.  
  133.   /* instance geometries */
  134.   DXPR( m_l,    mx_l);
  135.   DXPR( m_w,    mx_w);
  136.   DXPR( m_ad,    mx_ad);
  137.   DXPR( m_as,    mx_as);
  138.   DXPR( m_pd,    mx_pd);
  139.   DXPR( m_ps,    mx_ps);
  140.   DXPR( m_nrd,    mx_nrd);
  141.   DXPR( m_nrs,    mx_nrs);
  142.   DXPR( m_nrg,    mx_nrg);
  143.   DXPR( m_nrb,    mx_nrb);
  144.   DXPR( m_m,    mx_m);
  145.  
  146.   double        /* reserved: pre-computed values */
  147.     m_idsat,    /* = area-scaled d-b saturation current */
  148.     m_issat,    /* = area-scaled s-b saturation current */
  149.     m_rd,        /* = 1/( RSH-scaled resistance or model value ) */
  150.     m_rs,        /* = 1/( RSH-scaled resistance or model value ) */
  151.     m_rg,        /* = 1/( RSH-scaled resistance or model value ) */
  152.     m_rb;        /* = 1/( RSH-scaled resistance or model value ) */
  153.  
  154.   int    m_mode;     /* values saved from previous iteration */
  155.   double
  156.     m_von,
  157.     m_vdsat,
  158.     m_xqc;
  159.  
  160.   CKT_IDX        /* circuit matrix indices: internal nodes */
  161.     m_d,
  162.     m_g,
  163.     m_s,
  164.     m_b;
  165.  
  166.   MTX_IDX        /* MatPrm indices: conductance terms */
  167.     m_Dd,
  168.     m_gb,
  169.     m_gd,
  170.     m_gs,
  171.     m_Ss,
  172.     m_bg,
  173.     m_bd,
  174.     m_bs,
  175.     m_dD,
  176.     m_dg,
  177.     m_db,
  178.     m_ds,
  179.     m_sg,
  180.     m_sS,
  181.     m_sb,
  182.     m_sd,
  183.     m_DD,
  184.     m_gg,
  185.     m_SS,
  186.     m_bb,
  187.     m_dd,
  188.     m_ss,
  189.     m_GG,
  190.     m_Gg,
  191.     m_gG,
  192.     m_BB,
  193.     m_Bb,
  194.     m_bB;
  195.  
  196.   MTX_IDX        /* MatPrm indices: branch currents */
  197.     m_id,
  198.     m_ig,
  199.     m_ib,
  200.     m_is,
  201.     m_iD;
  202.  
  203.   double        /* "current" values */
  204.     mcv_id,     /* currents */
  205.     mcv_ibs,
  206.     mcv_ibd,
  207.     mcv_gm,     /* device conductances */
  208.     mcv_gds,
  209.     mcv_gmbs,
  210.     mcv_gbd,
  211.     mcv_gbs;
  212.  
  213.   struct {        /* shared data area */
  214.     struct mac_def    m_ac;        /* AC (capacitance values) */
  215.     struct msv_def    m_sv[MSTVCT];    /* state vectors (transient values) */
  216.     }    m_sda;
  217.   };
  218.  
  219. /******************* USERS OF DEVICE EQUATIONS OPTION ***********************/
  220. /*                                        */
  221. /*    NOTE: from 4.00 onward, this procedure has changed slightly.        */
  222. /*        See additional material below.                    */
  223. /*                                        */
  224. /******** To add model parameters, add them to the definition of   **********/
  225. /******** model's structure (M_) and the value structure           **********/
  226. /******** (M_Assoc[]).    The ASSOCIATE macro causes an element in   **********/
  227. /******** the model structure to be associated with a default       **********/
  228. /******** value and a name.  This association is used during       **********/
  229. /******** read-in to allocate memory for the model and to read in  **********/
  230. /******** and default each parameter in a .MODEL statement.       **********/
  231. /******** DO NOT CHANGE THE MODEL PARAMETERS SUPPLIED BY MICROSIM. **********/
  232. /******** In other words, add new model parameters to the end of   **********/
  233. /******** the list, not the beginning or the middle.           **********/
  234.  
  235. /* 4.00+ : in order to add a parameter to the model struct, the MXPR macro  */
  236. /*       must be used. This requires two names as arguments.            */
  237. /*       The first is the parameter's name (for example, M_user1).        */
  238. /*       The second should be the same as the first with an "x" after the */
  239. /*       "M" (for example, Mx_user1).                     */
  240.  
  241. /*       The ASSOCIATE macro is used the same way as before            */
  242.  
  243. /* device model */
  244.  
  245. struct M_ {
  246.   struct M_ *M_next;
  247.   char        *M_name;
  248.   struct M_ *M_nom;
  249.   struct M_ *M_ako;
  250.  
  251.   int        M_type;    /* device type == N_TYPE or P_TYPE */
  252.  
  253.   double    /* reserved: pre-computed values */
  254.             /* Note: F1, F2, F3 are obsolete */
  255.     M_vinit,    /* = -1 */
  256.     M_vbi,        /* = 2*phi{f} + phi{ms} - q*NSS/cox */
  257.     M_xd;        /* = sqrt(2*epSi/(q*NSUB)) */
  258.  
  259.   /* model parameters and expressions */
  260.   MXPR( M_level,Mx_level);
  261.   MXPR( M_tpg,    Mx_tpg);
  262.   MXPR( M_l,    Mx_l);
  263.   MXPR( M_w,    Mx_w);
  264.   MXPR( M_ld,    Mx_ld);     /* also BSIM_deltaL */
  265.   MXPR( M_wd,    Mx_wd);     /* also BSIM_deltaW */
  266.   MXPR( M_vto,    Mx_vto);
  267.   MXPR( M_kp,    Mx_kp);
  268.   MXPR( M_gamma,Mx_gamma);
  269.   MXPR( M_phi,    Mx_phi);    /* also BSIM_phi0 */
  270.   MXPR( M_lambda,Mx_lambda);
  271.   MXPR( M_User_rd,    Mx_User_rd);
  272.   MXPR( M_User_rs,    Mx_User_rs);
  273.   MXPR( M_User_rg,    Mx_User_rg);
  274.   MXPR( M_User_rb,    Mx_User_rb);
  275.   MXPR( M_User_rds,    Mx_User_rds);
  276.   MXPR( M_User_rsh,    Mx_User_rsh);
  277. MDLPARM M_rd,M_rs,M_rg,M_rb,M_rsh,M_rds,M_nsub,M_nss,M_nfs,M_uo,M_ucrit,M_delta,M_eta;
  278.   MXPR( M_is,    Mx_is);
  279.   MXPR( M_js,    Mx_js);
  280.   MXPR( M_jssw, Mx_jssw);
  281.   MXPR( M_n,    Mx_n);        /* emission coefficient */
  282.   MXPR( M_pb,    Mx_pb);
  283.   MXPR( M_pbsw,    Mx_pbsw);
  284.   MXPR( M_cbd,    Mx_cbd);
  285.   MXPR( M_cbs,    Mx_cbs);
  286.   MXPR( M_cj,    Mx_cj);
  287.   MXPR( M_cjsw, Mx_cjsw);
  288.   MXPR( M_mj,    Mx_mj);
  289.   MXPR( M_mjsw, Mx_mjsw);
  290.   MXPR( M_fc,    Mx_fc);
  291.   MXPR( M_tt,    Mx_tt);     /* transit time for bulk junctions */
  292.   MXPR( M_cgso, Mx_cgso);
  293.   MXPR( M_cgdo, Mx_cgdo);
  294.   MXPR( M_cgbo, Mx_cgbo);
  295.   MXPR( M_User_nsub,    Mx_User_nsub);
  296.   MXPR( M_User_nss,    Mx_User_nss);
  297.   MXPR( M_User_nfs,    Mx_User_nfs);
  298.   MXPR( M_tox,    Mx_tox);
  299.   MXPR( M_xj,    Mx_xj);
  300.   MXPR( M_User_uo,    Mx_User_uo);
  301.   MXPR( M_User_ucrit,Mx_User_ucrit);
  302.   MXPR( M_uexp, Mx_uexp);
  303.   MXPR( M_utra, Mx_utra);
  304.   MXPR( M_vmax, Mx_vmax);
  305.   MXPR( M_neff, Mx_neff);
  306.   MXPR( M_xqc,    Mx_xqc);
  307.   MXPR( M_User_delta,Mx_User_delta);
  308.   MXPR( M_theta,Mx_theta);
  309.   MXPR( M_User_eta,    Mx_User_eta);    /* also BSIM_eta0 */
  310.   MXPR( M_kappa,Mx_kappa);
  311.   MXPR( M_kf,    Mx_kf);
  312.   MXPR( M_af,    Mx_af);
  313.  
  314.     /* BSIM model parameters and expressions */
  315.   MXPR( BSIM_vfb0,    BSIMx_vfb0);
  316.   MXPR( BSIM_vfbL,    BSIMx_vfbL);
  317.   MXPR( BSIM_vfbW,    BSIMx_vfbW);
  318. /*    BSIM_phi0,    use M_phi */
  319.   MXPR( BSIM_phiL,    BSIMx_phiL);
  320.   MXPR( BSIM_phiW,    BSIMx_phiW);
  321.   MXPR( BSIM_K10,    BSIMx_K10);
  322.   MXPR( BSIM_K1L,    BSIMx_K1L);
  323.   MXPR( BSIM_K1W,    BSIMx_K1W);
  324.   MXPR( BSIM_K20,    BSIMx_K20);
  325.   MXPR( BSIM_K2L,    BSIMx_K2L);
  326.   MXPR( BSIM_K2W,    BSIMx_K2W);
  327. /*    BSIM_eta0,    use M_eta */
  328.   MXPR( BSIM_etaL,    BSIMx_etaL);
  329.   MXPR( BSIM_etaW,    BSIMx_etaW);
  330.   MXPR( BSIM_etaB0,    BSIMx_etaB0);
  331.   MXPR( BSIM_etaBL,    BSIMx_etaBL);
  332.   MXPR( BSIM_etaBW,    BSIMx_etaBW);
  333.   MXPR( BSIM_etaD0,    BSIMx_etaD0);
  334.   MXPR( BSIM_etaDL,    BSIMx_etaDL);
  335.   MXPR( BSIM_etaDW,    BSIMx_etaDW);
  336. /*    BSIM_deltaL,    use M_ld */
  337. /*    BSIM_deltaW,    use M_lw */
  338.   MXPR( BSIM_mobZero,    BSIMx_mobZero);
  339.   MXPR( BSIM_mobZeroB0, BSIMx_mobZeroB0);
  340.   MXPR( BSIM_mobZeroBL, BSIMx_mobZeroBL);
  341.   MXPR( BSIM_mobZeroBW, BSIMx_mobZeroBW);
  342.   MXPR( BSIM_mobVdd0,    BSIMx_mobVdd0);
  343.   MXPR( BSIM_mobVddL,    BSIMx_mobVddL);
  344.   MXPR( BSIM_mobVddW,    BSIMx_mobVddW);
  345.   MXPR( BSIM_mobVddB0,    BSIMx_mobVddB0);
  346.   MXPR( BSIM_mobVddBL,    BSIMx_mobVddBL);
  347.   MXPR( BSIM_mobVddBW,    BSIMx_mobVddBW);
  348.   MXPR( BSIM_mobVddD0,    BSIMx_mobVddD0);
  349.   MXPR( BSIM_mobVddDL,    BSIMx_mobVddDL);
  350.   MXPR( BSIM_mobVddDW,    BSIMx_mobVddDW);
  351.   MXPR( BSIM_ugs0,    BSIMx_ugs0);
  352.   MXPR( BSIM_ugsL,    BSIMx_ugsL);
  353.   MXPR( BSIM_ugsW,    BSIMx_ugsW);
  354.   MXPR( BSIM_ugsB0,    BSIMx_ugsB0);
  355.   MXPR( BSIM_ugsBL,    BSIMx_ugsBL);
  356.   MXPR( BSIM_ugsBW,    BSIMx_ugsBW);
  357.   MXPR( BSIM_uds0,    BSIMx_uds0);
  358.   MXPR( BSIM_udsL,    BSIMx_udsL);
  359.   MXPR( BSIM_udsW,    BSIMx_udsW);
  360.   MXPR( BSIM_udsB0,    BSIMx_udsB0);
  361.   MXPR( BSIM_udsBL,    BSIMx_udsBL);
  362.   MXPR( BSIM_udsBW,    BSIMx_udsBW);
  363.   MXPR( BSIM_udsD0,    BSIMx_udsD0);
  364.   MXPR( BSIM_udsDL,    BSIMx_udsDL);
  365.   MXPR( BSIM_udsDW,    BSIMx_udsDW);
  366.   MXPR( BSIM_subthSlope0,    BSIMx_subthSlope0);
  367.   MXPR( BSIM_subthSlopeL,    BSIMx_subthSlopeL);
  368.   MXPR( BSIM_subthSlopeW,    BSIMx_subthSlopeW);
  369.   MXPR( BSIM_subthSlopeB0,    BSIMx_subthSlopeB0);
  370.   MXPR( BSIM_subthSlopeBL,    BSIMx_subthSlopeBL);
  371.   MXPR( BSIM_subthSlopeBW,    BSIMx_subthSlopeBW);
  372.   MXPR( BSIM_subthSlopeD0,    BSIMx_subthSlopeD0);
  373.   MXPR( BSIM_subthSlopeDL,    BSIMx_subthSlopeDL);
  374.   MXPR( BSIM_subthSlopeDW,    BSIMx_subthSLopeDW);
  375. /*    BSIM_oxideThickness,    use M_tox */    /* unit: micron */
  376.   MXPR( BSIM_temp,    BSIMx_temp);
  377.   MXPR( BSIM_vdd,    BSIMx_vdd);
  378.   MXPR( BSIM_xpart,    BSIMx_xpart);
  379.   MXPR( BSIM_defaultW,    BSIMx_defaultW);
  380.   MXPR( BSIM_deltaL,    BSIMx_deltaL);
  381.  
  382. /******************* USERS OF DEVICE EQUATIONS OPTION ***********************/
  383. /******** Add new model parameters after this line           **********/
  384.  
  385. /* !!!!!! The MXPR macro must be used here !!!!!! */
  386.  
  387. /******** and before this line                       **********/
  388.   };
  389.  
  390. #ifdef M_DEVICE
  391.  
  392. struct    M_    M_default;
  393.  
  394. #define BASE    M_default
  395.  
  396. struct    Assoc    M_Assoc[] = {            /*IGNORE*/ /* for Pre-C */
  397. /******************* USERS OF DEVICE EQUATIONS OPTION ***********************/
  398. /******** This table is used by the read-in code to decode the       **********/
  399. /******** .MODEL statements.  The format is:               **********/
  400.  
  401. /********       element     default    parameter           **********/
  402. /********        name    value      name               **********/
  403.     ASSOCIATE (M_level,    1,    "*LEVEL"),
  404.  
  405. /******** where "element name" is the name in the M_ structure       **********/
  406. /******** above, "default value" is the value the parameter is       **********/
  407. /******** given if it is not specified on the .MODEL statement,    **********/
  408. /******** and "parameter name" is the name in the .MODEL that the  **********/
  409. /******** read-in will associate with this parameter.  If the       **********/
  410. /******** "parameter name" starts with "*" then the the parameter  **********/
  411. /******** will be included in the PSpice's model parameter         **********/
  412. /******** printout whether or not it was defaulted.           **********/
  413.     ASSOCIATE (M_tpg,    1,    "TPG"    ),
  414.     ASSOCIATE (M_l,        OMITTED,"L"    ),
  415.     ASSOCIATE (M_w,        OMITTED,"W"    ),
  416.     ASSOCIATE (M_ld,    0.,    "LD"    ),
  417.     ASSOCIATE (M_wd,    0.,    "WD"    ),
  418.     ASSOCIATE (M_vto,    OMITTED,"*VTO"    ),    /* force print */
  419.     ASSOCIATE (M_kp,    OMITTED,"*KP"    ),    /* force print */
  420.     ASSOCIATE (M_gamma,OMITTED,"GAMMA" ),
  421.     ASSOCIATE (M_phi,    OMITTED,"PHI"    ),
  422.     ASSOCIATE (M_lambda,    0.,    "LAMBDA"),
  423.     ASSOCIATE (M_User_rd,    0.,    "RD"    ),
  424.     ASSOCIATE (M_User_rs,    0.,    "RS"    ),
  425.     ASSOCIATE (M_User_rg,    0.,    "RG"    ),
  426.     ASSOCIATE (M_User_rb,    0.,    "RB"    ),
  427.     ASSOCIATE (M_User_rds,    0.,    "RDS"    ),
  428.     ASSOCIATE (M_User_rsh,    0.,    "RSH"    ),
  429.     ASSOCIATE (M_is,    1E-14,    "IS"    ),
  430.     ASSOCIATE (M_js,    0.,    "JS"    ),
  431.     ASSOCIATE (M_jssw,    0.,    "JSSW"    ),
  432.     ASSOCIATE (M_n,     1.,    "N"    ),
  433.     ASSOCIATE (M_pb,    .8,    "PB"    ),
  434.     ASSOCIATE (M_pbsw, OMITTED,"PBSW"    ),
  435.     ASSOCIATE (M_cbd,    0.,    "CBD"    ),
  436.     ASSOCIATE (M_cbs,    0.,    "CBS"    ),
  437.     ASSOCIATE (M_cj,    0.,    "CJ"    ),
  438.     ASSOCIATE (M_cjsw,    0.,    "CJSW"    ),
  439.     ASSOCIATE (M_mj,    .5,    "MJ"    ),
  440.     ASSOCIATE (M_mjsw,    .33,    "MJSW"    ),
  441.     ASSOCIATE (M_fc,    .5,    "FC"    ),
  442.     ASSOCIATE (M_tt,    0.,    "TT"    ),
  443.     ASSOCIATE (M_cgso,    0.,    "CGSO"    ),
  444.     ASSOCIATE (M_cgdo,    0.,    "CGDO"    ),
  445.     ASSOCIATE (M_cgbo,    0.,    "CGBO"    ),
  446.     ASSOCIATE (M_User_nsub, OMITTED,"NSUB"    ),
  447.     ASSOCIATE (M_User_nss,    OMITTED,"NSS"    ),
  448.     ASSOCIATE (M_User_nfs,    0.,    "NFS"    ),
  449.     ASSOCIATE (M_tox,    OMITTED,"TOX"    ),
  450.     ASSOCIATE (M_xj,    0.,    "XJ"    ),
  451.     ASSOCIATE (M_User_uo,    600.,    "UO"    ),
  452.     ASSOCIATE (M_User_ucrit,    1E4,    "UCRIT" ),
  453.     ASSOCIATE (M_uexp,    0.,    "UEXP"    ),
  454.     ASSOCIATE (M_utra,    0.,    "UTRA"    ),
  455.     ASSOCIATE (M_vmax,    0.,    "VMAX"    ),
  456.     ASSOCIATE (M_neff,    1.,    "NEFF"    ),
  457.     ASSOCIATE (M_xqc,    1.,    "XQC"    ),
  458.     ASSOCIATE (M_User_delta,    0.,    "DELTA" ),
  459.     ASSOCIATE (M_theta,    0.,    "THETA" ),
  460.     ASSOCIATE (M_User_eta,    0.,    "ETA"    ),
  461.     ASSOCIATE (M_kappa,    .2,    "KAPPA" ),
  462.     ASSOCIATE (M_kf,    0.,    "KF"    ),
  463.     ASSOCIATE (M_af,    1.,    "AF"    ),
  464.  
  465.     ASSOCIATE (BSIM_vfb0,    0.,    "VFB"    ),/* Flat band voltage */
  466.     ASSOCIATE (BSIM_vfbL,    0.,    "LVFB"    ),/* Length dependence of vfb */
  467.     ASSOCIATE (BSIM_vfbW,    0.,    "WVFB"    ),/* Width dependence of vfb */
  468.  
  469.     ASSOCIATE (BSIM_phiL,    0.,    "LPHI"    ),/* Length dependence of phi */
  470.     ASSOCIATE (BSIM_phiW,    0.,    "WPHI"    ),/* Width dependence of phi */
  471.     ASSOCIATE (BSIM_K10,    0.,    "K1"    ),/* Bulk effect coefficient 1 */
  472.     ASSOCIATE (BSIM_K1L,    0.,    "LK1"    ),/* Length dependence of k1 */
  473.     ASSOCIATE (BSIM_K1W,    0.,    "WK1"    ),/* Width dependence of k1 */
  474.     ASSOCIATE (BSIM_K20,    0.,    "K2"    ),/* Bulk effect coefficient 2 */
  475.     ASSOCIATE (BSIM_K2L,    0.,    "LK2"    ),/* Length dependence of k2 */
  476.     ASSOCIATE (BSIM_K2W,    0.,    "WK2"    ),/* Width dependence of k2 */
  477.  
  478.     ASSOCIATE (BSIM_etaL,    0.,    "LETA"    ),/* Length dependence of eta */
  479.     ASSOCIATE (BSIM_etaW,    0.,    "WETA"    ),/* Width dependence of eta */
  480.     ASSOCIATE (BSIM_etaB0,    0.,    "X2E"    ),/* VBS dependence of eta */
  481.     ASSOCIATE (BSIM_etaBL,    0.,    "LX2E"    ),/* Length dependence of x2e */
  482.     ASSOCIATE (BSIM_etaBW,    0.,    "WX2E"    ),/* Width dependence of x2e */
  483.     ASSOCIATE (BSIM_etaD0,    0.,    "X3E"    ),/* VDS dependence of eta */
  484.     ASSOCIATE (BSIM_etaDL,    0.,    "LX3E"    ),/* Length dependence of x3e */
  485.     ASSOCIATE (BSIM_etaDW,    0.,    "WX3E"    ),/* Width dependence of x3e */
  486.     ASSOCIATE (BSIM_mobZero,    0.,    "MUZ"    ),/* Zero field mobility at VDS=0 VGS=VTH */
  487.     ASSOCIATE (BSIM_mobZeroB0,    0.,    "X2MZ"    ),/* VBS dependence of muz */
  488.     ASSOCIATE (BSIM_mobZeroBL,    0.,    "LX2MZ" ),/* Length dependence of x2mz */
  489.     ASSOCIATE (BSIM_mobZeroBW,    0.,    "WX2MZ" ),/* Width dependence of x2mz */
  490.     ASSOCIATE (BSIM_mobVdd0,    0.,    "MUS"    ),/* Mobility at VDS=VDD VGS=VTH, channel length modulation */
  491.     ASSOCIATE (BSIM_mobVddL,    0.,    "LMUS"    ),/* Length dependence of mus */
  492.     ASSOCIATE (BSIM_mobVddW,    0.,    "WMUS"    ),/* Width dependence of mus */
  493.     ASSOCIATE (BSIM_mobVddB0,    0.,    "X2MS"    ),/* VBS dependence of mus */
  494.     ASSOCIATE (BSIM_mobVddBL,    0.,    "LX2MS" ),/* Length dependence of x2ms */
  495.     ASSOCIATE (BSIM_mobVddBW,    0.,    "WX2MS" ),/* Width dependence of x2ms */
  496.     ASSOCIATE (BSIM_mobVddD0,    0.,    "X3MS"    ),/* VDS dependence of mus */
  497.     ASSOCIATE (BSIM_mobVddDL,    0.,    "LX3MS" ),/* Length dependence of x3ms */
  498.     ASSOCIATE (BSIM_mobVddDW,    0.,    "WX3MS" ),/* Width dependence of x3ms */
  499.     ASSOCIATE (BSIM_ugs0,    0.,    "U0"    ),/* VGS dependence of mobility */
  500.     ASSOCIATE (BSIM_ugsL,    0.,    "LU0"    ),/* Length dependence of u0 */
  501.     ASSOCIATE (BSIM_ugsW,    0.,    "WU0"    ),/* Width dependence of u0 */
  502.     ASSOCIATE (BSIM_ugsB0,    0.,    "X2U0"    ),/* VBS dependence of u0 */
  503.     ASSOCIATE (BSIM_ugsBL,    0.,    "LX2U0" ),/* Length dependence of x2u0 */
  504.     ASSOCIATE (BSIM_ugsBW,    0.,    "WX2U0" ),/* Width dependence of x2u0 */
  505.     ASSOCIATE (BSIM_uds0,    0.,    "U1"    ),/* VDS depence of mobility, velocity saturation */
  506.     ASSOCIATE (BSIM_udsL,    0.,    "LU1"    ),/* Length dependence of u1 */
  507.     ASSOCIATE (BSIM_udsW,    0.,    "WU1"    ),/* Width dependence of u1 */
  508.     ASSOCIATE (BSIM_udsB0,    0.,    "X2U1"    ),/* VBS depence of u1 */
  509.     ASSOCIATE (BSIM_udsBL,    0.,    "LX2U1" ),/* Length depence of x2u1 */
  510.     ASSOCIATE (BSIM_udsBW,    0.,    "WX2U1" ),/* Width depence of x2u1 */
  511.     ASSOCIATE (BSIM_udsD0,    0.,    "X3U1"    ),/* VDS depence of u1 */
  512.     ASSOCIATE (BSIM_udsDL,    0.,    "LX3U1" ),/* Length dependence of x3u1 */
  513.     ASSOCIATE (BSIM_udsDW,    0.,    "WX3U1" ),/* Width depence of x3u1 */
  514.     ASSOCIATE (BSIM_subthSlope0,    0.,    "N0"    ),/* Subthreshold slope */
  515.     ASSOCIATE (BSIM_subthSlopeL,    0.,    "LN0"    ),/* Length dependence of n0 */
  516.     ASSOCIATE (BSIM_subthSlopeW,    0.,    "WN0"    ),/* Width dependence of n0 */
  517.     ASSOCIATE (BSIM_subthSlopeB0,    0.,    "NB"    ),/* VBS dependence of subthreshold slope */
  518.     ASSOCIATE (BSIM_subthSlopeBL,    0.,    "LNB"    ),/* Length dependence of nb */
  519.     ASSOCIATE (BSIM_subthSlopeBW,    0.,    "WNB"    ),/* Width dependence of nb */
  520.     ASSOCIATE (BSIM_subthSlopeD0,    0.,    "ND"    ),/* VDS dependence of subthreshold slope */
  521.     ASSOCIATE (BSIM_subthSlopeDL,    0.,    "LND"    ),/* Length dependence of nd */
  522.     ASSOCIATE (BSIM_subthSlopeDW,    0.,    "WND"    ),/* Width dependence of nd */
  523.     ASSOCIATE (BSIM_temp,    0.,    "TEMP"    ),/* Temperature in degree Celcius */
  524.     ASSOCIATE (BSIM_vdd,    0.,    "VDD"    ),/* Supply voltage to specify mus */
  525.     ASSOCIATE (BSIM_xpart,    0.,    "XPART" ),/* Flag for channel charge partitioning */
  526.     ASSOCIATE (BSIM_deltaL, 0.,    "DELL"    ),/* Length reduction of source drain diffusion */
  527.  
  528. /******************* USERS OF DEVICE EQUATIONS OPTION ***********************/
  529. /******** Add new model parameters after this line           **********/
  530.  
  531. /******** and before this line                       **********/
  532.     END_PARMS                /*ENDIGNORE*/
  533. } ;
  534.  
  535. #undef    BASE
  536. #undef    M_DEVICE
  537. #endif
  538.  
  539. #ifdef UnAlias_Def
  540. static char *M_alias[] = {
  541.       "DL",    "LD",
  542.       "DW",    "WD",
  543.       "WDF",    "W",
  544.       "" };
  545. #endif
  546.