📄 b3soiddacld.c
字号:
/**********Copyright 1999 Regents of the University of California. All rights reserved.Author: Weidong Liu and Pin Su Feb 1999Author: 1998 Samuel Fung, Dennis Sinitsky and Stephen TangFile: b3soiddacld.c 98/5/01Modified by Paolo Nenzi 2002**********//* * Revision 2.1 99/9/27 Pin Su * BSIMDD2.1 release */#include "ngspice.h"#include "cktdefs.h"#include "b3soidddef.h"#include "sperror.h"#include "suffix.h"intB3SOIDDacLoad(GENmodel *inModel, CKTcircuit *ckt){B3SOIDDmodel *model = (B3SOIDDmodel*)inModel;B3SOIDDinstance *here;int selfheat;double xcggb, xcgdb, xcgsb, xcgeb, xcgT;double xcdgb, xcddb, xcdsb, xcdeb, xcdT;double xcsgb, xcsdb, xcssb, xcseb, xcsT;double xcbgb, xcbdb, xcbsb, xcbeb, xcbT;double xcegb, xcedb, xcesb, xceeb, xceT;double gdpr, gspr, gds;double cggb, cgdb, cgsb, cgeb, cgT;double cdgb, cddb, cdsb, cdeb, cdT;double cbgb, cbdb, cbsb, cbeb, cbT;double cegb, cedb, cesb, ceeb, ceT;double GSoverlapCap, GDoverlapCap, GEoverlapCap, FwdSum, RevSum, Gm, Gmbs, Gme, GmT;double omega;double dxpart, sxpart;double gbbg, gbbdp, gbbb, gbbe, gbbp, gbbsp, gbbT;double gddpg, gddpdp, gddpsp, gddpb, gddpe, gddpT;double gsspg, gsspdp, gsspsp, gsspb, gsspe, gsspT;double gppg, gppdp, gppb, gppe, gppp, gppsp, gppT;double xcTt, cTt, gTtt, gTtg, gTtb, gTte, gTtdp, gTtsp;FILE *fpdebug = NULL;double m; omega = ckt->CKTomega; for (; model != NULL; model = model->B3SOIDDnextModel) { for (here = model->B3SOIDDinstances; here!= NULL; here = here->B3SOIDDnextInstance) { if (here->B3SOIDDowner != ARCHme) continue; selfheat = (model->B3SOIDDshMod == 1) && (here->B3SOIDDrth0 != 0.0); if (here->B3SOIDDdebugMod > 2) { fpdebug = fopen("b3soiddac.log", "a"); fprintf(fpdebug, ".......omega=%.5e\n", omega); } if (here->B3SOIDDmode >= 0) { Gm = here->B3SOIDDgm; Gmbs = here->B3SOIDDgmbs; Gme = here->B3SOIDDgme; GmT = model->B3SOIDDtype * here->B3SOIDDgmT; FwdSum = Gm + Gmbs + Gme; RevSum = 0.0; cbgb = here->B3SOIDDcbgb; cbsb = here->B3SOIDDcbsb; cbdb = here->B3SOIDDcbdb; cbeb = here->B3SOIDDcbeb; cbT = model->B3SOIDDtype * here->B3SOIDDcbT; cegb = here->B3SOIDDcegb; cesb = here->B3SOIDDcesb; cedb = here->B3SOIDDcedb; ceeb = here->B3SOIDDceeb; ceT = model->B3SOIDDtype * here->B3SOIDDceT; cggb = here->B3SOIDDcggb; cgsb = here->B3SOIDDcgsb; cgdb = here->B3SOIDDcgdb; cgeb = here->B3SOIDDcgeb; cgT = model->B3SOIDDtype * here->B3SOIDDcgT; cdgb = here->B3SOIDDcdgb; cdsb = here->B3SOIDDcdsb; cddb = here->B3SOIDDcddb; cdeb = here->B3SOIDDcdeb; cdT = model->B3SOIDDtype * here->B3SOIDDcdT; cTt = here->pParam->B3SOIDDcth; gbbg = -here->B3SOIDDgbgs; gbbdp = -here->B3SOIDDgbds; gbbb = -here->B3SOIDDgbbs; gbbe = -here->B3SOIDDgbes; gbbp = -here->B3SOIDDgbps; gbbT = -model->B3SOIDDtype * here->B3SOIDDgbT; gbbsp = - ( gbbg + gbbdp + gbbb + gbbe + gbbp); gddpg = -here->B3SOIDDgjdg; gddpdp = -here->B3SOIDDgjdd; gddpb = -here->B3SOIDDgjdb; gddpe = -here->B3SOIDDgjde; gddpT = -model->B3SOIDDtype * here->B3SOIDDgjdT; gddpsp = - ( gddpg + gddpdp + gddpb + gddpe); gsspg = -here->B3SOIDDgjsg; gsspdp = -here->B3SOIDDgjsd; gsspb = -here->B3SOIDDgjsb; gsspe = 0.0; gsspT = -model->B3SOIDDtype * here->B3SOIDDgjsT; gsspsp = - (gsspg + gsspdp + gsspb + gsspe); gppg = -here->B3SOIDDgbpgs; gppdp = -here->B3SOIDDgbpds; gppb = -here->B3SOIDDgbpbs; gppe = -here->B3SOIDDgbpes; gppp = -here->B3SOIDDgbpps; gppT = -model->B3SOIDDtype * here->B3SOIDDgbpT; gppsp = - (gppg + gppdp + gppb + gppe + gppp); gTtg = here->B3SOIDDgtempg; gTtb = here->B3SOIDDgtempb; gTte = here->B3SOIDDgtempe; gTtdp = here->B3SOIDDgtempd; gTtt = here->B3SOIDDgtempT; gTtsp = - (gTtg + gTtb + gTte + gTtdp); sxpart = 0.6; dxpart = 0.4; } else { Gm = -here->B3SOIDDgm; Gmbs = -here->B3SOIDDgmbs; Gme = -here->B3SOIDDgme; GmT = -model->B3SOIDDtype * here->B3SOIDDgmT; FwdSum = 0.0; RevSum = -Gm - Gmbs - Gme; cdgb = - (here->B3SOIDDcdgb + here->B3SOIDDcggb + here->B3SOIDDcbgb + here->B3SOIDDcegb); cdsb = - (here->B3SOIDDcddb + here->B3SOIDDcgdb + here->B3SOIDDcbdb + here->B3SOIDDcedb); cddb = - (here->B3SOIDDcdsb + here->B3SOIDDcgsb + here->B3SOIDDcbsb + here->B3SOIDDcesb); cdeb = - (here->B3SOIDDcdeb + here->B3SOIDDcgeb + here->B3SOIDDcbeb + here->B3SOIDDceeb); cdT = - model->B3SOIDDtype * (here->B3SOIDDcgT + here->B3SOIDDcbT + here->B3SOIDDcdT + here->B3SOIDDceT); cegb = here->B3SOIDDcegb; cesb = here->B3SOIDDcedb; cedb = here->B3SOIDDcesb; ceeb = here->B3SOIDDceeb; ceT = model->B3SOIDDtype * here->B3SOIDDceT; cggb = here->B3SOIDDcggb; cgsb = here->B3SOIDDcgdb; cgdb = here->B3SOIDDcgsb; cgeb = here->B3SOIDDcgeb; cgT = model->B3SOIDDtype * here->B3SOIDDcgT; cbgb = here->B3SOIDDcbgb; cbsb = here->B3SOIDDcbdb; cbdb = here->B3SOIDDcbsb; cbeb = here->B3SOIDDcbeb; cbT = model->B3SOIDDtype * here->B3SOIDDcbT; cTt = here->pParam->B3SOIDDcth; gbbg = -here->B3SOIDDgbgs; gbbb = -here->B3SOIDDgbbs; gbbe = -here->B3SOIDDgbes; gbbp = -here->B3SOIDDgbps; gbbsp = -here->B3SOIDDgbds; gbbT = -model->B3SOIDDtype * here->B3SOIDDgbT; gbbdp = - ( gbbg + gbbsp + gbbb + gbbe + gbbp); gddpg = -here->B3SOIDDgjsg; gddpsp = -here->B3SOIDDgjsd; gddpb = -here->B3SOIDDgjsb; gddpe = 0.0; gddpT = -model->B3SOIDDtype * here->B3SOIDDgjsT; gddpdp = - (gddpg + gddpsp + gddpb + gddpe); gsspg = -here->B3SOIDDgjdg; gsspsp = -here->B3SOIDDgjdd; gsspb = -here->B3SOIDDgjdb; gsspe = -here->B3SOIDDgjde; gsspT = -model->B3SOIDDtype * here->B3SOIDDgjdT; gsspdp = - ( gsspg + gsspsp + gsspb + gsspe); gppg = -here->B3SOIDDgbpgs; gppsp = -here->B3SOIDDgbpds; gppb = -here->B3SOIDDgbpbs; gppe = -here->B3SOIDDgbpes; gppp = -here->B3SOIDDgbpps; gppT = -model->B3SOIDDtype * here->B3SOIDDgbpT; gppdp = - (gppg + gppsp + gppb + gppe + gppp); gTtt = here->B3SOIDDgtempT; gTtg = here->B3SOIDDgtempg; gTtb = here->B3SOIDDgtempb; gTte = here->B3SOIDDgtempe; gTtdp = here->B3SOIDDgtempd; gTtsp = - (gTtt + gTtg + gTtb + gTte + gTtdp); gTtg = here->B3SOIDDgtempg; gTtb = here->B3SOIDDgtempb; gTte = here->B3SOIDDgtempe; gTtsp = here->B3SOIDDgtempd; gTtt = here->B3SOIDDgtempT; gTtdp = - (gTtg + gTtb + gTte + gTtsp); sxpart = 0.6; sxpart = 0.4; dxpart = 0.6; } gdpr=here->B3SOIDDdrainConductance; gspr=here->B3SOIDDsourceConductance; gds= here->B3SOIDDgds; GSoverlapCap = here->B3SOIDDcgso; GDoverlapCap = here->B3SOIDDcgdo; GEoverlapCap = here->pParam->B3SOIDDcgeo;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -