Finished UI for RELMODEL model
This commit is contained in:
parent
0d53ed60d6
commit
fbed2dfe1d
|
|
@ -11,6 +11,8 @@ IFparm RELMODELpTable [] = { /* parameters */
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
IFparm RELMODELmPTable [] = { /* model parameters */
|
IFparm RELMODELmPTable [] = { /* model parameters */
|
||||||
|
IOP ("type", RELMODEL_MOD_TYPE, IF_INTEGER, "Aging Model Type"),
|
||||||
|
|
||||||
IOP ("k_b", RELMODEL_MOD_KB, IF_REAL, "Boltzmann Constant"),
|
IOP ("k_b", RELMODEL_MOD_KB, IF_REAL, "Boltzmann Constant"),
|
||||||
IOP ("h_cut", RELMODEL_MOD_HCUT, IF_REAL, "h_cut"),
|
IOP ("h_cut", RELMODEL_MOD_HCUT, IF_REAL, "h_cut"),
|
||||||
IOP ("nts", RELMODEL_MOD_NTS, IF_REAL, "Nts"),
|
IOP ("nts", RELMODEL_MOD_NTS, IF_REAL, "Nts"),
|
||||||
|
|
@ -23,20 +25,19 @@ IOP ("beta", RELMODEL_MOD_BETA, IF_REAL, "beta"),
|
||||||
IOP ("tau_e", RELMODEL_MOD_TAUE, IF_REAL, "tau_e"),
|
IOP ("tau_e", RELMODEL_MOD_TAUE, IF_REAL, "tau_e"),
|
||||||
IOP ("beta1", RELMODEL_MOD_BETA1, IF_REAL, "beta1"),
|
IOP ("beta1", RELMODEL_MOD_BETA1, IF_REAL, "beta1"),
|
||||||
|
|
||||||
IOP ("type", RELMODEL_MOD_TYPE, IF_INTEGER, "beta1"),
|
IOP ("alpha_new", RELMODEL_MOD_ALPHA_NEW, IF_REAL, "alpha"),
|
||||||
|
IOP ("b_new", RELMODEL_MOD_B_NEW, IF_REAL, "b"),
|
||||||
|
IOP ("beta_new", RELMODEL_MOD_BETA_NEW, IF_REAL, "beta"),
|
||||||
|
IOP ("e0_new", RELMODEL_MOD_E0_NEW, IF_REAL, "e0"),
|
||||||
|
IOP ("k_new", RELMODEL_MOD_K_NEW, IF_REAL, "k"),
|
||||||
|
IOP ("kb_new", RELMODEL_MOD_KB_NEW, IF_REAL, "Boltzmann Constant"),
|
||||||
|
IOP ("tau_c_fast_new", RELMODEL_MOD_TAU_C_FAST_NEW, IF_REAL, "tau_c_fast"),
|
||||||
|
IOP ("tau_c_slow_new", RELMODEL_MOD_TAU_C_SLOW_NEW, IF_REAL, "tau_c_slow"),
|
||||||
|
IOP ("tau_e_fast_new", RELMODEL_MOD_TAU_E_FAST_NEW, IF_REAL, "tau_e_fast"),
|
||||||
|
IOP ("tau_e_slow_new", RELMODEL_MOD_TAU_E_SLOW_NEW, IF_REAL, "tau_e_slow"),
|
||||||
|
IOP ("t_r_new", RELMODEL_MOD_T_R_NEW, IF_REAL, "t_r"),
|
||||||
|
IOP ("t_s_new", RELMODEL_MOD_T_S_NEW, IF_REAL, "t_s"),
|
||||||
|
|
||||||
IOP ("alpha_new", RELMODEL_MOD_ALPHA_NEW, IF_REAL, "beta1"),
|
|
||||||
IOP ("b_new", RELMODEL_MOD_B_NEW, IF_REAL, "beta1"),
|
|
||||||
IOP ("beta_new", RELMODEL_MOD_BETA_NEW, IF_REAL, "beta1"),
|
|
||||||
IOP ("e0_new", RELMODEL_MOD_E0_NEW, IF_REAL, "beta1"),
|
|
||||||
IOP ("k_new", RELMODEL_MOD_K_NEW, IF_REAL, "beta1"),
|
|
||||||
IOP ("kb_new", RELMODEL_MOD_K_NEW, IF_REAL, "beta1"),
|
|
||||||
IOP ("tau_c_fast_new", RELMODEL_MOD_TAU_C_FAST_NEW, IF_REAL, "beta1"),
|
|
||||||
IOP ("tau_c_slow_new", RELMODEL_MOD_TAU_C_SLOW_NEW, IF_REAL, "beta1"),
|
|
||||||
IOP ("tau_e_fast_new", RELMODEL_MOD_TAU_E_FAST_NEW, IF_REAL, "beta1"),
|
|
||||||
IOP ("tau_e_slow_new", RELMODEL_MOD_TAU_E_SLOW_NEW, IF_REAL, "beta1"),
|
|
||||||
IOP ("t_r_new", RELMODEL_MOD_T_R_NEW, IF_REAL, "beta1"),
|
|
||||||
IOP ("t_s_new", RELMODEL_MOD_T_S_NEW, IF_REAL, "beta1"),
|
|
||||||
IP ("relmodel", RELMODEL_MOD_RELMODEL, IF_FLAG, "Flag to indicate RELMODEL")
|
IP ("relmodel", RELMODEL_MOD_RELMODEL, IF_FLAG, "Flag to indicate RELMODEL")
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,17 @@ RELMODELmAsk (CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value)
|
||||||
|
|
||||||
switch (which)
|
switch (which)
|
||||||
{
|
{
|
||||||
|
// RELMODEL type
|
||||||
|
case RELMODEL_MOD_TYPE:
|
||||||
|
value->iValue = model->RELMODELtype ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
// RELMODEL flag
|
||||||
|
case RELMODEL_MOD_RELMODEL:
|
||||||
|
value->iValue = model->RELMODELrelmodel ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
// 1: Giorgio Liatis (Sapienza University - DIET - Ultra Thin Oxide)
|
||||||
case RELMODEL_MOD_KB:
|
case RELMODEL_MOD_KB:
|
||||||
value->rValue = model->RELMODELk_b ;
|
value->rValue = model->RELMODELk_b ;
|
||||||
return (OK) ;
|
return (OK) ;
|
||||||
|
|
@ -63,12 +74,53 @@ RELMODELmAsk (CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value)
|
||||||
value->rValue = model->RELMODELbeta1 ;
|
value->rValue = model->RELMODELbeta1 ;
|
||||||
return (OK) ;
|
return (OK) ;
|
||||||
|
|
||||||
case RELMODEL_MOD_TYPE:
|
// 2: 65nm found over Internet
|
||||||
value->iValue = model->RELMODELtype ;
|
case RELMODEL_MOD_ALPHA_NEW:
|
||||||
|
value->rValue = model->RELMODELalpha_new ;
|
||||||
return (OK) ;
|
return (OK) ;
|
||||||
|
|
||||||
case RELMODEL_MOD_RELMODEL:
|
case RELMODEL_MOD_B_NEW:
|
||||||
value->iValue = model->RELMODELrelmodel ;
|
value->rValue = model->RELMODELb_new ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_BETA_NEW:
|
||||||
|
value->rValue = model->RELMODELbeta_new ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_E0_NEW:
|
||||||
|
value->rValue = model->RELMODELe0_new ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_K_NEW:
|
||||||
|
value->rValue = model->RELMODELk_new ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_KB_NEW:
|
||||||
|
value->rValue = model->RELMODELkb_new ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_TAU_C_FAST_NEW:
|
||||||
|
value->rValue = model->RELMODELtau_c_fast_new ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_TAU_C_SLOW_NEW:
|
||||||
|
value->rValue = model->RELMODELtau_c_slow_new ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_TAU_E_FAST_NEW:
|
||||||
|
value->rValue = model->RELMODELtau_e_fast_new ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_TAU_E_SLOW_NEW:
|
||||||
|
value->rValue = model->RELMODELtau_e_slow_new ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_T_R_NEW:
|
||||||
|
value->rValue = model->RELMODELt_r_new ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_T_S_NEW:
|
||||||
|
value->rValue = model->RELMODELt_s_new ;
|
||||||
return (OK) ;
|
return (OK) ;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,19 @@ RELMODELmParam (int param, IFvalue *value, GENmodel *inMod)
|
||||||
|
|
||||||
switch (param)
|
switch (param)
|
||||||
{
|
{
|
||||||
|
// RELMODEL type
|
||||||
|
case RELMODEL_MOD_TYPE:
|
||||||
|
model->RELMODELtype = value->iValue ;
|
||||||
|
model->RELMODELtypeGiven = TRUE ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
// RELMODEL flag
|
||||||
|
case RELMODEL_MOD_RELMODEL:
|
||||||
|
model->RELMODELrelmodel = 1 ;
|
||||||
|
model->RELMODELrelmodelGiven = TRUE ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
// 1: Giorgio Liatis (Sapienza University - DIET - Ultra Thin Oxide)
|
||||||
case RELMODEL_MOD_KB:
|
case RELMODEL_MOD_KB:
|
||||||
model->RELMODELk_b = value->rValue ;
|
model->RELMODELk_b = value->rValue ;
|
||||||
model->RELMODELk_bGiven = TRUE ;
|
model->RELMODELk_bGiven = TRUE ;
|
||||||
|
|
@ -71,19 +84,68 @@ RELMODELmParam (int param, IFvalue *value, GENmodel *inMod)
|
||||||
model->RELMODELbeta1Given = TRUE ;
|
model->RELMODELbeta1Given = TRUE ;
|
||||||
return (OK) ;
|
return (OK) ;
|
||||||
|
|
||||||
case RELMODEL_MOD_TYPE:
|
// 2: 65nm found over Internet
|
||||||
model->RELMODELtype = value->iValue ;
|
case RELMODEL_MOD_ALPHA_NEW:
|
||||||
model->RELMODELtypeGiven = TRUE ;
|
model->RELMODELalpha_new = value->rValue ;
|
||||||
|
model->RELMODELalpha_newGiven = TRUE ;
|
||||||
return (OK) ;
|
return (OK) ;
|
||||||
|
|
||||||
case RELMODEL_MOD_RELMODEL:
|
case RELMODEL_MOD_B_NEW:
|
||||||
model->RELMODELrelmodel = 1 ;
|
model->RELMODELb_new = value->rValue ;
|
||||||
model->RELMODELrelmodelGiven = TRUE ;
|
model->RELMODELb_newGiven = TRUE ;
|
||||||
break ;
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_BETA_NEW:
|
||||||
|
model->RELMODELbeta_new = value->rValue ;
|
||||||
|
model->RELMODELbeta_newGiven = TRUE ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_E0_NEW:
|
||||||
|
model->RELMODELe0_new = value->rValue ;
|
||||||
|
model->RELMODELe0_newGiven = TRUE ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_K_NEW:
|
||||||
|
model->RELMODELk_new = value->rValue ;
|
||||||
|
model->RELMODELk_newGiven = TRUE ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_KB_NEW:
|
||||||
|
model->RELMODELkb_new = value->rValue ;
|
||||||
|
model->RELMODELkb_newGiven = TRUE ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_TAU_C_FAST_NEW:
|
||||||
|
model->RELMODELtau_c_fast_new = value->rValue ;
|
||||||
|
model->RELMODELtau_c_fast_newGiven = TRUE ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_TAU_C_SLOW_NEW:
|
||||||
|
model->RELMODELtau_c_slow_new = value->rValue ;
|
||||||
|
model->RELMODELtau_c_slow_new = TRUE ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_TAU_E_FAST_NEW:
|
||||||
|
model->RELMODELtau_e_fast_new = value->rValue ;
|
||||||
|
model->RELMODELtau_e_fast_newGiven = TRUE ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_TAU_E_SLOW_NEW:
|
||||||
|
model->RELMODELtau_e_slow_new = value->rValue ;
|
||||||
|
model->RELMODELtau_e_slow_newGiven = TRUE ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_T_R_NEW:
|
||||||
|
model->RELMODELt_r_new = value->rValue ;
|
||||||
|
model->RELMODELt_r_newGiven = TRUE ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
|
case RELMODEL_MOD_T_S_NEW:
|
||||||
|
model->RELMODELt_s_new = value->rValue ;
|
||||||
|
model->RELMODELt_s_newGiven = TRUE ;
|
||||||
|
return (OK) ;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return (E_BADPARM) ;
|
return (E_BADPARM) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (OK) ;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,16 @@ RELMODELsetup (SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *state
|
||||||
/* loop through all the RELMODEL device models */
|
/* loop through all the RELMODEL device models */
|
||||||
for ( ; model != NULL ; model = model->RELMODELnextModel)
|
for ( ; model != NULL ; model = model->RELMODELnextModel)
|
||||||
{
|
{
|
||||||
|
// RELMODEL type
|
||||||
|
// 1: Giorgio Liatis (Sapienza University - DIET - Ultra Thin Oxide)
|
||||||
|
// 2: 65nm found over Internet
|
||||||
|
|
||||||
|
if (!model->RELMODELtypeGiven)
|
||||||
|
{
|
||||||
|
model->RELMODELtype = 2 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1: Giorgio Liatis (Sapienza University - DIET - Ultra Thin Oxide)
|
||||||
if (!model->RELMODELk_bGiven)
|
if (!model->RELMODELk_bGiven)
|
||||||
{
|
{
|
||||||
model->RELMODELk_b = 8.6e-5 ;
|
model->RELMODELk_b = 8.6e-5 ;
|
||||||
|
|
@ -75,15 +85,7 @@ RELMODELsetup (SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *state
|
||||||
model->RELMODELbeta1 = 0.112 ;
|
model->RELMODELbeta1 = 0.112 ;
|
||||||
}
|
}
|
||||||
|
|
||||||
/////
|
// 2: 65nm found over Internet
|
||||||
|
|
||||||
if (!model->RELMODELtypeGiven)
|
|
||||||
{
|
|
||||||
model->RELMODELtype = 2 ;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!model->RELMODELalpha_newGiven)
|
if (!model->RELMODELalpha_newGiven)
|
||||||
{
|
{
|
||||||
model->RELMODELalpha_new = 0.3 ;
|
model->RELMODELalpha_new = 0.3 ;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue