⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 twodev.h

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 H
字号:
/**********Copyright 1991 Regents of the University of California. All rights reserved.Authors: 1987 Karti Mayaram, 1991 David Gates**********//* * Two-Dimensional Numerical Device Data Structures  */#ifndef TWODEV_H#define TWODEV_H#include "gendev.h"typedef struct sTWOdevice{    double *dcSolution;                /* solution vector for device */    double *dcDeltaSolution;           /* delta solution vector */    double *copiedSolution;            /* copy of the solution vector */    double *rhs;                       /* rhs vector */    double *rhsImag;                   /* imaginary part of rhs vector */    char *matrix;                      /* matrix for device equations */    int solverType;                    /* what is matrix set up to do */    int dimEquil;                      /* dimension in equilibrium */    int numOrigEquil;                  /* orig number of nz's in equilibrium */    int numFillEquil;                  /* fill number of nz's in equilibrium */    int dimBias;                       /* dimension under bias */    int numOrigBias;                   /* orig number of nz's under bias */    int numFillBias;                   /* fill number of nz's under bias */    int numEqns;                       /* number of equations */    int poissonOnly;                   /* flag for Poisson eqn solution */    struct sTWOelem **elements;        /* 1D list of elements */    struct sTWOelem ***elemArray;      /* 2D list of elements for printing */    double **devStates;                /* device states */    double *xScale;                    /* array of X node locations */    double *yScale;                    /* array of Y node locations */    int numXNodes;                     /* number of X nodes */      int numYNodes;                     /* number of Y nodes */      int numNodes;                      /* total number of nodes */    int numEdges;                      /* total number of edges */    int numElems;                      /* total number of elements */    struct sTWOcontact *pFirstContact; /* first contact */    struct sTWOcontact *pLastContact;  /* last contact */    struct sTWOchannel *pChannel;      /* surface mobility channel */    struct sMaterialInfo *pMaterials;  /* temp-dep material information */    struct sStatInfo *pStats;          /* run-time statistics */    int converged;                     /* flag for device convergence */    int iterationNumber;               /* device iteration counter */    double width;                      /* device width in CM */    double rhsNorm;                    /* norm of rhs vector */    double abstol;                     /* absolute tolerance for device */    double reltol;                     /* relative tolerance for device */    char *name;	                       /* name of device */} TWOdevice;#define devState0 devStates[0]#define devState1 devStates[1]#define devState2 devStates[2]#define devState3 devStates[3]#define devState4 devStates[4]#define devState5 devStates[5]#define devState6 devStates[6]#define devState7 devStates[7]typedef struct sTWOcontact{    struct sTWOcontact *next;       /* pointer to next contact */    struct sTWOnode **pNodes;	    /* pointer to the contact nodes */    int numNodes;                   /* number of nodes in contact */    int id;                         /* unique contact identifier */    double workf;                   /* metal work function */} TWOcontact;/* Structure for channels. * A channel is divided into 'columns' that are perpendicular to the * channel's insulator/semiconductor interface.  Each column begins * at its 'seed', the closest semiconductor element to the interface. * It is assumed that the current flows parallel to the interface. */typedef struct sTWOchannel{    struct sTWOchannel *next;      /* pointer to next channel */    struct sTWOelem *pSeed;        /* pointer to the seed element */    struct sTWOelem *pNElem;       /* pointer to the insulator element */    int id;                        /* unique channel identifier */    int type;                      /* ID of direction to interface */} TWOchannel;struct mosConductances{    double dIdDVdb;    double dIdDVsb;    double dIdDVgb;    double dIsDVdb;    double dIsDVsb;    double dIsDVgb;    double dIgDVdb;    double dIgDVsb;    double dIgDVgb;};#endif /* TWODEV_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -