📄 mos2acld.c
字号:
/**********Copyright 1990 Regents of the University of California. All rights reserved.Author: 1985 Thomas L. Quarles**********//* */#include "spice.h"#include <stdio.h>#include "cktdefs.h"#include "mos2defs.h"#include "sperror.h"#include "suffix.h"intMOS2acLoad(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt;{ register MOS2model *model = (MOS2model *)inModel; register MOS2instance *here; int xnrm; int xrev; double xgs; double xgd; double xgb; double xbd; double xbs; double capgs; double capgd; double capgb; double GateBulkOverlapCap; double GateDrainOverlapCap; double GateSourceOverlapCap; double EffectiveLength; for( ; model != NULL; model = model->MOS2nextModel) { for(here = model->MOS2instances; here!= NULL; here = here->MOS2nextInstance) { if (here->MOS2owner != ARCHme) continue; if (here->MOS2mode < 0) { xnrm=0; xrev=1; } else { xnrm=1; xrev=0; } /* * meyer's model parameters */ EffectiveLength=here->MOS2l - 2*model->MOS2latDiff; GateSourceOverlapCap = model->MOS2gateSourceOverlapCapFactor * here->MOS2w; GateDrainOverlapCap = model->MOS2gateDrainOverlapCapFactor * here->MOS2w; GateBulkOverlapCap = model->MOS2gateBulkOverlapCapFactor * EffectiveLength; capgs = ( *(ckt->CKTstate0+here->MOS2capgs)+ *(ckt->CKTstate0+here->MOS2capgs) + GateSourceOverlapCap ); capgd = ( *(ckt->CKTstate0+here->MOS2capgd)+ *(ckt->CKTstate0+here->MOS2capgd) + GateDrainOverlapCap ); capgb = ( *(ckt->CKTstate0+here->MOS2capgb)+ *(ckt->CKTstate0+here->MOS2capgb) + GateBulkOverlapCap ); xgs = capgs * ckt->CKTomega; xgd = capgd * ckt->CKTomega; xgb = capgb * ckt->CKTomega; xbd = here->MOS2capbd * ckt->CKTomega; xbs = here->MOS2capbs * ckt->CKTomega; /* * load matrix */ *(here->MOS2GgPtr +1) += xgd+xgs+xgb; *(here->MOS2BbPtr +1) += xgb+xbd+xbs; *(here->MOS2DPdpPtr +1) += xgd+xbd; *(here->MOS2SPspPtr +1) += xgs+xbs; *(here->MOS2GbPtr +1) -= xgb; *(here->MOS2GdpPtr +1) -= xgd; *(here->MOS2GspPtr +1) -= xgs; *(here->MOS2BgPtr +1) -= xgb; *(here->MOS2BdpPtr +1) -= xbd; *(here->MOS2BspPtr +1) -= xbs; *(here->MOS2DPgPtr +1) -= xgd; *(here->MOS2DPbPtr +1) -= xbd; *(here->MOS2SPgPtr +1) -= xgs; *(here->MOS2SPbPtr +1) -= xbs; *(here->MOS2DdPtr) += here->MOS2drainConductance; *(here->MOS2SsPtr) += here->MOS2sourceConductance; *(here->MOS2BbPtr) += here->MOS2gbd+here->MOS2gbs; *(here->MOS2DPdpPtr) += here->MOS2drainConductance+ here->MOS2gds+here->MOS2gbd+ xrev*(here->MOS2gm+here->MOS2gmbs); *(here->MOS2SPspPtr) += here->MOS2sourceConductance+ here->MOS2gds+here->MOS2gbs+ xnrm*(here->MOS2gm+here->MOS2gmbs); *(here->MOS2DdpPtr) -= here->MOS2drainConductance; *(here->MOS2SspPtr) -= here->MOS2sourceConductance; *(here->MOS2BdpPtr) -= here->MOS2gbd; *(here->MOS2BspPtr) -= here->MOS2gbs; *(here->MOS2DPdPtr) -= here->MOS2drainConductance; *(here->MOS2DPgPtr) += (xnrm-xrev)*here->MOS2gm; *(here->MOS2DPbPtr) += -here->MOS2gbd+(xnrm-xrev)*here->MOS2gmbs; *(here->MOS2DPspPtr) -= here->MOS2gds+ xnrm*(here->MOS2gm+here->MOS2gmbs); *(here->MOS2SPgPtr) -= (xnrm-xrev)*here->MOS2gm; *(here->MOS2SPsPtr) -= here->MOS2sourceConductance; *(here->MOS2SPbPtr) -= here->MOS2gbs+(xnrm-xrev)*here->MOS2gmbs; *(here->MOS2SPdpPtr) -= here->MOS2gds+ xrev*(here->MOS2gm+here->MOS2gmbs); } } return(OK);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -