📄 mos6ask.c
字号:
/**********Copyright 1990 Regents of the University of California. All rights reserved.Author: 1989 Takayasu Sakurai**********/#include "spice.h"#include <stdio.h>#include "const.h"#include "ifsim.h"#include "cktdefs.h"#include "devdefs.h"#include "mos6defs.h"#include "sperror.h"#include "util.h"#include "suffix.h"/*ARGSUSED*/intMOS6ask(ckt,inst,which,value,select) 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_CGS: value->rValue = *(ckt->CKTstate0 + here->MOS6capgs); return(OK); case MOS6_CGD: value->rValue = *(ckt->CKTstate0 + here->MOS6capgd); return(OK); case MOS6_L: value->rValue = here->MOS6l; return(OK); case MOS6_W: value->rValue = here->MOS6w; return(OK); case MOS6_AS: value->rValue = here->MOS6sourceArea; return(OK); case MOS6_AD: value->rValue = here->MOS6drainArea; return(OK); case MOS6_PS: value->rValue = here->MOS6sourcePerimiter; return(OK); case MOS6_PD: value->rValue = here->MOS6drainPerimiter; return(OK); case MOS6_NRS: value->rValue = here->MOS6sourceSquares; return(OK); case MOS6_NRD: value->rValue = here->MOS6drainSquares; 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; return(OK); case MOS6_DRAINCONDUCT: value->rValue = here->MOS6drainConductance; return(OK); case MOS6_SOURCERESIST: if (here->MOS6sNodePrime != here->MOS6sNode) value->rValue = 1.0 / here->MOS6sourceConductance; else value->rValue = 0.0; return(OK); case MOS6_DRAINRESIST: if (here->MOS6dNodePrime != here->MOS6dNode) value->rValue = 1.0 / here->MOS6drainConductance; else value->rValue = 0.0; 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; return(OK); case MOS6_CBS: value->rValue = here->MOS6cbs; return(OK); case MOS6_CBD: value->rValue = here->MOS6cbd; return(OK); case MOS6_GMBS: value->rValue = here->MOS6gmbs; return(OK); case MOS6_GM: value->rValue = here->MOS6gm; return(OK); case MOS6_GDS: value->rValue = here->MOS6gds; return(OK); case MOS6_GBD: value->rValue = here->MOS6gbd; return(OK); case MOS6_GBS: value->rValue = here->MOS6gbs; return(OK); case MOS6_CAPBD: value->rValue = here->MOS6capbd; return(OK); case MOS6_CAPBS: value->rValue = here->MOS6capbs; return(OK); case MOS6_CAPZEROBIASBD: value->rValue = here->MOS6Cbd; return(OK); case MOS6_CAPZEROBIASBDSW: value->rValue = here->MOS6Cbdsw; return(OK); case MOS6_CAPZEROBIASBS: value->rValue = here->MOS6Cbs; return(OK); case MOS6_CAPZEROBIASBSSW: value->rValue = here->MOS6Cbssw; 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 = *(ckt->CKTstate0 + here->MOS6capgs); return(OK); case MOS6_QGS: value->rValue = *(ckt->CKTstate0 + here->MOS6qgs); return(OK); case MOS6_CQGS: value->rValue = *(ckt->CKTstate0 + here->MOS6cqgs); return(OK); case MOS6_CAPGD: value->rValue = *(ckt->CKTstate0 + here->MOS6capgd); return(OK); case MOS6_QGD: value->rValue = *(ckt->CKTstate0 + here->MOS6qgd); return(OK); case MOS6_CQGD: value->rValue = *(ckt->CKTstate0 + here->MOS6cqgd); return(OK); case MOS6_CAPGB: value->rValue = *(ckt->CKTstate0 + here->MOS6capgb); return(OK); case MOS6_QGB: value->rValue = *(ckt->CKTstate0 + here->MOS6qgb); return(OK); case MOS6_CQGB: value->rValue = *(ckt->CKTstate0 + here->MOS6cqgb); return(OK); case MOS6_QBD: value->rValue = *(ckt->CKTstate0 + here->MOS6qbd); return(OK);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -