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

📄 mos9ask.c

📁 ngspice又一个电子CAD仿真软件代码.功能更全
💻 C
📖 第 1 页 / 共 2 页
字号:
/**********Copyright 1990 Regents of the University of California.  All rights reserved.Author: 1987 Mathew Lew and Thomas L. QuarlesModified: Alan Gillespie**********/#include "ngspice.h"#include "const.h"#include "ifsim.h"#include "cktdefs.h"#include "devdefs.h"#include "mos9defs.h"#include "sperror.h"#include "suffix.h"/*ARGSUSED*/intMOS9ask(CKTcircuit *ckt, GENinstance *inst, int which,         IFvalue *value, IFvalue *select){    MOS9instance *here = (MOS9instance *)inst;    double vr;    double vi;    double sr;    double si;    double vm;    static char *msg = "Current and power not available for ac analysis";    switch(which) {        case MOS9_TEMP:            value->rValue = here->MOS9temp-CONSTCtoK;            return(OK);        case MOS9_CGS:            value->rValue = 2* *(ckt->CKTstate0 + here->MOS9capgs);            return(OK);        case MOS9_CGD:            value->rValue = 2* *(ckt->CKTstate0 + here->MOS9capgd);            return(OK);        case MOS9_M:            value->rValue = here->MOS9m;                return(OK);        case MOS9_L:            value->rValue = here->MOS9l;                return(OK);        case MOS9_W:            value->rValue = here->MOS9w;                return(OK);        case MOS9_AS:            value->rValue = here->MOS9sourceArea;                return(OK);        case MOS9_AD:            value->rValue = here->MOS9drainArea;                return(OK);        case MOS9_PS:            value->rValue = here->MOS9sourcePerimiter;                return(OK);        case MOS9_PD:            value->rValue = here->MOS9drainPerimiter;                return(OK);        case MOS9_NRS:            value->rValue = here->MOS9sourceSquares;                return(OK);        case MOS9_NRD:            value->rValue = here->MOS9drainSquares;                return(OK);        case MOS9_OFF:            value->rValue = here->MOS9off;                return(OK);        case MOS9_IC_VBS:            value->rValue = here->MOS9icVBS;                return(OK);        case MOS9_IC_VDS:            value->rValue = here->MOS9icVDS;                return(OK);        case MOS9_IC_VGS:            value->rValue = here->MOS9icVGS;            return(OK);        case MOS9_DNODE:            value->iValue = here->MOS9dNode;            return(OK);        case MOS9_GNODE:            value->iValue = here->MOS9gNode;            return(OK);        case MOS9_SNODE:            value->iValue = here->MOS9sNode;            return(OK);        case MOS9_BNODE:            value->iValue = here->MOS9bNode;            return(OK);        case MOS9_DNODEPRIME:            value->iValue = here->MOS9dNodePrime;            return(OK);        case MOS9_SNODEPRIME:            value->iValue = here->MOS9sNodePrime;            return(OK);        case MOS9_SOURCECONDUCT:	    value->rValue = here->MOS9sourceConductance;            return(OK);        case MOS9_DRAINCONDUCT:	    value->rValue = here->MOS9drainConductance;            return(OK);        case MOS9_SOURCERESIST:            if (here->MOS9sNodePrime != here->MOS9sNode)		value->rValue = 1.0 / here->MOS9sourceConductance;	    else		value->rValue = 0.0;            return(OK);        case MOS9_DRAINRESIST:            if (here->MOS9dNodePrime != here->MOS9dNode)		value->rValue = 1.0 / here->MOS9drainConductance;	    else		value->rValue = 0.0;            return(OK);        case MOS9_VON:            value->rValue = here->MOS9von;            return(OK);        case MOS9_VDSAT:            value->rValue = here->MOS9vdsat;            return(OK);        case MOS9_SOURCEVCRIT:            value->rValue = here->MOS9sourceVcrit;            return(OK);        case MOS9_DRAINVCRIT:            value->rValue = here->MOS9drainVcrit;            return(OK);        case MOS9_CD:            value->rValue = here->MOS9cd;            return(OK);        case MOS9_CBS:            value->rValue = here->MOS9cbs;            return(OK);        case MOS9_CBD:            value->rValue = here->MOS9cbd;            return(OK);        case MOS9_GMBS:            value->rValue = here->MOS9gmbs;            return(OK);        case MOS9_GM:            value->rValue = here->MOS9gm;            return(OK);        case MOS9_GDS:            value->rValue = here->MOS9gds;            return(OK);        case MOS9_GBD:            value->rValue = here->MOS9gbd;            return(OK);        case MOS9_GBS:            value->rValue = here->MOS9gbs;            return(OK);        case MOS9_CAPBD:            value->rValue = here->MOS9capbd;            return(OK);        case MOS9_CAPBS:            value->rValue = here->MOS9capbs;            return(OK);        case MOS9_CAPZEROBIASBD:            value->rValue = here->MOS9Cbd;            return(OK);        case MOS9_CAPZEROBIASBDSW:            value->rValue = here->MOS9Cbdsw;            return(OK);        case MOS9_CAPZEROBIASBS:            value->rValue = here->MOS9Cbs;            return(OK);        case MOS9_CAPZEROBIASBSSW:            value->rValue = here->MOS9Cbssw;            return(OK);        case MOS9_VBD:            value->rValue = *(ckt->CKTstate0 + here->MOS9vbd);            return(OK);        case MOS9_VBS:            value->rValue = *(ckt->CKTstate0 + here->MOS9vbs);            return(OK);        case MOS9_VGS:            value->rValue = *(ckt->CKTstate0 + here->MOS9vgs);            return(OK);        case MOS9_VDS:            value->rValue = *(ckt->CKTstate0 + here->MOS9vds);            return(OK);        case MOS9_CAPGS:            value->rValue = 2* *(ckt->CKTstate0 + here->MOS9capgs);/* add overlap capacitance */            value->rValue += (here->MOS9modPtr->MOS9gateSourceOverlapCapFactor)                             * here->MOS9m                             * (here->MOS9w                                +here->MOS9modPtr->MOS9widthAdjust                                -2*(here->MOS9modPtr->MOS9widthNarrow));            return(OK);        case MOS9_QGS:            value->rValue = *(ckt->CKTstate0 + here->MOS9qgs);            return(OK);        case MOS9_CQGS:            value->rValue = *(ckt->CKTstate0 + here->MOS9cqgs);            return(OK);        case MOS9_CAPGD:            value->rValue = 2* *(ckt->CKTstate0 + here->MOS9capgd);/* add overlap capacitance */            value->rValue += (here->MOS9modPtr->MOS9gateDrainOverlapCapFactor)                             * here->MOS9m                             * (here->MOS9w                                +here->MOS9modPtr->MOS9widthAdjust                                -2*(here->MOS9modPtr->MOS9widthNarrow));            return(OK);        case MOS9_QGD:            value->rValue = *(ckt->CKTstate0 + here->MOS9qgd);            return(OK);        case MOS9_CQGD:            value->rValue = *(ckt->CKTstate0 + here->MOS9cqgd);            return(OK);        case MOS9_CAPGB:            value->rValue = 2* *(ckt->CKTstate0 + here->MOS9capgb);/* add overlap capacitance */            value->rValue += (here->MOS9modPtr->MOS9gateBulkOverlapCapFactor)                             * here->MOS9m                             * (here->MOS9l                                +here->MOS9modPtr->MOS9lengthAdjust                                -2*(here->MOS9modPtr->MOS9latDiff));            return(OK);        case MOS9_QGB:            value->rValue = *(ckt->CKTstate0 + here->MOS9qgb);            return(OK);

⌨️ 快捷键说明

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