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 + -
显示快捷键?