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

📄 b3v1spzld.c

📁 ngspice又一个电子CAD仿真软件代码.功能更全
💻 C
字号:
/**********Copyright 1990 Regents of the University of California.  All rights reserved.Author: 1995 Min-Chie Jeng and Mansun Chan.Modified by Paolo Nenzi 2002File: b3v1pzld.c**********/#include "ngspice.h"#include "cktdefs.h"#include "complex.h"#include "sperror.h"#include "bsim3v1sdef.h"#include "suffix.h"intBSIM3v1SpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s){BSIM3v1Smodel *model = (BSIM3v1Smodel*)inModel;BSIM3v1Sinstance *here;double xcggb, xcgdb, xcgsb, xcbgb, xcbdb, xcbsb, xcddb, xcssb, xcdgb;double gdpr, gspr, gds, gbd, gbs, capbd, capbs, xcsgb, xcdsb, xcsdb;double cggb, cgdb, cgsb, cbgb, cbdb, cbsb, cddb, cdgb, cdsb;double GSoverlapCap, GDoverlapCap, GBoverlapCap;double FwdSum, RevSum, Gm, Gmbs;    for (; model != NULL; model = model->BSIM3v1SnextModel)     {    for (here = model->BSIM3v1Sinstances; here!= NULL;              here = here->BSIM3v1SnextInstance) 	 {              if (here->BSIM3v1Sowner != ARCHme) 	            continue;		                if (here->BSIM3v1Smode >= 0) 	    {   Gm = here->BSIM3v1Sgm;		Gmbs = here->BSIM3v1Sgmbs;		FwdSum = Gm + Gmbs;		RevSum = 0.0;                cggb = here->BSIM3v1Scggb;                cgsb = here->BSIM3v1Scgsb;                cgdb = here->BSIM3v1Scgdb;                cbgb = here->BSIM3v1Scbgb;                cbsb = here->BSIM3v1Scbsb;                cbdb = here->BSIM3v1Scbdb;                cdgb = here->BSIM3v1Scdgb;                cdsb = here->BSIM3v1Scdsb;                cddb = here->BSIM3v1Scddb;            }	    else	    {   Gm = -here->BSIM3v1Sgm;		Gmbs = -here->BSIM3v1Sgmbs;		FwdSum = 0.0;		RevSum = -Gm - Gmbs;                cggb = here->BSIM3v1Scggb;                cgsb = here->BSIM3v1Scgdb;                cgdb = here->BSIM3v1Scgsb;                cbgb = here->BSIM3v1Scbgb;                cbsb = here->BSIM3v1Scbdb;                cbdb = here->BSIM3v1Scbsb;                cdgb = -(here->BSIM3v1Scdgb + cggb + cbgb);                cdsb = -(here->BSIM3v1Scddb + cgsb + cbsb);                cddb = -(here->BSIM3v1Scdsb + cgdb + cbdb);            }            gdpr=here->BSIM3v1SdrainConductance;            gspr=here->BSIM3v1SsourceConductance;            gds= here->BSIM3v1Sgds;            gbd= here->BSIM3v1Sgbd;            gbs= here->BSIM3v1Sgbs;            capbd= here->BSIM3v1Scapbd;            capbs= here->BSIM3v1Scapbs;	    GSoverlapCap = here->BSIM3v1Scgso;	    GDoverlapCap = here->BSIM3v1Scgdo;	    GBoverlapCap = here->pParam->BSIM3v1Scgbo;            xcdgb = (cdgb - GDoverlapCap);            xcddb = (cddb + capbd + GDoverlapCap);            xcdsb = cdsb;            xcsgb = -(cggb + cbgb + cdgb + GSoverlapCap);            xcsdb = -(cgdb + cbdb + cddb);            xcssb = (capbs + GSoverlapCap - (cgsb+cbsb+cdsb));            xcggb = (cggb + GDoverlapCap + GSoverlapCap + GBoverlapCap);            xcgdb = (cgdb - GDoverlapCap);            xcgsb = (cgsb - GSoverlapCap);            xcbgb = (cbgb - GBoverlapCap);            xcbdb = (cbdb - capbd);            xcbsb = (cbsb - capbs);            *(here->BSIM3v1SGgPtr ) += xcggb * s->real;            *(here->BSIM3v1SGgPtr +1) += xcggb * s->imag;            *(here->BSIM3v1SBbPtr ) += (-xcbgb-xcbdb-xcbsb) * s->real;            *(here->BSIM3v1SBbPtr +1) += (-xcbgb-xcbdb-xcbsb) * s->imag;            *(here->BSIM3v1SDPdpPtr ) += xcddb * s->real;            *(here->BSIM3v1SDPdpPtr +1) += xcddb * s->imag;            *(here->BSIM3v1SSPspPtr ) += xcssb * s->real;            *(here->BSIM3v1SSPspPtr +1) += xcssb * s->imag;            *(here->BSIM3v1SGbPtr ) += (-xcggb-xcgdb-xcgsb) * s->real;            *(here->BSIM3v1SGbPtr +1) += (-xcggb-xcgdb-xcgsb) * s->imag;            *(here->BSIM3v1SGdpPtr ) += xcgdb * s->real;            *(here->BSIM3v1SGdpPtr +1) += xcgdb * s->imag;            *(here->BSIM3v1SGspPtr ) += xcgsb * s->real;            *(here->BSIM3v1SGspPtr +1) += xcgsb * s->imag;            *(here->BSIM3v1SBgPtr ) += xcbgb * s->real;            *(here->BSIM3v1SBgPtr +1) += xcbgb * s->imag;            *(here->BSIM3v1SBdpPtr ) += xcbdb * s->real;            *(here->BSIM3v1SBdpPtr +1) += xcbdb * s->imag;            *(here->BSIM3v1SBspPtr ) += xcbsb * s->real;            *(here->BSIM3v1SBspPtr +1) += xcbsb * s->imag;            *(here->BSIM3v1SDPgPtr ) += xcdgb * s->real;            *(here->BSIM3v1SDPgPtr +1) += xcdgb * s->imag;            *(here->BSIM3v1SDPbPtr ) += (-xcdgb-xcddb-xcdsb) * s->real;            *(here->BSIM3v1SDPbPtr +1) += (-xcdgb-xcddb-xcdsb) * s->imag;            *(here->BSIM3v1SDPspPtr ) += xcdsb * s->real;            *(here->BSIM3v1SDPspPtr +1) += xcdsb * s->imag;            *(here->BSIM3v1SSPgPtr ) += xcsgb * s->real;            *(here->BSIM3v1SSPgPtr +1) += xcsgb * s->imag;            *(here->BSIM3v1SSPbPtr ) += (-xcsgb-xcsdb-xcssb) * s->real;            *(here->BSIM3v1SSPbPtr +1) += (-xcsgb-xcsdb-xcssb) * s->imag;            *(here->BSIM3v1SSPdpPtr ) += xcsdb * s->real;            *(here->BSIM3v1SSPdpPtr +1) += xcsdb * s->imag;            *(here->BSIM3v1SDdPtr) += gdpr;            *(here->BSIM3v1SSsPtr) += gspr;            *(here->BSIM3v1SBbPtr) += gbd+gbs;            *(here->BSIM3v1SDPdpPtr) += gdpr+gds+gbd+RevSum;            *(here->BSIM3v1SSPspPtr) += gspr+gds+gbs+FwdSum;            *(here->BSIM3v1SDdpPtr) -= gdpr;            *(here->BSIM3v1SSspPtr) -= gspr;            *(here->BSIM3v1SBdpPtr) -= gbd;            *(here->BSIM3v1SBspPtr) -= gbs;            *(here->BSIM3v1SDPdPtr) -= gdpr;            *(here->BSIM3v1SDPgPtr) += Gm;            *(here->BSIM3v1SDPbPtr) -= gbd - Gmbs;            *(here->BSIM3v1SDPspPtr) -= gds + FwdSum;            *(here->BSIM3v1SSPgPtr) -= Gm;            *(here->BSIM3v1SSPsPtr) -= gspr;            *(here->BSIM3v1SSPbPtr) -= gbs + Gmbs;            *(here->BSIM3v1SSPdpPtr) -= gds + RevSum;        }    }    return(OK);}

⌨️ 快捷键说明

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