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

📄 b3soifdset.c

📁 ngspice又一个电子CAD仿真软件代码.功能更全
💻 C
📖 第 1 页 / 共 4 页
字号:
	        error = CKTmkVolt(ckt,&tmp,here->B3SOIFDname,"Temp");                if(error) return(error);                   here->B3SOIFDtempNode = tmp->number;            } else {                here->B3SOIFDtempNode = 0;            }/* here for debugging purpose only */            if ((here->B3SOIFDdebugMod > 1) || (here->B3SOIFDdebugMod == -1))            {               /* The real Vbs value */               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Vbs");               if(error) return(error);               here->B3SOIFDvbsNode = tmp->number;                  error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Ids");               if(error) return(error);               here->B3SOIFDidsNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Ic");               if(error) return(error);               here->B3SOIFDicNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Ibs");               if(error) return(error);               here->B3SOIFDibsNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Ibd");               if(error) return(error);               here->B3SOIFDibdNode = tmp->number;                      error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Iii");               if(error) return(error);               here->B3SOIFDiiiNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Igidl");               if(error) return(error);               here->B3SOIFDigidlNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Itun");               if(error) return(error);               here->B3SOIFDitunNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Ibp");               if(error) return(error);               here->B3SOIFDibpNode = tmp->number;                      error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Abeff");               if(error) return(error);               here->B3SOIFDabeffNode = tmp->number;                      error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Vbs0eff");               if(error) return(error);               here->B3SOIFDvbs0effNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Vbseff");               if(error) return(error);               here->B3SOIFDvbseffNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Xc");               if(error) return(error);               here->B3SOIFDxcNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Cbb");               if(error) return(error);               here->B3SOIFDcbbNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Cbd");               if(error) return(error);               here->B3SOIFDcbdNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Cbg");               if(error) return(error);               here->B3SOIFDcbgNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Qbody");               if(error) return(error);               here->B3SOIFDqbNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Qbf");               if(error) return(error);               here->B3SOIFDqbfNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Qjs");               if(error) return(error);               here->B3SOIFDqjsNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Qjd");               if(error) return(error);               here->B3SOIFDqjdNode = tmp->number;               /* clean up last */               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Gm");               if(error) return(error);               here->B3SOIFDgmNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Gmbs");               if(error) return(error);               here->B3SOIFDgmbsNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Gds");               if(error) return(error);               here->B3SOIFDgdsNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Gme");               if(error) return(error);               here->B3SOIFDgmeNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Vbs0teff");               if(error) return(error);               here->B3SOIFDvbs0teffNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Vth");               if(error) return(error);               here->B3SOIFDvthNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Vgsteff");               if(error) return(error);               here->B3SOIFDvgsteffNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Xcsat");               if(error) return(error);               here->B3SOIFDxcsatNode = tmp->number;                      error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Qac0");               if(error) return(error);               here->B3SOIFDqaccNode = tmp->number;                      error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Qsub0");               if(error) return(error);               here->B3SOIFDqsub0Node = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Qsubs1");               if(error) return(error);               here->B3SOIFDqsubs1Node = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Qsubs2");               if(error) return(error);               here->B3SOIFDqsubs2Node = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Qsub");               if(error) return(error);               here->B3SOIFDqeNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Qdrn");               if(error) return(error);               here->B3SOIFDqdNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Qgate");               if(error) return(error);               here->B3SOIFDqgNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Vdscv");               if(error) return(error);               here->B3SOIFDvdscvNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Vcscv");               if(error) return(error);               here->B3SOIFDvcscvNode = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Cbe");               if(error) return(error);               here->B3SOIFDcbeNode = tmp->number;                      error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Dum1");               if(error) return(error);               here->B3SOIFDdum1Node = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Dum2");               if(error) return(error);               here->B3SOIFDdum2Node = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Dum3");               if(error) return(error);               here->B3SOIFDdum3Node = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Dum4");               if(error) return(error);               here->B3SOIFDdum4Node = tmp->number;               error = CKTmkVolt(ckt, &tmp, here->B3SOIFDname, "Dum5");               if(error) return(error);               here->B3SOIFDdum5Node = tmp->number;           }        /* set Sparse Matrix Pointers *//* 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);\}        if ((model->B3SOIFDshMod == 1) && (here->B3SOIFDrth0!=0.0)) {            TSTALLOC(B3SOIFDTemptempPtr, B3SOIFDtempNode, B3SOIFDtempNode)            TSTALLOC(B3SOIFDTempdpPtr, B3SOIFDtempNode, B3SOIFDdNodePrime)            TSTALLOC(B3SOIFDTempspPtr, B3SOIFDtempNode, B3SOIFDsNodePrime)            TSTALLOC(B3SOIFDTempgPtr, B3SOIFDtempNode, B3SOIFDgNode)            TSTALLOC(B3SOIFDTempbPtr, B3SOIFDtempNode, B3SOIFDbNode)            TSTALLOC(B3SOIFDTempePtr, B3SOIFDtempNode, B3SOIFDeNode)            TSTALLOC(B3SOIFDGtempPtr, B3SOIFDgNode, B3SOIFDtempNode)            TSTALLOC(B3SOIFDDPtempPtr, B3SOIFDdNodePrime, B3SOIFDtempNode)            TSTALLOC(B3SOIFDSPtempPtr, B3SOIFDsNodePrime, B3SOIFDtempNode)            TSTALLOC(B3SOIFDEtempPtr, B3SOIFDeNode, B3SOIFDtempNode)            TSTALLOC(B3SOIFDBtempPtr, B3SOIFDbNode, B3SOIFDtempNode)            if (here->B3SOIFDbodyMod == 1) {                TSTALLOC(B3SOIFDPtempPtr, B3SOIFDpNode, B3SOIFDtempNode)            }        }        if (here->B3SOIFDbodyMod == 2) {            /* Don't create any Jacobian entry for pNode */        }        else if (here->B3SOIFDbodyMod == 1) {            TSTALLOC(B3SOIFDBpPtr, B3SOIFDbNode, B3SOIFDpNode)            TSTALLOC(B3SOIFDPbPtr, B3SOIFDpNode, B3SOIFDbNode)            TSTALLOC(B3SOIFDPpPtr, B3SOIFDpNode, B3SOIFDpNode)            TSTALLOC(B3SOIFDPgPtr, B3SOIFDpNode, B3SOIFDgNode)            TSTALLOC(B3SOIFDPdpPtr, B3SOIFDpNode, B3SOIFDdNodePrime)            TSTALLOC(B3SOIFDPspPtr, B3SOIFDpNode, B3SOIFDsNodePrime)            TSTALLOC(B3SOIFDPePtr, B3SOIFDpNode, B3SOIFDeNode)        }        TSTALLOC(B3SOIFDEgPtr, B3SOIFDeNode, B3SOIFDgNode)        TSTALLOC(B3SOIFDEdpPtr, B3SOIFDeNode, B3SOIFDdNodePrime)        TSTALLOC(B3SOIFDEspPtr, B3SOIFDeNode, B3SOIFDsNodePrime)        TSTALLOC(B3SOIFDGePtr, B3SOIFDgNode, B3SOIFDeNode)        TSTALLOC(B3SOIFDDPePtr, B3SOIFDdNodePrime, B3SOIFDeNode)        TSTALLOC(B3SOIFDSPePtr, B3SOIFDsNodePrime, B3SOIFDeNode)        TSTALLOC(B3SOIFDEbPtr, B3SOIFDeNode, B3SOIFDbNode)        TSTALLOC(B3SOIFDEePtr, B3SOIFDeNode, B3SOIFDeNode)        TSTALLOC(B3SOIFDGgPtr, B3SOIFDgNode, B3SOIFDgNode)        TSTALLOC(B3SOIFDGdpPtr, B3SOIFDgNode, B3SOIFDdNodePrime)        TSTALLOC(B3SOIFDGspPtr, B3SOIFDgNode, B3SOIFDsNodePrime)        TSTALLOC(B3SOIFDDPgPtr, B3SOIFDdNodePrime, B3SOIFDgNode)        TSTALLOC(B3SOIFDDPdpPtr, B3SOIFDdNodePrime, B3SOIFDdNodePrime)        TSTALLOC(B3SOIFDDPspPtr, B3SOIFDdNodePrime, B3SOIFDsNodePrime)        TSTALLOC(B3SOIFDDPdPtr, B3SOIFDdNodePrime, B3SOIFDdNode)        TSTALLOC(B3SOIFDSPgPtr, B3SOIFDsNodePrime, B3SOIFDgNode)        TSTALLOC(B3SOIFDSPdpPtr, B3SOIFDsNodePrime, B3SOIFDdNodePrime)        TSTALLOC(B3SOIFDSPspPtr, B3SOIFDsNodePrime, B3SOIFDsNodePrime)        TSTALLOC(B3SOIFDSPsPtr, B3SOIFDsNodePrime, B3SOIFDsNode)        TSTALLOC(B3SOIFDDdPtr, B3SOIFDdNode, B3SOIFDdNode)        TSTALLOC(B3SOIFDDdpPtr, B3SOIFDdNode, B3SOIFDdNodePrime)        TSTALLOC(B3SOIFDSsPtr, B3SOIFDsNode, B3SOIFDsNode)        TSTALLOC(B3SOIFDSspPtr, B3SOIFDsNode, B3SOIFDsNodePrime)/* here for debugging purpose only */         if ((here->B3SOIFDdebugMod > 1) || (here->B3SOIFDdebugMod == -1))         {            TSTALLOC(B3SOIFDVbsPtr, B3SOIFDvbsNode, B3SOIFDvbsNode)             TSTALLOC(B3SOIFDIdsPtr, B3SOIFDidsNode, B3SOIFDidsNode)            TSTALLOC(B3SOIFDIcPtr, B3SOIFDicNode, B3SOIFDicNode)            TSTALLOC(B3SOIFDIbsPtr, B3SOIFDibsNode, B3SOIFDibsNode)            TSTALLOC(B3SOIFDIbdPtr, B3SOIFDibdNode, B3SOIFDibdNode)            TSTALLOC(B3SOIFDIiiPtr, B3SOIFDiiiNode, B3SOIFDiiiNode)            TSTALLOC(B3SOIFDIgidlPtr, B3SOIFDigidlNode, B3SOIFDigidlNode)            TSTALLOC(B3SOIFDItunPtr, B3SOIFDitunNode, B3SOIFDitunNode)            TSTALLOC(B3SOIFDIbpPtr, B3SOIFDibpNode, B3SOIFDibpNode)            TSTALLOC(B3SOIFDAbeffPtr, B3SOIFDabeffNode, B3SOIFDabeffNode)            TSTALLOC(B3SOIFDVbs0effPtr, B3SOIFDvbs0effNode, B3SOIFDvbs0effNode)            TSTALLOC(B3SOIFDVbseffPtr, B3SOIFDvbseffNode, B3SOIFDvbseffNode)            TSTALLOC(B3SOIFDXcPtr, B3SOIFDxcNode, B3SOIFDxcNode)            TSTALLOC(B3SOIFDCbbPtr, B3SOIFDcbbNode, B3SOIFDcbbNode)            TSTALLOC(B3SOIFDCbdPtr, B3SOIFDcbdNode, B3SOIFDcbdNode)            TSTALLOC(B3SOIFDCbgPtr, B3SOIFDcbgNode, B3SOIFDcbgNode)            TSTALLOC(B3SOIFDqbPtr, B3SOIFDqbNode, B3SOIFDqbNode)            TSTALLOC(B3SOIFDQbfPtr, B3SOIFDqbfNode, B3SOIFDqbfNode)            TSTALLOC(B3SOIFDQjsPtr, B3SOIFDqjsNode, B3SOIFDqjsNode)            TSTALLOC(B3SOIFDQjdPtr, B3SOIFDqjdNode, B3SOIFDqjdNode)            /* clean up last */            TSTALLOC(B3SOIFDGmPtr, B3SOIFDgmNode, B3SOIFDgmNode)            TSTALLOC(B3SOIFDGmbsPtr, B3SOIFDgmbsNode, B3SOIFDgmbsNode)            TSTALLOC(B3SOIFDGdsPtr, B3SOIFDgdsNode, B3SOIFDgdsNode)            TSTALLOC(B3SOIFDGmePtr, B3SOIFDgmeNode, B3SOIFDgmeNode)            TSTALLOC(B3SOIFDVbs0teffPtr, B3SOIFDvbs0teffNode, B3SOIFDvbs0teffNode)            TSTALLOC(B3SOIFDVthPtr, B3SOIFDvthNode, B3SOIFDvthNode)            TSTALLOC(B3SOIFDVgsteffPtr, B3SOIFDvgsteffNode, B3SOIFDvgsteffNode)            TSTALLOC(B3SOIFDXcsatPtr, B3SOIFDxcsatNode, B3SOIFDxcsatNode)            TSTALLOC(B3SOIFDVcscvPtr, B3SOIFDvcscvNode, B3SOIFDvcscvNode)            TSTALLOC(B3SOIFDVdscvPtr, B3SOIFDvdscvNode, B3SOIFDvdscvNode)            TSTALLOC(B3SOIFDCbePtr, B3SOIFDcbeNode, B3SOIFDcbeNode)            TSTALLOC(B3SOIFDDum1Ptr, B3SOIFDdum1Node, B3SOIFDdum1Node)            TSTALLOC(B3SOIFDDum2Ptr, B3SOIFDdum2Node, B3SOIFDdum2Node)            TSTALLOC(B3SOIFDDum3Ptr, B3SOIFDdum3Node, B3SOIFDdum3Node)            TSTALLOC(B3SOIFDDum4Ptr, B3SOIFDdum4Node, B3SOIFDdum4Node)            TSTALLOC(B3SOIFDDum5Ptr, B3SOIFDdum5Node, B3SOIFDdum5Node)            TSTALLOC(B3SOIFDQaccPtr, B3SOIFDqaccNode, B3SOIFDqaccNode)            TSTALLOC(B3SOIFDQsub0Ptr, B3SOIFDqsub0Node, B3SOIFDqsub0Node)            TSTALLOC(B3SOIFDQsubs1Ptr, B3SOIFDqsubs1Node, B3SOIFDqsubs1Node)            TSTALLOC(B3SOIFDQsubs2Ptr, B3SOIFDqsubs2Node, B3SOIFDqsubs2Node)            TSTALLOC(B3SOIFDqePtr, B3SOIFDqeNode, B3SOIFDqeNode)            TSTALLOC(B3SOIFDqdPtr, B3SOIFDqdNode, B3SOIFDqdNode)            TSTALLOC(B3SOIFDqgPtr, B3SOIFDqgNode, B3SOIFDqgNode)         }        }    }    return(OK);}  intB3SOIFDunsetup(GENmodel *inModel, CKTcircuit *ckt){    B3SOIFDmodel *model;    B3SOIFDinstance *here;     for (model = (B3SOIFDmodel *)inModel; model != NULL;            model = model->B3SOIFDnextModel)    {        for (here = model->B3SOIFDinstances; here != NULL;                here=here->B3SOIFDnextInstance)        {            if (here->B3SOIFDdNodePrime                    && here->B3SOIFDdNodePrime != here->B3SOIFDdNode)            {                CKTdltNNum(ckt, here->B3SOIFDdNodePrime);                here->B3SOIFDdNodePrime = 0;            }            if (here->B3SOIFDsNodePrime                    && here->B3SOIFDsNodePrime != here->B3SOIFDsNode)            {                CKTdltNNum(ckt, here->B3SOIFDsNodePrime);                here->B3SOIFDsNodePrime = 0;            }        }    }    return OK;}

⌨️ 快捷键说明

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