📄 mos2ask.c
字号:
/**********Copyright 1990 Regents of the University of California. All rights reserved.Author: 1987 Mathew Lew and Thomas L. Quarles**********/#include "spice.h"#include <stdio.h>#include "const.h"#include "ifsim.h"#include "cktdefs.h"#include "devdefs.h"#include "mos2defs.h"#include "sperror.h"#include "util.h"#include "suffix.h"/*ARGSUSED*/intMOS2ask(ckt,inst,which,value,select) CKTcircuit *ckt; GENinstance *inst; int which; IFvalue *value; IFvalue *select;{ MOS2instance *here = (MOS2instance *)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 MOS2_TEMP: value->rValue = here->MOS2temp-CONSTCtoK; return(OK); case MOS2_CGS: value->rValue = *(ckt->CKTstate0 + here->MOS2capgs); return(OK); case MOS2_CGD: value->rValue = *(ckt->CKTstate0 + here->MOS2capgd); return(OK); case MOS2_L: value->rValue = here->MOS2l; return(OK); case MOS2_W: value->rValue = here->MOS2w; return(OK); case MOS2_AS: value->rValue = here->MOS2sourceArea; return(OK); case MOS2_AD: value->rValue = here->MOS2drainArea; return(OK); case MOS2_PS: value->rValue = here->MOS2sourcePerimiter; return(OK); case MOS2_PD: value->rValue = here->MOS2drainPerimiter; return(OK); case MOS2_NRS: value->rValue = here->MOS2sourceSquares; return(OK); case MOS2_NRD: value->rValue = here->MOS2drainSquares; return(OK); case MOS2_OFF: value->rValue = here->MOS2off; return(OK); case MOS2_IC_VBS: value->rValue = here->MOS2icVBS; return(OK); case MOS2_IC_VDS: value->rValue = here->MOS2icVDS; return(OK); case MOS2_IC_VGS: value->rValue = here->MOS2icVGS; return(OK); case MOS2_DNODE: value->iValue = here->MOS2dNode; return(OK); case MOS2_GNODE: value->iValue = here->MOS2gNode; return(OK); case MOS2_SNODE: value->iValue = here->MOS2sNode; return(OK); case MOS2_BNODE: value->iValue = here->MOS2bNode; return(OK); case MOS2_DNODEPRIME: value->iValue = here->MOS2dNodePrime; return(OK); case MOS2_SNODEPRIME: value->iValue = here->MOS2sNodePrime; return(OK); case MOS2_SOURCECONDUCT: value->rValue = here->MOS2sourceConductance; return(OK); case MOS2_DRAINCONDUCT: value->rValue = here->MOS2drainConductance; return(OK); case MOS2_SOURCERESIST: if (here->MOS2sNodePrime != here->MOS2sNode) value->rValue = 1.0 / here->MOS2sourceConductance; else value->rValue = 0.0; return(OK); case MOS2_DRAINRESIST: if (here->MOS2dNodePrime != here->MOS2dNode) value->rValue = 1.0 / here->MOS2drainConductance; else value->rValue = 0.0; return(OK); case MOS2_VON: value->rValue = here->MOS2von; return(OK); case MOS2_VDSAT: value->rValue = here->MOS2vdsat; return(OK); case MOS2_SOURCEVCRIT: value->rValue = here->MOS2sourceVcrit; return(OK); case MOS2_DRAINVCRIT: value->rValue = here->MOS2drainVcrit; return(OK); case MOS2_CD: value->rValue = here->MOS2cd; return(OK); case MOS2_CBS: value->rValue = here->MOS2cbs; return(OK); case MOS2_CBD: value->rValue = here->MOS2cbd; return(OK); case MOS2_GMBS: value->rValue = here->MOS2gmbs; return(OK); case MOS2_GM: value->rValue = here->MOS2gm; return(OK); case MOS2_GDS: value->rValue = here->MOS2gds; return(OK); case MOS2_GBD: value->rValue = here->MOS2gbd; return(OK); case MOS2_GBS: value->rValue = here->MOS2gbs; return(OK); case MOS2_CAPBD: value->rValue = here->MOS2capbd; return(OK); case MOS2_CAPBS: value->rValue = here->MOS2capbs; return(OK); case MOS2_CAPZEROBIASBD: value->rValue = here->MOS2Cbd; return(OK); case MOS2_CAPZEROBIASBDSW: value->rValue = here->MOS2Cbdsw; return(OK); case MOS2_CAPZEROBIASBS: value->rValue = here->MOS2Cbs; return(OK); case MOS2_CAPZEROBIASBSSW: value->rValue = here->MOS2Cbssw; return(OK); case MOS2_VBD: value->rValue = *(ckt->CKTstate0 + here->MOS2vbd); return(OK); case MOS2_VBS: value->rValue = *(ckt->CKTstate0 + here->MOS2vbs); return(OK); case MOS2_VGS: value->rValue = *(ckt->CKTstate0 + here->MOS2vgs); return(OK); case MOS2_VDS: value->rValue = *(ckt->CKTstate0 + here->MOS2vds); return(OK); case MOS2_CAPGS: value->rValue = *(ckt->CKTstate0 + here->MOS2capgs); return(OK); case MOS2_QGS: value->rValue = *(ckt->CKTstate0 + here->MOS2qgs); return(OK); case MOS2_CQGS: value->rValue = *(ckt->CKTstate0 + here->MOS2cqgs); return(OK); case MOS2_CAPGD: value->rValue = *(ckt->CKTstate0 + here->MOS2capgd); return(OK); case MOS2_QGD: value->rValue = *(ckt->CKTstate0 + here->MOS2qgd); return(OK); case MOS2_CQGD: value->rValue = *(ckt->CKTstate0 + here->MOS2cqgd); return(OK); case MOS2_CAPGB: value->rValue = *(ckt->CKTstate0 + here->MOS2capgb); return(OK); case MOS2_QGB: value->rValue = *(ckt->CKTstate0 + here->MOS2qgb); return(OK); case MOS2_CQGB: value->rValue = *(ckt->CKTstate0 + here->MOS2cqgb); return(OK); case MOS2_QBD: value->rValue = *(ckt->CKTstate0 + here->MOS2qbd); return(OK); case MOS2_CQBD: value->rValue = *(ckt->CKTstate0 + here->MOS2cqbd);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -