📄 b3soifdacld.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 TangModified by Pin Su 99/9/27Modified by Paolo Nenzi 2002File: b3soifdacld.c 98/5/01**********//* * Revision 2.1 99/9/27 Pin Su * BSIMFD2.1 release */#include "ngspice.h"#include "cktdefs.h"#include "b3soifddef.h"#include "sperror.h"#include "suffix.h"intB3SOIFDacLoad(GENmodel *inModel, CKTcircuit *ckt){B3SOIFDmodel *model = (B3SOIFDmodel*)inModel;B3SOIFDinstance *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->B3SOIFDnextModel) { for (here = model->B3SOIFDinstances; here!= NULL; here = here->B3SOIFDnextInstance) { if (here->B3SOIFDowner != ARCHme) continue; selfheat = (model->B3SOIFDshMod == 1) && (here->B3SOIFDrth0 != 0.0); if (here->B3SOIFDdebugMod > 2) { fpdebug = fopen("b3soifdac.log", "a"); fprintf(fpdebug, ".......omega=%.5e\n", omega); } if (here->B3SOIFDmode >= 0) { Gm = here->B3SOIFDgm; Gmbs = here->B3SOIFDgmbs; Gme = here->B3SOIFDgme; GmT = model->B3SOIFDtype * here->B3SOIFDgmT; FwdSum = Gm + Gmbs + Gme; RevSum = 0.0; cbgb = here->B3SOIFDcbgb; cbsb = here->B3SOIFDcbsb; cbdb = here->B3SOIFDcbdb; cbeb = here->B3SOIFDcbeb; cbT = model->B3SOIFDtype * here->B3SOIFDcbT; cegb = here->B3SOIFDcegb; cesb = here->B3SOIFDcesb; cedb = here->B3SOIFDcedb; ceeb = here->B3SOIFDceeb; ceT = model->B3SOIFDtype * here->B3SOIFDceT; cggb = here->B3SOIFDcggb; cgsb = here->B3SOIFDcgsb; cgdb = here->B3SOIFDcgdb; cgeb = here->B3SOIFDcgeb; cgT = model->B3SOIFDtype * here->B3SOIFDcgT; cdgb = here->B3SOIFDcdgb; cdsb = here->B3SOIFDcdsb; cddb = here->B3SOIFDcddb; cdeb = here->B3SOIFDcdeb; cdT = model->B3SOIFDtype * here->B3SOIFDcdT; cTt = here->pParam->B3SOIFDcth; gbbg = -here->B3SOIFDgbgs; gbbdp = -here->B3SOIFDgbds; gbbb = -here->B3SOIFDgbbs; gbbe = -here->B3SOIFDgbes; gbbp = -here->B3SOIFDgbps; gbbT = -model->B3SOIFDtype * here->B3SOIFDgbT; gbbsp = - ( gbbg + gbbdp + gbbb + gbbe + gbbp); gddpg = -here->B3SOIFDgjdg; gddpdp = -here->B3SOIFDgjdd; gddpb = -here->B3SOIFDgjdb; gddpe = -here->B3SOIFDgjde; gddpT = -model->B3SOIFDtype * here->B3SOIFDgjdT; gddpsp = - ( gddpg + gddpdp + gddpb + gddpe); gsspg = -here->B3SOIFDgjsg; gsspdp = -here->B3SOIFDgjsd; gsspb = -here->B3SOIFDgjsb; gsspe = 0.0; gsspT = -model->B3SOIFDtype * here->B3SOIFDgjsT; gsspsp = - (gsspg + gsspdp + gsspb + gsspe); gppg = -here->B3SOIFDgbpgs; gppdp = -here->B3SOIFDgbpds; gppb = -here->B3SOIFDgbpbs; gppe = -here->B3SOIFDgbpes; gppp = -here->B3SOIFDgbpps; gppT = -model->B3SOIFDtype * here->B3SOIFDgbpT; gppsp = - (gppg + gppdp + gppb + gppe + gppp); gTtg = here->B3SOIFDgtempg; gTtb = here->B3SOIFDgtempb; gTte = here->B3SOIFDgtempe; gTtdp = here->B3SOIFDgtempd; gTtt = here->B3SOIFDgtempT; gTtsp = - (gTtg + gTtb + gTte + gTtdp); sxpart = 0.6; dxpart = 0.4; } else { Gm = -here->B3SOIFDgm; Gmbs = -here->B3SOIFDgmbs; Gme = -here->B3SOIFDgme; GmT = -model->B3SOIFDtype * here->B3SOIFDgmT; FwdSum = 0.0; RevSum = -Gm - Gmbs - Gme; cdgb = - (here->B3SOIFDcdgb + here->B3SOIFDcggb + here->B3SOIFDcbgb + here->B3SOIFDcegb); cdsb = - (here->B3SOIFDcddb + here->B3SOIFDcgdb + here->B3SOIFDcbdb + here->B3SOIFDcedb); cddb = - (here->B3SOIFDcdsb + here->B3SOIFDcgsb + here->B3SOIFDcbsb + here->B3SOIFDcesb); cdeb = - (here->B3SOIFDcdeb + here->B3SOIFDcgeb + here->B3SOIFDcbeb + here->B3SOIFDceeb); cdT = - model->B3SOIFDtype * (here->B3SOIFDcgT + here->B3SOIFDcbT + here->B3SOIFDcdT + here->B3SOIFDceT); cegb = here->B3SOIFDcegb; cesb = here->B3SOIFDcedb; cedb = here->B3SOIFDcesb; ceeb = here->B3SOIFDceeb; ceT = model->B3SOIFDtype * here->B3SOIFDceT; cggb = here->B3SOIFDcggb; cgsb = here->B3SOIFDcgdb; cgdb = here->B3SOIFDcgsb; cgeb = here->B3SOIFDcgeb; cgT = model->B3SOIFDtype * here->B3SOIFDcgT; cbgb = here->B3SOIFDcbgb; cbsb = here->B3SOIFDcbdb; cbdb = here->B3SOIFDcbsb; cbeb = here->B3SOIFDcbeb; cbT = model->B3SOIFDtype * here->B3SOIFDcbT; cTt = here->pParam->B3SOIFDcth; gbbg = -here->B3SOIFDgbgs; gbbb = -here->B3SOIFDgbbs; gbbe = -here->B3SOIFDgbes; gbbp = -here->B3SOIFDgbps; gbbsp = -here->B3SOIFDgbds; gbbT = -model->B3SOIFDtype * here->B3SOIFDgbT; gbbdp = - ( gbbg + gbbsp + gbbb + gbbe + gbbp); gddpg = -here->B3SOIFDgjsg; gddpsp = -here->B3SOIFDgjsd; gddpb = -here->B3SOIFDgjsb; gddpe = 0.0; gddpT = -model->B3SOIFDtype * here->B3SOIFDgjsT; gddpdp = - (gddpg + gddpsp + gddpb + gddpe); gsspg = -here->B3SOIFDgjdg; gsspsp = -here->B3SOIFDgjdd; gsspb = -here->B3SOIFDgjdb; gsspe = -here->B3SOIFDgjde; gsspT = -model->B3SOIFDtype * here->B3SOIFDgjdT; gsspdp = - ( gsspg + gsspsp + gsspb + gsspe); gppg = -here->B3SOIFDgbpgs; gppsp = -here->B3SOIFDgbpds; gppb = -here->B3SOIFDgbpbs; gppe = -here->B3SOIFDgbpes; gppp = -here->B3SOIFDgbpps; gppT = -model->B3SOIFDtype * here->B3SOIFDgbpT; gppdp = - (gppg + gppsp + gppb + gppe + gppp); gTtt = here->B3SOIFDgtempT; gTtg = here->B3SOIFDgtempg; gTtb = here->B3SOIFDgtempb; gTte = here->B3SOIFDgtempe; gTtdp = here->B3SOIFDgtempd; gTtsp = - (gTtt + gTtg + gTtb + gTte + gTtdp); gTtg = here->B3SOIFDgtempg; gTtb = here->B3SOIFDgtempb; gTte = here->B3SOIFDgtempe; gTtsp = here->B3SOIFDgtempd; gTtt = here->B3SOIFDgtempT; gTtdp = - (gTtg + gTtb + gTte + gTtsp); sxpart = 0.6; sxpart = 0.4;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -