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

📄 b3v1sacld.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: b3v1sacld.c**********/#include "ngspice.h"#include "cktdefs.h"#include "bsim3v1sdef.h"#include "sperror.h"#include "suffix.h"intBSIM3v1SacLoad(GENmodel *inModel, CKTcircuit *ckt){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, omega;double GSoverlapCap, GDoverlapCap, GBoverlapCap, FwdSum, RevSum, Gm, Gmbs;double dxpart, sxpart, cqgb, cqdb, cqsb, cqbb, xcqgb, xcqdb, xcqsb, xcqbb;    omega = ckt->CKTomega;    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;                  cqgb = here->BSIM3v1Scqgb;                  cqdb = here->BSIM3v1Scqdb;                  cqsb = here->BSIM3v1Scqsb;                  cqbb = here->BSIM3v1Scqbb;                  sxpart = 0.6;                  dxpart = 0.4;              } 	      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);                  cqgb = here->BSIM3v1Scqgb;                  cqdb = here->BSIM3v1Scqsb;                  cqsb = here->BSIM3v1Scqdb;                  cqbb = here->BSIM3v1Scqbb;                  sxpart = 0.4;                  dxpart = 0.6;              }              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) * omega;              xcddb = (cddb + capbd + GDoverlapCap) * omega;              xcdsb = cdsb * omega;              xcsgb = -(cggb + cbgb + cdgb + GSoverlapCap) * omega;              xcsdb = -(cgdb + cbdb + cddb) * omega;              xcssb = (capbs + GSoverlapCap - (cgsb + cbsb + cdsb)) * omega;              xcggb = (cggb + GDoverlapCap + GSoverlapCap + GBoverlapCap)		    * omega;              xcgdb = (cgdb - GDoverlapCap ) * omega;              xcgsb = (cgsb - GSoverlapCap) * omega;              xcbgb = (cbgb - GBoverlapCap) * omega;              xcbdb = (cbdb - capbd ) * omega;              xcbsb = (cbsb - capbs ) * omega;              xcqgb = cqgb * omega;              xcqdb = cqdb * omega;              xcqsb = cqsb * omega;              xcqbb = cqbb * omega;              *(here->BSIM3v1SGgPtr +1) += xcggb;              *(here->BSIM3v1SBbPtr +1) -= xcbgb + xcbdb + xcbsb;              *(here->BSIM3v1SDPdpPtr +1) += xcddb;              *(here->BSIM3v1SSPspPtr +1) += xcssb;              *(here->BSIM3v1SGbPtr +1) -= xcggb + xcgdb + xcgsb;              *(here->BSIM3v1SGdpPtr +1) += xcgdb;              *(here->BSIM3v1SGspPtr +1) += xcgsb;              *(here->BSIM3v1SBgPtr +1) += xcbgb;              *(here->BSIM3v1SBdpPtr +1) += xcbdb;              *(here->BSIM3v1SBspPtr +1) += xcbsb;              *(here->BSIM3v1SDPgPtr +1) += xcdgb;              *(here->BSIM3v1SDPbPtr +1) -= xcdgb + xcddb + xcdsb;              *(here->BSIM3v1SDPspPtr +1) += xcdsb;              *(here->BSIM3v1SSPgPtr +1) += xcsgb;              *(here->BSIM3v1SSPbPtr +1) -= xcsgb + xcsdb + xcssb;              *(here->BSIM3v1SSPdpPtr +1) += xcsdb;               *(here->BSIM3v1SQqPtr +1) += omega;              *(here->BSIM3v1SQgPtr +1) -= xcqgb;              *(here->BSIM3v1SQdpPtr +1) -= xcqdb;              *(here->BSIM3v1SQspPtr +1) -= xcqsb;              *(here->BSIM3v1SQbPtr +1) -= xcqbb;              *(here->BSIM3v1SDdPtr) += gdpr;              *(here->BSIM3v1SSsPtr) += gspr;              *(here->BSIM3v1SBbPtr) += gbd + gbs;              *(here->BSIM3v1SDPdpPtr) += gdpr + gds + gbd + RevSum + dxpart*here->BSIM3v1Sgtd;              *(here->BSIM3v1SSPspPtr) += gspr + gds + gbs + FwdSum + sxpart*here->BSIM3v1Sgts;              *(here->BSIM3v1SDdpPtr) -= gdpr;              *(here->BSIM3v1SSspPtr) -= gspr;              *(here->BSIM3v1SBdpPtr) -= gbd;              *(here->BSIM3v1SBspPtr) -= gbs;              *(here->BSIM3v1SDPdPtr) -= gdpr;              *(here->BSIM3v1SDPgPtr) += Gm + dxpart * here->BSIM3v1Sgtg;              *(here->BSIM3v1SDPbPtr) -= gbd - Gmbs - dxpart * here->BSIM3v1Sgtb;              *(here->BSIM3v1SDPspPtr) -= gds + FwdSum - dxpart * here->BSIM3v1Sgts;              *(here->BSIM3v1SSPgPtr) -= Gm - sxpart * here->BSIM3v1Sgtg;              *(here->BSIM3v1SSPsPtr) -= gspr;              *(here->BSIM3v1SSPbPtr) -= gbs + Gmbs - sxpart * here->BSIM3v1Sgtg;              *(here->BSIM3v1SSPdpPtr) -= gds + RevSum - sxpart * here->BSIM3v1Sgtd;              *(here->BSIM3v1SGgPtr) -= here->BSIM3v1Sgtg;              *(here->BSIM3v1SGbPtr) -=  here->BSIM3v1Sgtb;              *(here->BSIM3v1SGdpPtr) -= here->BSIM3v1Sgtd;              *(here->BSIM3v1SGspPtr) -= here->BSIM3v1Sgts;              *(here->BSIM3v1SQqPtr) += here->BSIM3v1Sgtau;               *(here->BSIM3v1SDPqPtr) += dxpart * here->BSIM3v1Sgtau;              *(here->BSIM3v1SSPqPtr) += sxpart * here->BSIM3v1Sgtau;              *(here->BSIM3v1SGqPtr) -=  here->BSIM3v1Sgtau;               *(here->BSIM3v1SQgPtr) +=  here->BSIM3v1Sgtg;              *(here->BSIM3v1SQdpPtr) += here->BSIM3v1Sgtd;              *(here->BSIM3v1SQspPtr) += here->BSIM3v1Sgts;              *(here->BSIM3v1SQbPtr) += here->BSIM3v1Sgtb;        }    }    return(OK);}

⌨️ 快捷键说明

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