Finished UI for RELMODEL model

This commit is contained in:
Francesco Lannutti 2016-11-03 21:48:14 +01:00
parent 0d53ed60d6
commit fbed2dfe1d
4 changed files with 152 additions and 35 deletions

View File

@ -11,6 +11,8 @@ IFparm RELMODELpTable [] = { /* 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 ("h_cut", RELMODEL_MOD_HCUT, IF_REAL, "h_cut"),
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 ("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")
} ;

View File

@ -19,6 +19,17 @@ RELMODELmAsk (CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value)
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:
value->rValue = model->RELMODELk_b ;
return (OK) ;
@ -63,12 +74,53 @@ RELMODELmAsk (CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value)
value->rValue = model->RELMODELbeta1 ;
return (OK) ;
case RELMODEL_MOD_TYPE:
value->iValue = model->RELMODELtype ;
// 2: 65nm found over Internet
case RELMODEL_MOD_ALPHA_NEW:
value->rValue = model->RELMODELalpha_new ;
return (OK) ;
case RELMODEL_MOD_RELMODEL:
value->iValue = model->RELMODELrelmodel ;
case RELMODEL_MOD_B_NEW:
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) ;
default:

View File

@ -16,6 +16,19 @@ RELMODELmParam (int param, IFvalue *value, GENmodel *inMod)
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:
model->RELMODELk_b = value->rValue ;
model->RELMODELk_bGiven = TRUE ;
@ -71,19 +84,68 @@ RELMODELmParam (int param, IFvalue *value, GENmodel *inMod)
model->RELMODELbeta1Given = TRUE ;
return (OK) ;
case RELMODEL_MOD_TYPE:
model->RELMODELtype = value->iValue ;
model->RELMODELtypeGiven = TRUE ;
// 2: 65nm found over Internet
case RELMODEL_MOD_ALPHA_NEW:
model->RELMODELalpha_new = value->rValue ;
model->RELMODELalpha_newGiven = TRUE ;
return (OK) ;
case RELMODEL_MOD_RELMODEL:
model->RELMODELrelmodel = 1 ;
model->RELMODELrelmodelGiven = TRUE ;
break ;
case RELMODEL_MOD_B_NEW:
model->RELMODELb_new = value->rValue ;
model->RELMODELb_newGiven = TRUE ;
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:
return (E_BADPARM) ;
}
return (OK) ;
}

View File

@ -20,6 +20,16 @@ RELMODELsetup (SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *state
/* loop through all the RELMODEL device models */
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)
{
model->RELMODELk_b = 8.6e-5 ;
@ -75,15 +85,7 @@ RELMODELsetup (SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *state
model->RELMODELbeta1 = 0.112 ;
}
/////
if (!model->RELMODELtypeGiven)
{
model->RELMODELtype = 2 ;
}
// 2: 65nm found over Internet
if (!model->RELMODELalpha_newGiven)
{
model->RELMODELalpha_new = 0.3 ;