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

📄 mos6ask.c

📁 ngspice又一个电子CAD仿真软件代码.功能更全
💻 C
📖 第 1 页 / 共 2 页
字号:
/**********Copyright 1990 Regents of the University of California.  All rights reserved.Author: 1989 Takayasu SakuraiModified: 2000 AlansFixes**********/#include "ngspice.h"#include "const.h"#include "ifsim.h"#include "cktdefs.h"#include "devdefs.h"#include "mos6defs.h"#include "sperror.h"#include "suffix.h"/*ARGSUSED*/intMOS6ask(CKTcircuit *ckt, GENinstance *inst, int which,        IFvalue *value, IFvalue *select){    MOS6instance *here = (MOS6instance*)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 MOS6_TEMP:            value->rValue = here->MOS6temp - CONSTCtoK;            return(OK);        case MOS6_DTEMP:            value->rValue = here->MOS6dtemp;            return(OK);        case MOS6_CGS:            value->rValue = 2* *(ckt->CKTstate0 + here->MOS6capgs);            value->rValue *= here->MOS6m;            return(OK);        case MOS6_CGD:            value->rValue = 2* *(ckt->CKTstate0 + here->MOS6capgd);            value->rValue *= here->MOS6m;            return(OK);        case MOS6_L:            value->rValue = here->MOS6l;                return(OK);        case MOS6_W:            value->rValue = here->MOS6w;            value->rValue *= here->MOS6m;                return(OK);        case MOS6_M:            value->rValue = here->MOS6m;                return(OK);        case MOS6_AS:            value->rValue = here->MOS6sourceArea;            value->rValue *= here->MOS6m;                return(OK);        case MOS6_AD:            value->rValue = here->MOS6drainArea;            value->rValue *= here->MOS6m;                return(OK);        case MOS6_PS:            value->rValue = here->MOS6sourcePerimiter;            value->rValue *= here->MOS6m;                return(OK);        case MOS6_PD:            value->rValue = here->MOS6drainPerimiter;            value->rValue *= here->MOS6m;                return(OK);        case MOS6_NRS:            value->rValue = here->MOS6sourceSquares;            value->rValue *= here->MOS6m;                return(OK);        case MOS6_NRD:            value->rValue = here->MOS6drainSquares;            value->rValue *= here->MOS6m;                return(OK);        case MOS6_OFF:            value->rValue = here->MOS6off;                return(OK);        case MOS6_IC_VBS:            value->rValue = here->MOS6icVBS;                return(OK);        case MOS6_IC_VDS:            value->rValue = here->MOS6icVDS;                return(OK);        case MOS6_IC_VGS:            value->rValue = here->MOS6icVGS;                return(OK);        case MOS6_DNODE:            value->iValue = here->MOS6dNode;            return(OK);        case MOS6_GNODE:            value->iValue = here->MOS6gNode;            return(OK);        case MOS6_SNODE:            value->iValue = here->MOS6sNode;            return(OK);        case MOS6_BNODE:            value->iValue = here->MOS6bNode;            return(OK);        case MOS6_DNODEPRIME:            value->iValue = here->MOS6dNodePrime;            return(OK);        case MOS6_SNODEPRIME:            value->iValue = here->MOS6sNodePrime;            return(OK);        case MOS6_SOURCECONDUCT:            value->rValue = here->MOS6sourceConductance;            value->rValue *= here->MOS6m;            return(OK);        case MOS6_DRAINCONDUCT:            value->rValue = here->MOS6drainConductance;            value->rValue *= here->MOS6m;            return(OK);        case MOS6_SOURCERESIST:	    if (here->MOS6sNodePrime != here->MOS6sNode)		value->rValue = 1.0 / here->MOS6sourceConductance;	    else		value->rValue = 0.0;            value->rValue /= here->MOS6m;            return(OK);        case MOS6_DRAINRESIST:	    if (here->MOS6dNodePrime != here->MOS6dNode)		value->rValue = 1.0 / here->MOS6drainConductance;	    else		value->rValue = 0.0;            value->rValue /= here->MOS6m;            return(OK);        case MOS6_VON:            value->rValue = here->MOS6von;            return(OK);        case MOS6_VDSAT:            value->rValue = here->MOS6vdsat;            return(OK);        case MOS6_SOURCEVCRIT:            value->rValue = here->MOS6sourceVcrit;            return(OK);        case MOS6_DRAINVCRIT:            value->rValue = here->MOS6drainVcrit;            return(OK);        case MOS6_CD:            value->rValue = here->MOS6cd;            value->rValue *= here->MOS6m;            return(OK);        case MOS6_CBS:            value->rValue = here->MOS6cbs;            value->rValue *= here->MOS6m;            return(OK);        case MOS6_CBD:            value->rValue = here->MOS6cbd;            value->rValue *= here->MOS6m;            return(OK);        case MOS6_GMBS:            value->rValue = here->MOS6gmbs;            value->rValue *= here->MOS6m;            return(OK);        case MOS6_GM:            value->rValue = here->MOS6gm;            value->rValue *= here->MOS6m;            return(OK);        case MOS6_GDS:            value->rValue = here->MOS6gds;            value->rValue *= here->MOS6m;            return(OK);        case MOS6_GBD:            value->rValue = here->MOS6gbd;            value->rValue *= here->MOS6m;            return(OK);        case MOS6_GBS:            value->rValue = here->MOS6gbs;            value->rValue *= here->MOS6m;            return(OK);        case MOS6_CAPBD:            value->rValue = here->MOS6capbd;            value->rValue *= here->MOS6m;            return(OK);        case MOS6_CAPBS:            value->rValue = here->MOS6capbs;            value->rValue *= here->MOS6m;            return(OK);        case MOS6_CAPZEROBIASBD:            value->rValue = here->MOS6Cbd;            value->rValue *= here->MOS6m;            return(OK);        case MOS6_CAPZEROBIASBDSW:            value->rValue = here->MOS6Cbdsw;            value->rValue *= here->MOS6m;            return(OK);        case MOS6_CAPZEROBIASBS:            value->rValue = here->MOS6Cbs;            value->rValue *= here->MOS6m;            return(OK);        case MOS6_CAPZEROBIASBSSW:            value->rValue = here->MOS6Cbssw;            value->rValue *= here->MOS6m;            return(OK);        case MOS6_VBD:            value->rValue = *(ckt->CKTstate0 + here->MOS6vbd);            return(OK);        case MOS6_VBS:            value->rValue = *(ckt->CKTstate0 + here->MOS6vbs);            return(OK);        case MOS6_VGS:            value->rValue = *(ckt->CKTstate0 + here->MOS6vgs);            return(OK);        case MOS6_VDS:            value->rValue = *(ckt->CKTstate0 + here->MOS6vds);            return(OK);        case MOS6_CAPGS:            value->rValue = 2* *(ckt->CKTstate0 + here->MOS6capgs);            /* add overlap capacitance */            value->rValue += (here->sMOS6modPtr->MOS6gateSourceOverlapCapFactor)                             * (here->MOS6w);            value->rValue *= here->MOS6m;            return(OK);        case MOS6_QGS:            value->rValue = *(ckt->CKTstate0 + here->MOS6qgs);            value->rValue *= here->MOS6m;            return(OK);        case MOS6_CQGS:            value->rValue = *(ckt->CKTstate0 + here->MOS6cqgs);            value->rValue *= here->MOS6m;            return(OK);        case MOS6_CAPGD:            value->rValue = 2* *(ckt->CKTstate0 + here->MOS6capgd);            /* add overlap capacitance */            value->rValue += (here->sMOS6modPtr->MOS6gateSourceOverlapCapFactor)                             * (here->MOS6w);            value->rValue *= here->MOS6m;            return(OK);        case MOS6_QGD:            value->rValue = *(ckt->CKTstate0 + here->MOS6qgd);            value->rValue *= here->MOS6m;            return(OK);        case MOS6_CQGD:            value->rValue = *(ckt->CKTstate0 + here->MOS6cqgd);            value->rValue *= here->MOS6m;            return(OK);

⌨️ 快捷键说明

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