Revert "update hisimhv model to version 2.2.0"
This reverts commit c2ef7aeff3.
This commit is contained in:
parent
db52073f5d
commit
adcec9fa5f
|
|
@ -11,10 +11,7 @@ libhisimhv1_la_SOURCES = hisimhv.h \
|
|||
hsmhvdel.c \
|
||||
hsmhvdest.c \
|
||||
hsmhveval.c \
|
||||
hsmhveval_dep.h \
|
||||
hsmhveval_dio.c \
|
||||
hsmhveval_qover.h \
|
||||
hsmhveval_rdrift.c \
|
||||
hsmhvevalenv.h \
|
||||
hsmhvext.h \
|
||||
hsmhvgetic.c \
|
||||
|
|
@ -33,8 +30,6 @@ libhisimhv1_la_SOURCES = hisimhv.h \
|
|||
hsmhvsoachk.c \
|
||||
hsmhvtemp.c \
|
||||
hsmhvtemp_eval.h \
|
||||
hsmhvtemp_eval_dio.h \
|
||||
hsmhvtemp_eval_rdri.h \
|
||||
hsmhvtrunc.c
|
||||
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include
|
||||
|
|
|
|||
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hisimhv.h
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#include "hsmhvdef.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
|
||||
|
|
@ -110,31 +68,10 @@ extern int HSMHVevaluate
|
|||
double vbs_jct,
|
||||
double vbd_jct,
|
||||
double vsubs,
|
||||
double vddp,
|
||||
double deltemp,
|
||||
HSMHVinstance *here,
|
||||
HSMHVmodel *model,
|
||||
CKTcircuit *ckt
|
||||
) ;
|
||||
extern int HSMHVrdrift
|
||||
(
|
||||
double vddp,
|
||||
double ivds,
|
||||
double ivbs,
|
||||
double vsubs,
|
||||
double deltemp,
|
||||
HSMHVinstance *here,
|
||||
HSMHVmodel *model,
|
||||
CKTcircuit *ckt
|
||||
) ;
|
||||
extern int HSMHVdio
|
||||
(
|
||||
double vbs_jct,
|
||||
double vbd_jct,
|
||||
double deltemp,
|
||||
HSMHVinstance *here,
|
||||
HSMHVmodel *model,
|
||||
CKTcircuit *ckt
|
||||
) ;
|
||||
|
||||
#endif /* _HiSIMHV_H */
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhv.c
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
|
||||
released by
|
||||
|
|
@ -16,48 +16,6 @@
|
|||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/devdefs.h"
|
||||
#include "hsmhvdef.h"
|
||||
|
|
@ -106,8 +64,6 @@ IFparm HSMHVpTable[] = { /* parameters */
|
|||
/* Output Physical Values: */
|
||||
OP ( "ids", HSMHV_CD, IF_REAL , "Ids"), /* Drain-Source current */
|
||||
OP ( "isub", HSMHV_ISUB, IF_REAL , "Isub"), /* Substrate current */
|
||||
OP ( "isubld", HSMHV_ISUBLD, IF_REAL , "IsubLD"), /* Substrate current */
|
||||
OP ( "idsibpc", HSMHV_IDSIBPC, IF_REAL , "IdsIBPC"), /* Impact-Ionization Induced Bulk Potential Change (IBPC)*/
|
||||
OP ( "igidl", HSMHV_IGIDL, IF_REAL , "Igidl"), /* Gate-Induced Drain Leakage current */
|
||||
OP ( "igisl", HSMHV_IGISL, IF_REAL , "Igisl"), /* Gate-Induced Source Leakage current */
|
||||
OP ( "igd", HSMHV_IGD, IF_REAL , "Igd"), /* Gate-Drain current */
|
||||
|
|
@ -168,15 +124,11 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("coign", HSMHV_MOD_COIGN, IF_INTEGER, "Calculate induced gate noise"),
|
||||
IOP("codfm", HSMHV_MOD_CODFM, IF_INTEGER, "Calculation of model for DFM"),
|
||||
IOP("coqovsm", HSMHV_MOD_COQOVSM, IF_INTEGER, "select smoothing method of Qover"),
|
||||
IOP("coselfheat", HSMHV_MOD_COSELFHEAT, IF_INTEGER, "Calculation of self heating model"),
|
||||
IOP("coselfheat", HSMHV_MOD_COSELFHEAT, IF_INTEGER, "Calculation of self heating model"),
|
||||
IOP("cosubnode", HSMHV_MOD_COSUBNODE, IF_INTEGER, "Switch tempNode to subNode"),
|
||||
IOP("cosym", HSMHV_MOD_COSYM, IF_INTEGER, "Model selector for symmetry device"),
|
||||
IOP("cotemp", HSMHV_MOD_COTEMP, IF_INTEGER, "Model flag for temperature dependence"),
|
||||
IOP("coldrift", HSMHV_MOD_COLDRIFT, IF_INTEGER, "selector for Ldrift parameter"),
|
||||
IOP("cordrift", HSMHV_MOD_CORDRIFT, IF_INTEGER, ""),
|
||||
IOP("coerrrep", HSMHV_MOD_COERRREP, IF_INTEGER, "selector for error report"),
|
||||
IOP("codep", HSMHV_MOD_CODEP, IF_INTEGER, "selector for depletion device"),
|
||||
IOP("coddlt", HSMHV_MOD_CODDLT, IF_INTEGER, "selector for DDLT model"),
|
||||
|
||||
IOP("vbsmin", HSMHV_MOD_VBSMIN, IF_REAL, "Minimum back bias voltage to be treated in hsmhveval [V]"),
|
||||
|
||||
|
|
@ -205,12 +157,7 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("ldrift1s", HSMHV_MOD_LDRIFT1S, IF_REAL, "Drift region length-1 on the source side[m]"),
|
||||
IOP("ldrift2s", HSMHV_MOD_LDRIFT2S, IF_REAL, "Drift region length-2 on the source side[m]"),
|
||||
IOP("subld1", HSMHV_MOD_SUBLD1, IF_REAL, "Impact-ionization current in the drift region [-]"),
|
||||
IOP("subld1l", HSMHV_MOD_SUBLD1L, IF_REAL, "Impact-ionization current in the drift region [um^{subld1lp}]"),
|
||||
IOP("subld1lp", HSMHV_MOD_SUBLD1LP, IF_REAL, "Impact-ionization current in the drift region [-]"),
|
||||
IOP("subld2", HSMHV_MOD_SUBLD2, IF_REAL, "Impact-ionization current in the drift region [m^{-1}*V^{3/2}]"),
|
||||
IOP("xpdv", HSMHV_MOD_XPDV, IF_REAL, "Impact-ionization current in the drift region [m^{-1}]"),
|
||||
IOP("xpvdth", HSMHV_MOD_XPVDTH, IF_REAL, "Impact-ionization current in the drift region [V]"),
|
||||
IOP("xpvdthg", HSMHV_MOD_XPVDTHG, IF_REAL, "Impact-ionization current in the drift region [V^{-1}]"),
|
||||
IOP("ddltmax", HSMHV_MOD_DDLTMAX, IF_REAL, ""), /* Vdseff */
|
||||
IOP("ddltslp", HSMHV_MOD_DDLTSLP, IF_REAL, ""), /* Vdseff */
|
||||
IOP("ddltict", HSMHV_MOD_DDLTICT, IF_REAL, ""), /* Vdseff */
|
||||
|
|
@ -257,7 +204,7 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("sc4", HSMHV_MOD_SC4, IF_REAL, "Parameter for SCE [1/V]"),
|
||||
IOP("pgd1", HSMHV_MOD_PGD1, IF_REAL, "Parameter for gate-poly depletion [V]"),
|
||||
IOP("pgd2", HSMHV_MOD_PGD2, IF_REAL, "Parameter for gate-poly depletion [V]"),
|
||||
//IOP("pgd3", HSMHV_MOD_PGD3, IF_REAL, "Parameter for gate-poly depletion [-]"),
|
||||
IOP("pgd3", HSMHV_MOD_PGD3, IF_REAL, "Parameter for gate-poly depletion [-]"),
|
||||
IOP("pgd4", HSMHV_MOD_PGD4, IF_REAL, "Parameter for gate-poly depletion [-]"),
|
||||
IOP("ndep", HSMHV_MOD_NDEP, IF_REAL, "Coeff. of Qbm for Eeff [-]"),
|
||||
IOP("ndepl", HSMHV_MOD_NDEPL, IF_REAL, "Coeff. of Qbm for Eeff [-]"),
|
||||
|
|
@ -355,7 +302,7 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("cvb", HSMHV_MOD_CVB, IF_REAL, "Bias dependence coefficient of cisb [-]"),
|
||||
IOP("ctemp", HSMHV_MOD_CTEMP, IF_REAL, "Temperature coefficient [-]"),
|
||||
IOP("cisbk", HSMHV_MOD_CISBK, IF_REAL, "Reverse bias saturation current [A]"),
|
||||
IOP("cvbk", HSMHV_MOD_CVBK, IF_REAL, "Inactived by CVB "),
|
||||
IOP("cvbk", HSMHV_MOD_CVBK, IF_REAL, "Bias dependence coefficient of cisb [-]"),
|
||||
IOP("divx", HSMHV_MOD_DIVX, IF_REAL, " [1/V]"),
|
||||
|
||||
IOP("clm1", HSMHV_MOD_CLM1, IF_REAL, "Parameter for CLM [-]"),
|
||||
|
|
@ -403,7 +350,7 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("cit", HSMHV_MOD_CIT, IF_REAL, ""),
|
||||
IOP("falph", HSMHV_MOD_FALPH, IF_REAL, "Parameter for 1/f noise"),
|
||||
IOP("kappa", HSMHV_MOD_KAPPA, IF_REAL, "Dielectric constant for high-k stacked gate"),
|
||||
//IOP("pthrou", HSMHV_MOD_PTHROU, IF_REAL, "Modify subthreshold slope [-]"),
|
||||
IOP("pthrou", HSMHV_MOD_PTHROU, IF_REAL, "Modify subthreshold slope [-]"),
|
||||
IOP("vdiffj", HSMHV_MOD_VDIFFJ, IF_REAL, "Threshold voltage for S/D junction diode [V]"),
|
||||
IOP("dly1", HSMHV_MOD_DLY1, IF_REAL, "Parameter for transit time [-]"),
|
||||
IOP("dly2", HSMHV_MOD_DLY2, IF_REAL, "Parameter for transit time [-]"),
|
||||
|
|
@ -421,23 +368,10 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("rbsb", HSMHV_MOD_RBSB, IF_REAL, ""),
|
||||
|
||||
IOP("ibpc1", HSMHV_MOD_IBPC1, IF_REAL, "Parameter for impact-ionization induced bulk potential change"),
|
||||
IOP("ibpc1l", HSMHV_MOD_IBPC1L, IF_REAL, "Parameter for impact-ionization induced bulk potential change"),
|
||||
IOP("ibpc1lp", HSMHV_MOD_IBPC1LP, IF_REAL, "Parameter for impact-ionization induced bulk potential change"),
|
||||
IOP("ibpc2", HSMHV_MOD_IBPC2, IF_REAL, "Parameter for impact-ionization induced bulk potential change"),
|
||||
|
||||
IOP("mphdfm", HSMHV_MOD_MPHDFM, IF_REAL, "NSUBCDFM dependence of phonon scattering for DFM"),
|
||||
|
||||
|
||||
IOP("ptl", HSMHV_MOD_PTL, IF_REAL, ""),
|
||||
IOP("ptp", HSMHV_MOD_PTP, IF_REAL, ""),
|
||||
IOP("pt2", HSMHV_MOD_PT2, IF_REAL, ""),
|
||||
IOP("ptlp", HSMHV_MOD_PTLP, IF_REAL, ""),
|
||||
IOP("gdl", HSMHV_MOD_GDL, IF_REAL, ""),
|
||||
IOP("gdlp", HSMHV_MOD_GDLP, IF_REAL, ""),
|
||||
|
||||
IOP("gdld", HSMHV_MOD_GDLD, IF_REAL, ""),
|
||||
IOP("pt4", HSMHV_MOD_PT4, IF_REAL, ""),
|
||||
IOP("pt4p", HSMHV_MOD_PT4P, IF_REAL, ""),
|
||||
IOP("rdvg11", HSMHV_MOD_RDVG11, IF_REAL, ""),
|
||||
IOP("rdvg12", HSMHV_MOD_RDVG12, IF_REAL, ""),
|
||||
IOP("rth0", HSMHV_MOD_RTH0, IF_REAL, "Thermal resistance"), /* Self-heating model --SHE---*/
|
||||
|
|
@ -466,6 +400,7 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("rd23", HSMHV_MOD_RD23, IF_REAL, ""),
|
||||
IOP("rd24", HSMHV_MOD_RD24, IF_REAL, ""),
|
||||
IOP("rd25", HSMHV_MOD_RD25, IF_REAL, ""),
|
||||
IOP("rd26", HSMHV_MOD_RD26, IF_REAL, "alias for qovsm"),
|
||||
IOP("rdvdl", HSMHV_MOD_RDVDL, IF_REAL, ""),
|
||||
IOP("rdvdlp", HSMHV_MOD_RDVDLP, IF_REAL, ""),
|
||||
IOP("rdvds", HSMHV_MOD_RDVDS, IF_REAL, ""),
|
||||
|
|
@ -476,8 +411,8 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("rd23sp", HSMHV_MOD_RD23SP, IF_REAL, ""),
|
||||
IOP("rds", HSMHV_MOD_RDS, IF_REAL, ""),
|
||||
IOP("rdsp", HSMHV_MOD_RDSP, IF_REAL, ""),
|
||||
//IOP("qovsm", HSMHV_MOD_QOVSM, IF_REAL, "Smoothing Qover at depletion/inversion transition"),
|
||||
// IOP("ldrift", HSMHV_MOD_LDRIFT, IF_REAL, "alias for ldrift2"),
|
||||
IOP("qovsm", HSMHV_MOD_QOVSM, IF_REAL, "Smoothing Qover at depletion/inversion transition"),
|
||||
IOP("ldrift", HSMHV_MOD_LDRIFT, IF_REAL, "alias for ldrift2"),
|
||||
IOP("rdtemp1", HSMHV_MOD_RDTEMP1, IF_REAL, "Temperature-dependence of Rd"),
|
||||
IOP("rdtemp2", HSMHV_MOD_RDTEMP2, IF_REAL, "Temperature-dependence of Rd"),
|
||||
IOP("rth0r", HSMHV_MOD_RTH0R, IF_REAL, "Heat radiation for SHE"), /* not used */
|
||||
|
|
@ -493,95 +428,7 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("ddrift", HSMHV_MOD_DDRIFT, IF_REAL, "model parameter for the substrate effect"),
|
||||
IOP("vbisub", HSMHV_MOD_VBISUB, IF_REAL, "model parameter for the substrate effect"),
|
||||
IOP("nsubsub", HSMHV_MOD_NSUBSUB, IF_REAL, "model parameter for the substrate effect"),
|
||||
|
||||
IOP("rdrmue", HSMHV_MOD_RDRMUE, IF_REAL, ""),
|
||||
IOP("rdrvmax", HSMHV_MOD_RDRVMAX, IF_REAL, ""),
|
||||
IOP("rdrmuetmp", HSMHV_MOD_RDRMUETMP, IF_REAL, ""),
|
||||
IOP("ndepm", HSMHV_MOD_NDEPM, IF_REAL, "N- layer concentlation of the depletion MOS model"),
|
||||
IOP("tndep", HSMHV_MOD_TNDEP, IF_REAL, "N- layer depth of the depletion MOS model"),
|
||||
IOP("depmue0", HSMHV_MOD_DEPMUE0, IF_REAL, "coulomb scattering of resistor region "),
|
||||
IOP("depmue1", HSMHV_MOD_DEPMUE1, IF_REAL, "coulomb scattering of resistor region"),
|
||||
IOP("depmueback0", HSMHV_MOD_DEPMUEBACK0, IF_REAL, "coulomb scattering of back region"),
|
||||
IOP("depmueback1", HSMHV_MOD_DEPMUEBACK1, IF_REAL, "coulomb scattering of back region"),
|
||||
IOP("depleak", HSMHV_MOD_DEPLEAK, IF_REAL, "leakage current coefficient"),
|
||||
IOP("depeta", HSMHV_MOD_DEPETA, IF_REAL, "Vds dependence"),
|
||||
IOP("depvmax", HSMHV_MOD_DEPVMAX, IF_REAL, "velocity saturation"),
|
||||
IOP("depvdsef1", HSMHV_MOD_DEPVDSEF1, IF_REAL, "Vds dependece of leakage current"),
|
||||
IOP("depvdsef2", HSMHV_MOD_DEPVDSEF2, IF_REAL, "Vds dependece of leakage current"),
|
||||
IOP("depmueph0", HSMHV_MOD_DEPMUEPH0, IF_REAL, "phonon scattering"),
|
||||
IOP("depmueph1", HSMHV_MOD_DEPMUEPH1, IF_REAL, "phonon scattering"),
|
||||
IOP("depbb", HSMHV_MOD_DEPBB, IF_REAL, "high field effect coeeficient"),
|
||||
IOP("depvtmp", HSMHV_MOD_DEPVTMP, IF_REAL, "temperature dependence of velocity saturation"),
|
||||
IOP("depmuetmp", HSMHV_MOD_DEPMUETMP, IF_REAL, "temperature dependence of mobility"),
|
||||
|
||||
|
||||
IOP("isbreak", HSMHV_MOD_ISBREAK, IF_REAL, "reverse saturation current for breakdown"),
|
||||
IOP("rwell", HSMHV_MOD_RWELL, IF_REAL, "well resistance for breakdown"),
|
||||
|
||||
IOP("rdrvtmp", HSMHV_MOD_RDRVTMP, IF_REAL, ""),
|
||||
/* IOP("rdrvmaxt1", HSMHV_MOD_RDRVMAXT1, IF_REAL, ""), */
|
||||
/* IOP("rdrvmaxt2", HSMHV_MOD_RDRVMAXT2, IF_REAL, ""), */
|
||||
IOP("rdrdjunc", HSMHV_MOD_RDRDJUNC, IF_REAL, ""),
|
||||
IOP("rdrcx", HSMHV_MOD_RDRCX, IF_REAL, ""),
|
||||
IOP("rdrcar", HSMHV_MOD_RDRCAR, IF_REAL, ""),
|
||||
IOP("rdrdl1", HSMHV_MOD_RDRDL1, IF_REAL, ""),
|
||||
IOP("rdrdl2", HSMHV_MOD_RDRDL2, IF_REAL, ""),
|
||||
IOP("rdrvmaxw", HSMHV_MOD_RDRVMAXW, IF_REAL, ""),
|
||||
IOP("rdrvmaxwp", HSMHV_MOD_RDRVMAXWP, IF_REAL, ""),
|
||||
IOP("rdrvmaxl", HSMHV_MOD_RDRVMAXL, IF_REAL, ""),
|
||||
IOP("rdrvmaxlp", HSMHV_MOD_RDRVMAXLP, IF_REAL, ""),
|
||||
IOP("rdrmuel", HSMHV_MOD_RDRMUEL, IF_REAL, ""),
|
||||
IOP("rdrmuelp", HSMHV_MOD_RDRMUELP, IF_REAL, ""),
|
||||
IOP("rdrqover", HSMHV_MOD_RDRQOVER, IF_REAL, ""),
|
||||
IOP("qovadd", HSMHV_MOD_QOVADD, IF_REAL, "parameter for additional Qover Charge [-]"),
|
||||
IOP("js0d", HSMHV_MOD_JS0D, IF_REAL, "Saturation current density for drain junction [A/m^2]"),
|
||||
IOP("js0swd", HSMHV_MOD_JS0SWD, IF_REAL, "Side wall saturation current density for drain junction [A/m ]"),
|
||||
IOP("njd", HSMHV_MOD_NJD, IF_REAL, "Emission coefficient for drain junction [- ]"),
|
||||
IOP("njswd", HSMHV_MOD_NJSWD, IF_REAL, "Sidewall emission coefficient for drain junction [ ]"),
|
||||
IOP("xtid", HSMHV_MOD_XTID, IF_REAL, "Junction current temparature exponent coefficient for drain junction [- ]"),
|
||||
IOP("cjd", HSMHV_MOD_CJD, IF_REAL, "Bottom junction capacitance per unit area at zero bias for drain junction [F/m^2]"),
|
||||
IOP("cjswd", HSMHV_MOD_CJSWD, IF_REAL, "Sidewall junction capacitance grading coefficient per unit length at zero bias for drain junction [F/m ]"),
|
||||
IOP("cjswgd", HSMHV_MOD_CJSWGD, IF_REAL, "Gate sidewall junction capacitance per unit length at zero bias for drain junction [F/m ]"),
|
||||
IOP("mjd", HSMHV_MOD_MJD, IF_REAL, "Bottom junction capacitance grading coefficient for drain junction [ ]"),
|
||||
IOP("mjswd", HSMHV_MOD_MJSWD, IF_REAL, "Sidewall junction capacitance grading coefficient for drain junction [ ]"),
|
||||
IOP("mjswgd", HSMHV_MOD_MJSWGD, IF_REAL, "Gate sidewall junction capacitance grading coefficient for drain junction [ ]"),
|
||||
IOP("pbd", HSMHV_MOD_PBD, IF_REAL, "Bottom junction build-in potential for drain junction [V ]"),
|
||||
IOP("pbswd", HSMHV_MOD_PBSWD, IF_REAL, "Sidewall junction build-in potential for drain junction [V ]"),
|
||||
IOP("pbswgd", HSMHV_MOD_PBSWDG, IF_REAL, "Gate sidewall junction build-in potential for drain junction [V ]"),
|
||||
IOP("xti2d", HSMHV_MOD_XTI2D, IF_REAL, "Temperature coefficient for drain junction [- ]"),
|
||||
IOP("cisbd", HSMHV_MOD_CISBD, IF_REAL, "Reverse bias saturation current for drain junction [- ]"),
|
||||
IOP("cvbd", HSMHV_MOD_CVBD, IF_REAL, "Bias dependence coefficient of cisb for drain junction [- ]"),
|
||||
IOP("ctempd", HSMHV_MOD_CTEMPD, IF_REAL, "Temperature coefficient for drain junction [- ]"),
|
||||
IOP("cisbkd", HSMHV_MOD_CISBKD, IF_REAL, "Reverse bias saturation current for drain junction [A ]"),
|
||||
IOP("divxd", HSMHV_MOD_DIVXD, IF_REAL, "Reverse coefficient coefficient for drain junction [1/V ]"),
|
||||
IOP("vdiffjd", HSMHV_MOD_VDIFFJD, IF_REAL, "Threshold voltage for junction diode for drain junction [V ]"),
|
||||
IOP("js0s", HSMHV_MOD_JS0S, IF_REAL, "Saturation current density for source junction [A/m^2]"),
|
||||
IOP("js0sws", HSMHV_MOD_JS0SWS, IF_REAL, "Side wall saturation current density for source junction [A/m ]"),
|
||||
IOP("njs", HSMHV_MOD_NJS, IF_REAL, "Emission coefficient for source junction [- ]"),
|
||||
IOP("njsws", HSMHV_MOD_NJSWS, IF_REAL, "Sidewall emission coefficient for source junction [ ]"),
|
||||
IOP("xtis", HSMHV_MOD_XTIS, IF_REAL, "Junction current temparature exponent coefficient for source junction [- ]"),
|
||||
IOP("cjs", HSMHV_MOD_CJS, IF_REAL, "Bottom junction capacitance per unit area at zero bias for source junction [F/m^2]"),
|
||||
IOP("cjsws", HSMHV_MOD_CJSSW, IF_REAL, "Sidewall junction capacitance grading coefficient per unit length at zero bias for source junction [F/m ]"),
|
||||
IOP("cjswgs", HSMHV_MOD_CJSWGS, IF_REAL, "Gate sidewall junction capacitance per unit length at zero bias for source junction [F/m ]"),
|
||||
IOP("mjs", HSMHV_MOD_MJS, IF_REAL, "Bottom junction capacitance grading coefficient for source junction [ ]"),
|
||||
IOP("mjsws", HSMHV_MOD_MJSWS, IF_REAL, "Sidewall junction capacitance grading coefficient for source junction [ ]"),
|
||||
IOP("mjswgs", HSMHV_MOD_MJSWGS, IF_REAL, "Gate sidewall junction capacitance grading coefficient for source junction [ ]"),
|
||||
IOP("pbs", HSMHV_MOD_PBS, IF_REAL, "Bottom junction build-in potential for source junction [V ]"),
|
||||
IOP("pbsws", HSMHV_MOD_PBSWS, IF_REAL, "Sidewall junction build-in potential for source junction [V ]"),
|
||||
IOP("pbswgs", HSMHV_MOD_PBSWSG, IF_REAL, "Gate sidewall junction build-in potential for source junction [V ]"),
|
||||
IOP("xti2s", HSMHV_MOD_XTI2S, IF_REAL, "Temperature coefficient for source junction [- ]"),
|
||||
IOP("cisbs", HSMHV_MOD_CISBS, IF_REAL, "Reverse bias saturation current for source junction [- ]"),
|
||||
IOP("cvbs", HSMHV_MOD_CVBS, IF_REAL, "Bias dependence coefficient of cisb for source junction [- ]"),
|
||||
IOP("ctemps", HSMHV_MOD_CTEMPS, IF_REAL, "Temperature coefficient for source junction [- ]"),
|
||||
IOP("cisbks", HSMHV_MOD_CISBKS, IF_REAL, "Reverse bias saturation current for source junction [A ]"),
|
||||
IOP("divxs", HSMHV_MOD_DIVXS, IF_REAL, "Reverse coefficient coefficient for source junction [1/V ]"),
|
||||
IOP("vdiffjs", HSMHV_MOD_VDIFFJS, IF_REAL, "Threshold voltage for junction diode for source junction [V ]"),
|
||||
IOP("shemax", HSMHV_MOD_SHEMAX, IF_REAL, "Maximum rise temperatue for SHE [C]"),
|
||||
IOP("vgsmin", HSMHV_MOD_VGSMIN, IF_REAL, "minimal/maximal expected Vgs (NMOS/PMOS) [V]"),
|
||||
IOP("gdsleak", HSMHV_MOD_GDSLEAK, IF_REAL, "Channel leakage conductance [A/V]"),
|
||||
IOP("rdrbb", HSMHV_MOD_RDRBB, IF_REAL, "degradation of the mobility in drift region"),
|
||||
IOP("rdrbbtmp", HSMHV_MOD_RDRBBTMP, IF_REAL, "temperature coeeficient of RDRBB"),
|
||||
|
||||
|
||||
/* binning parameters */
|
||||
IOP("lmin", HSMHV_MOD_LMIN, IF_REAL, "Minimum length for the model"),
|
||||
|
|
@ -598,7 +445,7 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("leg0", HSMHV_MOD_LEG0, IF_REAL, "Length dependence of eg0"),
|
||||
IOP("lvfbover", HSMHV_MOD_LVFBOVER, IF_REAL, "Length dependence of vfbover"),
|
||||
IOP("lnover", HSMHV_MOD_LNOVER, IF_REAL, "Length dependence of nover"),
|
||||
IOP("lnovers", HSMHV_MOD_LNOVERS, IF_REAL, "Length dependence of nover on source side"),
|
||||
IOP("lnovers", HSMHV_MOD_LNOVERS, IF_REAL, "Length dependence of nover on source size"),
|
||||
IOP("lwl2", HSMHV_MOD_LWL2, IF_REAL, "Length dependence of wl2"),
|
||||
IOP("lvfbc", HSMHV_MOD_LVFBC, IF_REAL, "Length dependence of vfbc"),
|
||||
IOP("lnsubc", HSMHV_MOD_LNSUBC, IF_REAL, "Length dependence of nsubc"),
|
||||
|
|
@ -610,7 +457,7 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("lsc2", HSMHV_MOD_LSC2, IF_REAL, "Length dependence of sc2"),
|
||||
IOP("lsc3", HSMHV_MOD_LSC3, IF_REAL, "Length dependence of sc3"),
|
||||
IOP("lpgd1", HSMHV_MOD_LPGD1, IF_REAL, "Length dependence of pgd1"),
|
||||
//IOP("lpgd3", HSMHV_MOD_LPGD3, IF_REAL, "Length dependence of pgd3"),
|
||||
IOP("lpgd3", HSMHV_MOD_LPGD3, IF_REAL, "Length dependence of pgd3"),
|
||||
IOP("lndep", HSMHV_MOD_LNDEP, IF_REAL, "Length dependence of ndep"),
|
||||
IOP("lninv", HSMHV_MOD_LNINV, IF_REAL, "Length dependence of ninv"),
|
||||
IOP("lmuecb0", HSMHV_MOD_LMUECB0, IF_REAL, "Length dependence of muecb0"),
|
||||
|
|
@ -662,7 +509,7 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("lglkb2", HSMHV_MOD_LGLKB2, IF_REAL, "Length dependence of glkb2"),
|
||||
IOP("lnftrp", HSMHV_MOD_LNFTRP, IF_REAL, "Length dependence of nftrp"),
|
||||
IOP("lnfalp", HSMHV_MOD_LNFALP, IF_REAL, "Length dependence of nfalp"),
|
||||
//IOP("lpthrou", HSMHV_MOD_LPTHROU, IF_REAL, "Length dependence of pthrou"),
|
||||
IOP("lpthrou", HSMHV_MOD_LPTHROU, IF_REAL, "Length dependence of pthrou"),
|
||||
IOP("lvdiffj", HSMHV_MOD_LVDIFFJ, IF_REAL, "Length dependence of vdiffj"),
|
||||
IOP("libpc1", HSMHV_MOD_LIBPC1, IF_REAL, "Length dependence of ibpc1"),
|
||||
IOP("libpc2", HSMHV_MOD_LIBPC2, IF_REAL, "Length dependence of ibpc2"),
|
||||
|
|
@ -684,16 +531,6 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("lrs", HSMHV_MOD_LRS, IF_REAL, "Length dependence of rs"),
|
||||
IOP("lrth0", HSMHV_MOD_LRTH0, IF_REAL, "Length dependence of rth0"),
|
||||
IOP("lvover", HSMHV_MOD_LVOVER, IF_REAL, "Length dependence of vover"),
|
||||
IOP("ljs0d", HSMHV_MOD_LJS0D, IF_REAL, "Length dependence of js0d"),
|
||||
IOP("ljs0swd", HSMHV_MOD_LJS0SWD, IF_REAL, "Length dependence of js0swd"),
|
||||
IOP("lnjd", HSMHV_MOD_LNJD, IF_REAL, "Length dependence of njd"),
|
||||
IOP("lcisbkd", HSMHV_MOD_LCISBKD, IF_REAL, "Length dependence of cisbkd"),
|
||||
IOP("lvdiffjd", HSMHV_MOD_LVDIFFJD, IF_REAL, "Length dependence of vdiffjd"),
|
||||
IOP("ljs0s", HSMHV_MOD_LJS0S, IF_REAL, "Length dependence of js0s"),
|
||||
IOP("ljs0sws", HSMHV_MOD_LJS0SWS, IF_REAL, "Length dependence of js0sws"),
|
||||
IOP("lnjs", HSMHV_MOD_LNJS, IF_REAL, "Length dependence of njs"),
|
||||
IOP("lcisbks", HSMHV_MOD_LCISBKS, IF_REAL, "Length dependence of cisbks"),
|
||||
IOP("lvdiffjs", HSMHV_MOD_LVDIFFJS, IF_REAL, "Length dependence of vdiffjs"),
|
||||
|
||||
/* Width dependence */
|
||||
IOP("wvmax", HSMHV_MOD_WVMAX, IF_REAL, "Width dependence of vmax"),
|
||||
|
|
@ -702,7 +539,7 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("weg0", HSMHV_MOD_WEG0, IF_REAL, "Width dependence of eg0"),
|
||||
IOP("wvfbover", HSMHV_MOD_WVFBOVER, IF_REAL, "Width dependence of vfbover"),
|
||||
IOP("wnover", HSMHV_MOD_WNOVER, IF_REAL, "Width dependence of nover"),
|
||||
IOP("wnovers", HSMHV_MOD_WNOVERS, IF_REAL, "Width dependence of novers on source side"),
|
||||
IOP("wnovers", HSMHV_MOD_WNOVERS, IF_REAL, "Width dependence of novers on source size"),
|
||||
IOP("wwl2", HSMHV_MOD_WWL2, IF_REAL, "Width dependence of wl2"),
|
||||
IOP("wvfbc", HSMHV_MOD_WVFBC, IF_REAL, "Width dependence of vfbc"),
|
||||
IOP("wnsubc", HSMHV_MOD_WNSUBC, IF_REAL, "Width dependence of nsubc"),
|
||||
|
|
@ -714,7 +551,7 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("wsc2", HSMHV_MOD_WSC2, IF_REAL, "Width dependence of sc2"),
|
||||
IOP("wsc3", HSMHV_MOD_WSC3, IF_REAL, "Width dependence of sc3"),
|
||||
IOP("wpgd1", HSMHV_MOD_WPGD1, IF_REAL, "Width dependence of pgd1"),
|
||||
//IOP("wpgd3", HSMHV_MOD_WPGD3, IF_REAL, "Width dependence of pgd3"),
|
||||
IOP("wpgd3", HSMHV_MOD_WPGD3, IF_REAL, "Width dependence of pgd3"),
|
||||
IOP("wndep", HSMHV_MOD_WNDEP, IF_REAL, "Width dependence of ndep"),
|
||||
IOP("wninv", HSMHV_MOD_WNINV, IF_REAL, "Width dependence of ninv"),
|
||||
IOP("wmuecb0", HSMHV_MOD_WMUECB0, IF_REAL, "Width dependence of muecb0"),
|
||||
|
|
@ -766,7 +603,7 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("wglkb2", HSMHV_MOD_WGLKB2, IF_REAL, "Width dependence of glkb2"),
|
||||
IOP("wnftrp", HSMHV_MOD_WNFTRP, IF_REAL, "Width dependence of nftrp"),
|
||||
IOP("wnfalp", HSMHV_MOD_WNFALP, IF_REAL, "Width dependence of nfalp"),
|
||||
//IOP("wpthrou", HSMHV_MOD_WPTHROU, IF_REAL, "Width dependence of pthrou"),
|
||||
IOP("wpthrou", HSMHV_MOD_WPTHROU, IF_REAL, "Width dependence of pthrou"),
|
||||
IOP("wvdiffj", HSMHV_MOD_WVDIFFJ, IF_REAL, "Width dependence of vdiffj"),
|
||||
IOP("wibpc1", HSMHV_MOD_WIBPC1, IF_REAL, "Width dependence of ibpc1"),
|
||||
IOP("wibpc2", HSMHV_MOD_WIBPC2, IF_REAL, "Width dependence of ibpc2"),
|
||||
|
|
@ -788,16 +625,6 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("wrs", HSMHV_MOD_WRS, IF_REAL, "Width dependence of rs"),
|
||||
IOP("wrth0", HSMHV_MOD_WRTH0, IF_REAL, "Width dependence of rth0"),
|
||||
IOP("wvover", HSMHV_MOD_WVOVER, IF_REAL, "Width dependence of vover"),
|
||||
IOP("wjs0d", HSMHV_MOD_WJS0D, IF_REAL, "Wength dependence of js0d"),
|
||||
IOP("wjs0swd", HSMHV_MOD_WJS0SWD, IF_REAL, "Wength dependence of js0swd"),
|
||||
IOP("wnjd", HSMHV_MOD_WNJD, IF_REAL, "Wength dependence of njd"),
|
||||
IOP("wcisbkd", HSMHV_MOD_WCISBKD, IF_REAL, "Wength dependence of cisbkd"),
|
||||
IOP("wvdiffjd", HSMHV_MOD_WVDIFFJD, IF_REAL, "Wength dependence of vdiffjd"),
|
||||
IOP("wjs0s", HSMHV_MOD_WJS0S, IF_REAL, "Wength dependence of js0s"),
|
||||
IOP("wjs0sws", HSMHV_MOD_WJS0SWS, IF_REAL, "Wength dependence of js0sws"),
|
||||
IOP("wnjs", HSMHV_MOD_WNJS, IF_REAL, "Wength dependence of njs"),
|
||||
IOP("wcisbks", HSMHV_MOD_WCISBKS, IF_REAL, "Wength dependence of cisbks"),
|
||||
IOP("wvdiffjs", HSMHV_MOD_WVDIFFJS, IF_REAL, "Wength dependence of vdiffjs"),
|
||||
|
||||
/* Cross-term dependence */
|
||||
IOP("pvmax", HSMHV_MOD_PVMAX, IF_REAL, "Cross-term dependence of vmax"),
|
||||
|
|
@ -806,7 +633,7 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("peg0", HSMHV_MOD_PEG0, IF_REAL, "Cross-term dependence of eg0"),
|
||||
IOP("pvfbover", HSMHV_MOD_PVFBOVER, IF_REAL, "Cross-term dependence of vfbover"),
|
||||
IOP("pnover", HSMHV_MOD_PNOVER, IF_REAL, "Cross-term dependence of nover"),
|
||||
IOP("pnovers", HSMHV_MOD_PNOVERS, IF_REAL, "Cross-term dependence of nover on source side"),
|
||||
IOP("pnovers", HSMHV_MOD_PNOVERS, IF_REAL, "Cross-term dependence of nover on source size"),
|
||||
IOP("pwl2", HSMHV_MOD_PWL2, IF_REAL, "Cross-term dependence of wl2"),
|
||||
IOP("pvfbc", HSMHV_MOD_PVFBC, IF_REAL, "Cross-term dependence of vfbc"),
|
||||
IOP("pnsubc", HSMHV_MOD_PNSUBC, IF_REAL, "Cross-term dependence of nsubc"),
|
||||
|
|
@ -818,7 +645,7 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("psc2", HSMHV_MOD_PSC2, IF_REAL, "Cross-term dependence of sc2"),
|
||||
IOP("psc3", HSMHV_MOD_PSC3, IF_REAL, "Cross-term dependence of sc3"),
|
||||
IOP("ppgd1", HSMHV_MOD_PPGD1, IF_REAL, "Cross-term dependence of pgd1"),
|
||||
//IOP("ppgd3", HSMHV_MOD_PPGD3, IF_REAL, "Cross-term dependence of pgd3"),
|
||||
IOP("ppgd3", HSMHV_MOD_PPGD3, IF_REAL, "Cross-term dependence of pgd3"),
|
||||
IOP("pndep", HSMHV_MOD_PNDEP, IF_REAL, "Cross-term dependence of ndep"),
|
||||
IOP("pninv", HSMHV_MOD_PNINV, IF_REAL, "Cross-term dependence of ninv"),
|
||||
IOP("pmuecb0", HSMHV_MOD_PMUECB0, IF_REAL, "Cross-term dependence of muecb0"),
|
||||
|
|
@ -870,7 +697,7 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("pglkb2", HSMHV_MOD_PGLKB2, IF_REAL, "Cross-term dependence of glkb2"),
|
||||
IOP("pnftrp", HSMHV_MOD_PNFTRP, IF_REAL, "Cross-term dependence of nftrp"),
|
||||
IOP("pnfalp", HSMHV_MOD_PNFALP, IF_REAL, "Cross-term dependence of nfalp"),
|
||||
//IOP("ppthrou", HSMHV_MOD_PPTHROU, IF_REAL, "Cross-term dependence of pthrou"),
|
||||
IOP("ppthrou", HSMHV_MOD_PPTHROU, IF_REAL, "Cross-term dependence of pthrou"),
|
||||
IOP("pvdiffj", HSMHV_MOD_PVDIFFJ, IF_REAL, "Cross-term dependence of vdiffj"),
|
||||
IOP("pibpc1", HSMHV_MOD_PIBPC1, IF_REAL, "Cross-term dependence of ibpc1"),
|
||||
IOP("pibpc2", HSMHV_MOD_PIBPC2, IF_REAL, "Cross-term dependence of ibpc2"),
|
||||
|
|
@ -892,16 +719,6 @@ IFparm HSMHVmPTable[] = { /* model parameters */
|
|||
IOP("prs", HSMHV_MOD_PRS, IF_REAL, "Cross-term dependence of rs"),
|
||||
IOP("prth0", HSMHV_MOD_PRTH0, IF_REAL, "Cross-term dependence of rth0"),
|
||||
IOP("pvover", HSMHV_MOD_PVOVER, IF_REAL, "Cross-term dependence of vover"),
|
||||
IOP("pjs0d", HSMHV_MOD_PJS0D, IF_REAL, "Cross-term dependence of js0d"),
|
||||
IOP("pjs0swd", HSMHV_MOD_PJS0SWD, IF_REAL, "Cross-term dependence of js0swd"),
|
||||
IOP("pnjd", HSMHV_MOD_PNJD, IF_REAL, "Cross-term dependence of njd"),
|
||||
IOP("pcisbkd", HSMHV_MOD_PCISBKD, IF_REAL, "Cross-term dependence of cisbkd"),
|
||||
IOP("pvdiffjd", HSMHV_MOD_PVDIFFJD, IF_REAL, "Cross-term dependence of vdiffjd"),
|
||||
IOP("pjs0s", HSMHV_MOD_PJS0S, IF_REAL, "Cross-term dependence of js0s"),
|
||||
IOP("pjs0sws", HSMHV_MOD_PJS0SWS, IF_REAL, "Cross-term dependence of js0sws"),
|
||||
IOP("pnjs", HSMHV_MOD_PNJS, IF_REAL, "Cross-term dependence of njs"),
|
||||
IOP("pcisbks", HSMHV_MOD_PCISBKS, IF_REAL, "Cross-term dependence of cisbks"),
|
||||
IOP("pvdiffjs", HSMHV_MOD_PVDIFFJS, IF_REAL, "Cross-term dependence of vdiffjs"),
|
||||
|
||||
IOP("vgs_max", HSMHV_MOD_VGS_MAX, IF_REAL, "maximum voltage G-S branch"),
|
||||
IOP("vgd_max", HSMHV_MOD_VGD_MAX, IF_REAL, "maximum voltage G-D branch"),
|
||||
|
|
|
|||
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvacld.c
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
|
|
|||
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvask.c
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/ifsim.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
|
|
@ -247,12 +205,6 @@ int HSMHVask(
|
|||
case HSMHV_ISUB:
|
||||
value->rValue = here->HSMHV_isub;
|
||||
return(OK);
|
||||
case HSMHV_ISUBLD:
|
||||
value->rValue = here->HSMHV_isubld;
|
||||
return(OK);
|
||||
case HSMHV_IDSIBPC:
|
||||
value->rValue = here->HSMHV_idsibpc;
|
||||
return(OK);
|
||||
case HSMHV_IGIDL:
|
||||
value->rValue = here->HSMHV_igidl;
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvcvtest.c
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "hsmhvdef.h"
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvdel.c
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "hsmhvdef.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
|
|
|||
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvdest.c
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "hsmhvdef.h"
|
||||
#include "ngspice/suffix.h"
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -1,600 +0,0 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
FILE : hsmhveval_dio.c
|
||||
|
||||
DATE : 2014.6.11
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
* Substrate-source/drain junction diode
|
||||
*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
|
||||
|
||||
/*===========================================================*
|
||||
* Preamble
|
||||
*=================*/
|
||||
/*---------------------------------------------------*
|
||||
* Header files
|
||||
*-----------------*/
|
||||
#include "ngspice/ngspice.h"
|
||||
|
||||
/*-----------------------------------*
|
||||
* HiSIM macros
|
||||
*-----------------*/
|
||||
#include "hisimhv.h"
|
||||
#include "hsmhvevalenv.h"
|
||||
|
||||
/*===========================================================*
|
||||
* Function HSMHVdio
|
||||
*=================*/
|
||||
int HSMHVdio
|
||||
(
|
||||
double vbs_jct,
|
||||
double vbd_jct,
|
||||
double deltemp,
|
||||
HSMHVinstance *here,
|
||||
HSMHVmodel *model,
|
||||
CKTcircuit *ckt
|
||||
)
|
||||
{
|
||||
HSMHVbinningParam *pParam = &here->pParam ;
|
||||
|
||||
/* junction currents */
|
||||
double Ibs =0.0, Gbs =0.0, Ibs_dT =0.0 ;
|
||||
double Ibd =0.0, Gbd =0.0, Ibd_dT =0.0 ;
|
||||
|
||||
/* junction capacitances */
|
||||
double Qbs =0.0, Capbs =0.0, Qbs_dT =0.0 ;
|
||||
double Qbd =0.0, Capbd =0.0, Qbd_dT =0.0 ;
|
||||
double czbd =0.0, czbd_dT=0.0 ;
|
||||
double czbdsw =0.0, czbdsw_dT=0.0 ;
|
||||
double czbdswg =0.0, czbdswg_dT=0.0 ;
|
||||
double czbs =0.0, czbs_dT=0.0 ;
|
||||
double czbssw =0.0, czbssw_dT=0.0 ;
|
||||
double czbsswg =0.0, czbsswg_dT=0.0 ;
|
||||
double arg =0.0, sarg =0.0 ;
|
||||
|
||||
/* temperature-dependent variables for SHE model */
|
||||
double log_Tratio =0.0 ;
|
||||
double TTEMP =0.0, TTEMP0 =0.0 ;
|
||||
double beta =0.0, beta_dT =0.0 ;
|
||||
double beta_inv =0.0, beta_inv_dT =0.0 ;
|
||||
double Eg =0.0, Eg_dT =0.0 ;
|
||||
double js =0.0, js_dT =0.0 ;
|
||||
double jssw =0.0, jssw_dT =0.0 ;
|
||||
double js2 =0.0, js2_dT =0.0 ;
|
||||
double jssw2 =0.0, jssw2_dT =0.0 ;
|
||||
|
||||
double isbd_dT =0.0, isbs_dT =0.0 ;
|
||||
double isbd2_dT =0.0, isbs2_dT =0.0 ;
|
||||
double vbdt_dT =0.0, vbst_dT = 0.0 ;
|
||||
double jd_expcd_dT =0.0 , jd_expcs_dT =0.0 ;
|
||||
double jd_nvtm_invd_dT =0.0 , jd_nvtm_invs_dT =0.0 ;
|
||||
double exptempd_dT = 0.0 , exptemps_dT = 0.0 ;
|
||||
double tcjbd =0.0, tcjbs =0.0,
|
||||
tcjbdsw =0.0, tcjbssw =0.0,
|
||||
tcjbdswg =0.0, tcjbsswg =0.0 ;
|
||||
|
||||
/* options */
|
||||
double Mfactor = here->HSMHV_m;
|
||||
|
||||
/* Internal flags --------------------*/
|
||||
int flg_err = 0; /* error level */
|
||||
int flg_info = model->HSMHV_info;
|
||||
|
||||
/* temporary vars. & derivatives */
|
||||
double TX =0.0 ;
|
||||
double T0 =0.0, T0_dT =0.0 ;
|
||||
double T1 =0.0, T1_dVb =0.0, T1_dT =0.0 ;
|
||||
double T2 =0.0, T2_dVb =0.0, T2_dT =0.0 ;
|
||||
double T3 =0.0, T3_dVb =0.0, T3_dT =0.0 ;
|
||||
double T4 =0.0, T4_dT =0.0 ;
|
||||
double T9 =0.0, T9_dT =0.0 ;
|
||||
double T10 =0.0, T10_dT =0.0 ;
|
||||
double T12 =0.0, T12_dT =0.0 ;
|
||||
|
||||
|
||||
/*================ Start of executable code.=================*/
|
||||
|
||||
/*-----------------------------------------------------------*
|
||||
* Temperature dependent constants.
|
||||
*-----------------*/
|
||||
if ( here->HSMHVtempNode > 0 && pParam->HSMHV_rth0 != 0.0 ) {
|
||||
|
||||
#define HSMHVEVAL
|
||||
#include "hsmhvtemp_eval_dio.h"
|
||||
|
||||
} else {
|
||||
TTEMP = ckt->CKTtemp;
|
||||
if ( here->HSMHV_dtemp_Given ) { TTEMP = TTEMP + here->HSMHV_dtemp ; }
|
||||
}
|
||||
|
||||
|
||||
/*-----------------------------------------------------------*
|
||||
* Cbsj, Cbdj: node-base S/D biases.
|
||||
*-----------------*/
|
||||
|
||||
/* ibd */
|
||||
T10 = model->HSMHV_cvbd * here->HSMHV_jd_nvtm_invd ;
|
||||
T10_dT = model->HSMHV_cvbd * beta_dT / pParam->HSMHV_njd ;
|
||||
|
||||
T9 = model->HSMHV_cisbd * here->HSMHV_exptempd ;
|
||||
T9_dT = model->HSMHV_cisbd * exptempd_dT ;
|
||||
T0 = here->HSMHV_isbd2 * T9 ;
|
||||
T0_dT = here->HSMHV_isbd2 * T9_dT + isbd2_dT * T9 ;
|
||||
|
||||
TX = - vbd_jct * T10 ;
|
||||
T2 = exp ( TX );
|
||||
T2_dVb = - T2 * T10 ;
|
||||
T2_dT = T2 * TX * beta_dT * beta_inv ;
|
||||
|
||||
T3 = T2 ;
|
||||
T3_dVb = T2_dVb ;
|
||||
T3_dT = T2_dT ;
|
||||
|
||||
if ( vbd_jct < here->HSMHV_vbdt ) {
|
||||
TX = vbd_jct * here->HSMHV_jd_nvtm_invd ;
|
||||
|
||||
if ( TX < - 3*EXP_THR ) {
|
||||
T1 = 0.0 ;
|
||||
T1_dVb = 0.0 ;
|
||||
T1_dT = 0.0 ;
|
||||
} else {
|
||||
T1 = exp ( TX ) ;
|
||||
T1_dVb = T1 * here->HSMHV_jd_nvtm_invd ;
|
||||
T1_dT = T1 * TX * beta_dT * beta_inv ;
|
||||
}
|
||||
|
||||
Ibd = here->HSMHV_isbd * (T1 - 1.0)
|
||||
+ T0 * (T2 - 1.0)
|
||||
+ pParam->HSMHV_cisbkd * (T3 - 1.0);
|
||||
Gbd = here->HSMHV_isbd * T1_dVb
|
||||
+ T0 * T2_dVb
|
||||
+ pParam->HSMHV_cisbkd * T3_dVb ;
|
||||
Ibd_dT = here->HSMHV_isbd * T1_dT + isbd_dT * ( T1 - 1.0 )
|
||||
+ T0 * T2_dT + T0_dT * ( T2 - 1.0 )
|
||||
+ pParam->HSMHV_cisbkd * T3_dT ;
|
||||
|
||||
} else {
|
||||
T1 = here->HSMHV_jd_expcd ;
|
||||
|
||||
T4 = here->HSMHV_isbd * here->HSMHV_jd_nvtm_invd * T1 ;
|
||||
|
||||
Ibd = here->HSMHV_isbd * (T1 - 1.0)
|
||||
+ T4 * (vbd_jct - here->HSMHV_vbdt)
|
||||
+ T0 * (T2 - 1.0)
|
||||
+ pParam->HSMHV_cisbkd * (T3 - 1.0) ;
|
||||
Gbd = T4
|
||||
+ T0 * T2_dVb
|
||||
+ pParam->HSMHV_cisbkd * T3_dVb ;
|
||||
|
||||
T1_dT = jd_expcd_dT ;
|
||||
T4_dT = isbd_dT * here->HSMHV_jd_nvtm_invd * T1
|
||||
+ here->HSMHV_isbd * jd_nvtm_invd_dT * T1
|
||||
+ here->HSMHV_isbd * here->HSMHV_jd_nvtm_invd * T1_dT ;
|
||||
Ibd_dT = isbd_dT * ( T1 - 1.0 ) + here->HSMHV_isbd * T1_dT
|
||||
+ T4_dT * ( vbd_jct - here->HSMHV_vbdt ) - T4 * vbdt_dT
|
||||
+ T0_dT * ( T2 - 1.0 ) + T0 * T2_dT
|
||||
+ pParam->HSMHV_cisbkd * T3_dT ;
|
||||
}
|
||||
T12 = model->HSMHV_divxd * here->HSMHV_isbd2 ;
|
||||
Ibd += T12 * vbd_jct ;
|
||||
Gbd += T12 ;
|
||||
|
||||
T12_dT = model->HSMHV_divxd * isbd2_dT ;
|
||||
Ibd_dT += T12_dT * vbd_jct ;
|
||||
|
||||
/* ibs */
|
||||
T10 = model->HSMHV_cvbs * here->HSMHV_jd_nvtm_invs ;
|
||||
T10_dT = model->HSMHV_cvbs * beta_dT / pParam->HSMHV_njs ;
|
||||
|
||||
T9 = model->HSMHV_cisbs * here->HSMHV_exptemps ;
|
||||
T9_dT = model->HSMHV_cisbs * exptemps_dT ;
|
||||
T0 = here->HSMHV_isbs2 * T9 ;
|
||||
T0_dT = here->HSMHV_isbs2 * T9_dT + isbs2_dT * T9 ;
|
||||
|
||||
TX = - vbs_jct * T10 ;
|
||||
T2 = exp ( TX );
|
||||
T2_dVb = - T2 * T10 ;
|
||||
T2_dT = T2 * TX * beta_dT * beta_inv ;
|
||||
|
||||
T3 = T2 ;
|
||||
T3_dVb = T2_dVb ;
|
||||
T3_dT = T2_dT ;
|
||||
|
||||
if ( vbs_jct < here->HSMHV_vbst ) {
|
||||
TX = vbs_jct * here->HSMHV_jd_nvtm_invs ;
|
||||
if ( TX < - 3*EXP_THR ) {
|
||||
T1 = 0.0 ;
|
||||
T1_dVb = 0.0 ;
|
||||
T1_dT = 0.0 ;
|
||||
} else {
|
||||
T1 = exp ( TX ) ;
|
||||
T1_dVb = T1 * here->HSMHV_jd_nvtm_invs ;
|
||||
T1_dT = T1 * TX * beta_dT * beta_inv ;
|
||||
}
|
||||
Ibs = here->HSMHV_isbs * (T1 - 1.0)
|
||||
+ T0 * (T2 - 1.0)
|
||||
+ pParam->HSMHV_cisbks * (T3 - 1.0);
|
||||
Gbs = here->HSMHV_isbs * T1_dVb
|
||||
+ T0 * T2_dVb
|
||||
+ pParam->HSMHV_cisbks * T3_dVb ;
|
||||
Ibs_dT = here->HSMHV_isbs * T1_dT + isbs_dT * ( T1 - 1.0 )
|
||||
+ T0 * T2_dT + T0_dT * ( T2 - 1.0 )
|
||||
+ pParam->HSMHV_cisbks * T3_dT ;
|
||||
} else {
|
||||
T1 = here->HSMHV_jd_expcs ;
|
||||
|
||||
T4 = here->HSMHV_isbs * here->HSMHV_jd_nvtm_invs * T1 ;
|
||||
|
||||
Ibs = here->HSMHV_isbs * (T1 - 1.0)
|
||||
+ T4 * (vbs_jct - here->HSMHV_vbst)
|
||||
+ T0 * (T2 - 1.0)
|
||||
+ pParam->HSMHV_cisbks * (T3 - 1.0) ;
|
||||
Gbs = T4
|
||||
+ T0 * T2_dVb
|
||||
+ pParam->HSMHV_cisbks * T3_dVb ;
|
||||
|
||||
T1_dT = jd_expcs_dT ;
|
||||
T4_dT = isbs_dT * here->HSMHV_jd_nvtm_invs * T1
|
||||
+ here->HSMHV_isbs * jd_nvtm_invs_dT * T1
|
||||
+ here->HSMHV_isbs * here->HSMHV_jd_nvtm_invs * T1_dT ;
|
||||
Ibs_dT = isbs_dT * ( T1 - 1.0 ) + here->HSMHV_isbs * T1_dT
|
||||
+ T4_dT * ( vbs_jct - here->HSMHV_vbst) - T4 * vbst_dT
|
||||
+ T0_dT * ( T2 - 1.0 ) + T0 * T2_dT
|
||||
+ pParam->HSMHV_cisbks * T3_dT ;
|
||||
}
|
||||
T12 = model->HSMHV_divxs * here->HSMHV_isbs2 ;
|
||||
Ibs += T12 * vbs_jct ;
|
||||
Gbs += T12 ;
|
||||
|
||||
T12_dT = model->HSMHV_divxs * isbs2_dT ;
|
||||
Ibs_dT += T12_dT * vbs_jct ;
|
||||
|
||||
|
||||
/*-----------------------------------------------------------*
|
||||
* Charges and Capacitances.
|
||||
*-----------------*/
|
||||
/* charge storage elements
|
||||
* bulk-drain and bulk-source depletion capacitances
|
||||
* czbd : zero bias drain junction capacitance
|
||||
* czbs : zero bias source junction capacitance
|
||||
* czbdsw:zero bias drain junction sidewall capacitance
|
||||
* czbssw:zero bias source junction sidewall capacitance
|
||||
*/
|
||||
|
||||
/* Source Bulk Junction */
|
||||
tcjbs = model->HSMHV_tcjbs ;
|
||||
tcjbssw = model->HSMHV_tcjbssw ;
|
||||
tcjbsswg = model->HSMHV_tcjbsswg ;
|
||||
|
||||
czbs = model->HSMHV_cjs * here->HSMHV_as ;
|
||||
czbs = czbs * ( 1.0 + tcjbs * ( TTEMP - model->HSMHV_ktnom )) ;
|
||||
czbs_dT = ( model->HSMHV_cjs * here->HSMHV_as ) * tcjbs ;
|
||||
|
||||
if (here->HSMHV_ps > here->HSMHV_weff_nf) {
|
||||
czbssw = model->HSMHV_cjsws * ( here->HSMHV_ps - here->HSMHV_weff_nf ) ;
|
||||
czbssw = czbssw * ( 1.0 + tcjbssw * ( TTEMP - model->HSMHV_ktnom )) ;
|
||||
czbssw_dT = ( model->HSMHV_cjsws * ( here->HSMHV_ps - here->HSMHV_weff_nf )) * tcjbssw ;
|
||||
|
||||
czbsswg = model->HSMHV_cjswgs * here->HSMHV_weff_nf ;
|
||||
czbsswg = czbsswg * ( 1.0 + tcjbsswg * ( TTEMP - model->HSMHV_ktnom )) ;
|
||||
czbsswg_dT = ( model->HSMHV_cjswgs * here->HSMHV_weff_nf ) * tcjbsswg ;
|
||||
|
||||
// if (vbs_jct == 0.0) {
|
||||
if (0) {
|
||||
Qbs = 0.0 ;
|
||||
Qbs_dT = 0.0 ;
|
||||
Capbs = czbs + czbssw + czbsswg ;
|
||||
} else if (vbs_jct < 0.0) {
|
||||
if (czbs > 0.0) {
|
||||
arg = 1.0 - vbs_jct / model->HSMHV_pbs ;
|
||||
if (model->HSMHV_mjs == 0.5)
|
||||
sarg = 1.0 / sqrt(arg) ;
|
||||
else
|
||||
sarg = Fn_Pow( arg , -model->HSMHV_mjs ) ;
|
||||
Qbs = model->HSMHV_pbs * czbs * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjs) ;
|
||||
Qbs_dT = model->HSMHV_pbs * czbs_dT * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjs) ;
|
||||
Capbs = czbs * sarg ;
|
||||
} else {
|
||||
Qbs = 0.0 ;
|
||||
Qbs_dT = 0.0 ;
|
||||
Capbs = 0.0 ;
|
||||
}
|
||||
if (czbssw > 0.0) {
|
||||
arg = 1.0 - vbs_jct / model->HSMHV_pbsws ;
|
||||
if (model->HSMHV_mjsws == 0.5)
|
||||
sarg = 1.0 / sqrt(arg) ;
|
||||
else
|
||||
sarg = Fn_Pow( arg , -model->HSMHV_mjsws ) ;
|
||||
Qbs += model->HSMHV_pbsws * czbssw * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjsws) ;
|
||||
Qbs_dT += model->HSMHV_pbsws * czbssw_dT * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjsws) ;
|
||||
Capbs += czbssw * sarg ;
|
||||
}
|
||||
if (czbsswg > 0.0) {
|
||||
arg = 1.0 - vbs_jct / model->HSMHV_pbswgs ;
|
||||
if (model->HSMHV_mjswgs == 0.5)
|
||||
sarg = 1.0 / sqrt(arg) ;
|
||||
else
|
||||
sarg = Fn_Pow( arg , -model->HSMHV_mjswgs ) ;
|
||||
Qbs += model->HSMHV_pbswgs * czbsswg * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjswgs) ;
|
||||
Qbs_dT += model->HSMHV_pbswgs * czbsswg_dT * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjswgs) ;
|
||||
Capbs += czbsswg * sarg ;
|
||||
}
|
||||
} else {
|
||||
T1 = czbs + czbssw + czbsswg ;
|
||||
T1_dT = czbs_dT + czbssw_dT + czbsswg_dT ;
|
||||
T2 = czbs * model->HSMHV_mjs / model->HSMHV_pbs
|
||||
+ czbssw * model->HSMHV_mjsws / model->HSMHV_pbsws
|
||||
+ czbsswg * model->HSMHV_mjswgs / model->HSMHV_pbswgs ;
|
||||
T2_dT = czbs_dT * model->HSMHV_mjs / model->HSMHV_pbs
|
||||
+ czbssw_dT * model->HSMHV_mjsws / model->HSMHV_pbsws
|
||||
+ czbsswg_dT * model->HSMHV_mjswgs / model->HSMHV_pbswgs ;
|
||||
Qbs = vbs_jct * (T1 + vbs_jct * 0.5 * T2) ;
|
||||
Qbs_dT = vbs_jct * (T1_dT + vbs_jct * 0.5 * T2_dT) ;
|
||||
Capbs = T1 + vbs_jct * T2 ;
|
||||
}
|
||||
} else {
|
||||
czbsswg = model->HSMHV_cjswgs * here->HSMHV_ps ;
|
||||
czbsswg = czbsswg * ( 1.0 + tcjbsswg * ( TTEMP - model->HSMHV_ktnom )) ;
|
||||
czbsswg_dT = ( model->HSMHV_cjswgs * here->HSMHV_ps ) * tcjbsswg ;
|
||||
|
||||
// if (vbs_jct == 0.0) {
|
||||
if (0) {
|
||||
Qbs = 0.0 ;
|
||||
Qbs_dT = 0.0 ;
|
||||
Capbs = czbs + czbsswg ;
|
||||
} else if (vbs_jct < 0.0) {
|
||||
if (czbs > 0.0) {
|
||||
arg = 1.0 - vbs_jct / model->HSMHV_pbs ;
|
||||
if (model->HSMHV_mjs == 0.5)
|
||||
sarg = 1.0 / sqrt(arg) ;
|
||||
else
|
||||
sarg = Fn_Pow( arg , -model->HSMHV_mjs ) ;
|
||||
Qbs = model->HSMHV_pbs * czbs * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjs) ;
|
||||
Qbs_dT = model->HSMHV_pbs * czbs_dT * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjs) ;
|
||||
Capbs = czbs * sarg ;
|
||||
} else {
|
||||
Qbs = 0.0 ;
|
||||
Qbs_dT = 0.0 ;
|
||||
Capbs = 0.0 ;
|
||||
}
|
||||
if (czbsswg > 0.0) {
|
||||
arg = 1.0 - vbs_jct / model->HSMHV_pbswgs ;
|
||||
if (model->HSMHV_mjswgs == 0.5)
|
||||
sarg = 1.0 / sqrt(arg) ;
|
||||
else
|
||||
sarg = Fn_Pow( arg , -model->HSMHV_mjswgs ) ;
|
||||
Qbs += model->HSMHV_pbswgs * czbsswg * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjswgs) ;
|
||||
Qbs_dT += model->HSMHV_pbswgs * czbsswg_dT * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjswgs) ;
|
||||
Capbs += czbsswg * sarg ;
|
||||
}
|
||||
} else {
|
||||
T1 = czbs + czbsswg ;
|
||||
T1_dT = czbs_dT + czbsswg_dT ;
|
||||
T2 = czbs * model->HSMHV_mjs / model->HSMHV_pbs
|
||||
+ czbsswg * model->HSMHV_mjswgs / model->HSMHV_pbswgs ;
|
||||
T2_dT = czbs_dT * model->HSMHV_mjs / model->HSMHV_pbs
|
||||
+ czbsswg_dT * model->HSMHV_mjswgs / model->HSMHV_pbswgs ;
|
||||
Qbs = vbs_jct * (T1 + vbs_jct * 0.5 * T2) ;
|
||||
Qbs_dT = vbs_jct * (T1_dT + vbs_jct * 0.5 * T2_dT) ;
|
||||
Capbs = T1 + vbs_jct * T2 ;
|
||||
}
|
||||
}
|
||||
|
||||
/* Drain Bulk Junction */
|
||||
tcjbd = model->HSMHV_tcjbd ;
|
||||
tcjbdsw = model->HSMHV_tcjbdsw ;
|
||||
tcjbdswg = model->HSMHV_tcjbdswg ;
|
||||
|
||||
czbd = model->HSMHV_cjd * here->HSMHV_ad ;
|
||||
czbd = czbd * ( 1.0 + tcjbd * ( TTEMP - model->HSMHV_ktnom )) ;
|
||||
czbd_dT = ( model->HSMHV_cjd * here->HSMHV_ad ) * tcjbd ;
|
||||
|
||||
if (here->HSMHV_pd > here->HSMHV_weff_nf) {
|
||||
|
||||
czbdsw = model->HSMHV_cjswd * ( here->HSMHV_pd - here->HSMHV_weff_nf ) ;
|
||||
czbdsw = czbdsw * ( 1.0 + tcjbdsw * ( TTEMP - model->HSMHV_ktnom )) ;
|
||||
czbdsw_dT = ( model->HSMHV_cjswd * ( here->HSMHV_pd - here->HSMHV_weff_nf )) * tcjbdsw ;
|
||||
|
||||
czbdswg = model->HSMHV_cjswgd * here->HSMHV_weff_nf ;
|
||||
czbdswg = czbdswg * ( 1.0 + tcjbdswg * ( TTEMP - model->HSMHV_ktnom )) ;
|
||||
czbdswg_dT = ( model->HSMHV_cjswgd * here->HSMHV_weff_nf ) * tcjbdswg ;
|
||||
|
||||
// if (vbd_jct == 0.0) {
|
||||
if (0) {
|
||||
Qbd = 0.0 ;
|
||||
Qbd_dT = 0.0 ;
|
||||
Capbd = czbd + czbdsw + czbdswg ;
|
||||
} else if (vbd_jct < 0.0) {
|
||||
if (czbd > 0.0) {
|
||||
arg = 1.0 - vbd_jct / model->HSMHV_pbd ;
|
||||
if (model->HSMHV_mjd == 0.5)
|
||||
sarg = 1.0 / sqrt(arg) ;
|
||||
else
|
||||
sarg = Fn_Pow( arg , -model->HSMHV_mjd ) ;
|
||||
Qbd = model->HSMHV_pbd * czbd * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjd) ;
|
||||
Qbd_dT = model->HSMHV_pbd * czbd_dT * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjd) ;
|
||||
Capbd = czbd * sarg ;
|
||||
} else {
|
||||
Qbd = 0.0 ;
|
||||
Qbd_dT = 0.0 ;
|
||||
Capbd = 0.0 ;
|
||||
}
|
||||
if (czbdsw > 0.0) {
|
||||
arg = 1.0 - vbd_jct / model->HSMHV_pbswd ;
|
||||
if (model->HSMHV_mjswd == 0.5)
|
||||
sarg = 1.0 / sqrt(arg) ;
|
||||
else
|
||||
sarg = Fn_Pow( arg , -model->HSMHV_mjswd ) ;
|
||||
Qbd += model->HSMHV_pbswd * czbdsw * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjswd) ;
|
||||
Qbd_dT += model->HSMHV_pbswd * czbdsw_dT * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjswd) ;
|
||||
Capbd += czbdsw * sarg ;
|
||||
}
|
||||
if (czbdswg > 0.0) {
|
||||
arg = 1.0 - vbd_jct / model->HSMHV_pbswgd ;
|
||||
if (model->HSMHV_mjswgd == 0.5)
|
||||
sarg = 1.0 / sqrt(arg) ;
|
||||
else
|
||||
sarg = Fn_Pow( arg , -model->HSMHV_mjswgd ) ;
|
||||
Qbd += model->HSMHV_pbswgd * czbdswg * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjswgd) ;
|
||||
Qbd_dT += model->HSMHV_pbswgd * czbdswg_dT * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjswgd) ;
|
||||
Capbd += czbdswg * sarg ;
|
||||
|
||||
}
|
||||
} else {
|
||||
T1 = czbd + czbdsw + czbdswg ;
|
||||
T1_dT = czbd_dT + czbdsw_dT + czbdswg_dT ;
|
||||
T2 = czbd * model->HSMHV_mjd / model->HSMHV_pbd
|
||||
+ czbdsw * model->HSMHV_mjswd / model->HSMHV_pbswd
|
||||
+ czbdswg * model->HSMHV_mjswgd / model->HSMHV_pbswgd ;
|
||||
T2_dT = czbd_dT * model->HSMHV_mjd / model->HSMHV_pbd
|
||||
+ czbdsw_dT * model->HSMHV_mjswd / model->HSMHV_pbswd
|
||||
+ czbdswg_dT * model->HSMHV_mjswgd / model->HSMHV_pbswgd ;
|
||||
Qbd = vbd_jct * (T1 + vbd_jct * 0.5 * T2) ;
|
||||
Qbd_dT = vbd_jct * (T1_dT + vbd_jct * 0.5 * T2_dT) ;
|
||||
Capbd = T1 + vbd_jct * T2 ;
|
||||
}
|
||||
|
||||
} else {
|
||||
czbdswg = model->HSMHV_cjswgd * here->HSMHV_pd ;
|
||||
czbdswg = czbdswg * ( 1.0 + tcjbdswg * ( TTEMP - model->HSMHV_ktnom )) ;
|
||||
czbdswg_dT = ( model->HSMHV_cjswgd * here->HSMHV_pd ) * tcjbdswg ;
|
||||
|
||||
// if (vbd_jct == 0.0) {
|
||||
if (0) {
|
||||
Qbd = 0.0 ;
|
||||
Qbd_dT = 0.0 ;
|
||||
Capbd = czbd + czbdswg ;
|
||||
} else if (vbd_jct < 0.0) {
|
||||
if (czbd > 0.0) {
|
||||
arg = 1.0 - vbd_jct / model->HSMHV_pbd ;
|
||||
if (model->HSMHV_mjd == 0.5)
|
||||
sarg = 1.0 / sqrt(arg) ;
|
||||
else
|
||||
sarg = Fn_Pow( arg , -model->HSMHV_mjd ) ;
|
||||
Qbd = model->HSMHV_pbd * czbd * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjd) ;
|
||||
Qbd_dT = model->HSMHV_pbd * czbd_dT * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjd) ;
|
||||
Capbd = czbd * sarg ;
|
||||
} else {
|
||||
Qbd = 0.0 ;
|
||||
Qbd_dT = 0.0 ;
|
||||
Capbd = 0.0 ;
|
||||
}
|
||||
if (czbdswg > 0.0) {
|
||||
arg = 1.0 - vbd_jct / model->HSMHV_pbswgd ;
|
||||
if (model->HSMHV_mjswgd == 0.5)
|
||||
sarg = 1.0 / sqrt(arg) ;
|
||||
else
|
||||
sarg = Fn_Pow( arg , -model->HSMHV_mjswgd ) ;
|
||||
Qbd += model->HSMHV_pbswgd * czbdswg * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjswgd) ;
|
||||
Qbd_dT += model->HSMHV_pbswgd * czbdswg_dT * (1.0 - arg * sarg) / (1.0 - model->HSMHV_mjswgd) ;
|
||||
Capbd += czbdswg * sarg ;
|
||||
}
|
||||
} else {
|
||||
T1 = czbd + czbdswg ;
|
||||
T1_dT = czbd_dT + czbdswg_dT ;
|
||||
T2 = czbd * model->HSMHV_mjd / model->HSMHV_pbd
|
||||
+ czbdswg * model->HSMHV_mjswgd / model->HSMHV_pbswgd ;
|
||||
T2_dT = czbd_dT * model->HSMHV_mjd / model->HSMHV_pbd
|
||||
+ czbdswg_dT * model->HSMHV_mjswgd / model->HSMHV_pbswgd ;
|
||||
Qbd = vbd_jct * (T1 + vbd_jct * 0.5 * T2) ;
|
||||
Qbd_dT = vbd_jct * (T1_dT + vbd_jct * 0.5 * T2_dT) ;
|
||||
Capbd = T1 + vbd_jct * T2 ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------*
|
||||
* Junction diode.
|
||||
*-----------------*/
|
||||
here->HSMHV_ibs = Mfactor * Ibs ;
|
||||
here->HSMHV_ibd = Mfactor * Ibd ;
|
||||
here->HSMHV_gbs = Mfactor * Gbs ;
|
||||
here->HSMHV_gbd = Mfactor * Gbd ;
|
||||
*(ckt->CKTstate0 + here->HSMHVqbs) = Mfactor * Qbs ;
|
||||
*(ckt->CKTstate0 + here->HSMHVqbd) = Mfactor * Qbd ;
|
||||
here->HSMHV_capbs = Mfactor * Capbs ;
|
||||
here->HSMHV_capbd = Mfactor * Capbd ;
|
||||
|
||||
here->HSMHV_gbdT = Mfactor * Ibd_dT ;
|
||||
here->HSMHV_gbsT = Mfactor * Ibs_dT ;
|
||||
here->HSMHV_gcbdT = Mfactor * Qbd_dT ;
|
||||
here->HSMHV_gcbsT = Mfactor * Qbs_dT ;
|
||||
|
||||
/*-----------------------------------------------------------*
|
||||
* Warn floating-point exceptions.
|
||||
* - Function finite() in libm is called.
|
||||
*-----------------*/
|
||||
T1 = here->HSMHV_ibs + here->HSMHV_ibd + here->HSMHV_gbs + here->HSMHV_gbd;
|
||||
T1 = T1 + *(ckt->CKTstate0 + here->HSMHVqbs)
|
||||
+ *(ckt->CKTstate0 + here->HSMHVqbd)
|
||||
+ here->HSMHV_capbs
|
||||
+ here->HSMHV_capbd;
|
||||
if ( ! finite (T1) ) {
|
||||
flg_err = 1 ;
|
||||
fprintf(stderr ,
|
||||
"*** warning(HiSIM_HV(%s)): FP-exception (junction diode)\n",model->HSMHVmodName) ;
|
||||
if ( flg_info >= 1 ) {
|
||||
printf ("*** warning(HiSIM_HV(%s)): FP-exception\n",model->HSMHVmodName) ;
|
||||
}
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*
|
||||
* End of HSMHVeval_dio
|
||||
*-----------------*/
|
||||
|
||||
return ( HiSIM_OK ) ;
|
||||
|
||||
}
|
||||
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhveval_qover.h
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
/* Begin HSMHVevalQover */
|
||||
|
||||
/*---------------------------------------------------*
|
||||
|
|
@ -103,7 +61,7 @@ June 2008 (revised October 2011)
|
|||
/*-----------------------------------*
|
||||
* QsuLD: total charge = Accumulation | Depletion+inversion
|
||||
*-----------------*/
|
||||
if ( VgpLD < Vgb_fb_LD ){
|
||||
if ( VgpLD < Vgb_fb_LD ){
|
||||
/*---------------------------*
|
||||
* Accumulation
|
||||
*-----------------*/
|
||||
|
|
@ -136,23 +94,16 @@ June 2008 (revised October 2011)
|
|||
Ac3_dVgb = T1 * Ac31_dVgb ;
|
||||
Ac3_dT = T1 * Ac31_dT ;
|
||||
|
||||
if ( Ac4 < Ac3*1.0e-8 ) {
|
||||
Ac1 = 0.5*Ac4/Ac31 ;
|
||||
Ac1_dVxb = - 0.5*Ac4/Ac3*Ac31_dVxb ;
|
||||
Ac1_dVgb = - 0.5*Ac4/Ac3*Ac31_dVxb ;
|
||||
Ac1_dT = 0.5*Ac4_dT/Ac31 - 0.5*Ac4/Ac3*Ac31_dT ;
|
||||
} else {
|
||||
Ac2 = sqrt( Ac4 + Ac3 ) ;
|
||||
T1 = 0.5 / Ac2 ;
|
||||
Ac2_dVxb = T1 * Ac3_dVxb ;
|
||||
Ac2_dVgb = T1 * Ac3_dVgb ;
|
||||
Ac2_dT = T1 * ( Ac4_dT + Ac3_dT );
|
||||
Ac2 = sqrt( Ac4 + Ac3 ) ;
|
||||
T1 = 0.5 / Ac2 ;
|
||||
Ac2_dVxb = T1 * Ac3_dVxb ;
|
||||
Ac2_dVgb = T1 * Ac3_dVgb ;
|
||||
Ac2_dT = T1 * ( Ac4_dT + Ac3_dT );
|
||||
|
||||
Ac1 = -Ac31 + Ac2 ;
|
||||
Ac1_dVxb = Ac2_dVxb -Ac31_dVxb ;
|
||||
Ac1_dVgb = Ac2_dVgb -Ac31_dVgb ;
|
||||
Ac1_dT = Ac2_dT -Ac31_dT ;
|
||||
}
|
||||
Ac1 = -7.0 * C_SQRT_2 + Ac2 + 9.0 * TY * ( TX - 2.0 ) ;
|
||||
Ac1_dVxb = Ac2_dVxb + 9.0 * TY * TX_dVxb ;
|
||||
Ac1_dVgb = Ac2_dVgb + 9.0 * TY * TX_dVgb ;
|
||||
Ac1_dT = Ac2_dT + 9.0 * ( TY_dT * ( TX - 2.0 ) + TY * TX_dT ) ;
|
||||
|
||||
Acd = pow( Ac1 , C_1o3 ) ;
|
||||
T1 = C_1o3 / ( Acd * Acd ) ;
|
||||
|
|
@ -320,14 +271,14 @@ June 2008 (revised October 2011)
|
|||
VgpLD_shift_dVgb = VgpLD_dVgb;
|
||||
VgpLD_shift_dVxb = Vxbgmtcl_dVxbgmt;
|
||||
VgpLD_shift_dT = Vxbgmtcl_dT;
|
||||
exp_bVbs = exp( beta * - Vxbgmtcl ) + small;
|
||||
exp_bVbs = exp( beta * - Vxbgmtcl ) + small ;
|
||||
exp_bVbs_dVxb = - exp_bVbs * beta * Vxbgmtcl_dVxbgmt;
|
||||
exp_bVbs_dT = - exp_bVbs * (beta_dT*Vxbgmtcl + beta*Vxbgmtcl_dT);
|
||||
T0 = here->HSMHV_nin / Nover_func;
|
||||
T0_dT = Nin_dT / Nover_func;
|
||||
cnst1over = T0 * T0;
|
||||
cnst1over_dT = 2.0 * T0 * T0_dT;
|
||||
gamma = cnst1over * exp_bVbs;
|
||||
gamma = cnst1over * exp_bVbs ;
|
||||
gamma_dVxb = cnst1over * exp_bVbs_dVxb;
|
||||
gamma_dT = cnst1over_dT * exp_bVbs + cnst1over * exp_bVbs_dT;
|
||||
|
||||
|
|
@ -360,8 +311,8 @@ June 2008 (revised October 2011)
|
|||
psi += beta*0.1 ;
|
||||
psi_dT += beta_dT*0.1 ;
|
||||
|
||||
psi_B = psi;
|
||||
arg_B = psi*psi/(gamma*T0);
|
||||
/* psi_B = psi;*/
|
||||
/* arg_B = psi*psi/(gamma*T0);*/
|
||||
Chi_B = log(gamma*T0 + psi*psi) - log(cnst1over*T0) + beta*Vxbgmtcl;
|
||||
Chi_B_dVgb = 2.0*psi*psi_dVgb/ (gamma*T0 + psi*psi);
|
||||
Chi_B_dVxb = (gamma_dVxb*T0+2.0*psi*psi_dVxb)/(gamma*T0+psi*psi)
|
||||
|
|
@ -370,10 +321,10 @@ June 2008 (revised October 2011)
|
|||
- (cnst1over_dT*T0 + cnst1over*T0_dT)/(cnst1over*T0)
|
||||
+ beta_dT*Vxbgmtcl + beta*Vxbgmtcl_dT;
|
||||
Ps0_iniB = Chi_B/beta - Vxbgmtcl ;
|
||||
Ps0_iniB_dVgb = Chi_B_dVgb/beta;
|
||||
/* Ps0_iniB_dVgb = Chi_B_dVgb/beta;
|
||||
Ps0_iniB_dVxb = Chi_B_dVxb/beta- Vxbgmtcl_dVxbgmt;
|
||||
Ps0_iniB_dT = Chi_B_dT/beta - Chi_B/(beta*beta)*beta_dT - Vxbgmtcl_dT;
|
||||
|
||||
*/
|
||||
|
||||
/* construction of Ps0LD by taking Ps0_iniB as an upper limit of Ps0_iniA
|
||||
*
|
||||
|
|
@ -522,7 +473,7 @@ June 2008 (revised October 2011)
|
|||
*-----------------*/
|
||||
if ( flg_conv == 0 ) {
|
||||
fprintf( stderr ,
|
||||
"*** warning(HiSIM_HV(%s)): Went Over Iteration Maximum (Ps0LD)\n",model->HSMHVmodName ) ;
|
||||
"*** warning(HiSIM_HV): Went Over Iteration Maximum (Ps0LD)\n" ) ;
|
||||
fprintf( stderr , " -Vxbgmtcl = %e Vgbgmt = %e\n" , -Vxbgmtcl , Vgbgmt ) ;
|
||||
}
|
||||
|
||||
|
|
@ -626,7 +577,7 @@ June 2008 (revised October 2011)
|
|||
fs01_dVgs = Ps0LD_dVgb * fs01_dPs0 ;
|
||||
fs01_dT = Ps0LD_dT * fs01_dPs0 + fs01_dT;
|
||||
fs02_dVbs = Ps0LD_dVxb * fs02_dPs0 + fs02_dVbs ;
|
||||
fs02_dVxb = Ps0LD_dVds * fs02_dPs0 ;
|
||||
/* fs02_dVxb = Ps0LD_dVds * fs02_dPs0 ;*/
|
||||
fs02_dVgb = Ps0LD_dVgb * fs02_dPs0 ;
|
||||
fs02_dT = Ps0LD_dT * fs02_dPs0 + fs02_dT;
|
||||
|
||||
|
|
@ -665,9 +616,9 @@ June 2008 (revised October 2011)
|
|||
} /* end of Vgbgmt region blocks */
|
||||
|
||||
/* convert to source ref. */
|
||||
Ps0LD_dVbs = Ps0LD_dVxb * Vxbgmt_dVbs + Ps0LD_dVgb * Vgbgmt_dVbs ;
|
||||
/* Ps0LD_dVbs = Ps0LD_dVxb * Vxbgmt_dVbs + Ps0LD_dVgb * Vgbgmt_dVbs ;*/
|
||||
Ps0LD_dVds = Ps0LD_dVxb * Vxbgmt_dVds + Ps0LD_dVgb * Vgbgmt_dVds ;
|
||||
Ps0LD_dVgs = Ps0LD_dVxb * Vxbgmt_dVgs + Ps0LD_dVgb * Vgbgmt_dVgs ;
|
||||
/* Ps0LD_dVgs = Ps0LD_dVxb * Vxbgmt_dVgs + Ps0LD_dVgb * Vgbgmt_dVgs ;*/
|
||||
|
||||
QsuLD_dVbs = QsuLD_dVxb * Vxbgmt_dVbs + QsuLD_dVgb * Vgbgmt_dVbs ;
|
||||
QsuLD_dVds = QsuLD_dVxb * Vxbgmt_dVds + QsuLD_dVgb * Vgbgmt_dVds ;
|
||||
|
|
|
|||
|
|
@ -1,656 +0,0 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
FILE : hsmhveval_rdrift.c
|
||||
|
||||
DATE : 2014.6.11
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
/*===========================================================*
|
||||
* Preamble.
|
||||
*=================*/
|
||||
/*---------------------------------------------------*
|
||||
* Header files.
|
||||
*-----------------*/
|
||||
#include "ngspice/ngspice.h"
|
||||
#ifdef __STDC__
|
||||
/* #include <ieeefp.h> */
|
||||
#endif
|
||||
|
||||
/*-----------------------------------*
|
||||
* HiSIM macros
|
||||
*-----------------*/
|
||||
#include "hisimhv.h"
|
||||
#include "hsmhvevalenv.h"
|
||||
|
||||
/* local variables used in macro functions */
|
||||
double TMF0 , TMF1 , TMF2 , TMF3 , TMF4 , TMF5 , TMF6 ;
|
||||
|
||||
/*===========================================================*
|
||||
* pow
|
||||
*=================*/
|
||||
#ifdef POW_TO_EXP_AND_LOG
|
||||
#define Fn_Pow( x , y ) exp( y * log( x ) )
|
||||
#else
|
||||
#define Fn_Pow( x , y ) pow( x , y )
|
||||
#endif
|
||||
|
||||
/*===========================================================*
|
||||
* Macro Functions for ceiling/flooring/symmetrization.
|
||||
*=================*/
|
||||
/*---------------------------------------------------*
|
||||
* smoothUpper: ceiling.
|
||||
* y = xmax - 0.5 ( arg + sqrt( arg^2 + 4 xmax delta ) )
|
||||
* arg = xmax - x - delta
|
||||
*-----------------*/
|
||||
|
||||
#define Fn_SU( y , x , xmax , delta , dx ) { \
|
||||
TMF1 = ( xmax ) - ( x ) - ( delta ) ; \
|
||||
TMF2 = 4.0 * ( xmax ) * ( delta) ; \
|
||||
TMF2 = TMF2 > 0.0 ? TMF2 : - ( TMF2 ) ; \
|
||||
TMF2 = sqrt ( TMF1 * TMF1 + TMF2 ) ; \
|
||||
dx = 0.5 * ( 1.0 + TMF1 / TMF2 ) ; \
|
||||
y = ( xmax ) - 0.5 * ( TMF1 + TMF2 ) ; \
|
||||
}
|
||||
|
||||
#define Fn_SU2( y , x , xmax , delta , dy_dx , dy_dxmax ) { \
|
||||
TMF1 = ( xmax ) - ( x ) - ( delta ) ; \
|
||||
TMF2 = 4.0 * ( xmax ) * ( delta) ; \
|
||||
TMF2 = TMF2 > 0.0 ? TMF2 : - ( TMF2 ) ; \
|
||||
TMF2 = sqrt ( TMF1 * TMF1 + TMF2 ) ; \
|
||||
dy_dx = 0.5 * ( 1.0 + TMF1 / TMF2 ) ; \
|
||||
dy_dxmax = 0.5 * ( 1.0 - ( TMF1 + 2.0 * delta ) / TMF2 ) ; \
|
||||
y = ( xmax ) - 0.5 * ( TMF1 + TMF2 ) ; \
|
||||
}
|
||||
|
||||
/*---------------------------------------------------*
|
||||
* smoothLower: flooring.
|
||||
* y = xmin + 0.5 ( arg + sqrt( arg^2 + 4 xmin delta ) )
|
||||
* arg = x - xmin - delta
|
||||
*-----------------*/
|
||||
|
||||
#define Fn_SL( y , x , xmin , delta , dx ) { \
|
||||
TMF1 = ( x ) - ( xmin ) - ( delta ) ; \
|
||||
TMF2 = 4.0 * ( xmin ) * ( delta ) ; \
|
||||
TMF2 = TMF2 > 0.0 ? TMF2 : - ( TMF2 ) ; \
|
||||
TMF2 = sqrt ( TMF1 * TMF1 + TMF2 ) ; \
|
||||
dx = 0.5 * ( 1.0 + TMF1 / TMF2 ) ; \
|
||||
y = ( xmin ) + 0.5 * ( TMF1 + TMF2 ) ; \
|
||||
}
|
||||
|
||||
#define Fn_SL2( y , x , xmin , delta , dy_dx, dy_dxmin ) { \
|
||||
TMF1 = ( x ) - ( xmin ) - ( delta ) ; \
|
||||
TMF2 = 4.0 * ( xmin ) * ( delta ) ; \
|
||||
TMF2 = TMF2 > 0.0 ? TMF2 : - ( TMF2 ) ; \
|
||||
TMF2 = sqrt ( TMF1 * TMF1 + TMF2 ) ; \
|
||||
dy_dx = 0.5 * ( 1.0 + TMF1 / TMF2 ) ; \
|
||||
dy_dxmin = 0.5 * ( 1.0 - ( TMF1 - 2.0 * delta ) / TMF2 ) ; \
|
||||
y = ( xmin ) + 0.5 * ( TMF1 + TMF2 ) ; \
|
||||
}
|
||||
|
||||
/*---------------------------------------------------*
|
||||
* smoothZero: flooring to zero.
|
||||
* y = 0.5 ( x + sqrt( x^2 + 4 delta^2 ) )
|
||||
*-----------------*/
|
||||
|
||||
#define Fn_SZ( y , x , delta , dx ) { \
|
||||
TMF2 = sqrt ( ( x ) * ( x ) + 4.0 * ( delta ) * ( delta ) ) ; \
|
||||
dx = 0.5 * ( 1.0 + ( x ) / TMF2 ) ; \
|
||||
y = 0.5 * ( ( x ) + TMF2 ) ; \
|
||||
if( y < 0.0 ) { y=0.0; dx=0.0; } \
|
||||
}
|
||||
|
||||
/*---------------------------------------------------*
|
||||
* SymAdd: evaluate additional term for symmetry.
|
||||
*-----------------*/
|
||||
|
||||
#define Fn_SymAdd( y , x , add0 , dx ) \
|
||||
{ \
|
||||
if( ( x ) < 1e6 ) { \
|
||||
TMF1 = 2.0 * ( x ) / ( add0 ) ; \
|
||||
TMF2 = 1.0 + TMF1 * ( (1.0/2) + TMF1 * ( (1.0/6) \
|
||||
+ TMF1 * ( (1.0/24) + TMF1 * ( (1.0/120) \
|
||||
+ TMF1 * ( (1.0/720) + TMF1 * (1.0/5040) ) ) ) ) ) ; \
|
||||
TMF3 = (1.0/2) + TMF1 * ( (1.0/3) \
|
||||
+ TMF1 * ( (1.0/8) + TMF1 * ( (1.0/30) \
|
||||
+ TMF1 * ( (1.0/144) + TMF1 * (1.0/840) ) ) ) ) ; \
|
||||
y = add0 / TMF2 ; \
|
||||
dx = - 2.0 * TMF3 / ( TMF2 * TMF2 ) ; \
|
||||
} else { y=0.0; dx=0.9; } \
|
||||
}
|
||||
|
||||
#define Fn_CP( y , x , xmax , pw , dx ) { \
|
||||
double x2 = (x) * (x) ; \
|
||||
double xmax2 = (xmax) * (xmax) ; \
|
||||
double xp = 1.0 , xmp = 1.0 ; \
|
||||
int m =0, mm =0; \
|
||||
double arg =0.0, dnm =0.0; \
|
||||
for ( m = 0 ; m < pw ; m ++ ) { xp *= x2 ; xmp *= xmax2 ; } \
|
||||
arg = xp + xmp ; \
|
||||
dnm = arg ; \
|
||||
if ( pw == 1 || pw == 2 || pw == 4 || pw == 8 ) { \
|
||||
if ( pw == 1 ) { mm = 1 ; \
|
||||
} else if ( pw == 2 ) { mm = 2 ; \
|
||||
} else if ( pw == 4 ) { mm = 3 ; \
|
||||
} else if ( pw == 8 ) { mm = 4 ; } \
|
||||
for ( m = 0 ; m < mm ; m ++ ) { dnm = sqrt( dnm ) ; } \
|
||||
} else { dnm = Fn_Pow( dnm , 1.0 / ( 2.0 * pw ) ) ; } \
|
||||
dnm = 1.0 / dnm ; \
|
||||
y = (x) * (xmax) * dnm ; \
|
||||
dx = (xmax) * xmp * dnm / arg ; \
|
||||
}
|
||||
|
||||
#define Fn_SU_CP( y , x , xmax , delta , pw , dx ) { \
|
||||
if(x > xmax - delta && delta >= 0.0) { \
|
||||
TMF1 = x - xmax + delta ; \
|
||||
Fn_CP( TMF0 , TMF1 , delta , pw , dx ) \
|
||||
y = xmax - delta + TMF0 ; \
|
||||
dx = dx ; \
|
||||
} else { \
|
||||
y = x ; \
|
||||
dx = 1.0 ; \
|
||||
} \
|
||||
}
|
||||
|
||||
/*===========================================================*
|
||||
* Function hsmhvrdrift.
|
||||
*=================*/
|
||||
|
||||
int HSMHVrdrift
|
||||
(
|
||||
double Vddp,
|
||||
double Vds,
|
||||
double Vbs,
|
||||
double Vsubs, /* substrate-source voltage */
|
||||
double deltemp,
|
||||
HSMHVinstance *here,
|
||||
HSMHVmodel *model,
|
||||
CKTcircuit *ckt
|
||||
)
|
||||
{
|
||||
HSMHVbinningParam *pParam = &here->pParam ;
|
||||
HSMHVmodelMKSParam *modelMKS = &model->modelMKS ;
|
||||
|
||||
const double small = 1.0e-50 ;
|
||||
|
||||
double Mfactor =0.0, WeffLD_nf =0.0 ;
|
||||
double Ldrift =0.0, Xldld =0.0 ;
|
||||
double Nover =0.0 ;
|
||||
|
||||
/* temporary vars. & derivatives*/
|
||||
double T0 =0.0, T0_dVb =0.0, T0_dVd =0.0, T0_dVg =0.0, T0_dT =0.0 ;
|
||||
double T1 =0.0, T1_dVd =0.0, T1_dT =0.0, T1_dVddp =0.0 ;
|
||||
double T2 =0.0, T2_dVb =0.0, T2_dVd =0.0, T2_dT =0.0, T2_dVddp =0.0 ;
|
||||
double T3 =0.0, T3_dT =0.0, T3_dVddp =0.0 ;
|
||||
double T4 =0.0, T4_dT =0.0, T4_dVddp =0.0 ;
|
||||
double T5 =0.0, T5_dT =0.0, T5_dVddp =0.0 ;
|
||||
double T6 =0.0, T6_dT =0.0, T6_dVddp =0.0 ;
|
||||
double T9 =0.0 ;
|
||||
|
||||
/* bias-dependent Rd, Rs */
|
||||
|
||||
double Edri =0.0, Edri_dVddp =0.0 ;
|
||||
double Vdri =0.0, Vdri_dVddp =0.0, Vdri_dT =0.0 ;
|
||||
double Vmax =0.0, Vmax_dT =0.0 ;
|
||||
double Mu0 =0.0, Mu0_dT =0.0 ;
|
||||
double Cx =0.0, Cx_dT =0.0 ;
|
||||
double Car =0.0, Car_dT =0.0 ;
|
||||
double Mu =0.0, Mu_dVddp = 0.0, Mu_dT =0.0 ;
|
||||
double Xov =0.0, Xov_dVds =0.0, Xov_dVgs =0.0, Xov_dVbs =0.0, Xov_dT =0.0 ;
|
||||
double Carr =0.0, Carr_dVds=0.0, Carr_dVgs=0.0, Carr_dVbs=0.0, Carr_dVddp =0.0, Carr_dT =0.0 ;
|
||||
|
||||
double GD =0.0, GD_dVddp =0.0, GD_dVgse =0.0, GD_dT =0.0, GD_dVds =0.0, GD_dVgs =0.0, GD_dVbs =0.0 ;
|
||||
double Rd =0.0, Rd_dVddp =0.0, Rd_dVdse =0.0, Rd_dVgse =0.0, Rd_dVbse =0.0, Rd_dT =0.0, Rd_dVds =0.0, Rd_dVgs =0.0, Rd_dVbs =0.0 ;
|
||||
double Vddpz=0.0, Vddpz_dVddp=0.0, Vzadd =0.0, Vzadd_dVddp=0.0 ;
|
||||
|
||||
/* temperature-dependent variables for SHE model */
|
||||
double TTEMP =0.0, TTEMP0 =0.0 ;
|
||||
|
||||
/* Wdepl and Wjunc */
|
||||
double Wdepl, Wdepl_dVd, Wdepl_dVg, Wdepl_dVb, Wdepl_dT;
|
||||
double Wjunc0, Wjunc0_dVd, Wjunc0_dVb;
|
||||
double Wrdrdjunc, Wjunc, Wjunc_dVd, Wjunc_dVb;
|
||||
|
||||
const double Res_min = 1.0e-4 ;
|
||||
const double epsm10 = 10.0e0 * C_EPS_M ;
|
||||
const double ps_conv = 1.0e-12 ;
|
||||
|
||||
double Rdrbb_dT =0.0 ;
|
||||
|
||||
double Wdep = 0.0, Wdep_dVdserev = 0.0, Wdep_dVsubsrev = 0.0 ;
|
||||
double T1_dVdserev = 0.0, T1_dVsubsrev = 0.0, T6_dVdserev = 0.0, T6_dVsubsrev = 0.0 ;
|
||||
double Rd_dVsubs=0.0 ;
|
||||
|
||||
#define C_sub_delta 0.1 /* CHECK! */
|
||||
#define C_sub_delta2 1.0e-9 /* CHECK! */
|
||||
|
||||
NG_IGNORE(Vsubs);
|
||||
|
||||
/*================ Start of executable code.=================*/
|
||||
|
||||
/*-----------------------------------------------------------*
|
||||
* Temperature dependent constants.
|
||||
*-----------------*/
|
||||
if ( here->HSMHVtempNode > 0 && pParam->HSMHV_rth0 != 0.0 ) {
|
||||
|
||||
#define HSMHVEVAL
|
||||
#include "hsmhvtemp_eval_rdri.h"
|
||||
|
||||
} else {
|
||||
if ( here->HSMHV_dtemp_Given ) { TTEMP = TTEMP + here->HSMHV_dtemp ; }
|
||||
Mu0_dT = 0.0 ;
|
||||
Vmax_dT = 0.0 ;
|
||||
Cx_dT = 0.0 ;
|
||||
Car_dT = 0.0 ;
|
||||
Rdrbb_dT = 0.0 ;
|
||||
}
|
||||
|
||||
Mfactor = here->HSMHV_m ;
|
||||
WeffLD_nf = here->HSMHV_weff_ld * here->HSMHV_nf ;
|
||||
Ldrift = here->HSMHV_ldrift1 + here->HSMHV_ldrift2 ;
|
||||
Xldld = model->HSMHV_xldld + small ;
|
||||
Nover = pParam->HSMHV_nover ;
|
||||
|
||||
|
||||
Mu0 = here->HSMHV_rdrmue * here->HSMHV_rdrmuel ;
|
||||
Mu0_dT = Mu0_dT * here->HSMHV_rdrmuel ;
|
||||
Vmax = here->HSMHV_rdrvmax * here->HSMHV_rdrvmaxw * here->HSMHV_rdrvmaxl + small ;
|
||||
Vmax_dT = Vmax_dT * here->HSMHV_rdrvmaxw * here->HSMHV_rdrvmaxl ;
|
||||
Cx = here->HSMHV_rdrcx * here->HSMHV_rdrcxw ;
|
||||
Cx_dT = Cx_dT * here->HSMHV_rdrcxw ;
|
||||
Car = here->HSMHV_rdrcar ;
|
||||
|
||||
//-----------------------------------------------------------*
|
||||
// Modified bias introduced to realize symmetry at Vddp=0.
|
||||
//-----------------//
|
||||
if(Vddp < 0) {
|
||||
Fn_SymAdd( Vzadd , -Vddp / 2 , model->HSMHV_vzadd0 , T2 ) ;
|
||||
Vzadd_dVddp = - T2 / 2.0 ;
|
||||
if( Vzadd < ps_conv ) {
|
||||
Vzadd = ps_conv ;
|
||||
Vzadd_dVddp = 0.0 ;
|
||||
}
|
||||
Vddpz = Vddp - 2 * Vzadd ;
|
||||
Vddpz_dVddp = 1.0 - 2 * Vzadd_dVddp ;
|
||||
} else {
|
||||
Fn_SymAdd( Vzadd , Vddp / 2 , model->HSMHV_vzadd0 , T2 ) ;
|
||||
Vzadd_dVddp = T2 / 2.0 ;
|
||||
if( Vzadd < ps_conv ) {
|
||||
Vzadd = ps_conv ;
|
||||
Vzadd_dVddp = 0.0 ;
|
||||
}
|
||||
Vddpz = Vddp + 2 * Vzadd ;
|
||||
Vddpz_dVddp = 1.0 + 2 * Vzadd_dVddp ;
|
||||
}
|
||||
|
||||
Edri = Vddpz / Ldrift ;
|
||||
Edri_dVddp = Vddpz_dVddp / Ldrift ;
|
||||
|
||||
Vdri = Mu0 * Edri ;
|
||||
Vdri_dVddp = Mu0 * Edri_dVddp ;
|
||||
Vdri_dT = Mu0_dT * Edri ;
|
||||
|
||||
/*-----------------------------------------------------------*
|
||||
* Mu : mobility
|
||||
*-----------------*/
|
||||
if ( Vddp >= 0 ) {
|
||||
T1 = Vdri / Vmax ;
|
||||
T1_dVddp = Vdri_dVddp / Vmax ;
|
||||
T1_dT = ( Vdri_dT * Vmax - Vdri * Vmax_dT ) / ( Vmax * Vmax );
|
||||
} else {
|
||||
T1 = - Vdri / Vmax ;
|
||||
T1_dVddp = - Vdri_dVddp / Vmax ;
|
||||
T1_dT = - ( Vdri_dT * Vmax - Vdri * Vmax_dT ) / ( Vmax * Vmax );
|
||||
}
|
||||
|
||||
if( model->HSMHV_rdrbbtmp == 0.0 ) {
|
||||
if( T1 == 0.0 ) {
|
||||
T2 = 0.0 ; T2_dT = 0.0 ; T2_dVddp = 0.0 ;
|
||||
T4 = 1.0 ; T4_dT = 0.0 ; T4_dVddp = 0.0 ;
|
||||
}else {
|
||||
if ( 1.0e0 - epsm10 <= here->HSMHV_rdrbb && here->HSMHV_rdrbb <= 1.0e0 + epsm10 ) {
|
||||
T3 = 1.0e0 ;
|
||||
T3_dT = 0.0e0 ;
|
||||
T3_dVddp = 0.0e0 ;
|
||||
} else if ( 2.0e0 - epsm10 <= here->HSMHV_rdrbb && here->HSMHV_rdrbb <= 2.0e0 + epsm10 ) {
|
||||
T3 = T1 ;
|
||||
T3_dT = T1_dT ;
|
||||
T3_dVddp = T1_dVddp ;
|
||||
} else {
|
||||
T3 = Fn_Pow( T1 , here->HSMHV_rdrbb - 1.0e0 ) ;
|
||||
T3_dT = ( here->HSMHV_rdrbb - 1.0e0 )* Fn_Pow( T1 , here->HSMHV_rdrbb - 2.0e0 ) * T1_dT ;
|
||||
T3_dVddp = ( here->HSMHV_rdrbb - 1.0e0 )* Fn_Pow( T1 , here->HSMHV_rdrbb - 2.0e0 ) * T1_dVddp ;
|
||||
}
|
||||
T2 = T1 * T3 ;
|
||||
T2_dT = T1 * T3_dT + T3 * T1_dT ;
|
||||
T2_dVddp = T1 * T3_dVddp + T3 * T1_dVddp ;
|
||||
T4 = 1.0e0 + T2 ;
|
||||
T4_dT = T2_dT ;
|
||||
T4_dVddp = T2_dVddp ;
|
||||
}
|
||||
|
||||
if ( 1.0e0 - epsm10 <= here->HSMHV_rdrbb && here->HSMHV_rdrbb <= 1.0e0 + epsm10 ) {
|
||||
T5 = 1.0 / T4 ;
|
||||
T5_dT = - T5 * T5 * T4_dT ;
|
||||
T5_dVddp = - T5 * T5 * T4_dVddp ;
|
||||
} else if ( 2.0e0 - epsm10 <= here->HSMHV_rdrbb && here->HSMHV_rdrbb <= 2.0e0 + epsm10 ) {
|
||||
T5 = 1.0 / sqrt( T4 ) ;
|
||||
T5_dT = - 0.5e0 / ( T4 * sqrt(T4) ) * T4_dT ;
|
||||
T5_dVddp = - 0.5e0 / ( T4 * sqrt(T4) ) * T4_dVddp;
|
||||
} else {
|
||||
T6 = Fn_Pow( T4 , ( - 1.0e0 / here->HSMHV_rdrbb - 1.0e0 ) ) ;
|
||||
T5 = T4 * T6 ;
|
||||
T6_dT = ( - 1.0e0 / here->HSMHV_rdrbb - 1.0e0 ) * Fn_Pow( T4 , ( - 1.0e0 / here->HSMHV_rdrbb - 2.0e0 ) ) * T4_dT ;
|
||||
T6_dVddp = ( - 1.0e0 / here->HSMHV_rdrbb - 1.0e0 ) * Fn_Pow( T4 , ( - 1.0e0 / here->HSMHV_rdrbb - 2.0e0 ) ) * T4_dVddp ;
|
||||
T5_dT = T4_dT * T6 + T4 * T6_dT ;
|
||||
T5_dVddp = T4_dVddp * T6 + T4 * T6_dVddp ;
|
||||
}
|
||||
|
||||
} else {
|
||||
if( T1 == 0.0 ) {
|
||||
T2 = 0.0 ; T2_dT = 0.0 ; T2_dVddp = 0.0 ;
|
||||
T4 = 1.0 ; T4_dT = 0.0 ; T4_dVddp = 0.0 ;
|
||||
}else {
|
||||
T3 = Fn_Pow( T1 , here->HSMHV_rdrbb - 1.0e0 ) ;
|
||||
T3_dT = ( here->HSMHV_rdrbb - 1.0e0 )* Fn_Pow( T1 , here->HSMHV_rdrbb - 2.0e0 ) * T1_dT + T3*log(T1)*Rdrbb_dT ;
|
||||
T3_dVddp = ( here->HSMHV_rdrbb - 1.0e0 )* Fn_Pow( T1 , here->HSMHV_rdrbb - 2.0e0 ) * T1_dVddp ;
|
||||
T2 = T1 * T3 ;
|
||||
T2_dT = T1 * T3_dT + T3 * T1_dT ;
|
||||
T2_dVddp = T1 * T3_dVddp + T3 * T1_dVddp ;
|
||||
T4 = 1.0e0 + T2 ;
|
||||
T4_dT = T2_dT ;
|
||||
T4_dVddp = T2_dVddp ;
|
||||
}
|
||||
T6 = Fn_Pow( T4 , ( - 1.0e0 / here->HSMHV_rdrbb - 1.0e0 ) ) ;
|
||||
T5 = T4 * T6 ;
|
||||
T6_dT = ( - 1.0e0 / here->HSMHV_rdrbb - 1.0e0 ) * Fn_Pow( T4 , ( - 1.0e0 / here->HSMHV_rdrbb - 2.0e0 ) ) * T4_dT +T6*log(T4)/here->HSMHV_rdrbb/here->HSMHV_rdrbb*Rdrbb_dT ;
|
||||
T6_dVddp = ( - 1.0e0 / here->HSMHV_rdrbb - 1.0e0 ) * Fn_Pow( T4 , ( - 1.0e0 / here->HSMHV_rdrbb - 2.0e0 ) ) * T4_dVddp ;
|
||||
T5_dT = T4_dT * T6 + T4 * T6_dT ;
|
||||
T5_dVddp = T4_dVddp * T6 + T4 * T6_dVddp ;
|
||||
}
|
||||
|
||||
Mu = Mu0 * T5 ;
|
||||
Mu_dVddp = Mu0 * T5_dVddp ;
|
||||
Mu_dT = Mu0_dT * T5 + Mu0 * T5_dT ;
|
||||
|
||||
/*-----------------------------------------------------------*
|
||||
* Carr : carrier density
|
||||
*-----------------*/
|
||||
|
||||
T4 = 1.0e0 + T1 ;
|
||||
T4_dVddp = T1_dVddp ;
|
||||
T4_dT = T1_dT ;
|
||||
|
||||
T5 = 1.0 / T4 ;
|
||||
T5_dVddp = - T5 * T5 * T4_dVddp ;
|
||||
T5_dT = - T5 * T5 * T4_dT ;
|
||||
|
||||
Carr = Nover * ( 1.0 + Car * ( 1.0 - T5 ) * Vddpz / ( Ldrift - model->HSMHV_rdrdl2 ) ) ;
|
||||
Carr_dVddp = Nover * Car * ( - T5_dVddp * Vddpz + ( 1.0 - T5 ) * Vddpz_dVddp ) / ( Ldrift - model->HSMHV_rdrdl2 ) ;
|
||||
Carr_dT = Nover * ( Car_dT * ( 1.0 - T5 ) + Car * ( - T5_dT ) ) * Vddpz / ( Ldrift - model->HSMHV_rdrdl2 ) ;
|
||||
|
||||
Carr += - here->HSMHV_QbuLD / C_QE * model->HSMHV_rdrqover;
|
||||
Carr_dVds = - here->HSMHV_QbuLD_dVds / C_QE * model->HSMHV_rdrqover;
|
||||
Carr_dVgs = - here->HSMHV_QbuLD_dVgs / C_QE * model->HSMHV_rdrqover;
|
||||
Carr_dVbs = - here->HSMHV_QbuLD_dVbs / C_QE * model->HSMHV_rdrqover;
|
||||
Carr_dT += - here->HSMHV_QbuLD_dTi / C_QE * model->HSMHV_rdrqover;
|
||||
|
||||
/*-----------------------------------------------------------*
|
||||
* Xov : depth of the current flow
|
||||
*-----------------*/
|
||||
T0 = -here->HSMHV_Ps0LD ;
|
||||
T0_dVd = -here->HSMHV_Ps0LD_dVds ;
|
||||
T0_dVg = -here->HSMHV_Ps0LD_dVgs ;
|
||||
T0_dVb = -here->HSMHV_Ps0LD_dVbs ;
|
||||
T0_dT = -here->HSMHV_Ps0LD_dTi ;
|
||||
|
||||
Fn_SZ( T0 , T0 , 1.0e-2 , T9 ) ;
|
||||
T0 += epsm10 ;
|
||||
T0_dVd *= T9 ;
|
||||
T0_dVg *= T9 ;
|
||||
T0_dVb *= T9 ;
|
||||
T0_dT *= T9 ;
|
||||
|
||||
Wdepl = sqrt ( here->HSMHV_kdep * T0 ) ;
|
||||
Wdepl_dVd = here->HSMHV_kdep / ( 2.0 * Wdepl ) * T0_dVd ;
|
||||
Wdepl_dVg = here->HSMHV_kdep / ( 2.0 * Wdepl ) * T0_dVg ;
|
||||
Wdepl_dVb = here->HSMHV_kdep / ( 2.0 * Wdepl ) * T0_dVb ;
|
||||
Wdepl_dT = here->HSMHV_kdep / ( 2.0 * Wdepl ) * T0_dT ;
|
||||
|
||||
T2 = Vds - Vbs + model->HSMHV_vbi ;
|
||||
T2_dVd = 1.0 ;
|
||||
T2_dVb = -1.0 ;
|
||||
|
||||
Fn_SZ( T2 , T2 , 1.0e-2 , T9 ) ;
|
||||
T2 += epsm10 ;
|
||||
T2_dVd *= T9 ;
|
||||
T2_dVb *= T9 ;
|
||||
|
||||
Wjunc0 = sqrt ( here->HSMHV_kjunc * T2 ) ;
|
||||
Wjunc0_dVd = here->HSMHV_kjunc / ( 2.0 * Wjunc0 ) * T2_dVd ;
|
||||
Wjunc0_dVb = here->HSMHV_kjunc / ( 2.0 * Wjunc0 ) * T2_dVb ;
|
||||
Fn_SU( Wjunc, Wjunc0, Xldld, 10e-3*Xldld, T0 );
|
||||
Wjunc_dVd = Wjunc0_dVd * T0;
|
||||
Wjunc_dVb = Wjunc0_dVb * T0;
|
||||
// Wrdrdjunc = model->HSMHV_rdrdjunc + small ;
|
||||
Wrdrdjunc = model->HSMHV_rdrdjunc + epsm10 ;
|
||||
|
||||
|
||||
Xov = here->HSMHV_Xmax - Cx * ( here->HSMHV_Xmax
|
||||
/ Wrdrdjunc * Wdepl + here->HSMHV_Xmax / Xldld * Wjunc ) ;
|
||||
Xov_dVds = - Cx * here->HSMHV_Xmax / Wrdrdjunc * Wdepl_dVd
|
||||
- Cx * here->HSMHV_Xmax / Xldld * Wjunc_dVd ;
|
||||
Xov_dVgs = - Cx * here->HSMHV_Xmax / Wrdrdjunc * Wdepl_dVg ;
|
||||
Xov_dVbs = - Cx * here->HSMHV_Xmax / Wrdrdjunc * Wdepl_dVb
|
||||
- Cx * here->HSMHV_Xmax / Xldld * Wjunc_dVb ;
|
||||
Xov_dT = - Cx_dT * ( here->HSMHV_Xmax
|
||||
/ Wrdrdjunc * Wdepl + here->HSMHV_Xmax / Xldld * Wjunc )
|
||||
- Cx * here->HSMHV_Xmax / Wrdrdjunc * Wdepl_dT ;
|
||||
|
||||
Fn_SZ( Xov , Xov , (1.0 - here->HSMHV_rdrcx) * here->HSMHV_Xmax / 100 , T9 ) ;
|
||||
|
||||
Xov_dVds *= T9 ;
|
||||
Xov_dVgs *= T9 ;
|
||||
Xov_dVbs *= T9 ;
|
||||
Xov_dT *= T9 ;
|
||||
|
||||
/*-----------------------------------------------------------*
|
||||
* Rd : drift resistance
|
||||
*-----------------*/
|
||||
T0 = C_QE / ( Ldrift + model->HSMHV_rdrdl1 );
|
||||
T1 = T0;
|
||||
T1_dVd = 0.0 ;
|
||||
|
||||
GD = T1 * Xov * Mu * Carr ;
|
||||
GD_dVddp = T1 * Xov * Mu_dVddp * Carr
|
||||
+ T1 * Xov * Mu * Carr_dVddp ;
|
||||
GD_dVgse = 0.0 ;
|
||||
GD_dT = T1 * Xov * Mu_dT * Carr
|
||||
+ T1 * Xov_dT * Mu * Carr
|
||||
+ T1 * Xov * Mu * Carr_dT ;
|
||||
GD_dVds = T1 * Mu * (Xov_dVds * Carr + Xov * Carr_dVds)
|
||||
+ T1_dVd * Mu * Xov * Carr;
|
||||
GD_dVgs = T1 * Mu * (Xov_dVgs * Carr + Xov * Carr_dVgs);
|
||||
GD_dVbs = T1 * Mu * (Xov_dVbs * Carr + Xov * Carr_dVbs);
|
||||
|
||||
if ( GD <= 0 ) {
|
||||
// GD = small ;
|
||||
GD = epsm10 ;
|
||||
GD_dVddp = 0.0 ;
|
||||
GD_dVgse = 0.0 ;
|
||||
GD_dT = 0.0 ;
|
||||
GD_dVds = 0.0 ;
|
||||
GD_dVgs = 0.0 ;
|
||||
GD_dVbs = 0.0 ;
|
||||
}
|
||||
|
||||
Rd = 1 / GD ;
|
||||
Rd_dVddp = - GD_dVddp * Rd * Rd ;
|
||||
Rd_dVgse = - GD_dVgse * Rd * Rd ;
|
||||
Rd_dT = - GD_dT * Rd * Rd ;
|
||||
Rd_dVds = - GD_dVds * Rd * Rd ;
|
||||
Rd_dVgs = - GD_dVgs * Rd * Rd ;
|
||||
Rd_dVbs = - GD_dVbs * Rd * Rd ;
|
||||
|
||||
/* Weff dependence of the resistances */
|
||||
Rd = Rd / WeffLD_nf ;
|
||||
|
||||
Fn_SU_CP( Rd, Rd, 1e6, 1e3, 2, T0 ) ;
|
||||
|
||||
Rd_dVddp = Rd_dVddp*T0/WeffLD_nf ;
|
||||
Rd_dVgse = Rd_dVgse*T0/WeffLD_nf ;
|
||||
Rd_dT = Rd_dT*T0/WeffLD_nf ;
|
||||
Rd_dVds = Rd_dVds*T0/WeffLD_nf ;
|
||||
Rd_dVgs = Rd_dVgs*T0/WeffLD_nf ;
|
||||
Rd_dVbs = Rd_dVbs*T0/WeffLD_nf ;
|
||||
|
||||
if ( here->HSMHVsubNode >= 0 &&
|
||||
( pParam->HSMHV_nover * ( modelMKS->HSMHV_nsubsub + pParam->HSMHV_nover ) ) > 0 ) {
|
||||
/* external substrate node exists && LDMOS case: */
|
||||
/* Substrate Effect */
|
||||
T0 = model->HSMHV_vbisub - model->HSMHV_rdvdsub * here->HSMHV_Vdserevz - model->HSMHV_rdvsub * here->HSMHV_Vsubsrev ;
|
||||
|
||||
Fn_SZ( T1, T0, 10.0, T2 ) ;
|
||||
T1 += epsm10 ;
|
||||
|
||||
T1_dVdserev = - model->HSMHV_rdvdsub * here->HSMHV_Vdserevz_dVd * T2 ;
|
||||
T1_dVsubsrev = - model->HSMHV_rdvsub * T2 ;
|
||||
|
||||
T0 = modelMKS->HSMHV_nsubsub / ( pParam->HSMHV_nover * ( modelMKS->HSMHV_nsubsub + pParam->HSMHV_nover ) ) ;
|
||||
|
||||
T4 = 2 * C_ESI / C_QE * T0 ;
|
||||
Wdep = sqrt ( T4 * T1 ) + small ;
|
||||
|
||||
Wdep_dVdserev = 0.5 * T4 * T1_dVdserev / Wdep ;
|
||||
Wdep_dVsubsrev = 0.5 * T4 * T1_dVsubsrev / Wdep ;
|
||||
|
||||
Fn_SU( Wdep, Wdep, model->HSMHV_ddrift, C_sub_delta * model->HSMHV_ddrift, T0 ) ;
|
||||
Wdep_dVdserev *= T0 ;
|
||||
Wdep_dVsubsrev *= T0 ;
|
||||
|
||||
T0 = model->HSMHV_ddrift - Wdep ;
|
||||
Fn_SZ( T0, T0, C_sub_delta2, T2 ) ;
|
||||
T0 += epsm10;
|
||||
|
||||
T6 = (here->HSMHV_ldrift1 + here->HSMHV_ldrift2 ) / T0 ;
|
||||
T6_dVdserev = T2 * Wdep_dVdserev * T6 / T0 ;
|
||||
T6_dVsubsrev = T2 * Wdep_dVsubsrev * T6 / T0 ;
|
||||
|
||||
T0 = Rd ;
|
||||
Rd = T0 * T6 ;
|
||||
Rd_dVddp = Rd_dVddp * T6 ;
|
||||
Rd_dVgse = Rd_dVgse * T6 ;
|
||||
Rd_dVdse = T0 * T6_dVdserev ;
|
||||
Rd_dVbse = Rd_dVgse * T6 ;
|
||||
|
||||
Rd_dVds = Rd_dVds * T6 ;
|
||||
Rd_dVgs = Rd_dVgs * T6 ;
|
||||
Rd_dVbs = Rd_dVbs * T6 ;
|
||||
Rd_dVsubs = T0 * T6_dVsubsrev ;
|
||||
Rd_dT = Rd_dT * T6 ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* Sheet resistances are added. */
|
||||
Rd += here->HSMHV_rd0 ;
|
||||
|
||||
/* Re-stamps for hsmhvnoi.c */
|
||||
/* Please see hsmhvnoi.c */
|
||||
if ( Rd > Res_min && model->HSMHV_cothrml )
|
||||
here->HSMHVdrainConductance = Mfactor / Rd ;
|
||||
else here->HSMHVdrainConductance = 0.0 ;
|
||||
if ( here->HSMHV_Rs > Res_min && model->HSMHV_cothrml )
|
||||
here->HSMHVsourceConductance = Mfactor / here->HSMHV_rs0 ;
|
||||
else here->HSMHVsourceConductance = 0.0 ;
|
||||
|
||||
/* Clamping to Res_min */
|
||||
here->HSMHV_Rs = here->HSMHV_rs0 / Mfactor ;
|
||||
if(here->HSMHV_Rs < Res_min) { here->HSMHV_Rs = Res_min ; }
|
||||
here->HSMHV_dRs_dVdse = 0.0 ;
|
||||
here->HSMHV_dRs_dVgse = 0.0 ;
|
||||
here->HSMHV_dRs_dVbse = 0.0 ;
|
||||
here->HSMHV_dRs_dVsubs = 0.0 ;
|
||||
here->HSMHV_dRs_dTi = 0.0 ;
|
||||
|
||||
|
||||
/* Clamping to Res_min */
|
||||
here->HSMHV_Rd = Rd / Mfactor ;
|
||||
if(here->HSMHV_Rd < Res_min) {
|
||||
here->HSMHV_Rd = Res_min ;
|
||||
here->HSMHV_dRd_dVddp = 0.0 ;
|
||||
here->HSMHV_dRd_dVdse = 0.0 ;
|
||||
here->HSMHV_dRd_dVgse = 0.0 ;
|
||||
here->HSMHV_dRd_dVbse = 0.0 ;
|
||||
here->HSMHV_dRd_dVsubs = 0.0 ;
|
||||
here->HSMHV_dRd_dTi = 0.0 ;
|
||||
here->HSMHV_dRd_dVds = 0.0 ;
|
||||
here->HSMHV_dRd_dVgs = 0.0 ;
|
||||
here->HSMHV_dRd_dVbs = 0.0 ;
|
||||
} else {
|
||||
here->HSMHV_dRd_dVddp = Rd_dVddp / Mfactor ;
|
||||
here->HSMHV_dRd_dVdse = Rd_dVdse / Mfactor ;
|
||||
here->HSMHV_dRd_dVgse = Rd_dVgse / Mfactor ;
|
||||
here->HSMHV_dRd_dVbse = Rd_dVbse / Mfactor ;
|
||||
here->HSMHV_dRd_dVsubs= Rd_dVsubs / Mfactor ;
|
||||
here->HSMHV_dRd_dTi = Rd_dT / Mfactor ;
|
||||
here->HSMHV_dRd_dVds = Rd_dVds / Mfactor ;
|
||||
here->HSMHV_dRd_dVgs = Rd_dVgs / Mfactor ;
|
||||
here->HSMHV_dRd_dVbs = Rd_dVbs / Mfactor ;
|
||||
}
|
||||
|
||||
|
||||
return ( HiSIM_OK ) ;
|
||||
|
||||
}
|
||||
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvevalenv.h
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#ifndef HSMHV_EVAL_ENV_H
|
||||
#define HSMHV_EVAL_ENV_H
|
||||
|
||||
|
|
@ -130,13 +88,4 @@ June 2008 (revised October 2011)
|
|||
#define Fn_Min(x,y) ( (x) <= (y) ? (x) : (y) ) /* min[x,y] */
|
||||
#define Fn_Sgn(x) ( (x) >= 0 ? (1) : (-1) ) /* sign[x] */
|
||||
|
||||
/*===========================================================*
|
||||
* pow
|
||||
*=================*/
|
||||
#ifdef POW_TO_EXP_AND_LOG
|
||||
#define Fn_Pow( x , y ) exp( (y) * log( x ) )
|
||||
#else
|
||||
#define Fn_Pow( x , y ) pow( x , y )
|
||||
#endif
|
||||
|
||||
#endif /* HSMHV_EVAL_ENV_H */
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvext.h
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
|
|
|
|||
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvgetic.c
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "hsmhvdef.h"
|
||||
|
|
|
|||
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvitf
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#ifndef DEV_HISIMHV
|
||||
#define DEV_HISIMHV
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,14 +1,14 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.10
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvld_info_eval.h
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
recent changes: - 2009.01.09 some bugfixes
|
||||
|
||||
|
|
@ -17,48 +17,6 @@
|
|||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
/* print all outputs ------------VV */
|
||||
if ( model->HSMHV_info >= 4 ) {
|
||||
here->HSMHV_csdo = - (here->HSMHV_cddo + here->HSMHV_cgdo + here->HSMHV_cbdo) ;
|
||||
|
|
|
|||
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvmask.c
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/ifsim.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
|
|
@ -166,18 +124,6 @@ int HSMHVmAsk(
|
|||
case HSMHV_MOD_COLDRIFT:
|
||||
value->iValue = model->HSMHV_coldrift;
|
||||
return(OK);
|
||||
case HSMHV_MOD_CORDRIFT:
|
||||
value->iValue = model->HSMHV_cordrift;
|
||||
return(OK);
|
||||
case HSMHV_MOD_COERRREP:
|
||||
value->iValue = model->HSMHV_coerrrep;
|
||||
return(OK);
|
||||
case HSMHV_MOD_CODEP:
|
||||
value->iValue = model->HSMHV_codep;
|
||||
return(OK);
|
||||
case HSMHV_MOD_CODDLT:
|
||||
value->iValue = model->HSMHV_coddlt;
|
||||
return(OK);
|
||||
case HSMHV_MOD_VMAX:
|
||||
value->rValue = model->HSMHV_vmax;
|
||||
return(OK);
|
||||
|
|
@ -247,24 +193,9 @@ int HSMHVmAsk(
|
|||
case HSMHV_MOD_SUBLD1:
|
||||
value->rValue = model->HSMHV_subld1;
|
||||
return(OK);
|
||||
case HSMHV_MOD_SUBLD1L:
|
||||
value->rValue = model->HSMHV_subld1l;
|
||||
return(OK);
|
||||
case HSMHV_MOD_SUBLD1LP:
|
||||
value->rValue = model->HSMHV_subld1lp;
|
||||
return(OK);
|
||||
case HSMHV_MOD_SUBLD2:
|
||||
value->rValue = model->HSMHV_subld2;
|
||||
return(OK);
|
||||
case HSMHV_MOD_XPDV:
|
||||
value->rValue = model->HSMHV_xpdv;
|
||||
return(OK);
|
||||
case HSMHV_MOD_XPVDTH:
|
||||
value->rValue = model->HSMHV_xpvdth;
|
||||
return(OK);
|
||||
case HSMHV_MOD_XPVDTHG:
|
||||
value->rValue = model->HSMHV_xpvdthg;
|
||||
return(OK);
|
||||
case HSMHV_MOD_DDLTMAX: /* Vdseff */
|
||||
value->rValue = model->HSMHV_ddltmax;
|
||||
return(OK);
|
||||
|
|
@ -403,6 +334,9 @@ int HSMHVmAsk(
|
|||
case HSMHV_MOD_PGD2:
|
||||
value->rValue = model->HSMHV_pgd2;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PGD3:
|
||||
value->rValue = model->HSMHV_pgd3;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PGD4:
|
||||
value->rValue = model->HSMHV_pgd4;
|
||||
return(OK);
|
||||
|
|
@ -814,6 +748,9 @@ int HSMHVmAsk(
|
|||
case HSMHV_MOD_KAPPA:
|
||||
value->rValue = model->HSMHV_kappa;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PTHROU:
|
||||
value->rValue = model->HSMHV_pthrou;
|
||||
return(OK);
|
||||
case HSMHV_MOD_VDIFFJ:
|
||||
value->rValue = model->HSMHV_vdiffj;
|
||||
return(OK);
|
||||
|
|
@ -861,47 +798,12 @@ int HSMHVmAsk(
|
|||
case HSMHV_MOD_IBPC1:
|
||||
value->rValue = model->HSMHV_ibpc1;
|
||||
return(OK);
|
||||
case HSMHV_MOD_IBPC1L:
|
||||
value->rValue = model->HSMHV_ibpc1l;
|
||||
return(OK);
|
||||
case HSMHV_MOD_IBPC1LP:
|
||||
value->rValue = model->HSMHV_ibpc1lp;
|
||||
return(OK);
|
||||
case HSMHV_MOD_IBPC2:
|
||||
value->rValue = model->HSMHV_ibpc2;
|
||||
return(OK);
|
||||
case HSMHV_MOD_MPHDFM:
|
||||
value->rValue = model->HSMHV_mphdfm;
|
||||
return(OK);
|
||||
|
||||
case HSMHV_MOD_PTL:
|
||||
value->rValue = model->HSMHV_ptl;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PTP:
|
||||
value->rValue = model->HSMHV_ptp;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PT2:
|
||||
value->rValue = model->HSMHV_pt2;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PTLP:
|
||||
value->rValue = model->HSMHV_ptlp;
|
||||
return(OK);
|
||||
case HSMHV_MOD_GDL:
|
||||
value->rValue = model->HSMHV_gdl;
|
||||
return(OK);
|
||||
case HSMHV_MOD_GDLP:
|
||||
value->rValue = model->HSMHV_gdlp;
|
||||
return(OK);
|
||||
|
||||
case HSMHV_MOD_GDLD:
|
||||
value->rValue = model->HSMHV_gdld;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PT4:
|
||||
value->rValue = model->HSMHV_pt4;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PT4P:
|
||||
value->rValue = model->HSMHV_pt4p;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDVG11:
|
||||
value->rValue = model->HSMHV_rdvg11;
|
||||
return(OK);
|
||||
|
|
@ -968,6 +870,12 @@ int HSMHVmAsk(
|
|||
case HSMHV_MOD_RD20:
|
||||
value->rValue = model->HSMHV_rd20;
|
||||
return(OK);
|
||||
case HSMHV_MOD_QOVSM:
|
||||
value->rValue = model->HSMHV_qovsm;
|
||||
return(OK);
|
||||
case HSMHV_MOD_LDRIFT:
|
||||
value->rValue = model->HSMHV_ldrift;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RD21:
|
||||
value->rValue = model->HSMHV_rd21;
|
||||
return(OK);
|
||||
|
|
@ -986,6 +894,9 @@ int HSMHVmAsk(
|
|||
case HSMHV_MOD_RD25:
|
||||
value->rValue = model->HSMHV_rd25;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RD26:
|
||||
value->rValue = model->HSMHV_rd26;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDVDL:
|
||||
value->rValue = model->HSMHV_rdvdl;
|
||||
return(OK);
|
||||
|
|
@ -1081,262 +992,9 @@ int HSMHVmAsk(
|
|||
case HSMHV_MOD_NSUBSUB:
|
||||
value->rValue = model->HSMHV_nsubsub;
|
||||
return(OK);
|
||||
|
||||
case HSMHV_MOD_RDRMUE:
|
||||
value->rValue = model->HSMHV_rdrmue;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDRVMAX:
|
||||
value->rValue = model->HSMHV_rdrvmax;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDRMUETMP:
|
||||
value->rValue = model->HSMHV_rdrmuetmp;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDRVTMP:
|
||||
value->rValue = model->HSMHV_rdrvtmp;
|
||||
return(OK);
|
||||
case HSMHV_MOD_NDEPM:
|
||||
value->rValue = model->HSMHV_ndepm;
|
||||
return(OK);
|
||||
case HSMHV_MOD_TNDEP:
|
||||
value->rValue = model->HSMHV_tndep;
|
||||
return(OK);
|
||||
case HSMHV_MOD_DEPMUE0:
|
||||
value->rValue = model->HSMHV_depmue0;
|
||||
return(OK);
|
||||
case HSMHV_MOD_DEPMUE1:
|
||||
value->rValue = model->HSMHV_depmue1;
|
||||
return(OK);
|
||||
case HSMHV_MOD_DEPMUEBACK0:
|
||||
value->rValue = model->HSMHV_depmueback0;
|
||||
return(OK);
|
||||
case HSMHV_MOD_DEPMUEBACK1:
|
||||
value->rValue = model->HSMHV_depmueback1;
|
||||
return(OK);
|
||||
case HSMHV_MOD_DEPLEAK:
|
||||
value->rValue = model->HSMHV_depleak;
|
||||
return(OK);
|
||||
case HSMHV_MOD_DEPETA:
|
||||
value->rValue = model->HSMHV_depeta;
|
||||
return(OK);
|
||||
case HSMHV_MOD_DEPVMAX:
|
||||
value->rValue = model->HSMHV_depvmax;
|
||||
return(OK);
|
||||
case HSMHV_MOD_DEPVDSEF1:
|
||||
value->rValue = model->HSMHV_depvdsef1;
|
||||
return(OK);
|
||||
case HSMHV_MOD_DEPVDSEF2:
|
||||
value->rValue = model->HSMHV_depvdsef2;
|
||||
return(OK);
|
||||
case HSMHV_MOD_DEPMUEPH0:
|
||||
value->rValue = model->HSMHV_depmueph0;
|
||||
return(OK);
|
||||
case HSMHV_MOD_DEPMUEPH1:
|
||||
value->rValue = model->HSMHV_depmueph1;
|
||||
return(OK);
|
||||
case HSMHV_MOD_DEPBB:
|
||||
value->rValue = model->HSMHV_depbb;
|
||||
return(OK);
|
||||
case HSMHV_MOD_DEPVTMP:
|
||||
value->rValue = model->HSMHV_depvtmp;
|
||||
return(OK);
|
||||
case HSMHV_MOD_DEPMUETMP:
|
||||
value->rValue = model->HSMHV_depmuetmp;
|
||||
return(OK);
|
||||
|
||||
case HSMHV_MOD_ISBREAK:
|
||||
value->rValue = model->HSMHV_isbreak;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RWELL:
|
||||
value->rValue = model->HSMHV_rwell;
|
||||
return(OK);
|
||||
|
||||
|
||||
/* case HSMHV_MOD_RDRVMAXT1: */
|
||||
/* value->rValue = model->HSMHV_rdrvmaxt1; */
|
||||
/* return(OK); */
|
||||
/* case HSMHV_MOD_RDRVMAXT2: */
|
||||
/* value->rValue = model->HSMHV_rdrvmaxt2; */
|
||||
/* return(OK); */
|
||||
case HSMHV_MOD_RDRDJUNC:
|
||||
value->rValue = model->HSMHV_rdrdjunc;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDRCX:
|
||||
value->rValue = model->HSMHV_rdrcx;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDRCAR:
|
||||
value->rValue = model->HSMHV_rdrcar;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDRDL1:
|
||||
value->rValue = model->HSMHV_rdrdl1;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDRDL2:
|
||||
value->rValue = model->HSMHV_rdrdl2;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDRVMAXW:
|
||||
value->rValue = model->HSMHV_rdrvmaxw;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDRVMAXWP:
|
||||
value->rValue = model->HSMHV_rdrvmaxwp;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDRVMAXL:
|
||||
value->rValue = model->HSMHV_rdrvmaxl;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDRVMAXLP:
|
||||
value->rValue = model->HSMHV_rdrvmaxlp;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDRMUEL:
|
||||
value->rValue = model->HSMHV_rdrmuel;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDRMUELP:
|
||||
value->rValue = model->HSMHV_rdrmuelp;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDRQOVER:
|
||||
value->rValue = model->HSMHV_rdrqover;
|
||||
return(OK);
|
||||
case HSMHV_MOD_QOVADD:
|
||||
value->rValue = model->HSMHV_qovadd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_JS0D:
|
||||
value->rValue = model->HSMHV_js0d;
|
||||
return(OK);
|
||||
case HSMHV_MOD_JS0SWD:
|
||||
value->rValue = model->HSMHV_js0swd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_NJD:
|
||||
value->rValue = model->HSMHV_njd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_NJSWD:
|
||||
value->rValue = model->HSMHV_njswd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_XTID:
|
||||
value->rValue = model->HSMHV_xtid;
|
||||
return(OK);
|
||||
case HSMHV_MOD_CJD:
|
||||
value->rValue = model->HSMHV_cjd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_CJSWD:
|
||||
value->rValue = model->HSMHV_cjswd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_CJSWGD:
|
||||
value->rValue = model->HSMHV_cjswgd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_MJD:
|
||||
value->rValue = model->HSMHV_mjd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_MJSWD:
|
||||
value->rValue = model->HSMHV_mjswd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_MJSWGD:
|
||||
value->rValue = model->HSMHV_mjswgd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PBD:
|
||||
value->rValue = model->HSMHV_pbd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PBSWD:
|
||||
value->rValue = model->HSMHV_pbswd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PBSWDG:
|
||||
value->rValue = model->HSMHV_pbswgd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_XTI2D:
|
||||
value->rValue = model->HSMHV_xti2d;
|
||||
return(OK);
|
||||
case HSMHV_MOD_CISBD:
|
||||
value->rValue = model->HSMHV_cisbd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_CVBD:
|
||||
value->rValue = model->HSMHV_cvbd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_CTEMPD:
|
||||
value->rValue = model->HSMHV_ctempd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_CISBKD:
|
||||
value->rValue = model->HSMHV_cisbkd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_DIVXD:
|
||||
value->rValue = model->HSMHV_divxd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_VDIFFJD:
|
||||
value->rValue = model->HSMHV_vdiffjd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_JS0S:
|
||||
value->rValue = model->HSMHV_js0s;
|
||||
return(OK);
|
||||
case HSMHV_MOD_JS0SWS:
|
||||
value->rValue = model->HSMHV_js0sws;
|
||||
return(OK);
|
||||
case HSMHV_MOD_NJS:
|
||||
value->rValue = model->HSMHV_njs;
|
||||
return(OK);
|
||||
case HSMHV_MOD_NJSWS:
|
||||
value->rValue = model->HSMHV_njsws;
|
||||
return(OK);
|
||||
case HSMHV_MOD_XTIS:
|
||||
value->rValue = model->HSMHV_xtis;
|
||||
return(OK);
|
||||
case HSMHV_MOD_CJS:
|
||||
value->rValue = model->HSMHV_cjs;
|
||||
return(OK);
|
||||
case HSMHV_MOD_CJSSW:
|
||||
value->rValue = model->HSMHV_cjsws;
|
||||
return(OK);
|
||||
case HSMHV_MOD_CJSWGS:
|
||||
value->rValue = model->HSMHV_cjswgs;
|
||||
return(OK);
|
||||
case HSMHV_MOD_MJS:
|
||||
value->rValue = model->HSMHV_mjs;
|
||||
return(OK);
|
||||
case HSMHV_MOD_MJSWS:
|
||||
value->rValue = model->HSMHV_mjsws;
|
||||
return(OK);
|
||||
case HSMHV_MOD_MJSWGS:
|
||||
value->rValue = model->HSMHV_mjswgs;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PBS:
|
||||
value->rValue = model->HSMHV_pbs;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PBSWS:
|
||||
value->rValue = model->HSMHV_pbsws;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PBSWSG:
|
||||
value->rValue = model->HSMHV_pbswgs;
|
||||
return(OK);
|
||||
case HSMHV_MOD_XTI2S:
|
||||
value->rValue = model->HSMHV_xti2s;
|
||||
return(OK);
|
||||
case HSMHV_MOD_CISBS:
|
||||
value->rValue = model->HSMHV_cisbs;
|
||||
return(OK);
|
||||
case HSMHV_MOD_CVBS:
|
||||
value->rValue = model->HSMHV_cvbs;
|
||||
return(OK);
|
||||
case HSMHV_MOD_CTEMPS:
|
||||
value->rValue = model->HSMHV_ctemps;
|
||||
return(OK);
|
||||
case HSMHV_MOD_CISBKS:
|
||||
value->rValue = model->HSMHV_cisbks;
|
||||
return(OK);
|
||||
case HSMHV_MOD_DIVXS:
|
||||
value->rValue = model->HSMHV_divxs;
|
||||
return(OK);
|
||||
case HSMHV_MOD_VDIFFJS:
|
||||
value->rValue = model->HSMHV_vdiffjs;
|
||||
return(OK);
|
||||
case HSMHV_MOD_SHEMAX:
|
||||
value->rValue = model->HSMHV_shemax;
|
||||
return(OK);
|
||||
case HSMHV_MOD_VGSMIN:
|
||||
value->rValue = model->HSMHV_vgsmin;
|
||||
return(OK);
|
||||
case HSMHV_MOD_GDSLEAK:
|
||||
value->rValue = model->HSMHV_gdsleak;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDRBB:
|
||||
value->rValue = model->HSMHV_rdrbb;
|
||||
return(OK);
|
||||
case HSMHV_MOD_RDRBBTMP:
|
||||
value->rValue = model->HSMHV_rdrbbtmp;
|
||||
return(OK);
|
||||
|
||||
/* binning parameters */
|
||||
case HSMHV_MOD_LMIN:
|
||||
|
|
@ -1413,6 +1071,9 @@ int HSMHVmAsk(
|
|||
case HSMHV_MOD_LPGD1:
|
||||
value->rValue = model->HSMHV_lpgd1;
|
||||
return(OK);
|
||||
case HSMHV_MOD_LPGD3:
|
||||
value->rValue = model->HSMHV_lpgd3;
|
||||
return(OK);
|
||||
case HSMHV_MOD_LNDEP:
|
||||
value->rValue = model->HSMHV_lndep;
|
||||
return(OK);
|
||||
|
|
@ -1566,6 +1227,9 @@ int HSMHVmAsk(
|
|||
case HSMHV_MOD_LNFALP:
|
||||
value->rValue = model->HSMHV_lnfalp;
|
||||
return(OK);
|
||||
case HSMHV_MOD_LPTHROU:
|
||||
value->rValue = model->HSMHV_lpthrou;
|
||||
return(OK);
|
||||
case HSMHV_MOD_LVDIFFJ:
|
||||
value->rValue = model->HSMHV_lvdiffj;
|
||||
return(OK);
|
||||
|
|
@ -1629,36 +1293,6 @@ int HSMHVmAsk(
|
|||
case HSMHV_MOD_LVOVER:
|
||||
value->rValue = model->HSMHV_lvover;
|
||||
return(OK);
|
||||
case HSMHV_MOD_LJS0D:
|
||||
value->rValue = model->HSMHV_ljs0d;
|
||||
return(OK);
|
||||
case HSMHV_MOD_LJS0SWD:
|
||||
value->rValue = model->HSMHV_ljs0swd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_LNJD:
|
||||
value->rValue = model->HSMHV_lnjd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_LCISBKD:
|
||||
value->rValue = model->HSMHV_lcisbkd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_LVDIFFJD:
|
||||
value->rValue = model->HSMHV_lvdiffjd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_LJS0S:
|
||||
value->rValue = model->HSMHV_ljs0s;
|
||||
return(OK);
|
||||
case HSMHV_MOD_LJS0SWS:
|
||||
value->rValue = model->HSMHV_ljs0sws;
|
||||
return(OK);
|
||||
case HSMHV_MOD_LNJS:
|
||||
value->rValue = model->HSMHV_lnjs;
|
||||
return(OK);
|
||||
case HSMHV_MOD_LCISBKS:
|
||||
value->rValue = model->HSMHV_lcisbks;
|
||||
return(OK);
|
||||
case HSMHV_MOD_LVDIFFJS:
|
||||
value->rValue = model->HSMHV_lvdiffjs;
|
||||
return(OK);
|
||||
|
||||
/* Width dependence */
|
||||
case HSMHV_MOD_WVMAX:
|
||||
|
|
@ -1715,6 +1349,9 @@ int HSMHVmAsk(
|
|||
case HSMHV_MOD_WPGD1:
|
||||
value->rValue = model->HSMHV_wpgd1;
|
||||
return(OK);
|
||||
case HSMHV_MOD_WPGD3:
|
||||
value->rValue = model->HSMHV_wpgd3;
|
||||
return(OK);
|
||||
case HSMHV_MOD_WNDEP:
|
||||
value->rValue = model->HSMHV_wndep;
|
||||
return(OK);
|
||||
|
|
@ -1868,6 +1505,9 @@ int HSMHVmAsk(
|
|||
case HSMHV_MOD_WNFALP:
|
||||
value->rValue = model->HSMHV_wnfalp;
|
||||
return(OK);
|
||||
case HSMHV_MOD_WPTHROU:
|
||||
value->rValue = model->HSMHV_wpthrou;
|
||||
return(OK);
|
||||
case HSMHV_MOD_WVDIFFJ:
|
||||
value->rValue = model->HSMHV_wvdiffj;
|
||||
return(OK);
|
||||
|
|
@ -1931,36 +1571,6 @@ int HSMHVmAsk(
|
|||
case HSMHV_MOD_WVOVER:
|
||||
value->rValue = model->HSMHV_wvover;
|
||||
return(OK);
|
||||
case HSMHV_MOD_WJS0D:
|
||||
value->rValue = model->HSMHV_wjs0d;
|
||||
return(OK);
|
||||
case HSMHV_MOD_WJS0SWD:
|
||||
value->rValue = model->HSMHV_wjs0swd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_WNJD:
|
||||
value->rValue = model->HSMHV_wnjd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_WCISBKD:
|
||||
value->rValue = model->HSMHV_wcisbkd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_WVDIFFJD:
|
||||
value->rValue = model->HSMHV_wvdiffjd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_WJS0S:
|
||||
value->rValue = model->HSMHV_wjs0s;
|
||||
return(OK);
|
||||
case HSMHV_MOD_WJS0SWS:
|
||||
value->rValue = model->HSMHV_wjs0sws;
|
||||
return(OK);
|
||||
case HSMHV_MOD_WNJS:
|
||||
value->rValue = model->HSMHV_wnjs;
|
||||
return(OK);
|
||||
case HSMHV_MOD_WCISBKS:
|
||||
value->rValue = model->HSMHV_wcisbks;
|
||||
return(OK);
|
||||
case HSMHV_MOD_WVDIFFJS:
|
||||
value->rValue = model->HSMHV_wvdiffjs;
|
||||
return(OK);
|
||||
|
||||
/* Cross-term dependence */
|
||||
case HSMHV_MOD_PVMAX:
|
||||
|
|
@ -2017,6 +1627,9 @@ int HSMHVmAsk(
|
|||
case HSMHV_MOD_PPGD1:
|
||||
value->rValue = model->HSMHV_ppgd1;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PPGD3:
|
||||
value->rValue = model->HSMHV_ppgd3;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PNDEP:
|
||||
value->rValue = model->HSMHV_pndep;
|
||||
return(OK);
|
||||
|
|
@ -2170,6 +1783,9 @@ int HSMHVmAsk(
|
|||
case HSMHV_MOD_PNFALP:
|
||||
value->rValue = model->HSMHV_pnfalp;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PPTHROU:
|
||||
value->rValue = model->HSMHV_ppthrou;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PVDIFFJ:
|
||||
value->rValue = model->HSMHV_pvdiffj;
|
||||
return(OK);
|
||||
|
|
@ -2233,36 +1849,6 @@ int HSMHVmAsk(
|
|||
case HSMHV_MOD_PVOVER:
|
||||
value->rValue = model->HSMHV_pvover;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PJS0D:
|
||||
value->rValue = model->HSMHV_pjs0d;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PJS0SWD:
|
||||
value->rValue = model->HSMHV_pjs0swd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PNJD:
|
||||
value->rValue = model->HSMHV_pnjd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PCISBKD:
|
||||
value->rValue = model->HSMHV_pcisbkd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PVDIFFJD:
|
||||
value->rValue = model->HSMHV_pvdiffjd;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PJS0S:
|
||||
value->rValue = model->HSMHV_pjs0s;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PJS0SWS:
|
||||
value->rValue = model->HSMHV_pjs0sws;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PNJS:
|
||||
value->rValue = model->HSMHV_pnjs;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PCISBKS:
|
||||
value->rValue = model->HSMHV_pcisbks;
|
||||
return(OK);
|
||||
case HSMHV_MOD_PVDIFFJS:
|
||||
value->rValue = model->HSMHV_pvdiffjs;
|
||||
return(OK);
|
||||
|
||||
case HSMHV_MOD_VGS_MAX:
|
||||
value->rValue = model->HSMHVvgsMax;
|
||||
|
|
|
|||
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvmdel.c
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "hsmhvdef.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
|
|
|||
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvmpar.c
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "hsmhvdef.h"
|
||||
#include "ngspice/ifsim.h"
|
||||
|
|
@ -194,22 +152,6 @@ int HSMHVmParam(
|
|||
mod->HSMHV_coldrift = value->iValue;
|
||||
mod->HSMHV_coldrift_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_CORDRIFT:
|
||||
mod->HSMHV_cordrift = value->iValue;
|
||||
mod->HSMHV_cordrift_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_COERRREP:
|
||||
mod->HSMHV_coerrrep = value->iValue;
|
||||
mod->HSMHV_coerrrep_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_CODEP:
|
||||
mod->HSMHV_codep = value->iValue;
|
||||
mod->HSMHV_codep_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_CODDLT:
|
||||
mod->HSMHV_coddlt = value->iValue;
|
||||
mod->HSMHV_coddlt_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_VMAX:
|
||||
mod->HSMHV_vmax = value->rValue;
|
||||
mod->HSMHV_vmax_Given = TRUE;
|
||||
|
|
@ -302,30 +244,10 @@ int HSMHVmParam(
|
|||
mod->HSMHV_subld1 = value->rValue;
|
||||
mod->HSMHV_subld1_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_SUBLD1L:
|
||||
mod->HSMHV_subld1l = value->rValue;
|
||||
mod->HSMHV_subld1l_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_SUBLD1LP:
|
||||
mod->HSMHV_subld1lp = value->rValue;
|
||||
mod->HSMHV_subld1lp_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_SUBLD2:
|
||||
mod->HSMHV_subld2 = value->rValue;
|
||||
mod->HSMHV_subld2_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_XPDV:
|
||||
mod->HSMHV_xpdv = value->rValue;
|
||||
mod->HSMHV_xpdv_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_XPVDTH:
|
||||
mod->HSMHV_xpvdth = value->rValue;
|
||||
mod->HSMHV_xpvdth_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_XPVDTHG:
|
||||
mod->HSMHV_xpvdthg = value->rValue;
|
||||
mod->HSMHV_xpvdthg_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_DDLTMAX: /* Vdseff */
|
||||
mod->HSMHV_ddltmax = value->rValue;
|
||||
mod->HSMHV_ddltmax_Given = TRUE;
|
||||
|
|
@ -510,6 +432,10 @@ int HSMHVmParam(
|
|||
mod->HSMHV_pgd2 = value->rValue;
|
||||
mod->HSMHV_pgd2_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PGD3:
|
||||
mod->HSMHV_pgd3 = value->rValue;
|
||||
mod->HSMHV_pgd3_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PGD4:
|
||||
mod->HSMHV_pgd4 = value->rValue;
|
||||
mod->HSMHV_pgd4_Given = TRUE;
|
||||
|
|
@ -1058,6 +984,10 @@ int HSMHVmParam(
|
|||
mod->HSMHV_kappa = value->rValue;
|
||||
mod->HSMHV_kappa_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PTHROU:
|
||||
mod->HSMHV_pthrou = value->rValue;
|
||||
mod->HSMHV_pthrou_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_VDIFFJ:
|
||||
mod->HSMHV_vdiffj = value->rValue;
|
||||
mod->HSMHV_vdiffj_Given = TRUE;
|
||||
|
|
@ -1114,14 +1044,6 @@ int HSMHVmParam(
|
|||
mod->HSMHV_ibpc1 = value->rValue;
|
||||
mod->HSMHV_ibpc1_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_IBPC1L:
|
||||
mod->HSMHV_ibpc1l = value->rValue;
|
||||
mod->HSMHV_ibpc1l_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_IBPC1LP:
|
||||
mod->HSMHV_ibpc1lp = value->rValue;
|
||||
mod->HSMHV_ibpc1lp_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_IBPC2:
|
||||
mod->HSMHV_ibpc2 = value->rValue;
|
||||
mod->HSMHV_ibpc2_Given = TRUE;
|
||||
|
|
@ -1130,44 +1052,6 @@ int HSMHVmParam(
|
|||
mod->HSMHV_mphdfm = value->rValue;
|
||||
mod->HSMHV_mphdfm_Given = TRUE;
|
||||
break;
|
||||
|
||||
case HSMHV_MOD_PTL:
|
||||
mod->HSMHV_ptl = value->rValue;
|
||||
mod->HSMHV_ptl_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PTP:
|
||||
mod->HSMHV_ptp = value->rValue;
|
||||
mod->HSMHV_ptp_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PT2:
|
||||
mod->HSMHV_pt2 = value->rValue;
|
||||
mod->HSMHV_pt2_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PTLP:
|
||||
mod->HSMHV_ptlp = value->rValue;
|
||||
mod->HSMHV_ptlp_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_GDL:
|
||||
mod->HSMHV_gdl = value->rValue;
|
||||
mod->HSMHV_gdl_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_GDLP:
|
||||
mod->HSMHV_gdlp = value->rValue;
|
||||
mod->HSMHV_gdlp_Given = TRUE;
|
||||
break;
|
||||
|
||||
case HSMHV_MOD_GDLD:
|
||||
mod->HSMHV_gdld = value->rValue;
|
||||
mod->HSMHV_gdld_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PT4:
|
||||
mod->HSMHV_pt4 = value->rValue;
|
||||
mod->HSMHV_pt4_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PT4P:
|
||||
mod->HSMHV_pt4p = value->rValue;
|
||||
mod->HSMHV_pt4p_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDVG11:
|
||||
mod->HSMHV_rdvg11 = value->rValue;
|
||||
mod->HSMHV_rdvg11_Given = TRUE;
|
||||
|
|
@ -1180,6 +1064,14 @@ int HSMHVmParam(
|
|||
mod->HSMHV_rd20 = value->rValue;
|
||||
mod->HSMHV_rd20_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_QOVSM:
|
||||
mod->HSMHV_qovsm = value->rValue;
|
||||
mod->HSMHV_qovsm_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_LDRIFT:
|
||||
mod->HSMHV_ldrift = value->rValue;
|
||||
mod->HSMHV_ldrift_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RD21:
|
||||
mod->HSMHV_rd21 = value->rValue;
|
||||
mod->HSMHV_rd21_Given = TRUE;
|
||||
|
|
@ -1204,6 +1096,10 @@ int HSMHVmParam(
|
|||
mod->HSMHV_rd25 = value->rValue;
|
||||
mod->HSMHV_rd25_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RD26:
|
||||
mod->HSMHV_rd26 = value->rValue;
|
||||
mod->HSMHV_rd26_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDVDL:
|
||||
mod->HSMHV_rdvdl = value->rValue;
|
||||
mod->HSMHV_rdvdl_Given = TRUE;
|
||||
|
|
@ -1404,263 +1300,11 @@ int HSMHVmParam(
|
|||
mod->HSMHV_nsubsub = value->rValue;
|
||||
mod->HSMHV_nsubsub_Given = TRUE;
|
||||
break;
|
||||
|
||||
case HSMHV_MOD_RDRMUE:
|
||||
mod->HSMHV_rdrmue = value->rValue;
|
||||
mod->HSMHV_rdrmue_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDRVMAX:
|
||||
mod->HSMHV_rdrvmax = value->rValue;
|
||||
mod->HSMHV_rdrvmax_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDRMUETMP:
|
||||
mod->HSMHV_rdrmuetmp = value->rValue;
|
||||
mod->HSMHV_rdrmuetmp_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDRVTMP:
|
||||
mod->HSMHV_rdrvtmp = value->rValue;
|
||||
mod->HSMHV_rdrvtmp_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDRDJUNC:
|
||||
mod->HSMHV_rdrdjunc = value->rValue;
|
||||
mod->HSMHV_rdrdjunc_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDRCX:
|
||||
mod->HSMHV_rdrcx = value->rValue;
|
||||
mod->HSMHV_rdrcx_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDRCAR:
|
||||
mod->HSMHV_rdrcar = value->rValue;
|
||||
mod->HSMHV_rdrcar_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDRDL1:
|
||||
mod->HSMHV_rdrdl1 = value->rValue;
|
||||
mod->HSMHV_rdrdl1_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDRDL2:
|
||||
mod->HSMHV_rdrdl2 = value->rValue;
|
||||
mod->HSMHV_rdrdl2_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDRVMAXW:
|
||||
mod->HSMHV_rdrvmaxw = value->rValue;
|
||||
mod->HSMHV_rdrvmaxw_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDRVMAXWP:
|
||||
mod->HSMHV_rdrvmaxwp = value->rValue;
|
||||
mod->HSMHV_rdrvmaxwp_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDRVMAXL:
|
||||
mod->HSMHV_rdrvmaxl = value->rValue;
|
||||
mod->HSMHV_rdrvmaxl_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDRVMAXLP:
|
||||
mod->HSMHV_rdrvmaxlp = value->rValue;
|
||||
mod->HSMHV_rdrvmaxlp_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDRMUEL:
|
||||
mod->HSMHV_rdrmuel = value->rValue;
|
||||
mod->HSMHV_rdrmuel_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDRMUELP:
|
||||
mod->HSMHV_rdrmuelp = value->rValue;
|
||||
mod->HSMHV_rdrmuelp_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDRQOVER:
|
||||
mod->HSMHV_rdrqover = value->rValue;
|
||||
mod->HSMHV_rdrqover_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_QOVADD:
|
||||
mod->HSMHV_qovadd = value->rValue;
|
||||
mod->HSMHV_qovadd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_JS0D:
|
||||
mod->HSMHV_js0d = value->rValue;
|
||||
mod->HSMHV_js0d_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_JS0SWD:
|
||||
mod->HSMHV_js0swd = value->rValue;
|
||||
mod->HSMHV_js0swd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_NJD:
|
||||
mod->HSMHV_njd = value->rValue;
|
||||
mod->HSMHV_njd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_NJSWD:
|
||||
mod->HSMHV_njswd = value->rValue;
|
||||
mod->HSMHV_njswd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_XTID:
|
||||
mod->HSMHV_xtid = value->rValue;
|
||||
mod->HSMHV_xtid_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_CJD:
|
||||
mod->HSMHV_cjd = value->rValue;
|
||||
mod->HSMHV_cjd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_CJSWD:
|
||||
mod->HSMHV_cjswd = value->rValue;
|
||||
mod->HSMHV_cjswd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_CJSWGD:
|
||||
mod->HSMHV_cjswgd = value->rValue;
|
||||
mod->HSMHV_cjswgd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_MJD:
|
||||
mod->HSMHV_mjd = value->rValue;
|
||||
mod->HSMHV_mjd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_MJSWD:
|
||||
mod->HSMHV_mjswd = value->rValue;
|
||||
mod->HSMHV_mjswd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_MJSWGD:
|
||||
mod->HSMHV_mjswgd = value->rValue;
|
||||
mod->HSMHV_mjswgd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PBD:
|
||||
mod->HSMHV_pbd = value->rValue;
|
||||
mod->HSMHV_pbd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PBSWD:
|
||||
mod->HSMHV_pbswd = value->rValue;
|
||||
mod->HSMHV_pbswd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PBSWDG:
|
||||
mod->HSMHV_pbswgd = value->rValue;
|
||||
mod->HSMHV_pbswgd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_XTI2D:
|
||||
mod->HSMHV_xti2d = value->rValue;
|
||||
mod->HSMHV_xti2d_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_CISBD:
|
||||
mod->HSMHV_cisbd = value->rValue;
|
||||
mod->HSMHV_cisbd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_CVBD:
|
||||
mod->HSMHV_cvbd = value->rValue;
|
||||
mod->HSMHV_cvbd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_CTEMPD:
|
||||
mod->HSMHV_ctempd = value->rValue;
|
||||
mod->HSMHV_ctempd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_CISBKD:
|
||||
mod->HSMHV_cisbkd = value->rValue;
|
||||
mod->HSMHV_cisbkd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_DIVXD:
|
||||
mod->HSMHV_divxd = value->rValue;
|
||||
mod->HSMHV_divxd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_VDIFFJD:
|
||||
mod->HSMHV_vdiffjd = value->rValue;
|
||||
mod->HSMHV_vdiffjd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_JS0S:
|
||||
mod->HSMHV_js0s = value->rValue;
|
||||
mod->HSMHV_js0s_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_JS0SWS:
|
||||
mod->HSMHV_js0sws = value->rValue;
|
||||
mod->HSMHV_js0sws_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_NJS:
|
||||
mod->HSMHV_njs = value->rValue;
|
||||
mod->HSMHV_njs_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_NJSWS:
|
||||
mod->HSMHV_njsws = value->rValue;
|
||||
mod->HSMHV_njsws_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_XTIS:
|
||||
mod->HSMHV_xtis = value->rValue;
|
||||
mod->HSMHV_xtis_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_CJS:
|
||||
mod->HSMHV_cjs = value->rValue;
|
||||
mod->HSMHV_cjs_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_CJSSW:
|
||||
mod->HSMHV_cjsws = value->rValue;
|
||||
mod->HSMHV_cjsws_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_CJSWGS:
|
||||
mod->HSMHV_cjswgs = value->rValue;
|
||||
mod->HSMHV_cjswgs_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_MJS:
|
||||
mod->HSMHV_mjs = value->rValue;
|
||||
mod->HSMHV_mjs_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_MJSWS:
|
||||
mod->HSMHV_mjsws = value->rValue;
|
||||
mod->HSMHV_mjsws_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_MJSWGS:
|
||||
mod->HSMHV_mjswgs = value->rValue;
|
||||
mod->HSMHV_mjswgs_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PBS:
|
||||
mod->HSMHV_pbs = value->rValue;
|
||||
mod->HSMHV_pbs_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PBSWS:
|
||||
mod->HSMHV_pbsws = value->rValue;
|
||||
mod->HSMHV_pbsws_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PBSWSG:
|
||||
mod->HSMHV_pbswgs = value->rValue;
|
||||
mod->HSMHV_pbswgs_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_XTI2S:
|
||||
mod->HSMHV_xti2s = value->rValue;
|
||||
mod->HSMHV_xti2s_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_CISBS:
|
||||
mod->HSMHV_cisbs = value->rValue;
|
||||
mod->HSMHV_cisbs_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_CVBS:
|
||||
mod->HSMHV_cvbs = value->rValue;
|
||||
mod->HSMHV_cvbs_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_CTEMPS:
|
||||
mod->HSMHV_ctemps = value->rValue;
|
||||
mod->HSMHV_ctemps_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_CISBKS:
|
||||
mod->HSMHV_cisbks = value->rValue;
|
||||
mod->HSMHV_cisbks_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_DIVXS:
|
||||
mod->HSMHV_divxs = value->rValue;
|
||||
mod->HSMHV_divxs_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_VDIFFJS:
|
||||
mod->HSMHV_vdiffjs = value->rValue;
|
||||
mod->HSMHV_vdiffjs_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_SHEMAX:
|
||||
mod->HSMHV_shemax = value->rValue;
|
||||
mod->HSMHV_shemax_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_VGSMIN:
|
||||
mod->HSMHV_vgsmin = value->rValue;
|
||||
mod->HSMHV_vgsmin_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_GDSLEAK:
|
||||
mod->HSMHV_gdsleak = value->rValue;
|
||||
mod->HSMHV_gdsleak_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDRBB:
|
||||
mod->HSMHV_rdrbb = value->rValue;
|
||||
mod->HSMHV_rdrbb_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RDRBBTMP:
|
||||
mod->HSMHV_rdrbbtmp = value->rValue;
|
||||
mod->HSMHV_rdrbbtmp_Given = TRUE;
|
||||
break;
|
||||
|
||||
|
||||
|
||||
/* binning parameters */
|
||||
|
|
@ -1762,6 +1406,10 @@ int HSMHVmParam(
|
|||
mod->HSMHV_lpgd1 = value->rValue;
|
||||
mod->HSMHV_lpgd1_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_LPGD3:
|
||||
mod->HSMHV_lpgd3 = value->rValue;
|
||||
mod->HSMHV_lpgd3_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_LNDEP:
|
||||
mod->HSMHV_lndep = value->rValue;
|
||||
mod->HSMHV_lndep_Given = TRUE;
|
||||
|
|
@ -1966,6 +1614,10 @@ int HSMHVmParam(
|
|||
mod->HSMHV_lnfalp = value->rValue;
|
||||
mod->HSMHV_lnfalp_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_LPTHROU:
|
||||
mod->HSMHV_lpthrou = value->rValue;
|
||||
mod->HSMHV_lpthrou_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_LVDIFFJ:
|
||||
mod->HSMHV_lvdiffj = value->rValue;
|
||||
mod->HSMHV_lvdiffj_Given = TRUE;
|
||||
|
|
@ -2051,46 +1703,6 @@ int HSMHVmParam(
|
|||
mod->HSMHV_lvover = value->rValue;
|
||||
mod->HSMHV_lvover_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_LJS0D:
|
||||
mod->HSMHV_ljs0d = value->rValue;
|
||||
mod->HSMHV_ljs0d_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_LJS0SWD:
|
||||
mod->HSMHV_ljs0swd = value->rValue;
|
||||
mod->HSMHV_ljs0swd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_LNJD:
|
||||
mod->HSMHV_lnjd = value->rValue;
|
||||
mod->HSMHV_lnjd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_LCISBKD:
|
||||
mod->HSMHV_lcisbkd = value->rValue;
|
||||
mod->HSMHV_lcisbkd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_LVDIFFJD:
|
||||
mod->HSMHV_lvdiffjd = value->rValue;
|
||||
mod->HSMHV_lvdiffjd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_LJS0S:
|
||||
mod->HSMHV_ljs0s = value->rValue;
|
||||
mod->HSMHV_ljs0s_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_LJS0SWS:
|
||||
mod->HSMHV_ljs0sws = value->rValue;
|
||||
mod->HSMHV_ljs0sws_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_LNJS:
|
||||
mod->HSMHV_lnjs = value->rValue;
|
||||
mod->HSMHV_lnjs_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_LCISBKS:
|
||||
mod->HSMHV_lcisbks = value->rValue;
|
||||
mod->HSMHV_lcisbks_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_LVDIFFJS:
|
||||
mod->HSMHV_lvdiffjs = value->rValue;
|
||||
mod->HSMHV_lvdiffjs_Given = TRUE;
|
||||
break;
|
||||
|
||||
/* Width dependence */
|
||||
case HSMHV_MOD_WVMAX:
|
||||
|
|
@ -2165,6 +1777,10 @@ int HSMHVmParam(
|
|||
mod->HSMHV_wpgd1 = value->rValue;
|
||||
mod->HSMHV_wpgd1_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_WPGD3:
|
||||
mod->HSMHV_wpgd3 = value->rValue;
|
||||
mod->HSMHV_wpgd3_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_WNDEP:
|
||||
mod->HSMHV_wndep = value->rValue;
|
||||
mod->HSMHV_wndep_Given = TRUE;
|
||||
|
|
@ -2369,6 +1985,10 @@ int HSMHVmParam(
|
|||
mod->HSMHV_wnfalp = value->rValue;
|
||||
mod->HSMHV_wnfalp_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_WPTHROU:
|
||||
mod->HSMHV_wpthrou = value->rValue;
|
||||
mod->HSMHV_wpthrou_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_WVDIFFJ:
|
||||
mod->HSMHV_wvdiffj = value->rValue;
|
||||
mod->HSMHV_wvdiffj_Given = TRUE;
|
||||
|
|
@ -2454,46 +2074,6 @@ int HSMHVmParam(
|
|||
mod->HSMHV_wvover = value->rValue;
|
||||
mod->HSMHV_wvover_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_WJS0D:
|
||||
mod->HSMHV_wjs0d = value->rValue;
|
||||
mod->HSMHV_wjs0d_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_WJS0SWD:
|
||||
mod->HSMHV_wjs0swd = value->rValue;
|
||||
mod->HSMHV_wjs0swd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_WNJD:
|
||||
mod->HSMHV_wnjd = value->rValue;
|
||||
mod->HSMHV_wnjd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_WCISBKD:
|
||||
mod->HSMHV_wcisbkd = value->rValue;
|
||||
mod->HSMHV_wcisbkd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_WVDIFFJD:
|
||||
mod->HSMHV_wvdiffjd = value->rValue;
|
||||
mod->HSMHV_wvdiffjd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_WJS0S:
|
||||
mod->HSMHV_wjs0s = value->rValue;
|
||||
mod->HSMHV_wjs0s_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_WJS0SWS:
|
||||
mod->HSMHV_wjs0sws = value->rValue;
|
||||
mod->HSMHV_wjs0sws_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_WNJS:
|
||||
mod->HSMHV_wnjs = value->rValue;
|
||||
mod->HSMHV_wnjs_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_WCISBKS:
|
||||
mod->HSMHV_wcisbks = value->rValue;
|
||||
mod->HSMHV_wcisbks_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_WVDIFFJS:
|
||||
mod->HSMHV_wvdiffjs = value->rValue;
|
||||
mod->HSMHV_wvdiffjs_Given = TRUE;
|
||||
break;
|
||||
|
||||
/* Cross-term dependence */
|
||||
case HSMHV_MOD_PVMAX:
|
||||
|
|
@ -2568,6 +2148,10 @@ int HSMHVmParam(
|
|||
mod->HSMHV_ppgd1 = value->rValue;
|
||||
mod->HSMHV_ppgd1_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PPGD3:
|
||||
mod->HSMHV_ppgd3 = value->rValue;
|
||||
mod->HSMHV_ppgd3_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PNDEP:
|
||||
mod->HSMHV_pndep = value->rValue;
|
||||
mod->HSMHV_pndep_Given = TRUE;
|
||||
|
|
@ -2772,6 +2356,10 @@ int HSMHVmParam(
|
|||
mod->HSMHV_pnfalp = value->rValue;
|
||||
mod->HSMHV_pnfalp_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PPTHROU:
|
||||
mod->HSMHV_ppthrou = value->rValue;
|
||||
mod->HSMHV_ppthrou_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PVDIFFJ:
|
||||
mod->HSMHV_pvdiffj = value->rValue;
|
||||
mod->HSMHV_pvdiffj_Given = TRUE;
|
||||
|
|
@ -2858,119 +2446,6 @@ int HSMHVmParam(
|
|||
mod->HSMHV_pvover_Given = TRUE;
|
||||
break;
|
||||
|
||||
case HSMHV_MOD_PJS0D:
|
||||
mod->HSMHV_pjs0d = value->rValue;
|
||||
mod->HSMHV_pjs0d_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PJS0SWD:
|
||||
mod->HSMHV_pjs0swd = value->rValue;
|
||||
mod->HSMHV_pjs0swd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PNJD:
|
||||
mod->HSMHV_pnjd = value->rValue;
|
||||
mod->HSMHV_pnjd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PCISBKD:
|
||||
mod->HSMHV_pcisbkd = value->rValue;
|
||||
mod->HSMHV_pcisbkd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PVDIFFJD:
|
||||
mod->HSMHV_pvdiffjd = value->rValue;
|
||||
mod->HSMHV_pvdiffjd_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PJS0S:
|
||||
mod->HSMHV_pjs0s = value->rValue;
|
||||
mod->HSMHV_pjs0s_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PJS0SWS:
|
||||
mod->HSMHV_pjs0sws = value->rValue;
|
||||
mod->HSMHV_pjs0sws_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PNJS:
|
||||
mod->HSMHV_pnjs = value->rValue;
|
||||
mod->HSMHV_pnjs_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PCISBKS:
|
||||
mod->HSMHV_pcisbks = value->rValue;
|
||||
mod->HSMHV_pcisbks_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_PVDIFFJS:
|
||||
mod->HSMHV_pvdiffjs = value->rValue;
|
||||
mod->HSMHV_pvdiffjs_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_NDEPM:
|
||||
mod->HSMHV_ndepm = value->rValue;
|
||||
mod->HSMHV_ndepm_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_TNDEP:
|
||||
mod->HSMHV_tndep = value->rValue;
|
||||
mod->HSMHV_tndep_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_DEPMUE0:
|
||||
mod->HSMHV_depmue0 = value->rValue;
|
||||
mod->HSMHV_depmue0_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_DEPMUE1:
|
||||
mod->HSMHV_depmue1 = value->rValue;
|
||||
mod->HSMHV_depmue1_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_DEPMUEBACK0:
|
||||
mod->HSMHV_depmueback0 = value->rValue;
|
||||
mod->HSMHV_depmueback0_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_DEPMUEBACK1:
|
||||
mod->HSMHV_depmueback1 = value->rValue;
|
||||
mod->HSMHV_depmueback1_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_DEPLEAK:
|
||||
mod->HSMHV_depleak = value->rValue;
|
||||
mod->HSMHV_depleak_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_DEPETA:
|
||||
mod->HSMHV_depeta = value->rValue;
|
||||
mod->HSMHV_depeta_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_DEPVMAX:
|
||||
mod->HSMHV_depvmax = value->rValue;
|
||||
mod->HSMHV_depvmax_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_DEPVDSEF1:
|
||||
mod->HSMHV_depvdsef1 = value->rValue;
|
||||
mod->HSMHV_depvdsef1_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_DEPVDSEF2:
|
||||
mod->HSMHV_depvdsef2 = value->rValue;
|
||||
mod->HSMHV_depvdsef2_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_DEPMUEPH0:
|
||||
mod->HSMHV_depmueph0 = value->rValue;
|
||||
mod->HSMHV_depmueph0_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_DEPMUEPH1:
|
||||
mod->HSMHV_depmueph1 = value->rValue;
|
||||
mod->HSMHV_depmueph1_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_DEPBB:
|
||||
mod->HSMHV_depbb = value->rValue;
|
||||
mod->HSMHV_depbb_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_DEPVTMP:
|
||||
mod->HSMHV_depvtmp = value->rValue;
|
||||
mod->HSMHV_depvtmp_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_DEPMUETMP:
|
||||
mod->HSMHV_depmuetmp = value->rValue;
|
||||
mod->HSMHV_depmuetmp_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_ISBREAK:
|
||||
mod->HSMHV_isbreak = value->rValue;
|
||||
mod->HSMHV_isbreak_Given = TRUE;
|
||||
break;
|
||||
case HSMHV_MOD_RWELL:
|
||||
mod->HSMHV_rwell = value->rValue;
|
||||
mod->HSMHV_rwell_Given = TRUE;
|
||||
break;
|
||||
|
||||
case HSMHV_MOD_VGS_MAX:
|
||||
mod->HSMHVvgsMax = value->rValue;
|
||||
mod->HSMHVvgsMaxGiven = TRUE;
|
||||
|
|
|
|||
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvnoi.c
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "hsmhvdef.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
|
|
@ -76,9 +34,6 @@ June 2008 (revised October 2011)
|
|||
* all of the MOSFET's is summed with the variable "OnDens".
|
||||
*/
|
||||
|
||||
extern void NevalSrc();
|
||||
extern double Nintegrate();
|
||||
|
||||
int HSMHVnoise (
|
||||
int mode, int operation,
|
||||
GENmodel *inModel,
|
||||
|
|
@ -123,10 +78,8 @@ int HSMHVnoise (
|
|||
case N_DENS:
|
||||
for ( i = 0; i < HSMHVNSRCS; i++ ) {
|
||||
(void) sprintf(name, "onoise.%s%s",
|
||||
(char *)here->HSMHVname, HSMHVnNames[i]);
|
||||
data->namelist =
|
||||
(IFuid *) trealloc((char *) data->namelist,
|
||||
(data->numPlots + 1) * sizeof(IFuid));
|
||||
here->HSMHVname, HSMHVnNames[i]);
|
||||
data->namelist = TREALLOC(IFuid, data->namelist, data->numPlots + 1);
|
||||
if (!data->namelist)
|
||||
return(E_NOMEM);
|
||||
(*(SPfrontEnd->IFnewUid))
|
||||
|
|
@ -137,10 +90,8 @@ int HSMHVnoise (
|
|||
case INT_NOIZ:
|
||||
for ( i = 0; i < HSMHVNSRCS; i++ ) {
|
||||
(void) sprintf(name, "onoise_total.%s%s",
|
||||
(char *)here->HSMHVname, HSMHVnNames[i]);
|
||||
data->namelist =
|
||||
(IFuid *) trealloc((char *) data->namelist,
|
||||
(data->numPlots + 1) * sizeof(IFuid));
|
||||
here->HSMHVname, HSMHVnNames[i]);
|
||||
data->namelist = TREALLOC(IFuid, data->namelist, data->numPlots + 1);
|
||||
if (!data->namelist)
|
||||
return(E_NOMEM);
|
||||
(*(SPfrontEnd->IFnewUid))
|
||||
|
|
@ -148,10 +99,8 @@ int HSMHVnoise (
|
|||
(IFuid) NULL, name, UID_OTHER, NULL);
|
||||
|
||||
(void) sprintf(name, "inoise_total.%s%s",
|
||||
(char *)here->HSMHVname, HSMHVnNames[i]);
|
||||
data->namelist =
|
||||
(IFuid *) trealloc((char *) data->namelist,
|
||||
(data->numPlots + 1) * sizeof(IFuid));
|
||||
here->HSMHVname, HSMHVnNames[i]);
|
||||
data->namelist = TREALLOC(IFuid, data->namelist, data->numPlots + 1);
|
||||
if (!data->namelist)
|
||||
return(E_NOMEM);
|
||||
(*(SPfrontEnd->IFnewUid))
|
||||
|
|
@ -172,7 +121,7 @@ int HSMHVnoise (
|
|||
TTEMP = TTEMP + *(ckt->CKTstate0 + here->HSMHVdeltemp) ;
|
||||
|
||||
/* rs/rd thermal noise */
|
||||
if ( model->HSMHV_corsrd == 1 || model->HSMHV_corsrd == 3 || model->HSMHV_cordrift == 1 ) {
|
||||
if ( model->HSMHV_corsrd == 1 || model->HSMHV_corsrd == 3 ) {
|
||||
NevalSrc(&noizDens[HSMHVRDNOIZ], (double*) NULL,
|
||||
ckt, N_GAIN,
|
||||
here->HSMHVdNodePrime, here->HSMHVdNode,
|
||||
|
|
|
|||
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvpar.c
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/ifsim.h"
|
||||
#include "hsmhvdef.h"
|
||||
|
|
|
|||
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvpzld.c
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "ngspice/complex.h"
|
||||
|
|
@ -66,11 +24,11 @@ June 2008 (revised October 2011)
|
|||
|
||||
int HSMHVpzLoad(
|
||||
GENmodel *inModel,
|
||||
CKTcircuit *ckt,
|
||||
SPcomplex *s)
|
||||
register CKTcircuit *ckt,
|
||||
register SPcomplex *s)
|
||||
{
|
||||
HSMHVmodel *model = (HSMHVmodel*)inModel;
|
||||
HSMHVinstance *here;
|
||||
register HSMHVmodel *model = (HSMHVmodel*)inModel;
|
||||
register HSMHVinstance *here;
|
||||
int flg_nqs =0 ;
|
||||
|
||||
NG_IGNORE(ckt);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvtemp.c
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/smpdefs.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
|
|
@ -69,7 +27,7 @@ June 2008 (revised October 2011)
|
|||
|
||||
#define RANGECHECK(param, min, max, pname) \
|
||||
if ( (param) < (min) || (param) > (max) ) { \
|
||||
printf("warning(HiSIM_HV(%s)): The model/instance parameter %s (= %e) must be in the range [%e , %e].\n", model->HSMHVmodName,\
|
||||
printf("warning(HiSIMHV): The model/instance parameter %s (= %e) must be in the range [%e , %e].\n", \
|
||||
(pname), (param), (min), (max) ); \
|
||||
}
|
||||
|
||||
|
|
@ -91,6 +49,11 @@ June 2008 (revised October 2011)
|
|||
y = ( xmin ) + 0.5 * ( TMF1 + TMF2 ) ; \
|
||||
}
|
||||
|
||||
#ifdef POW_TO_EXP_AND_LOG
|
||||
#define Fn_Pow( x , y ) exp( y * log( x ) )
|
||||
#else
|
||||
#define Fn_Pow( x , y ) pow( x , y )
|
||||
#endif
|
||||
|
||||
#define C_m2cm (1.0e2)
|
||||
|
||||
|
|
@ -98,8 +61,8 @@ int HSMHVtemp(
|
|||
GENmodel *inModel,
|
||||
CKTcircuit *ckt)
|
||||
{
|
||||
HSMHVmodel *model = (HSMHVmodel *)inModel ;
|
||||
HSMHVinstance *here ;
|
||||
register HSMHVmodel *model = (HSMHVmodel *)inModel ;
|
||||
register HSMHVinstance *here ;
|
||||
HSMHVbinningParam *pParam ;
|
||||
HSMHVmodelMKSParam *modelMKS ;
|
||||
HSMHVhereMKSParam *hereMKS ;
|
||||
|
|
@ -110,12 +73,10 @@ int HSMHVtemp(
|
|||
double T0, T1, T2, T3, T4, T5, T6, T7 ;
|
||||
/* temperature-dependent variables */
|
||||
double Eg =0.0, TTEMP0=0.0, TTEMP=0.0, beta=0.0, Nin=0.0 ;
|
||||
double Tdiff0 = 0.0, Tdiff0_2 = 0.0, Tdiff = 0.0, Tdiff_2 = 0.0;
|
||||
double /*Tdiff0 = 0.0, Tdiff0_2 = 0.0,*/ Tdiff = 0.0, Tdiff_2 = 0.0 ;
|
||||
double js=0.0, jssw=0.0, js2=0.0, jssw2 =0.0 ;
|
||||
int i=0 ;
|
||||
double TMF1 , TMF2 ;
|
||||
double GDLD =0.0 ;
|
||||
double log_Tratio =0.0 ;
|
||||
const double small = 1.0e-50 ;
|
||||
const double dlt_rd23 = 1.0e-6 / C_m2cm ;
|
||||
const double large_arg = 80 ;
|
||||
|
|
@ -146,7 +107,6 @@ int HSMHVtemp(
|
|||
LG = Lgate * C_m2um ;
|
||||
here->HSMHV_wg = WG = Wgate * C_m2um ;
|
||||
WL = WG * LG ;
|
||||
GDLD = model->HSMHV_gdld * C_m2um ;
|
||||
|
||||
|
||||
/* Band gap */
|
||||
|
|
@ -197,7 +157,7 @@ int HSMHVtemp(
|
|||
|
||||
/* DFM */
|
||||
if ( model->HSMHV_codfm == 1 && here->HSMHV_nsubcdfm_Given ) {
|
||||
RANGECHECK(here->HSMHV_nsubcdfm, 1.0e16, 1.0e19, "NSUBCDFM") ;
|
||||
RANGECHECK(hereMKS->HSMHV_nsubcdfm, 1.0e16, 1.0e19, "NSUBCDFM") ;
|
||||
here->HSMHV_mueph1 *= model->HSMHV_mphdfm
|
||||
* ( log(hereMKS->HSMHV_nsubcdfm) - log(here->HSMHV_nsubc) ) + 1.0 ;
|
||||
here->HSMHV_nsubp += hereMKS->HSMHV_nsubcdfm - here->HSMHV_nsubc ;
|
||||
|
|
@ -246,15 +206,11 @@ int HSMHVtemp(
|
|||
|
||||
Leff = Lgate - ( dL + dLLD ) ;
|
||||
if ( Leff <= 0.0 ) {
|
||||
IFuid namarr[2];
|
||||
namarr[0] = here->HSMHVname;
|
||||
namarr[1] = model->HSMHVmodName;
|
||||
(*(SPfrontEnd->IFerror))
|
||||
SPfrontEnd->IFerrorf
|
||||
(
|
||||
ERR_FATAL,
|
||||
"HiSIM_HV: MOSFET(%s) MODEL(%s): effective channel length is negative or 0",
|
||||
namarr
|
||||
);
|
||||
model->HSMHVmodName, here->HSMHVname);
|
||||
return (E_BADPARM);
|
||||
}
|
||||
here->HSMHV_leff = Leff ;
|
||||
|
|
@ -272,15 +228,11 @@ int HSMHVtemp(
|
|||
here->HSMHV_weff_ld = Wgate - 2.0e0 * dWLD ;
|
||||
here->HSMHV_weff_cv = Wgate - 2.0e0 * dWCV ;
|
||||
if ( Weff <= 0.0 ) {
|
||||
IFuid namarr[2];
|
||||
namarr[0] = here->HSMHVname;
|
||||
namarr[1] = model->HSMHVmodName;
|
||||
(*(SPfrontEnd->IFerror))
|
||||
SPfrontEnd->IFerrorf
|
||||
(
|
||||
ERR_FATAL,
|
||||
"HiSIM_HV: MOSFET(%s) MODEL(%s): effective channel width is negative or 0",
|
||||
namarr
|
||||
);
|
||||
model->HSMHVmodName, here->HSMHVname);
|
||||
return (E_BADPARM);
|
||||
}
|
||||
here->HSMHV_weff_nf = Weff * here->HSMHV_nf ;
|
||||
|
|
@ -331,9 +283,6 @@ int HSMHVtemp(
|
|||
here->HSMHV_ptovr0 = 0.0e0 ;
|
||||
}
|
||||
|
||||
/* depletion MOS (temperature-independent part) */
|
||||
here->HSMHV_ndepm = modelMKS->HSMHV_ndepm ;
|
||||
|
||||
/* costi0 and costi1 for STI transistor model (temperature-independent part) */
|
||||
here->HSMHV_costi00 = sqrt (2.0 * C_QE * pParam->HSMHV_nsti * C_ESI ) ;
|
||||
here->HSMHV_nsti_p2 = 1.0 / ( pParam->HSMHV_nsti * pParam->HSMHV_nsti ) ;
|
||||
|
|
@ -348,10 +297,14 @@ int HSMHVtemp(
|
|||
/* @300K, w/o pocket */
|
||||
here->HSMHV_pb2c = 2.0e0 / C_b300 * log (here->HSMHV_nsubc / C_Nin0) ;
|
||||
|
||||
|
||||
/* constant for Poly depletion */
|
||||
here->HSMHV_cnstpgd = pow ( 1e0 + 1e0 / LG , model->HSMHV_pgd4 )
|
||||
* pParam->HSMHV_pgd1 ;
|
||||
|
||||
|
||||
|
||||
|
||||
/* Gate resistance */
|
||||
if ( here->HSMHV_corg == 1 ) {
|
||||
T1 = here->HSMHV_xgw + Weff / (3.0e0 * here->HSMHV_ngcon);
|
||||
|
|
@ -360,7 +313,7 @@ int HSMHVtemp(
|
|||
if (here->HSMHV_grg > 1.0e-3) here->HSMHV_grg = here->HSMHV_m / here->HSMHV_grg;
|
||||
else {
|
||||
here->HSMHV_grg = here->HSMHV_m * 1.0e3;
|
||||
printf("warning(HiSIM_HV(%s)): The gate conductance reset to 1.0e3 mho.\n",model->HSMHVmodName);
|
||||
printf("warning(HiSIM_HV): The gate conductance reset to 1.0e3 mho.\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -397,15 +350,6 @@ int HSMHVtemp(
|
|||
here->HSMHV_rs0 = 0.0 ;
|
||||
}
|
||||
|
||||
here->HSMHV_Xmax = sqrt ( model->HSMHV_rdrdjunc * model->HSMHV_rdrdjunc + model->HSMHV_xldld * model->HSMHV_xldld ) ;
|
||||
if(pParam->HSMHV_nover != 0.0) {
|
||||
here->HSMHV_kdep = 2.0 * C_ESI / ( C_QE * pParam->HSMHV_nover ) ;
|
||||
here->HSMHV_kjunc = 2.0 * C_ESI / C_QE * here->HSMHV_nsubc / ( pParam->HSMHV_nover + here->HSMHV_nsubc ) / pParam->HSMHV_nover ;
|
||||
}
|
||||
here->HSMHV_rdrcxw = 1.0e0 ;
|
||||
here->HSMHV_rdrvmaxw = 1.0e0 + (model->HSMHV_rdrvmaxw / pow( WG, model->HSMHV_rdrvmaxwp)) ;
|
||||
here->HSMHV_rdrvmaxl = 1.0e0 + (model->HSMHV_rdrvmaxl / pow( LG, model->HSMHV_rdrvmaxlp)) ;
|
||||
here->HSMHV_rdrmuel = 1.0e0 + (model->HSMHV_rdrmuel / pow( LG, model->HSMHV_rdrmuelp )) ;
|
||||
|
||||
/* Body resistance */
|
||||
if ( here->HSMHV_corbnet == 1 ) {
|
||||
|
|
@ -420,16 +364,9 @@ int HSMHVtemp(
|
|||
}
|
||||
|
||||
/* Vdseff */
|
||||
if( model->HSMHV_coddlt == 0) {
|
||||
T1 = model->HSMHV_ddltslp * LG + model->HSMHV_ddltict ;
|
||||
if ( T1 < 0.0 ) { T1 = 0.0 ; }
|
||||
here->HSMHV_ddlt = T1 * model->HSMHV_ddltmax / ( T1 + model->HSMHV_ddltmax ) + 1.0 ;
|
||||
} else {
|
||||
T1 = model->HSMHV_ddltslp * LG ;
|
||||
if ( T1 < 0.0 ) { T1 = 0.0 ; }
|
||||
here->HSMHV_ddlt = T1 * model->HSMHV_ddltmax / ( T1 + model->HSMHV_ddltmax ) + model->HSMHV_ddltict + small ;
|
||||
}
|
||||
|
||||
T1 = model->HSMHV_ddltslp * LG + model->HSMHV_ddltict ;
|
||||
if ( T1 < 0.0 ) { T1 = 0.0 ; }
|
||||
here->HSMHV_ddlt = T1 * model->HSMHV_ddltmax / ( T1 + model->HSMHV_ddltmax ) + 1.0 ;
|
||||
|
||||
/* Isub */
|
||||
T2 = pow( Weff , model->HSMHV_svgswp ) ;
|
||||
|
|
@ -452,13 +389,6 @@ int HSMHVtemp(
|
|||
here->HSMHV_xsub2 = pParam->HSMHV_sub2
|
||||
* ( 1.0 + modelMKS->HSMHV_sub2l / here->HSMHV_lgate ) ;
|
||||
|
||||
here->HSMHV_subld1 = model->HSMHV_subld1
|
||||
* ( 1.0 + model->HSMHV_subld1l / pow( LG , model->HSMHV_subld1lp ) ) ;
|
||||
|
||||
/* IBPC */
|
||||
here->HSMHV_ibpc1 = pParam->HSMHV_ibpc1
|
||||
* ( 1.0 + model->HSMHV_ibpc1l / pow( LG , model->HSMHV_ibpc1lp ) ) ;
|
||||
|
||||
/* Fringing capacitance */
|
||||
here->HSMHV_cfrng = C_EOX / ( C_Pi / 2.0e0 ) * here->HSMHV_weff_nf
|
||||
* log( 1.0e0 + model->HSMHV_tpoly / model->HSMHV_tox ) ;
|
||||
|
|
@ -467,11 +397,6 @@ int HSMHVtemp(
|
|||
here->HSMHV_cqyb0 = C_m2um * here->HSMHV_weff_nf
|
||||
* model->HSMHV_xqy1 / pow( LG , model->HSMHV_xqy2 ) ;
|
||||
|
||||
/* Parasitic component of the channel current */
|
||||
here->HSMHV_ptl0 = model->HSMHV_ptl * pow( LG , - model->HSMHV_ptlp ) ;
|
||||
here->HSMHV_pt40 = model->HSMHV_pt4 * pow( LG , - model->HSMHV_pt4p ) ;
|
||||
here->HSMHV_gdl0 = model->HSMHV_gdl * pow( LG + GDLD , - model->HSMHV_gdlp ) ;
|
||||
|
||||
/* Self heating */
|
||||
pParam->HSMHV_rth = pParam->HSMHV_rth0 / ( here->HSMHV_m * here->HSMHV_weff_nf )
|
||||
* ( 1.0 + model->HSMHV_rth0w / pow( WG , model->HSMHV_rth0wp ) );
|
||||
|
|
@ -489,8 +414,6 @@ int HSMHVtemp(
|
|||
if ( here->HSMHVtempNode < 0 || pParam->HSMHV_rth0 == 0.0 ) {
|
||||
|
||||
#include "hsmhvtemp_eval.h"
|
||||
#include "hsmhvtemp_eval_rdri.h"
|
||||
#include "hsmhvtemp_eval_dio.h"
|
||||
|
||||
} /* end of if ( here->HSMHVtempNode < 0 || pParam->HSMHV_rth0 == 0.0 ) */
|
||||
|
||||
|
|
|
|||
|
|
@ -1,61 +1,19 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvtemp_eval.h
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#define C_rdtemp_min 5.0e-3
|
||||
#define C_rdtemp_dlt 1.0e-2
|
||||
|
||||
|
|
@ -66,15 +24,16 @@ June 2008 (revised October 2011)
|
|||
/* Self heating */
|
||||
TTEMP = TTEMP + deltemp ;
|
||||
#endif
|
||||
Tdiff0 = TTEMP0 - model->HSMHV_ktnom ;
|
||||
Tdiff0_2 = TTEMP0 * TTEMP0 - model->HSMHV_ktnom * model->HSMHV_ktnom ;
|
||||
/*Tdiff0 = TTEMP0 - model->HSMHV_ktnom ;*/
|
||||
/*Tdiff0_2 = TTEMP0 * TTEMP0 - model->HSMHV_ktnom * model->HSMHV_ktnom ;*/
|
||||
Tdiff = TTEMP - model->HSMHV_ktnom ;
|
||||
Tdiff_2 = TTEMP * TTEMP - model->HSMHV_ktnom * model->HSMHV_ktnom ;
|
||||
here->HSMHV_Tratio = TTEMP / model->HSMHV_ktnom ;
|
||||
|
||||
/* Band gap */
|
||||
here->HSMHV_eg = Eg = here->HSMHV_egtnom - pParam->HSMHV_bgtmp1 * Tdiff
|
||||
- pParam->HSMHV_bgtmp2 * Tdiff_2 ;
|
||||
T1 = TTEMP - model->HSMHV_ktnom ;
|
||||
T2 = TTEMP * TTEMP - model->HSMHV_ktnom * model->HSMHV_ktnom ;
|
||||
here->HSMHV_eg = Eg = here->HSMHV_egtnom - pParam->HSMHV_bgtmp1 * T1
|
||||
- pParam->HSMHV_bgtmp2 * T2 ;
|
||||
here->HSMHV_sqrt_eg = sqrt( Eg ) ;
|
||||
#ifdef HSMHVEVAL
|
||||
Eg_dT = -pParam->HSMHV_bgtmp1 - 2.0e0 * TTEMP * pParam->HSMHV_bgtmp2 ;
|
||||
|
|
@ -100,53 +59,26 @@ Tdiff_2 = TTEMP * TTEMP - model->HSMHV_ktnom * model->HSMHV_ktnom ;
|
|||
#endif
|
||||
|
||||
/* Intrinsic carrier concentration */
|
||||
here->HSMHV_nin = Nin = C_Nin0 * Fn_Pow (here->HSMHV_Tratio, 1.5e0)
|
||||
here->HSMHV_nin = Nin = C_Nin0 * Fn_Pow (TTEMP / model->HSMHV_ktnom, 1.5e0)
|
||||
* exp (- Eg / 2.0e0 * beta + here->HSMHV_egtnom / 2.0e0 * here->HSMHV_betatnom) ;
|
||||
#ifdef HSMHVEVAL
|
||||
Nin_dT = C_Nin0 * exp (- Eg / 2.0e0 * beta + here->HSMHV_egtnom / 2.0e0 * here->HSMHV_betatnom)
|
||||
* 1.5e0 * Fn_Pow ( here->HSMHV_Tratio , 0.5e0 ) / model->HSMHV_ktnom
|
||||
+ C_Nin0 * Fn_Pow (here->HSMHV_Tratio, 1.5e0)
|
||||
* 1.5e0 * Fn_Pow ( TTEMP / model->HSMHV_ktnom , 0.5e0 ) / model->HSMHV_ktnom
|
||||
+ C_Nin0 * Fn_Pow (TTEMP / model->HSMHV_ktnom, 1.5e0)
|
||||
* exp (- Eg / 2.0e0 * beta + here->HSMHV_egtnom / 2.0e0 * here->HSMHV_betatnom)
|
||||
* ( - Eg / 2.0e0 * beta_dT - beta / 2.0e0 * Eg_dT );
|
||||
#endif
|
||||
|
||||
/* Phonon Scattering (temperature-dependent part) */
|
||||
T1 = Fn_Pow (here->HSMHV_Tratio, pParam->HSMHV_muetmp) ;
|
||||
T1 = Fn_Pow (TTEMP / model->HSMHV_ktnom, pParam->HSMHV_muetmp) ;
|
||||
here->HSMHV_mphn0 = T1 / here->HSMHV_mueph ;
|
||||
here->HSMHV_mphn1 = here->HSMHV_mphn0 * model->HSMHV_mueph0 ;
|
||||
#ifdef HSMHVEVAL
|
||||
T1_dT = pParam->HSMHV_muetmp * Fn_Pow(here->HSMHV_Tratio, pParam->HSMHV_muetmp - 1.0 )
|
||||
T1_dT = pParam->HSMHV_muetmp * Fn_Pow(TTEMP / model->HSMHV_ktnom, pParam->HSMHV_muetmp - 1.0 )
|
||||
/ model->HSMHV_ktnom ;
|
||||
mphn0_dT = T1_dT / here->HSMHV_mueph ;
|
||||
#endif
|
||||
|
||||
if( model->HSMHV_codep == 1 ) {
|
||||
/* depletion MOS parameter (temperature-dependent part) */
|
||||
here->HSMHV_Pb2n = 2.0/beta*log(here->HSMHV_ndepm/Nin) ;
|
||||
here->HSMHV_Vbipn = 1.0/beta*log(here->HSMHV_ndepm*here->HSMHV_nsub/Nin/Nin) ;
|
||||
here->HSMHV_cnst0 = sqrt ( 2.0 * C_ESI * C_QE * here->HSMHV_ndepm / beta ) ;
|
||||
here->HSMHV_cnst1 = Nin*Nin/here->HSMHV_ndepm/here->HSMHV_ndepm ;
|
||||
T1 = Fn_Pow (here->HSMHV_Tratio, model->HSMHV_depmuetmp) ;
|
||||
here->HSMHV_depmphn0 = T1 / model->HSMHV_depmueph1 ;
|
||||
here->HSMHV_depmphn1 = here->HSMHV_depmphn0 * model->HSMHV_depmueph0 ;
|
||||
|
||||
T0 = 1.8 + 0.4 * here->HSMHV_Tratio + 0.1 * here->HSMHV_Tratio * here->HSMHV_Tratio - model->HSMHV_depvtmp * ( 1.0 - here->HSMHV_Tratio ) ;
|
||||
here->HSMHV_depvmax = modelMKS->HSMHV_depvmax / T0 ;
|
||||
|
||||
#ifdef HSMHVEVAL
|
||||
Pb2n_dT = -here->HSMHV_Pb2n/beta*beta_dT-2.0/beta/Nin*Nin_dT ;
|
||||
Vbipn_dT = -here->HSMHV_Vbipn/beta*beta_dT-2/beta/Nin*Nin_dT ;
|
||||
cnst0_dT = 0.5e0 / here->HSMHV_cnst0 * 2.0 * C_ESI * C_QE * here->HSMHV_ndepm * beta_inv_dT ;
|
||||
cnst1_dT = 2.0e0 * Nin * Nin_dT / here->HSMHV_ndepm / here->HSMHV_ndepm ;
|
||||
T1_dT = model->HSMHV_depmuetmp * Fn_Pow(here->HSMHV_Tratio, model->HSMHV_depmuetmp - 1.0 )
|
||||
/ model->HSMHV_ktnom ;
|
||||
depmphn0_dT = T1_dT / model->HSMHV_depmueph1 ;
|
||||
T0_dT = 1 / model->HSMHV_ktnom * ( 0.4 + 0.2 * here->HSMHV_Tratio + model->HSMHV_depvtmp ) ;
|
||||
depVmax_dT = - modelMKS->HSMHV_depvmax / ( T0 * T0 ) * T0_dT ;
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Pocket Overlap (temperature-dependent part) */
|
||||
here->HSMHV_ptovr = here->HSMHV_ptovr0 / beta ;
|
||||
#ifdef HSMHVEVAL
|
||||
|
|
@ -155,14 +87,16 @@ Tdiff_2 = TTEMP * TTEMP - model->HSMHV_ktnom * model->HSMHV_ktnom ;
|
|||
|
||||
/* Velocity Temperature Dependence */
|
||||
T1 = TTEMP / model->HSMHV_ktnom ;
|
||||
T3 = TTEMP0 - model->HSMHV_ktnom ;
|
||||
T4 = TTEMP0 * TTEMP0 - model->HSMHV_ktnom * model->HSMHV_ktnom ;
|
||||
T0 = 1.8 + 0.4 * T1 + 0.1 * T1 * T1 - pParam->HSMHV_vtmp * (1.0 - T1) ;
|
||||
if ( model->HSMHV_cotemp != 2 ) { /* without deltemp (COTEMP=0,1,3) */
|
||||
here->HSMHV_vmax = here->HSMHV_vmax0 * pParam->HSMHV_vmax
|
||||
/ T0
|
||||
* ( 1.0 + model->HSMHV_vmaxt1 * Tdiff0 + model->HSMHV_vmaxt2 * Tdiff0_2 ) ;
|
||||
* ( 1.0 + model->HSMHV_vmaxt1 * T3 + model->HSMHV_vmaxt2 * T4 ) ;
|
||||
#ifdef HSMHVEVAL
|
||||
Vmax_dT=-here->HSMHV_vmax0 * pParam->HSMHV_vmax
|
||||
/ ( T0 * T0 ) * ( 1.0 + model->HSMHV_vmaxt1 * Tdiff0 + model->HSMHV_vmaxt2 * Tdiff0_2 )
|
||||
/ ( T0 * T0 ) * ( 1.0 + model->HSMHV_vmaxt1 * T3 + model->HSMHV_vmaxt2 * T4 )
|
||||
* 1/model->HSMHV_ktnom * (0.4 + 0.2 * T1 + pParam->HSMHV_vtmp) ;
|
||||
#endif
|
||||
} else { /* with deltemp (COTEMP=2) */
|
||||
|
|
@ -179,7 +113,7 @@ Tdiff_2 = TTEMP * TTEMP - model->HSMHV_ktnom * model->HSMHV_ktnom ;
|
|||
#endif
|
||||
}
|
||||
if ( model->HSMHV_cotemp != 2 ) { /* without deltemp (COTEMP=0,1,3) */
|
||||
here->HSMHV_ninvd = here->HSMHV_ninvd0 * ( 1.0 + model->HSMHV_ninvdt1 * Tdiff0 + model->HSMHV_ninvdt2 * Tdiff0_2 ) ;
|
||||
here->HSMHV_ninvd = here->HSMHV_ninvd0 * ( 1.0 + model->HSMHV_ninvdt1 * T3 + model->HSMHV_ninvdt2 * T4 ) ;
|
||||
#ifdef HSMHVEVAL
|
||||
ninvd_dT = 0.0 ;
|
||||
#endif
|
||||
|
|
@ -192,11 +126,11 @@ Tdiff_2 = TTEMP * TTEMP - model->HSMHV_ktnom * model->HSMHV_ktnom ;
|
|||
}
|
||||
|
||||
/* Temperature Dependence of RTH0 */
|
||||
pParam->HSMHV_rth = ( pParam->HSMHV_rth0 + model->HSMHV_rthtemp1 * Tdiff0 + model->HSMHV_rthtemp2 * Tdiff0_2 ) * here->HSMHV_rthtemp0 ;
|
||||
pParam->HSMHV_rth = ( pParam->HSMHV_rth0 + model->HSMHV_rthtemp1 * T3 + model->HSMHV_rthtemp2 * T4 ) * here->HSMHV_rthtemp0 ;
|
||||
|
||||
|
||||
/* Temperature Dependence of POWRAT */
|
||||
T2 = pParam->HSMHV_powrat + model->HSMHV_prattemp1 * Tdiff0 + model->HSMHV_prattemp2 * Tdiff0_2 ;
|
||||
T2 = pParam->HSMHV_powrat + model->HSMHV_prattemp1 * T3 + model->HSMHV_prattemp2 * T4 ;
|
||||
Fn_SL( T2 , T2 , 0 , 0.05 , T0 );
|
||||
Fn_SU( here->HSMHV_powratio , T2 , 1 , 0.05 , T0 );
|
||||
|
||||
|
|
@ -213,53 +147,52 @@ Tdiff_2 = TTEMP * TTEMP - model->HSMHV_ktnom * model->HSMHV_ktnom ;
|
|||
here->HSMHV_wdpl = sqrt ( T1 / here->HSMHV_nsub ) ;
|
||||
here->HSMHV_wdplp = sqrt( T1 / ( here->HSMHV_nsubp ) ) ;
|
||||
|
||||
|
||||
if( model->HSMHV_codep == 0 ) {
|
||||
/* Coefficient of the F function for bulk charge */
|
||||
here->HSMHV_cnst0 = sqrt ( 2.0 * C_ESI * C_QE * here->HSMHV_nsub / beta ) ;
|
||||
/* Coefficient of the F function for bulk charge */
|
||||
here->HSMHV_cnst0 = sqrt ( 2.0 * C_ESI * C_QE * here->HSMHV_nsub / beta ) ;
|
||||
|
||||
/* cnst1: n_{p0} / p_{p0} */
|
||||
T1 = Nin / here->HSMHV_nsub ;
|
||||
here->HSMHV_cnst1 = T1 * T1 ;
|
||||
/* cnst1: n_{p0} / p_{p0} */
|
||||
T1 = Nin / here->HSMHV_nsub ;
|
||||
here->HSMHV_cnst1 = T1 * T1 ;
|
||||
#ifdef HSMHVEVAL
|
||||
cnst0_dT = 0.5e0 / here->HSMHV_cnst0 * 2.0 * C_ESI * C_QE * here->HSMHV_nsub * beta_inv_dT ;
|
||||
cnst1_dT = 2.0e0 * Nin * Nin_dT / here->HSMHV_nsub / here->HSMHV_nsub ;
|
||||
cnst0_dT = 0.5e0 / here->HSMHV_cnst0 * 2.0 * C_ESI * C_QE * here->HSMHV_nsub * beta_inv_dT ;
|
||||
cnst1_dT = 2.0e0 * Nin * Nin_dT / here->HSMHV_nsub / here->HSMHV_nsub ;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
if( model->HSMHV_codep == 0 ) {
|
||||
|
||||
if ( pParam->HSMHV_nover != 0.0 ) {
|
||||
here->HSMHV_cnst0over = here->HSMHV_cnst0 * sqrt( pParam->HSMHV_nover / here->HSMHV_nsub ) ;
|
||||
if ( pParam->HSMHV_nover != 0.0 ) {
|
||||
here->HSMHV_cnst0over = here->HSMHV_cnst0 * sqrt( pParam->HSMHV_nover / here->HSMHV_nsub ) ;
|
||||
#ifdef HSMHVEVAL
|
||||
cnst0over_dT = cnst0_dT * sqrt( pParam->HSMHV_nover / here->HSMHV_nsub ) ;
|
||||
cnst0over_dT = cnst0_dT * sqrt( pParam->HSMHV_nover / here->HSMHV_nsub ) ;
|
||||
#endif
|
||||
}
|
||||
if ( pParam->HSMHV_novers != 0.0 ) {
|
||||
here->HSMHV_cnst0overs = here->HSMHV_cnst0 * sqrt( pParam->HSMHV_novers / here->HSMHV_nsub ) ;
|
||||
/* ps0ldinib : Ps0_iniB for Ps0LD */
|
||||
T1 = here->HSMHV_cnst0over * model->HSMHV_tox / here->HSMHV_cecox ;
|
||||
T2 = pParam->HSMHV_nover / Nin ;
|
||||
here->HSMHV_ps0ldinib = T2 * T2 / ( T1 * T1 );
|
||||
#ifdef HSMHVEVAL
|
||||
cnst0overs_dT = cnst0_dT * sqrt( pParam->HSMHV_novers / here->HSMHV_nsub ) ;
|
||||
T1_dT = cnst0over_dT * model->HSMHV_tox / here->HSMHV_cecox ;
|
||||
T2_dT = - Nin_dT * T2 / Nin;
|
||||
ps0ldinib_dT = 2.0 * here->HSMHV_ps0ldinib * ( T2_dT * T1 - T2 * T1_dT ) / ( T1 * T2 );
|
||||
#endif
|
||||
}
|
||||
} else {
|
||||
if ( pParam->HSMHV_nover != 0.0 ) {
|
||||
here->HSMHV_cnst0over = here->HSMHV_cnst0 * sqrt( pParam->HSMHV_nover / here->HSMHV_ndepm ) ;
|
||||
}
|
||||
if ( pParam->HSMHV_novers != 0.0 ) {
|
||||
here->HSMHV_cnst0overs = here->HSMHV_cnst0 * sqrt( pParam->HSMHV_novers / here->HSMHV_nsub ) ;
|
||||
#ifdef HSMHVEVAL
|
||||
cnst0over_dT = cnst0_dT * sqrt( pParam->HSMHV_nover / here->HSMHV_ndepm ) ;
|
||||
cnst0overs_dT = cnst0_dT * sqrt( pParam->HSMHV_novers / here->HSMHV_nsub ) ;
|
||||
#endif
|
||||
}
|
||||
if ( pParam->HSMHV_novers != 0.0 ) {
|
||||
here->HSMHV_cnst0overs = here->HSMHV_cnst0 * sqrt( pParam->HSMHV_novers / here->HSMHV_ndepm ) ;
|
||||
/* ps0ldinib : Ps0_iniB for Ps0LD */
|
||||
T1 = here->HSMHV_cnst0overs * model->HSMHV_tox / here->HSMHV_cecox ;
|
||||
T2 = pParam->HSMHV_novers / Nin ;
|
||||
here->HSMHV_ps0ldinibs = T2 * T2 / ( T1 * T1 );
|
||||
#ifdef HSMHVEVAL
|
||||
cnst0overs_dT = cnst0_dT * sqrt( pParam->HSMHV_novers / here->HSMHV_ndepm ) ;
|
||||
T1_dT = cnst0overs_dT * model->HSMHV_tox / here->HSMHV_cecox ;
|
||||
T2_dT = - Nin_dT * T2 / Nin;
|
||||
ps0ldinibs_dT = 2.0 * here->HSMHV_ps0ldinibs * ( T2_dT * T1 - T2 * T1_dT ) / ( T1 * T2 );
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* temperature-dependent resistance model */
|
||||
T3 = model->HSMHV_ktnom ;
|
||||
T1 = TTEMP0 - T3 ;
|
||||
T4 = TTEMP0 * TTEMP0 - T3 * T3 ;
|
||||
/* drain side */
|
||||
if ( pParam->HSMHV_rd > 0.0 ) {
|
||||
T2 = here->HSMHV_rdtemp0
|
||||
|
|
@ -267,7 +200,7 @@ Tdiff_2 = TTEMP * TTEMP - model->HSMHV_ktnom * model->HSMHV_ktnom ;
|
|||
* ( here->HSMHV_ldrift2 * model->HSMHV_rdslp2 * C_m2um + model->HSMHV_rdict2 ) ;
|
||||
|
||||
if ( model->HSMHV_cotemp == 1 ) { /* without deltemp (COTEMP=1) */
|
||||
here->HSMHV_rd = ( pParam->HSMHV_rd + modelMKS->HSMHV_rdtemp1 * Tdiff0 + modelMKS->HSMHV_rdtemp2 * Tdiff0_2 ) * T2 ;
|
||||
here->HSMHV_rd = ( pParam->HSMHV_rd + T1 * modelMKS->HSMHV_rdtemp1 + modelMKS->HSMHV_rdtemp2 * T4 ) * T2 ;
|
||||
Fn_SL( here->HSMHV_rd, here->HSMHV_rd, C_rdtemp_min * pParam->HSMHV_rd, C_rdtemp_dlt * pParam->HSMHV_rd, T0 );
|
||||
#ifdef HSMHVEVAL
|
||||
Rd0_dT = 0.0 ;
|
||||
|
|
@ -290,7 +223,7 @@ Tdiff_2 = TTEMP * TTEMP - model->HSMHV_ktnom * model->HSMHV_ktnom ;
|
|||
* ( here->HSMHV_ldrift2s * model->HSMHV_rdslp2 * C_m2um + model->HSMHV_rdict2 ) ;
|
||||
|
||||
if ( model->HSMHV_cotemp == 1 ) { /* without deltemp (COTEMP=1) */
|
||||
here->HSMHV_rs = ( pParam->HSMHV_rs + modelMKS->HSMHV_rdtemp1 * Tdiff0 + modelMKS->HSMHV_rdtemp2 * Tdiff0_2 ) * T2 ;
|
||||
here->HSMHV_rs = ( pParam->HSMHV_rs + T1 * modelMKS->HSMHV_rdtemp1 + modelMKS->HSMHV_rdtemp2 * T4 ) * T2 ;
|
||||
Fn_SL( here->HSMHV_rs, here->HSMHV_rs, C_rdtemp_min * pParam->HSMHV_rs, C_rdtemp_dlt * pParam->HSMHV_rs, T0 );
|
||||
#ifdef HSMHVEVAL
|
||||
Rs0_dT = 0.0 ;
|
||||
|
|
@ -317,8 +250,10 @@ Tdiff_2 = TTEMP * TTEMP - model->HSMHV_ktnom * model->HSMHV_ktnom ;
|
|||
Fn_SU( T7 , T5 , T4 * ( model->HSMHV_rdov11 + 1.0) , 50.0e-6 , T6 ) ;
|
||||
Fn_SL( T2 , T7 + T1 * T4 , 0, 50.0e-6 , T6 ) ;
|
||||
|
||||
T3 = model->HSMHV_ktnom ;
|
||||
T1 = TTEMP0 - T3 ;
|
||||
if ( model->HSMHV_cotemp == 0 || model->HSMHV_cotemp == 1 ) { /* without deltemp (COTEMP=0,1) */
|
||||
here->HSMHV_rdvd = ( pParam->HSMHV_rdvd + modelMKS->HSMHV_rdvdtemp1 * Tdiff0 + modelMKS->HSMHV_rdvdtemp2 * Tdiff0_2 ) * T2 ;
|
||||
here->HSMHV_rdvd = ( pParam->HSMHV_rdvd + T1 * modelMKS->HSMHV_rdvdtemp1 + modelMKS->HSMHV_rdvdtemp2 * ( TTEMP0 * TTEMP0 - T3 * T3 ) ) * T2 ;
|
||||
Fn_SL( here->HSMHV_rdvd, here->HSMHV_rdvd, C_rdtemp_min * pParam->HSMHV_rdvd, C_rdtemp_dlt * pParam->HSMHV_rdvd, T0 );
|
||||
#ifdef HSMHVEVAL
|
||||
Rdvd_dT = 0.0 ;
|
||||
|
|
@ -341,8 +276,10 @@ Tdiff_2 = TTEMP * TTEMP - model->HSMHV_ktnom * model->HSMHV_ktnom ;
|
|||
Fn_SU( T7 , T5 , T4 * ( model->HSMHV_rdov11 + 1.0) , 50.0e-6 , T6 ) ;
|
||||
Fn_SL( T2 , T7 + T1 * T4 , 0, 50.0e-6 , T6 ) ;
|
||||
|
||||
T3 = model->HSMHV_ktnom ;
|
||||
T1 = TTEMP0 - T3 ;
|
||||
if ( model->HSMHV_cotemp == 0 || model->HSMHV_cotemp == 1 ) { /* without deltemp (COTEMP=0,1) */
|
||||
here->HSMHV_rsvd = ( pParam->HSMHV_rdvd + modelMKS->HSMHV_rdvdtemp1 * Tdiff0 + modelMKS->HSMHV_rdvdtemp2 * Tdiff0_2 ) * T2 ;
|
||||
here->HSMHV_rsvd = ( pParam->HSMHV_rdvd + T1 * modelMKS->HSMHV_rdvdtemp1 + modelMKS->HSMHV_rdvdtemp2 * ( TTEMP0 * TTEMP0 - T3 * T3 ) ) * T2 ;
|
||||
Fn_SL( here->HSMHV_rsvd, here->HSMHV_rsvd, C_rdtemp_min * pParam->HSMHV_rdvd, C_rdtemp_dlt * pParam->HSMHV_rdvd, T0 );
|
||||
#ifdef HSMHVEVAL
|
||||
Rsvd_dT = 0.0 ;
|
||||
|
|
@ -359,8 +296,83 @@ Tdiff_2 = TTEMP * TTEMP - model->HSMHV_ktnom * model->HSMHV_ktnom ;
|
|||
here->HSMHV_rsvd = 0.0 ;
|
||||
}
|
||||
|
||||
/* for substrate-source/drain junction diode. */
|
||||
js = pParam->HSMHV_js0
|
||||
* exp ((here->HSMHV_egtnom * here->HSMHV_betatnom - Eg * beta
|
||||
+ model->HSMHV_xti * log (TTEMP / model->HSMHV_ktnom)) / pParam->HSMHV_nj) ;
|
||||
jssw = pParam->HSMHV_js0sw
|
||||
* exp ((here->HSMHV_egtnom * here->HSMHV_betatnom - Eg * beta
|
||||
+ model->HSMHV_xti * log (TTEMP / model->HSMHV_ktnom)) / model->HSMHV_njsw) ;
|
||||
|
||||
js2 = pParam->HSMHV_js0
|
||||
* exp ((here->HSMHV_egtnom * here->HSMHV_betatnom - Eg * beta
|
||||
+ model->HSMHV_xti2 * log (TTEMP / model->HSMHV_ktnom)) / pParam->HSMHV_nj) ;
|
||||
jssw2 = pParam->HSMHV_js0sw
|
||||
* exp ((here->HSMHV_egtnom * here->HSMHV_betatnom - Eg * beta
|
||||
+ model->HSMHV_xti2 * log (TTEMP / model->HSMHV_ktnom)) / model->HSMHV_njsw) ;
|
||||
|
||||
#ifdef HSMHVEVAL
|
||||
T0 = - Eg * beta_dT - Eg_dT * beta ; /* Self heating */
|
||||
T1 = T0 + model->HSMHV_xti / TTEMP ; /* Self heating */
|
||||
T2 = T0 + model->HSMHV_xti2 / TTEMP ; /* Self heating */
|
||||
|
||||
js_dT = js * T1 / pParam->HSMHV_nj; /* Self heating */
|
||||
jssw_dT = jssw * T1/ model->HSMHV_njsw ; /* Self heating */
|
||||
js2_dT = js2 * T2 / pParam->HSMHV_nj; /* Self heating */
|
||||
jssw2_dT = jssw2 * T2 / model->HSMHV_njsw; /* Self heating */
|
||||
#endif
|
||||
|
||||
here->HSMHV_isbd = here->HSMHV_ad * js + here->HSMHV_pd * jssw ;
|
||||
here->HSMHV_isbd2 = here->HSMHV_ad * js2 + here->HSMHV_pd * jssw2 ;
|
||||
here->HSMHV_isbs = here->HSMHV_as * js + here->HSMHV_ps * jssw ;
|
||||
here->HSMHV_isbs2 = here->HSMHV_as * js2 + here->HSMHV_ps * jssw2 ;
|
||||
|
||||
#ifdef HSMHVEVAL
|
||||
isbd_dT = here->HSMHV_ad * js_dT + here->HSMHV_pd * jssw_dT ; /* Self heating */
|
||||
isbd2_dT = here->HSMHV_ad * js2_dT + here->HSMHV_pd * jssw2_dT ; /* Self heating */
|
||||
isbs_dT = here->HSMHV_as * js_dT + here->HSMHV_ps * jssw_dT ; /* Self heating */
|
||||
isbs2_dT = here->HSMHV_as * js2_dT + here->HSMHV_ps * jssw2_dT ; /* Self heating */
|
||||
#endif
|
||||
|
||||
T1 = TTEMP / model->HSMHV_ktnom ;
|
||||
T0 = T1 * T1 ;
|
||||
T2 = here->HSMHV_isbd + small ;
|
||||
T3 = here->HSMHV_isbs + small ;
|
||||
#ifdef HSMHVEVAL
|
||||
T1_dT = 1.0 / model->HSMHV_ktnom ; /* Self heating */
|
||||
T0_dT = 2.0 * T1 * T1_dT ; /* Self heating */
|
||||
T2_dT = isbd_dT ; /* Self heating */
|
||||
T3_dT = isbs_dT ; /* Self heating */
|
||||
#endif
|
||||
|
||||
here->HSMHV_vbdt = pParam->HSMHV_nj / beta
|
||||
* log ( pParam->HSMHV_vdiffj * T0 / T2 + 1.0 ) ;
|
||||
here->HSMHV_vbst = pParam->HSMHV_nj / beta
|
||||
* log ( pParam->HSMHV_vdiffj * T0 / T3 + 1.0 ) ;
|
||||
|
||||
here->HSMHV_exptemp = exp (( T1 - 1.0 ) * model->HSMHV_ctemp ) ;
|
||||
|
||||
#ifdef HSMHVEVAL
|
||||
vbdt_dT = - beta_dT / beta * here->HSMHV_vbdt
|
||||
+ pParam->HSMHV_nj / beta * pParam->HSMHV_vdiffj / ( pParam->HSMHV_vdiffj * T0 / T2 + 1.0 )
|
||||
* ( T0_dT / T2 - T0 / T2 / T2 * T2_dT ) ; /* Self heating */
|
||||
vbst_dT = - beta_dT / beta * here->HSMHV_vbst
|
||||
+ pParam->HSMHV_nj / beta * pParam->HSMHV_vdiffj / ( pParam->HSMHV_vdiffj * T0 / T3 + 1.0 )
|
||||
* ( T0_dT / T3 - T0 / T3 / T3 * T3_dT ) ; /* Self heating */
|
||||
#endif
|
||||
|
||||
here->HSMHV_jd_nvtm_inv = 1.0 / ( pParam->HSMHV_nj / beta ) ;
|
||||
here->HSMHV_jd_expcd = exp (here->HSMHV_vbdt * here->HSMHV_jd_nvtm_inv ) ;
|
||||
here->HSMHV_jd_expcs = exp (here->HSMHV_vbst * here->HSMHV_jd_nvtm_inv ) ;
|
||||
|
||||
#ifdef HSMHVEVAL
|
||||
exptemp_dT = model->HSMHV_ctemp / model->HSMHV_ktnom * here->HSMHV_exptemp ; /* Self heating */
|
||||
jd_nvtm_inv_dT = beta_dT / pParam->HSMHV_nj ; /* Self heating */
|
||||
jd_expcd_dT = here->HSMHV_jd_expcd
|
||||
* ( vbdt_dT * here->HSMHV_jd_nvtm_inv + here->HSMHV_vbdt * jd_nvtm_inv_dT ) ; /* Self heating */
|
||||
jd_expcs_dT = here->HSMHV_jd_expcs
|
||||
* ( vbst_dT * here->HSMHV_jd_nvtm_inv + here->HSMHV_vbst * jd_nvtm_inv_dT ) ; /* Self heating */
|
||||
#endif
|
||||
|
||||
/* costi0 and costi1 for STI transistor model (temperature-dependent part) */
|
||||
here->HSMHV_costi0 = here->HSMHV_costi00 * sqrt(here->HSMHV_beta_inv) ;
|
||||
|
|
|
|||
|
|
@ -1,223 +0,0 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
FILE : hsmhvtemp_eval_dio.h
|
||||
|
||||
DATE : 2014.6.11
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#define small 1.0e-50
|
||||
|
||||
TTEMP = ckt->CKTtemp;
|
||||
if ( here->HSMHV_dtemp_Given ) { TTEMP = TTEMP + here->HSMHV_dtemp ; }
|
||||
TTEMP0 = TTEMP ;
|
||||
#ifdef HSMHVEVAL
|
||||
/* Self heating */
|
||||
TTEMP = TTEMP + deltemp ;
|
||||
#endif
|
||||
|
||||
|
||||
/* Band gap */
|
||||
T1 = TTEMP - model->HSMHV_ktnom ;
|
||||
T2 = TTEMP * TTEMP - model->HSMHV_ktnom * model->HSMHV_ktnom ;
|
||||
Eg = here->HSMHV_egtnom - pParam->HSMHV_bgtmp1 * T1
|
||||
- pParam->HSMHV_bgtmp2 * T2 ;
|
||||
#ifdef HSMHVEVAL
|
||||
Eg_dT = -pParam->HSMHV_bgtmp1 - 2.0e0 * TTEMP * pParam->HSMHV_bgtmp2 ;
|
||||
#endif
|
||||
|
||||
|
||||
/* Inverse of the thermal voltage */
|
||||
here->HSMHV_beta = beta = C_QE / (C_KB * TTEMP) ;
|
||||
here->HSMHV_beta_inv = 1.0 / beta ;
|
||||
here->HSMHV_beta2 = beta * beta ;
|
||||
here->HSMHV_betatnom = C_QE / (C_KB * model->HSMHV_ktnom) ;
|
||||
#ifdef HSMHVEVAL
|
||||
beta_dT=-C_QE/(C_KB*TTEMP*TTEMP);
|
||||
beta_inv_dT = C_KB / C_QE ;
|
||||
#endif
|
||||
|
||||
|
||||
log_Tratio = log (here->HSMHV_Tratio) ;
|
||||
/* for substrate-drain junction diode. */
|
||||
js = pParam->HSMHV_js0d
|
||||
* exp ((here->HSMHV_egtnom * here->HSMHV_betatnom - Eg * beta
|
||||
+ model->HSMHV_xtid * log_Tratio) / pParam->HSMHV_njd) ;
|
||||
jssw = pParam->HSMHV_js0swd
|
||||
* exp ((here->HSMHV_egtnom * here->HSMHV_betatnom - Eg * beta
|
||||
+ model->HSMHV_xtid * log_Tratio) / model->HSMHV_njswd) ;
|
||||
|
||||
js2 = pParam->HSMHV_js0d
|
||||
* exp ((here->HSMHV_egtnom * here->HSMHV_betatnom - Eg * beta
|
||||
+ model->HSMHV_xti2d * log_Tratio) / pParam->HSMHV_njd) ;
|
||||
jssw2 = pParam->HSMHV_js0swd
|
||||
* exp ((here->HSMHV_egtnom * here->HSMHV_betatnom - Eg * beta
|
||||
+ model->HSMHV_xti2d * log_Tratio) / model->HSMHV_njswd) ;
|
||||
|
||||
#ifdef HSMHVEVAL
|
||||
T0 = - Eg * beta_dT - Eg_dT * beta ; /* Self heating */
|
||||
T1 = T0 + model->HSMHV_xtid / TTEMP ; /* Self heating */
|
||||
T2 = T0 + model->HSMHV_xti2d / TTEMP ; /* Self heating */
|
||||
|
||||
js_dT = js * T1 / pParam->HSMHV_njd; /* Self heating */
|
||||
jssw_dT = jssw * T1/ model->HSMHV_njswd ; /* Self heating */
|
||||
js2_dT = js2 * T2 / pParam->HSMHV_njd; /* Self heating */
|
||||
jssw2_dT = jssw2 * T2 / model->HSMHV_njswd; /* Self heating */
|
||||
#endif
|
||||
|
||||
here->HSMHV_isbd = here->HSMHV_ad * js + here->HSMHV_pd * jssw ;
|
||||
here->HSMHV_isbd2 = here->HSMHV_ad * js2 + here->HSMHV_pd * jssw2 ;
|
||||
|
||||
#ifdef HSMHVEVAL
|
||||
isbd_dT = here->HSMHV_ad * js_dT + here->HSMHV_pd * jssw_dT ; /* Self heating */
|
||||
isbd2_dT = here->HSMHV_ad * js2_dT + here->HSMHV_pd * jssw2_dT ; /* Self heating */
|
||||
#endif
|
||||
|
||||
|
||||
T0 = here->HSMHV_Tratio * here->HSMHV_Tratio ;
|
||||
T2 = here->HSMHV_isbd + small ;
|
||||
#ifdef HSMHVEVAL
|
||||
T1_dT = 1.0 / model->HSMHV_ktnom ; /* Self heating */
|
||||
T0_dT = 2.0 * here->HSMHV_Tratio * T1_dT ; /* Self heating */
|
||||
T2_dT = isbd_dT ; /* Self heating */
|
||||
#endif
|
||||
|
||||
here->HSMHV_vbdt = pParam->HSMHV_njd / beta
|
||||
* log ( pParam->HSMHV_vdiffjd * T0 / T2 + 1.0 ) ;
|
||||
|
||||
here->HSMHV_exptempd = exp (( here->HSMHV_Tratio - 1.0 ) * model->HSMHV_ctempd ) ;
|
||||
|
||||
#ifdef HSMHVEVAL
|
||||
vbdt_dT = - beta_dT / beta * here->HSMHV_vbdt
|
||||
+ pParam->HSMHV_njd / beta * pParam->HSMHV_vdiffjd / ( pParam->HSMHV_vdiffjd * T0 / T2 + 1.0 )
|
||||
* ( T0_dT / T2 - T0 / T2 / T2 * T2_dT ) ; /* Self heating */
|
||||
#endif
|
||||
|
||||
here->HSMHV_jd_nvtm_invd = 1.0 / ( pParam->HSMHV_njd / beta ) ;
|
||||
here->HSMHV_jd_expcd = exp (here->HSMHV_vbdt * here->HSMHV_jd_nvtm_invd ) ;
|
||||
|
||||
#ifdef HSMHVEVAL
|
||||
exptempd_dT = model->HSMHV_ctempd / model->HSMHV_ktnom * here->HSMHV_exptempd ; /* Self heating */
|
||||
jd_nvtm_invd_dT = beta_dT / pParam->HSMHV_njd ; /* Self heating */
|
||||
jd_expcd_dT = here->HSMHV_jd_expcd
|
||||
* ( vbdt_dT * here->HSMHV_jd_nvtm_invd + here->HSMHV_vbdt * jd_nvtm_invd_dT ) ; /* Self heating */
|
||||
#endif
|
||||
|
||||
|
||||
/* for substrate-source junction diode. */
|
||||
js = pParam->HSMHV_js0s
|
||||
* exp ((here->HSMHV_egtnom * here->HSMHV_betatnom - Eg * beta
|
||||
+ model->HSMHV_xtis * log_Tratio) / pParam->HSMHV_njs) ;
|
||||
jssw = pParam->HSMHV_js0sws
|
||||
* exp ((here->HSMHV_egtnom * here->HSMHV_betatnom - Eg * beta
|
||||
+ model->HSMHV_xtis * log_Tratio) / model->HSMHV_njsws) ;
|
||||
|
||||
js2 = pParam->HSMHV_js0s
|
||||
* exp ((here->HSMHV_egtnom * here->HSMHV_betatnom - Eg * beta
|
||||
+ model->HSMHV_xti2s * log_Tratio) / pParam->HSMHV_njs) ;
|
||||
jssw2 = pParam->HSMHV_js0sws
|
||||
* exp ((here->HSMHV_egtnom * here->HSMHV_betatnom - Eg * beta
|
||||
+ model->HSMHV_xti2s * log_Tratio) / model->HSMHV_njsws) ;
|
||||
|
||||
#ifdef HSMHVEVAL
|
||||
T0 = - Eg * beta_dT - Eg_dT * beta ; /* Self heating */
|
||||
T1 = T0 + model->HSMHV_xtis / TTEMP ; /* Self heating */
|
||||
T2 = T0 + model->HSMHV_xti2s / TTEMP ; /* Self heating */
|
||||
|
||||
js_dT = js * T1 / pParam->HSMHV_njs; /* Self heating */
|
||||
jssw_dT = jssw * T1/ model->HSMHV_njsws ; /* Self heating */
|
||||
js2_dT = js2 * T2 / pParam->HSMHV_njs; /* Self heating */
|
||||
jssw2_dT = jssw2 * T2 / model->HSMHV_njsws; /* Self heating */
|
||||
#endif
|
||||
|
||||
here->HSMHV_isbs = here->HSMHV_as * js + here->HSMHV_ps * jssw ;
|
||||
here->HSMHV_isbs2 = here->HSMHV_as * js2 + here->HSMHV_ps * jssw2 ;
|
||||
|
||||
#ifdef HSMHVEVAL
|
||||
isbs_dT = here->HSMHV_as * js_dT + here->HSMHV_ps * jssw_dT ; /* Self heating */
|
||||
isbs2_dT = here->HSMHV_as * js2_dT + here->HSMHV_ps * jssw2_dT ; /* Self heating */
|
||||
#endif
|
||||
|
||||
|
||||
T0 = here->HSMHV_Tratio * here->HSMHV_Tratio ;
|
||||
T3 = here->HSMHV_isbs + small ;
|
||||
#ifdef HSMHVEVAL
|
||||
T1_dT = 1.0 / model->HSMHV_ktnom ; /* Self heating */
|
||||
T0_dT = 2.0 * here->HSMHV_Tratio * T1_dT ; /* Self heating */
|
||||
T3_dT = isbs_dT ; /* Self heating */
|
||||
#endif
|
||||
|
||||
here->HSMHV_vbst = pParam->HSMHV_njs / beta
|
||||
* log ( pParam->HSMHV_vdiffjs * T0 / T3 + 1.0 ) ;
|
||||
|
||||
here->HSMHV_exptemps = exp (( here->HSMHV_Tratio - 1.0 ) * model->HSMHV_ctemps ) ;
|
||||
|
||||
#ifdef HSMHVEVAL
|
||||
vbst_dT = - beta_dT / beta * here->HSMHV_vbst
|
||||
+ pParam->HSMHV_njs / beta * pParam->HSMHV_vdiffjs / ( pParam->HSMHV_vdiffjs * T0 / T3 + 1.0 )
|
||||
* ( T0_dT / T3 - T0 / T3 / T3 * T3_dT ) ; /* Self heating */
|
||||
#endif
|
||||
|
||||
here->HSMHV_jd_nvtm_invs = 1.0 / ( pParam->HSMHV_njs / beta ) ;
|
||||
here->HSMHV_jd_expcs = exp (here->HSMHV_vbst * here->HSMHV_jd_nvtm_invs ) ;
|
||||
|
||||
#ifdef HSMHVEVAL
|
||||
exptemps_dT = model->HSMHV_ctemps / model->HSMHV_ktnom * here->HSMHV_exptemps ; /* Self heating */
|
||||
jd_nvtm_invs_dT = beta_dT / pParam->HSMHV_njs ; /* Self heating */
|
||||
jd_expcs_dT = here->HSMHV_jd_expcs
|
||||
* ( vbst_dT * here->HSMHV_jd_nvtm_invs + here->HSMHV_vbst * jd_nvtm_invs_dT ) ; /* Self heating */
|
||||
#endif
|
||||
|
||||
|
||||
/* end of HSMHVtemp_eval_dio.h */
|
||||
|
|
@ -1,103 +0,0 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
FILE : hsmhvtemp_eval_rdri.h
|
||||
|
||||
DATE : 2014.6.11
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
TTEMP = ckt->CKTtemp;
|
||||
if ( here->HSMHV_dtemp_Given ) { TTEMP = TTEMP + here->HSMHV_dtemp ; }
|
||||
TTEMP0 = TTEMP ;
|
||||
#ifdef HSMHVEVAL
|
||||
/* Self heating */
|
||||
TTEMP = TTEMP + deltemp ;
|
||||
#endif
|
||||
|
||||
|
||||
/* Phonon Scattering (temperature-dependent part) */
|
||||
T1 = Fn_Pow ( here->HSMHV_Tratio, model->HSMHV_rdrmuetmp ) ;
|
||||
here->HSMHV_rdrmue = modelMKS->HSMHV_rdrmue / T1 ;
|
||||
#ifdef HSMHVEVAL
|
||||
T1_dT = model->HSMHV_rdrmuetmp * Fn_Pow( here->HSMHV_Tratio, model->HSMHV_rdrmuetmp - 1.0 )
|
||||
/ model->HSMHV_ktnom ;
|
||||
Mu0_dT = - modelMKS->HSMHV_rdrmue / ( T1 * T1 ) * T1_dT ;
|
||||
#endif
|
||||
|
||||
|
||||
/* Velocity Temperature Dependence */
|
||||
T0 = 1.8 + 0.4 * here->HSMHV_Tratio + 0.1 * here->HSMHV_Tratio * here->HSMHV_Tratio - model->HSMHV_rdrvtmp * ( 1.0 - here->HSMHV_Tratio ) ;
|
||||
#ifdef HSMHVEVAL
|
||||
T0_dT = 1 / model->HSMHV_ktnom * ( 0.4 + 0.2 * here->HSMHV_Tratio + model->HSMHV_rdrvtmp ) ;
|
||||
#endif
|
||||
here->HSMHV_rdrvmax = modelMKS->HSMHV_rdrvmax / T0 ;
|
||||
#ifdef HSMHVEVAL
|
||||
Vmax_dT = - modelMKS->HSMHV_rdrvmax / ( T0 * T0 ) * T0_dT ;
|
||||
#endif
|
||||
|
||||
|
||||
here->HSMHV_rdrcx = model->HSMHV_rdrcx ;
|
||||
here->HSMHV_rdrcar = model->HSMHV_rdrcar ;
|
||||
#ifdef HSMHVEVAL
|
||||
Cx_dT = 0.0 ;
|
||||
Car_dT = 0.0 ;
|
||||
#endif
|
||||
|
||||
//Toshiba model //
|
||||
here->HSMHV_rdrbb = model->HSMHV_rdrbb+model->HSMHV_rdrbbtmp*(TTEMP-model->HSMHV_ktnom) ;
|
||||
#ifdef HSMHVEVAL
|
||||
Rdrbb_dT = model->HSMHV_rdrbbtmp ;
|
||||
#endif
|
||||
|
||||
/* end of HSMHVtemp_eval_rdri.h */
|
||||
|
|
@ -1,62 +1,20 @@
|
|||
/***********************************************************************
|
||||
|
||||
HiSIM (Hiroshima University STARC IGFET Model)
|
||||
Copyright (C) 2014 Hiroshima University & STARC
|
||||
Copyright (C) 2012 Hiroshima University & STARC
|
||||
|
||||
MODEL NAME : HiSIM_HV
|
||||
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
|
||||
Model Parameter 'VERSION' : 2.20
|
||||
( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
|
||||
Model Parameter VERSION : 1.23
|
||||
FILE : hsmhvtrunc.c
|
||||
|
||||
DATE : 2014.6.11
|
||||
DATE : 2013.04.30
|
||||
|
||||
released by
|
||||
Hiroshima University &
|
||||
Semiconductor Technology Academic Research Center (STARC)
|
||||
***********************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
The following source code, and all copyrights, trade secrets or other
|
||||
intellectual property rights in and to the source code in its entirety,
|
||||
is owned by the Hiroshima University and the STARC organization.
|
||||
|
||||
All users need to follow the "HISIM_HV Distribution Statement and
|
||||
Copyright Notice" attached to HiSIM_HV model.
|
||||
|
||||
-----HISIM_HV Distribution Statement and Copyright Notice--------------
|
||||
|
||||
Software is distributed as is, completely without warranty or service
|
||||
support. Hiroshima University or STARC and its employees are not liable
|
||||
for the condition or performance of the software.
|
||||
|
||||
Hiroshima University and STARC own the copyright and grant users a perpetual,
|
||||
irrevocable, worldwide, non-exclusive, royalty-free license with respect
|
||||
to the software as set forth below.
|
||||
|
||||
Hiroshima University and STARC hereby disclaims all implied warranties.
|
||||
|
||||
Hiroshima University and STARC grant the users the right to modify, copy,
|
||||
and redistribute the software and documentation, both within the user's
|
||||
organization and externally, subject to the following restrictions
|
||||
|
||||
1. The users agree not to charge for Hiroshima University and STARC code
|
||||
itself but may charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the software, the users agree to acknowledge
|
||||
Hiroshima University and STARC that developed the software. This
|
||||
acknowledgment shall appear in the product documentation.
|
||||
|
||||
3. The users agree to reproduce any copyright notice which appears on
|
||||
the software on any copy or modification of such made available
|
||||
to others."
|
||||
|
||||
Toshimasa Asahara, President, Hiroshima University
|
||||
Mitiko Miura-Mattausch, Professor, Hiroshima University
|
||||
Katsuhiro Shimohigashi, President&CEO, STARC
|
||||
June 2008 (revised October 2011)
|
||||
*************************************************************************/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "hsmhvdef.h"
|
||||
|
|
@ -67,9 +25,10 @@ int HSMHVtrunc(
|
|||
GENmodel *inModel,
|
||||
register CKTcircuit *ckt,
|
||||
double *timeStep)
|
||||
|
||||
{
|
||||
HSMHVmodel *model = (HSMHVmodel*)inModel;
|
||||
HSMHVinstance *here;
|
||||
register HSMHVmodel *model = (HSMHVmodel*)inModel;
|
||||
register HSMHVinstance *here;
|
||||
#ifdef STEPDEBUG
|
||||
double debugtemp=0.0 ;
|
||||
#endif /* STEPDEBUG */
|
||||
|
|
|
|||
|
|
@ -944,9 +944,6 @@
|
|||
<ClInclude Include="..\src\frontend\completion.h" />
|
||||
<ClInclude Include="..\src\include\ngspice\complex.h" />
|
||||
<ClInclude Include="..\src\conf.h" />
|
||||
<ClInclude Include="..\src\spicelib\devices\hisimhv1\hsmhveval_dep.h" />
|
||||
<ClInclude Include="..\src\spicelib\devices\hisimhv1\hsmhvtemp_eval_dio.h" />
|
||||
<ClInclude Include="..\src\spicelib\devices\hisimhv1\hsmhvtemp_eval_rdri.h" />
|
||||
<ClInclude Include="include\ngspice\config.h" />
|
||||
<ClInclude Include="..\src\include\ngspice\const.h" />
|
||||
<ClInclude Include="..\src\include\ngspice\contdefs.h" />
|
||||
|
|
@ -1759,8 +1756,6 @@
|
|||
<ClCompile Include="..\src\spicelib\analysis\ckttyplk.c" />
|
||||
<ClCompile Include="..\src\frontend\plotting\clip.c" />
|
||||
<ClCompile Include="..\src\spicelib\analysis\cluster.c" />
|
||||
<ClCompile Include="..\src\spicelib\devices\hisimhv1\hsmhveval_dio.c" />
|
||||
<ClCompile Include="..\src\spicelib\devices\hisimhv1\hsmhveval_rdrift.c" />
|
||||
<ClCompile Include="..\src\xspice\cm\cm.c" />
|
||||
<ClCompile Include="..\src\maths\cmaths\cmath1.c" />
|
||||
<ClCompile Include="..\src\maths\cmaths\cmath2.c" />
|
||||
|
|
|
|||
Loading…
Reference in New Issue