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

📄 mos1acld.c

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 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 "mos1defs.h"#include "sperror.h"#include "suffix.h"intMOS1acLoad(inModel,ckt)    GENmodel *inModel;    register CKTcircuit *ckt;{    register MOS1model *model = (MOS1model*)inModel;    register MOS1instance *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->MOS1nextModel) {        for(here = model->MOS1instances; here!= NULL;                here = here->MOS1nextInstance) {	    if (here->MOS1owner != ARCHme) continue;                    if (here->MOS1mode < 0) {                xnrm=0;                xrev=1;            } else {                xnrm=1;                xrev=0;            }            /*             *     meyer's model parameters             */            EffectiveLength=here->MOS1l - 2*model->MOS1latDiff;            GateSourceOverlapCap = model->MOS1gateSourceOverlapCapFactor *                     here->MOS1w;            GateDrainOverlapCap = model->MOS1gateDrainOverlapCapFactor *                     here->MOS1w;            GateBulkOverlapCap = model->MOS1gateBulkOverlapCapFactor *                     EffectiveLength;            capgs = ( *(ckt->CKTstate0+here->MOS1capgs)+                       *(ckt->CKTstate0+here->MOS1capgs) +                      GateSourceOverlapCap );            capgd = ( *(ckt->CKTstate0+here->MOS1capgd)+                       *(ckt->CKTstate0+here->MOS1capgd) +                      GateDrainOverlapCap );            capgb = ( *(ckt->CKTstate0+here->MOS1capgb)+                       *(ckt->CKTstate0+here->MOS1capgb) +                      GateBulkOverlapCap );            xgs = capgs * ckt->CKTomega;            xgd = capgd * ckt->CKTomega;            xgb = capgb * ckt->CKTomega;            xbd  = here->MOS1capbd * ckt->CKTomega;            xbs  = here->MOS1capbs * ckt->CKTomega;            /*             *    load matrix             */            *(here->MOS1GgPtr +1) += xgd+xgs+xgb;            *(here->MOS1BbPtr +1) += xgb+xbd+xbs;            *(here->MOS1DPdpPtr +1) += xgd+xbd;            *(here->MOS1SPspPtr +1) += xgs+xbs;            *(here->MOS1GbPtr +1) -= xgb;            *(here->MOS1GdpPtr +1) -= xgd;            *(here->MOS1GspPtr +1) -= xgs;            *(here->MOS1BgPtr +1) -= xgb;            *(here->MOS1BdpPtr +1) -= xbd;            *(here->MOS1BspPtr +1) -= xbs;            *(here->MOS1DPgPtr +1) -= xgd;            *(here->MOS1DPbPtr +1) -= xbd;            *(here->MOS1SPgPtr +1) -= xgs;            *(here->MOS1SPbPtr +1) -= xbs;            *(here->MOS1DdPtr) += here->MOS1drainConductance;            *(here->MOS1SsPtr) += here->MOS1sourceConductance;            *(here->MOS1BbPtr) += here->MOS1gbd+here->MOS1gbs;            *(here->MOS1DPdpPtr) += here->MOS1drainConductance+                    here->MOS1gds+here->MOS1gbd+                    xrev*(here->MOS1gm+here->MOS1gmbs);            *(here->MOS1SPspPtr) += here->MOS1sourceConductance+                    here->MOS1gds+here->MOS1gbs+                    xnrm*(here->MOS1gm+here->MOS1gmbs);            *(here->MOS1DdpPtr) -= here->MOS1drainConductance;            *(here->MOS1SspPtr) -= here->MOS1sourceConductance;            *(here->MOS1BdpPtr) -= here->MOS1gbd;            *(here->MOS1BspPtr) -= here->MOS1gbs;            *(here->MOS1DPdPtr) -= here->MOS1drainConductance;            *(here->MOS1DPgPtr) += (xnrm-xrev)*here->MOS1gm;            *(here->MOS1DPbPtr) += -here->MOS1gbd+(xnrm-xrev)*here->MOS1gmbs;            *(here->MOS1DPspPtr) -= here->MOS1gds+                    xnrm*(here->MOS1gm+here->MOS1gmbs);            *(here->MOS1SPgPtr) -= (xnrm-xrev)*here->MOS1gm;            *(here->MOS1SPsPtr) -= here->MOS1sourceConductance;            *(here->MOS1SPbPtr) -= here->MOS1gbs+(xnrm-xrev)*here->MOS1gmbs;            *(here->MOS1SPdpPtr) -= here->MOS1gds+                    xrev*(here->MOS1gm+here->MOS1gmbs);        }    }    return(OK);}

⌨️ 快捷键说明

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