hsm1def.h
来自「ngspice又一个电子CAD仿真软件代码.功能更全」· C头文件 代码 · 共 733 行 · 第 1/2 页
H
733 行
/*********************************************************************** HiSIM (Hiroshima University STARC IGFET Model) Copyright (C) 2003 STARC VERSION : HiSIM 1.2.0 FILE : hsm1def.h of HiSIM 1.2.0 April 9, 2003 : released by STARC Physical Design Group***********************************************************************/#ifndef HSM1#define HSM1#include "ifsim.h"#include "gendefs.h"#include "cktdefs.h"#include "complex.h"#include "noisedef.h"/* declarations for HiSIM1 MOSFETs *//* information needed for each instance */typedef struct sHSM1instance { struct sHSM1model *HSM1modPtr; /* pointer to model */ struct sHSM1instance *HSM1nextInstance; /* pointer to next instance of current model*/ IFuid HSM1name; /* pointer to character string naming this instance *//*DW next is additional in spice */ int HSM1owner; /* number of owner process */ int HSM1states; /* index into state table for this device */ int HSM1dNode; /* number of the drain node of the mosfet */ int HSM1gNode; /* number of the gate node of the mosfet */ int HSM1sNode; /* number of the source node of the mosfet */ int HSM1bNode; /* number of the bulk node of the mosfet */ int HSM1dNodePrime; /* number od the inner drain node */ int HSM1sNodePrime; /* number od the inner source node */ char HSM1_called[4]; /* string to check the first call */ /* previous values to evaluate initial guess */ double HSM1_vbsc_prv; double HSM1_vdsc_prv; double HSM1_vgsc_prv; double HSM1_ps0_prv; double HSM1_ps0_dvbs_prv; double HSM1_ps0_dvds_prv; double HSM1_ps0_dvgs_prv; double HSM1_pds_prv; double HSM1_pds_dvbs_prv; double HSM1_pds_dvds_prv; double HSM1_pds_dvgs_prv; double HSM1_ids_prv; double HSM1_ids_dvbs_prv; double HSM1_ids_dvds_prv; double HSM1_ids_dvgs_prv; double HSM1_nfc; /* for noise calc. */ /* instance */ double HSM1_l; /* the length of the channel region */ double HSM1_w; /* the width of the channel region */ double HSM1_m; /* Parallel multiplier */ double HSM1_ad; /* the area of the drain diffusion */ double HSM1_as; /* the area of the source diffusion */ double HSM1_pd; /* perimeter of drain junction [m] */ double HSM1_ps; /* perimeter of source junction [m] */ double HSM1_nrd; /* equivalent num of squares of drain [-] (unused) */ double HSM1_nrs; /* equivalent num of squares of source [-] (unused) */ double HSM1_temp; /* lattice temperature [K] */ double HSM1_dtemp; /* added by K.M. */ double HSM1_weff; /* the effective width of the channel region */ double HSM1_leff; /* the effective length of the channel region */ /* output */ int HSM1_capop; double HSM1_gd; double HSM1_gs; double HSM1_cgso; double HSM1_cgdo; double HSM1_cgbo; double HSM1_von; /* vth */ double HSM1_vdsat; double HSM1_ids; /* cdrain, HSM1_cd */ double HSM1_gds; double HSM1_gm; double HSM1_gmbs; double HSM1_ibs; /* HSM1_cbs */ double HSM1_ibd; /* HSM1_cbd */ double HSM1_gbs; double HSM1_gbd; double HSM1_capbs; double HSM1_capbd; /* double HSM1_qbs; double HSM1_qbd; */ double HSM1_capgs; double HSM1_capgd; double HSM1_capgb; double HSM1_isub; /* HSM1_csub */ double HSM1_gbgs; double HSM1_gbds; double HSM1_gbbs; double HSM1_qg; double HSM1_qd; /* double HSM1_qs; */ double HSM1_qb; /* bulk charge qb = -(qg + qd + qs) */ double HSM1_cggb; double HSM1_cgdb; double HSM1_cgsb; double HSM1_cbgb; double HSM1_cbdb; double HSM1_cbsb; double HSM1_cdgb; double HSM1_cddb; double HSM1_cdsb; /* no use in SPICE3f5 double HSM1_nois_irs; double HSM1_nois_ird; double HSM1_nois_idsth; double HSM1_nois_idsfl; double HSM1_freq; */ double HSM1_mu; /* mobility */ double HSM1_igidl; /* gate induced drain leakage */ double HSM1_gigidlgs; double HSM1_gigidlds; double HSM1_gigidlbs; double HSM1_igisl; /* gate induced source leakage */ double HSM1_gigislgd; double HSM1_gigislsd; double HSM1_gigislbd; double HSM1_igb; /* gate tunneling current (gate to bulk) */ double HSM1_gigbg; double HSM1_gigbd; double HSM1_gigbb; double HSM1_gigbs; double HSM1_igs; /* gate tunneling current (gate to source) */ double HSM1_gigsg; double HSM1_gigsd; double HSM1_gigsb; double HSM1_gigss; double HSM1_igd; /* gate tunneling current (gate to drain) */ double HSM1_gigdg; double HSM1_gigdd; double HSM1_gigdb; double HSM1_gigds; double HSM1_qg_int ; double HSM1_qd_int ; double HSM1_qs_int ; double HSM1_qb_int ; /* no use in SPICE3f5 double HSM1drainSquares; the length of the drain in squares double HSM1sourceSquares; the length of the source in squares */ double HSM1sourceConductance; /* cond. of source (or 0): set in setup */ double HSM1drainConductance; /* cond. of drain (or 0): set in setup */ double HSM1_icVBS; /* initial condition B-S voltage */ double HSM1_icVDS; /* initial condition D-S voltage */ double HSM1_icVGS; /* initial condition G-S voltage */ int HSM1_off; /* non-zero to indicate device is off for dc analysis */ int HSM1_mode; /* device mode : 1 = normal, -1 = inverse */ unsigned HSM1_l_Given :1; unsigned HSM1_w_Given :1; unsigned HSM1_m_Given :1; unsigned HSM1_ad_Given :1; unsigned HSM1_as_Given :1; /* unsigned HSM1drainSquaresGiven :1; unsigned HSM1sourceSquaresGiven :1;*/ unsigned HSM1_pd_Given :1; unsigned HSM1_ps_Given :1; unsigned HSM1_nrd_Given :1; unsigned HSM1_nrs_Given :1; unsigned HSM1_temp_Given :1; unsigned HSM1_dtemp_Given :1; unsigned HSM1dNodePrimeSet :1; unsigned HSM1sNodePrimeSet :1; unsigned HSM1_icVBS_Given :1; unsigned HSM1_icVDS_Given :1; unsigned HSM1_icVGS_Given :1; /* pointer to sparse matrix */ double *HSM1DdPtr; /* pointer to sparse matrix element at (Drain node,drain node) */ double *HSM1GgPtr; /* pointer to sparse matrix element at (gate node,gate node) */ double *HSM1SsPtr; /* pointer to sparse matrix element at (source node,source node) */ double *HSM1BbPtr; /* pointer to sparse matrix element at (bulk node,bulk node) */ double *HSM1DPdpPtr; /* pointer to sparse matrix element at (drain prime node,drain prime node) */ double *HSM1SPspPtr; /* pointer to sparse matrix element at (source prime node,source prime node) */ double *HSM1DdpPtr; /* pointer to sparse matrix element at (drain node,drain prime node) */ double *HSM1GbPtr; /* pointer to sparse matrix element at (gate node,bulk node) */ double *HSM1GdpPtr; /* pointer to sparse matrix element at (gate node,drain prime node) */ double *HSM1GspPtr; /* pointer to sparse matrix element at (gate node,source prime node) */ double *HSM1SspPtr; /* pointer to sparse matrix element at (source node,source prime node) */ double *HSM1BdpPtr; /* pointer to sparse matrix element at (bulk node,drain prime node) */ double *HSM1BspPtr; /* pointer to sparse matrix element at (bulk node,source prime node) */ double *HSM1DPspPtr; /* pointer to sparse matrix element at (drain prime node,source prime node) */ double *HSM1DPdPtr; /* pointer to sparse matrix element at (drain prime node,drain node) */ double *HSM1BgPtr; /* pointer to sparse matrix element at (bulk node,gate node) */ double *HSM1DPgPtr; /* pointer to sparse matrix element at (drain prime node,gate node) */ double *HSM1SPgPtr; /* pointer to sparse matrix element at (source prime node,gate node) */ double *HSM1SPsPtr; /* pointer to sparse matrix element at (source prime node,source node) */ double *HSM1DPbPtr; /* pointer to sparse matrix element at (drain prime node,bulk node) */ double *HSM1SPbPtr; /* pointer to sparse matrix element at (source prime node,bulk node) */ double *HSM1SPdpPtr; /* pointer to sparse matrix element at (source prime node,drain prime node) */ /* common state values in hisim1 module */#define HSM1vbd HSM1states+ 0#define HSM1vbs HSM1states+ 1#define HSM1vgs HSM1states+ 2#define HSM1vds HSM1states+ 3#define HSM1qb HSM1states+ 4#define HSM1cqb HSM1states+ 5#define HSM1qg HSM1states+ 6#define HSM1cqg HSM1states+ 7#define HSM1qd HSM1states+ 8#define HSM1cqd HSM1states+ 9 #define HSM1qbs HSM1states+ 10#define HSM1qbd HSM1states+ 11#define HSM1numStates 12 /* indices to the array of HiSIM1 NOISE SOURCES (the same as BSIM3) */#define HSM1RDNOIZ 0#define HSM1RSNOIZ 1#define HSM1IDNOIZ 2#define HSM1FLNOIZ 3#define HSM1TOTNOIZ 4#define HSM1NSRCS 5 /* the number of HiSIM1 MOSFET noise sources */#ifndef NONOISE double HSM1nVar[NSTATVARS][HSM1NSRCS];#else /* NONOISE */ double **HSM1nVar;#endif /* NONOISE */} HSM1instance ;/* per model data */typedef struct sHiSIM1model { /* model structure for a resistor */ int HSM1modType; /* type index of this device type */ struct sHiSIM1model *HSM1nextModel; /* pointer to next possible model in linked list */ HSM1instance * HSM1instances; /* pointer to list of instances that have this model */ IFuid HSM1modName; /* pointer to the name of this model */ int HSM1_type; /* device type: 1 = nmos, -1 = pmos */ int HSM1_level; /* level */ int HSM1_info; /* information */ int HSM1_noise; /* noise model selecter see hsm1noi.c */ int HSM1_version; /* model version 101/111/120 */ int HSM1_show; /* show physical value 1, 2, ... , 11 */ /* flags for initial guess */ int HSM1_corsrd ; int HSM1_coiprv ; int HSM1_copprv ; int HSM1_cocgso ; int HSM1_cocgdo ; int HSM1_cocgbo ; int HSM1_coadov ; int HSM1_coxx08 ; int HSM1_coxx09 ; int HSM1_coisub ; int HSM1_coiigs ; int HSM1_cogidl ; int HSM1_cogisl ; int HSM1_coovlp ; int HSM1_conois ; int HSM1_coisti ; /* HiSIM1.1 */ int HSM1_cosmbi ; /* HiSIM1.2 */ /* HiSIM original */ double HSM1_vmax ; double HSM1_bgtmp1 ; double HSM1_bgtmp2 ; double HSM1_tox ; double HSM1_xld ; double HSM1_xwd ; double HSM1_xj ; /* HiSIM1.0 */ double HSM1_xqy ; /* HiSIM1.1 */ double HSM1_rs; /* source contact resistance */ double HSM1_rd; /* drain contact resistance */ double HSM1_vfbc ; double HSM1_nsubc ; double HSM1_parl1 ; double HSM1_parl2 ; double HSM1_lp ; double HSM1_nsubp ; double HSM1_scp1 ; double HSM1_scp2 ; double HSM1_scp3 ; double HSM1_sc1 ; double HSM1_sc2 ; double HSM1_sc3 ; double HSM1_pgd1 ; double HSM1_pgd2 ; double HSM1_pgd3 ; double HSM1_ndep ; double HSM1_ninv ; double HSM1_ninvd ; double HSM1_muecb0 ; double HSM1_muecb1 ; double HSM1_mueph1 ; double HSM1_mueph0 ; double HSM1_mueph2 ; double HSM1_w0 ; double HSM1_muesr1 ; double HSM1_muesr0 ; double HSM1_bb ; double HSM1_sub1 ; double HSM1_sub2 ; double HSM1_sub3 ; double HSM1_wvthsc ; /* HiSIM1.1 */ double HSM1_nsti ; /* HiSIM1.1 */ double HSM1_wsti ; /* HiSIM1.1 */ double HSM1_cgso ; double HSM1_cgdo ; double HSM1_cgbo ; double HSM1_tpoly ; double HSM1_js0 ; double HSM1_js0sw ; double HSM1_nj ; double HSM1_njsw ; double HSM1_xti ; double HSM1_cj ; double HSM1_cjsw ; double HSM1_cjswg ; double HSM1_mj ; double HSM1_mjsw ; double HSM1_mjswg ; double HSM1_pb ; double HSM1_pbsw ; double HSM1_pbswg ; double HSM1_xpolyd ;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?