You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
212 lines
5.3 KiB
212 lines
5.3 KiB
/***********************************************************************
|
|
|
|
HiSIM (Hiroshima University STARC IGFET Model)
|
|
Copyright (C) 2010 Hiroshima University & STARC
|
|
|
|
MODEL NAME : HiSIM_HV
|
|
( VERSION : 1 SUBVERSION : 2 REVISION : 1 )
|
|
Model Parameter VERSION : 1.21
|
|
FILE : hsmhvpar.c
|
|
|
|
DATE : 2010.11.02
|
|
|
|
released by
|
|
Hiroshima University &
|
|
Semiconductor Technology Academic Research Center (STARC)
|
|
***********************************************************************/
|
|
|
|
#include "ngspice.h"
|
|
#include <stdio.h>
|
|
#include "ifsim.h"
|
|
#include "hsmhvdef.h"
|
|
#include "sperror.h"
|
|
#include "suffix.h"
|
|
|
|
int HSMHVparam(
|
|
int param,
|
|
IFvalue *value,
|
|
GENinstance *inst,
|
|
IFvalue *select)
|
|
{
|
|
HSMHVinstance *here = (HSMHVinstance*)inst;
|
|
switch (param) {
|
|
case HSMHV_COSELFHEAT:
|
|
here->HSMHV_coselfheat = value->iValue;
|
|
here->HSMHV_coselfheat_Given = TRUE;
|
|
break;
|
|
case HSMHV_COSUBNODE:
|
|
here->HSMHV_cosubnode = value->iValue;
|
|
here->HSMHV_cosubnode_Given = TRUE;
|
|
break;
|
|
case HSMHV_W:
|
|
here->HSMHV_w = value->rValue;
|
|
here->HSMHV_w_Given = TRUE;
|
|
break;
|
|
case HSMHV_L:
|
|
here->HSMHV_l = value->rValue;
|
|
here->HSMHV_l_Given = TRUE;
|
|
break;
|
|
case HSMHV_AS:
|
|
here->HSMHV_as = value->rValue;
|
|
here->HSMHV_as_Given = TRUE;
|
|
break;
|
|
case HSMHV_AD:
|
|
here->HSMHV_ad = value->rValue;
|
|
here->HSMHV_ad_Given = TRUE;
|
|
break;
|
|
case HSMHV_PS:
|
|
here->HSMHV_ps = value->rValue;
|
|
here->HSMHV_ps_Given = TRUE;
|
|
break;
|
|
case HSMHV_PD:
|
|
here->HSMHV_pd = value->rValue;
|
|
here->HSMHV_pd_Given = TRUE;
|
|
break;
|
|
case HSMHV_NRS:
|
|
here->HSMHV_nrs = value->rValue;
|
|
here->HSMHV_nrs_Given = TRUE;
|
|
break;
|
|
case HSMHV_NRD:
|
|
here->HSMHV_nrd = value->rValue;
|
|
here->HSMHV_nrd_Given = TRUE;
|
|
break;
|
|
case HSMHV_DTEMP:
|
|
here->HSMHV_dtemp = value->rValue;
|
|
here->HSMHV_dtemp_Given = TRUE;
|
|
break;
|
|
case HSMHV_OFF:
|
|
here->HSMHV_off = value->iValue;
|
|
break;
|
|
case HSMHV_IC_VBS:
|
|
here->HSMHV_icVBS = value->rValue;
|
|
here->HSMHV_icVBS_Given = TRUE;
|
|
break;
|
|
case HSMHV_IC_VDS:
|
|
here->HSMHV_icVDS = value->rValue;
|
|
here->HSMHV_icVDS_Given = TRUE;
|
|
break;
|
|
case HSMHV_IC_VGS:
|
|
here->HSMHV_icVGS = value->rValue;
|
|
here->HSMHV_icVGS_Given = TRUE;
|
|
break;
|
|
case HSMHV_IC:
|
|
switch (value->v.numValue) {
|
|
case 3:
|
|
here->HSMHV_icVBS = *(value->v.vec.rVec + 2);
|
|
here->HSMHV_icVBS_Given = TRUE;
|
|
case 2:
|
|
here->HSMHV_icVGS = *(value->v.vec.rVec + 1);
|
|
here->HSMHV_icVGS_Given = TRUE;
|
|
case 1:
|
|
here->HSMHV_icVDS = *(value->v.vec.rVec);
|
|
here->HSMHV_icVDS_Given = TRUE;
|
|
break;
|
|
default:
|
|
return(E_BADPARM);
|
|
}
|
|
break;
|
|
case HSMHV_CORBNET:
|
|
here->HSMHV_corbnet = value->iValue;
|
|
here->HSMHV_corbnet_Given = TRUE;
|
|
break;
|
|
case HSMHV_RBPB:
|
|
here->HSMHV_rbpb = value->rValue;
|
|
here->HSMHV_rbpb_Given = TRUE;
|
|
break;
|
|
case HSMHV_RBPD:
|
|
here->HSMHV_rbpd = value->rValue;
|
|
here->HSMHV_rbpd_Given = TRUE;
|
|
break;
|
|
case HSMHV_RBPS:
|
|
here->HSMHV_rbps = value->rValue;
|
|
here->HSMHV_rbps_Given = TRUE;
|
|
break;
|
|
case HSMHV_RBDB:
|
|
here->HSMHV_rbdb = value->rValue;
|
|
here->HSMHV_rbdb_Given = TRUE;
|
|
break;
|
|
case HSMHV_RBSB:
|
|
here->HSMHV_rbsb = value->rValue;
|
|
here->HSMHV_rbsb_Given = TRUE;
|
|
break;
|
|
case HSMHV_CORG:
|
|
here->HSMHV_corg = value->iValue;
|
|
here->HSMHV_corg_Given = TRUE;
|
|
break;
|
|
case HSMHV_NGCON:
|
|
here->HSMHV_ngcon = value->rValue;
|
|
here->HSMHV_ngcon_Given = TRUE;
|
|
break;
|
|
case HSMHV_XGW:
|
|
here->HSMHV_xgw = value->rValue;
|
|
here->HSMHV_xgw_Given = TRUE;
|
|
break;
|
|
case HSMHV_XGL:
|
|
here->HSMHV_xgl = value->rValue;
|
|
here->HSMHV_xgl_Given = TRUE;
|
|
break;
|
|
case HSMHV_NF:
|
|
here->HSMHV_nf = value->rValue;
|
|
here->HSMHV_nf_Given = TRUE;
|
|
break;
|
|
case HSMHV_SA:
|
|
here->HSMHV_sa = value->rValue;
|
|
here->HSMHV_sa_Given = TRUE;
|
|
break;
|
|
case HSMHV_SB:
|
|
here->HSMHV_sb = value->rValue;
|
|
here->HSMHV_sb_Given = TRUE;
|
|
break;
|
|
case HSMHV_SD:
|
|
here->HSMHV_sd = value->rValue;
|
|
here->HSMHV_sd_Given = TRUE;
|
|
break;
|
|
case HSMHV_NSUBCDFM:
|
|
here->HSMHV_nsubcdfm = value->rValue;
|
|
here->HSMHV_nsubcdfm_Given = TRUE;
|
|
break;
|
|
case HSMHV_M:
|
|
here->HSMHV_m = value->rValue;
|
|
here->HSMHV_m_Given = TRUE;
|
|
break;
|
|
case HSMHV_SUBLD1:
|
|
here->HSMHV_subld1 = value->rValue;
|
|
here->HSMHV_subld1_Given = TRUE;
|
|
break;
|
|
case HSMHV_SUBLD2:
|
|
here->HSMHV_subld2 = value->rValue;
|
|
here->HSMHV_subld2_Given = TRUE;
|
|
break;
|
|
case HSMHV_LOVER:
|
|
here->HSMHV_lover = value->rValue;
|
|
here->HSMHV_lover_Given = TRUE;
|
|
break;
|
|
case HSMHV_LOVERS:
|
|
here->HSMHV_lovers = value->rValue;
|
|
here->HSMHV_lovers_Given = TRUE;
|
|
break;
|
|
case HSMHV_LOVERLD:
|
|
here->HSMHV_loverld = value->rValue;
|
|
here->HSMHV_loverld_Given = TRUE;
|
|
break;
|
|
case HSMHV_LDRIFT1:
|
|
here->HSMHV_ldrift1 = value->rValue;
|
|
here->HSMHV_ldrift1_Given = TRUE;
|
|
break;
|
|
case HSMHV_LDRIFT2:
|
|
here->HSMHV_ldrift2 = value->rValue;
|
|
here->HSMHV_ldrift2_Given = TRUE;
|
|
break;
|
|
case HSMHV_LDRIFT1S:
|
|
here->HSMHV_ldrift1s = value->rValue;
|
|
here->HSMHV_ldrift1s_Given = TRUE;
|
|
break;
|
|
case HSMHV_LDRIFT2S:
|
|
here->HSMHV_ldrift2s = value->rValue;
|
|
here->HSMHV_ldrift2s_Given = TRUE;
|
|
break;
|
|
default:
|
|
return(E_BADPARM);
|
|
}
|
|
return(OK);
|
|
}
|