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

📄 vbicsetup.c

📁 ngspice又一个电子CAD仿真软件代码.功能更全
💻 C
📖 第 1 页 / 共 2 页
字号:
        }        if(!model->VBICdeplCapCoeff1Given) {            model->VBICdeplCapCoeff1 = 0.1;        }        if(!model->VBICfixedCapacitanceCSGiven) {            model->VBICfixedCapacitanceCS = 0.0;        }        if(!model->VBICsgpQBselectorGiven) {            model->VBICsgpQBselector = 0.0;        }        if(!model->VBIChighCurrentBetaRolloffGiven) {            model->VBIChighCurrentBetaRolloff = 0.5;        }        if(!model->VBICtempExpIKFGiven) {            model->VBICtempExpIKF = 0.0;        }        if(!model->VBICtempExpRCXGiven) {            model->VBICtempExpRCX = 0.0;        }        if(!model->VBICtempExpRBXGiven) {            model->VBICtempExpRBX = 0.0;        }        if(!model->VBICtempExpRBPGiven) {            model->VBICtempExpRBP = 0.0;        }        if(!model->VBICsepISRRGiven) {            model->VBICsepISRR = 1.0;        }        if(!model->VBICtempExpXISRGiven) {            model->VBICtempExpXISR = 0.0;        }        if(!model->VBICdearGiven) {            model->VBICdear = 0.0;        }        if(!model->VBICeapGiven) {            model->VBICeap = 1.12;        }        if(!model->VBICvbbeGiven) {            model->VBICvbbe = 0.0;        }        if(!model->VBICnbbeGiven) {            model->VBICnbbe = 1.0;        }        if(!model->VBICibbeGiven) {            model->VBICibbe = 1e-06;        }        if(!model->VBICtvbbe1Given) {            model->VBICtvbbe1 = 0.0;        }        if(!model->VBICtvbbe2Given) {            model->VBICtvbbe2 = 0.0;        }        if(!model->VBICtnbbeGiven) {            model->VBICtnbbe = 0.0;        }        if(!model->VBICebbeGiven) {            model->VBICebbe = 0.0;        }        if(!model->VBIClocTempDiffGiven) {            model->VBIClocTempDiff = 0.0;        }        if(!model->VBICrevVersionGiven) {            model->VBICrevVersion = 1.2;        }        if(!model->VBICrefVersionGiven) {            model->VBICrefVersion = 0.0;        }        /* loop through all the instances of the model */        for (here = model->VBICinstances; here != NULL ;                here=here->VBICnextInstance) {            CKTnode *tmpNode;            IFuid tmpName;	    if (here->VBICowner != ARCHme)		goto matrixpointers;            if(!here->VBICareaGiven) {                here->VBICarea = 1.0;            }            if(!here->VBICmGiven) {                here->VBICm = 1.0;            }            if(!here->VBICdtempGiven) {                here->VBICdtemp = 0.0;            }            here->VBICstate = *states;            *states += VBICnumStates;            if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode & TRANSEN) ){                *states += 8 * (ckt->CKTsenInfo->SENparms);            }matrixpointers:            if(model->VBICextCollResist == 0) {                here->VBICcollCXNode = here->VBICcollNode;            } else if(here->VBICcollCXNode == 0) {                error = CKTmkVolt(ckt,&tmp,here->VBICname,"collector");                if(error) return(error);                here->VBICcollCXNode = tmp->number;                if (ckt->CKTcopyNodesets) {                  if (CKTinst2Node(ckt,here,1,&tmpNode,&tmpName)==OK) {                     if (tmpNode->nsGiven) {                       tmp->nodeset=tmpNode->nodeset;                        tmp->nsGiven=tmpNode->nsGiven;                     }                  }                }            }            if(model->VBICextBaseResist == 0) {                here->VBICbaseBXNode = here->VBICbaseNode;            } else if(here->VBICbaseBXNode == 0){                error = CKTmkVolt(ckt,&tmp,here->VBICname, "base");                if(error) return(error);                here->VBICbaseBXNode = tmp->number;                if (ckt->CKTcopyNodesets) {                  if (CKTinst2Node(ckt,here,2,&tmpNode,&tmpName)==OK) {                     if (tmpNode->nsGiven) {                       tmp->nodeset=tmpNode->nodeset;                        tmp->nsGiven=tmpNode->nsGiven;                      }                  }                }            }            if(model->VBICemitterResist == 0) {                here->VBICemitEINode = here->VBICemitNode;            } else if(here->VBICemitEINode == 0) {                error = CKTmkVolt(ckt,&tmp,here->VBICname, "emitter");                if(error) return(error);                here->VBICemitEINode = tmp->number;                if (ckt->CKTcopyNodesets) {                  if (CKTinst2Node(ckt,here,3,&tmpNode,&tmpName)==OK) {                     if (tmpNode->nsGiven) {                       tmp->nodeset=tmpNode->nodeset;                        tmp->nsGiven=tmpNode->nsGiven;                      }                  }                }            }            if(model->VBICsubstrateResist == 0) {                here->VBICsubsSINode = here->VBICsubsNode;            } else if(here->VBICsubsSINode == 0) {                error = CKTmkVolt(ckt,&tmp,here->VBICname, "substrate");                if(error) return(error);                here->VBICsubsSINode = tmp->number;                if (ckt->CKTcopyNodesets) {                  if (CKTinst2Node(ckt,here,4,&tmpNode,&tmpName)==OK) {                     if (tmpNode->nsGiven) {                       tmp->nodeset=tmpNode->nodeset;                        tmp->nsGiven=tmpNode->nsGiven;                      }                  }                }            }            error = CKTmkVolt(ckt, &tmp, here->VBICname, "collCI");            if(error) return(error);            here->VBICcollCINode = tmp->number;              error = CKTmkVolt(ckt, &tmp, here->VBICname, "baseBP");            if(error) return(error);            here->VBICbaseBPNode = tmp->number;              error = CKTmkVolt(ckt, &tmp, here->VBICname, "baseBI");            if(error) return(error);            here->VBICbaseBINode = tmp->number;              error = CKTmkVolt(ckt, &tmp, here->VBICname, "subsSI");            if(error) return(error);            here->VBICsubsSINode = tmp->number;  /* macro to make elements with built in test for out of memory */#define TSTALLOC(ptr,first,second) \if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\    return(E_NOMEM);\}            TSTALLOC(VBICcollCollPtr,VBICcollNode,VBICcollNode)            TSTALLOC(VBICbaseBasePtr,VBICbaseNode,VBICbaseNode)            TSTALLOC(VBICemitEmitPtr,VBICemitNode,VBICemitNode)            TSTALLOC(VBICsubsSubsPtr,VBICsubsNode,VBICsubsNode)            TSTALLOC(VBICcollCXCollCXPtr,VBICcollCXNode,VBICcollCXNode)            TSTALLOC(VBICcollCICollCIPtr,VBICcollCINode,VBICcollCINode)            TSTALLOC(VBICbaseBXBaseBXPtr,VBICbaseBXNode,VBICbaseBXNode)            TSTALLOC(VBICbaseBIBaseBIPtr,VBICbaseBINode,VBICbaseBINode)            TSTALLOC(VBICemitEIEmitEIPtr,VBICemitEINode,VBICemitEINode)            TSTALLOC(VBICbaseBPBaseBPPtr,VBICbaseBPNode,VBICbaseBPNode)            TSTALLOC(VBICsubsSISubsSIPtr,VBICsubsSINode,VBICsubsSINode)            TSTALLOC(VBICbaseEmitPtr,VBICbaseNode,VBICemitNode)            TSTALLOC(VBICemitBasePtr,VBICemitNode,VBICbaseNode)            TSTALLOC(VBICbaseCollPtr,VBICbaseNode,VBICcollNode)            TSTALLOC(VBICcollBasePtr,VBICcollNode,VBICbaseNode)            TSTALLOC(VBICcollCollCXPtr,VBICcollNode,VBICcollCXNode)            TSTALLOC(VBICbaseBaseBXPtr,VBICbaseNode,VBICbaseBXNode)            TSTALLOC(VBICemitEmitEIPtr,VBICemitNode,VBICemitEINode)            TSTALLOC(VBICsubsSubsSIPtr,VBICsubsNode,VBICsubsSINode)            TSTALLOC(VBICcollCXCollCIPtr,VBICcollCXNode,VBICcollCINode)            TSTALLOC(VBICcollCXBaseBXPtr,VBICcollCXNode,VBICbaseBXNode)            TSTALLOC(VBICcollCXBaseBIPtr,VBICcollCXNode,VBICbaseBINode)            TSTALLOC(VBICcollCXBaseBPPtr,VBICcollCXNode,VBICbaseBPNode)            TSTALLOC(VBICcollCIBaseBIPtr,VBICcollCINode,VBICbaseBINode)            TSTALLOC(VBICcollCIEmitEIPtr,VBICcollCINode,VBICemitEINode)            TSTALLOC(VBICbaseBXBaseBIPtr,VBICbaseBXNode,VBICbaseBINode)            TSTALLOC(VBICbaseBXEmitEIPtr,VBICbaseBXNode,VBICemitEINode)            TSTALLOC(VBICbaseBXBaseBPPtr,VBICbaseBXNode,VBICbaseBPNode)            TSTALLOC(VBICbaseBXSubsSIPtr,VBICbaseBXNode,VBICsubsSINode)            TSTALLOC(VBICbaseBIEmitEIPtr,VBICbaseBINode,VBICemitEINode)            TSTALLOC(VBICbaseBPSubsSIPtr,VBICbaseBPNode,VBICsubsSINode)            TSTALLOC(VBICcollCXCollPtr,VBICcollCXNode,VBICcollNode)            TSTALLOC(VBICbaseBXBasePtr,VBICbaseBXNode,VBICbaseNode)            TSTALLOC(VBICemitEIEmitPtr,VBICemitEINode,VBICemitNode)            TSTALLOC(VBICsubsSISubsPtr,VBICsubsSINode,VBICsubsNode)            TSTALLOC(VBICcollCICollCXPtr,VBICcollCINode,VBICcollCXNode)            TSTALLOC(VBICbaseBICollCXPtr,VBICbaseBINode,VBICcollCXNode)            TSTALLOC(VBICbaseBPCollCXPtr,VBICbaseBPNode,VBICcollCXNode)            TSTALLOC(VBICbaseBXCollCIPtr,VBICbaseBXNode,VBICcollCINode)            TSTALLOC(VBICbaseBICollCIPtr,VBICbaseBINode,VBICcollCINode)            TSTALLOC(VBICemitEICollCIPtr,VBICemitEINode,VBICcollCINode)            TSTALLOC(VBICbaseBPCollCIPtr,VBICbaseBPNode,VBICcollCINode)            TSTALLOC(VBICbaseBIBaseBXPtr,VBICbaseBINode,VBICbaseBXNode)            TSTALLOC(VBICemitEIBaseBXPtr,VBICemitEINode,VBICbaseBXNode)            TSTALLOC(VBICbaseBPBaseBXPtr,VBICbaseBPNode,VBICbaseBXNode)            TSTALLOC(VBICsubsSIBaseBXPtr,VBICsubsSINode,VBICbaseBXNode)            TSTALLOC(VBICemitEIBaseBIPtr,VBICemitEINode,VBICbaseBINode)            TSTALLOC(VBICbaseBPBaseBIPtr,VBICbaseBPNode,VBICbaseBINode)            TSTALLOC(VBICsubsSICollCIPtr,VBICsubsSINode,VBICcollCINode)            TSTALLOC(VBICsubsSIBaseBIPtr,VBICsubsSINode,VBICbaseBINode)            TSTALLOC(VBICsubsSIBaseBPPtr,VBICsubsSINode,VBICbaseBPNode)        }    }    return(OK);}intVBICunsetup(inModel,ckt)    GENmodel *inModel;    CKTcircuit *ckt;{    VBICmodel *model;    VBICinstance *here;    for (model = (VBICmodel *)inModel; model != NULL;	    model = model->VBICnextModel)    {        for (here = model->VBICinstances; here != NULL;                here=here->VBICnextInstance)	{	    if (here->VBICcollCXNode		    && here->VBICcollCXNode != here->VBICcollNode)	    {		CKTdltNNum(ckt, here->VBICcollCXNode);		here->VBICcollCXNode = 0;	    }	    if (here->VBICcollCINode		    && here->VBICcollCINode != here->VBICcollNode)	    {		CKTdltNNum(ckt, here->VBICcollCINode);		here->VBICcollCINode = 0;	    }	    if (here->VBICbaseBXNode		    && here->VBICbaseBXNode != here->VBICbaseNode)	    {		CKTdltNNum(ckt, here->VBICbaseBXNode);		here->VBICbaseBXNode = 0;	    }	    if (here->VBICbaseBINode		    && here->VBICbaseBINode != here->VBICbaseNode)	    {		CKTdltNNum(ckt, here->VBICbaseBINode);		here->VBICbaseBINode = 0;	    }	    if (here->VBICbaseBPNode		    && here->VBICbaseBPNode != here->VBICbaseNode)	    {		CKTdltNNum(ckt, here->VBICbaseBPNode);		here->VBICbaseBPNode = 0;	    }	    if (here->VBICemitEINode		    && here->VBICemitEINode != here->VBICemitNode)	    {		CKTdltNNum(ckt, here->VBICemitEINode);		here->VBICemitEINode = 0;	    }	    if (here->VBICsubsSINode		    && here->VBICsubsSINode != here->VBICsubsNode)	    {		CKTdltNNum(ckt, here->VBICsubsSINode);		here->VBICsubsSINode = 0;	    }	}    }    return OK;}

⌨️ 快捷键说明

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