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

📄 b2set.c

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 C
📖 第 1 页 / 共 2 页
字号:
        }        if( ! model->B2nDLGiven) {            model->B2nDL = 0.0;        }        if( ! model->B2nDWGiven) {            model->B2nDW = 0.0;        }        if( ! model->B2vof00Given) {            model->B2vof00 = 1.8;        }        if( ! model->B2vof0LGiven) {            model->B2vof0L = 0.0;        }        if( ! model->B2vof0WGiven) {            model->B2vof0W = 0.0;        }        if( ! model->B2vofB0Given) {            model->B2vofB0 = 0.0;        }        if( ! model->B2vofBLGiven) {            model->B2vofBL = 0.0;        }        if( ! model->B2vofBWGiven) {            model->B2vofBW = 0.0;        }        if( ! model->B2vofD0Given) {            model->B2vofD0 = 0.0;        }        if( ! model->B2vofDLGiven) {            model->B2vofDL = 0.0;        }        if( ! model->B2vofDWGiven) {            model->B2vofDW = 0.0;        }        if( ! model->B2ai00Given) {            model->B2ai00 = 0.0;        }        if( ! model->B2ai0LGiven) {            model->B2ai0L = 0.0;        }        if( ! model->B2ai0WGiven) {            model->B2ai0W = 0.0;        }        if( ! model->B2aiB0Given) {            model->B2aiB0 = 0.0;        }        if( ! model->B2aiBLGiven) {            model->B2aiBL = 0.0;        }        if( ! model->B2aiBWGiven) {            model->B2aiBW = 0.0;        }        if( ! model->B2bi00Given) {            model->B2bi00 = 0.0;        }        if( ! model->B2bi0LGiven) {            model->B2bi0L = 0.0;        }        if( ! model->B2bi0WGiven) {            model->B2bi0W = 0.0;        }        if( ! model->B2biB0Given) {            model->B2biB0 = 0.0;        }        if( ! model->B2biBLGiven) {            model->B2biBL = 0.0;        }        if( ! model->B2biBWGiven) {            model->B2biBW = 0.0;        }        if( ! model->B2vghigh0Given) {            model->B2vghigh0 = 0.2;        }        if( ! model->B2vghighLGiven) {            model->B2vghighL = 0.0;        }        if( ! model->B2vghighWGiven) {            model->B2vghighW = 0.0;        }        if( ! model->B2vglow0Given) {            model->B2vglow0 = -0.15;        }        if( ! model->B2vglowLGiven) {            model->B2vglowL = 0.0;        }        if( ! model->B2vglowWGiven) {            model->B2vglowW = 0.0;        }        if( ! model->B2toxGiven) {            model->B2tox = 0.03;  /* um */        }        if( ! model->B2tempGiven) {            model->B2temp = 27.0;        }        if( ! model->B2vddGiven) {            model->B2vdd = 5.0;        }        if( ! model->B2vggGiven) {            model->B2vgg = 5.0;        }        if( ! model->B2vbbGiven) {            model->B2vbb = 5.0;        }        if( ! model->B2gateDrainOverlapCapGiven) {            model->B2gateDrainOverlapCap = 0.0;        }        if( ! model->B2gateSourceOverlapCapGiven) {            model->B2gateSourceOverlapCap = 0.0;        }        if( ! model->B2gateBulkOverlapCapGiven) {            model->B2gateBulkOverlapCap = 0.0;        }        if( ! model->B2channelChargePartitionFlagGiven) {            model->B2channelChargePartitionFlag = 0.0;        }        if( ! model->B2sheetResistanceGiven) {            model->B2sheetResistance = 0.0;        }        if( ! model->B2unitAreaJctCapGiven) {            model->B2unitAreaJctCap = 0.0;        }        if( ! model->B2unitLengthSidewallJctCapGiven) {            model->B2unitLengthSidewallJctCap = 0.0;        }        if( ! model->B2jctSatCurDensityGiven) {            model->B2jctSatCurDensity = 0.0;        }        if( ! model->B2bulkJctPotentialGiven) {            model->B2bulkJctPotential = 0.0;        }        if( ! model->B2sidewallJctPotentialGiven) {            model->B2sidewallJctPotential = 0.0;        }        if( ! model->B2bulkJctBotGradingCoeffGiven) {            model->B2bulkJctBotGradingCoeff = 0.0;        }        if( ! model->B2bulkJctSideGradingCoeffGiven) {            model->B2bulkJctSideGradingCoeff = 0.0;        }        if( ! model->B2defaultWidthGiven) {            model->B2defaultWidth = 10.0;        }        if( ! model->B2deltaLengthGiven) {            model->B2deltaLength = 0.0;        }        /* loop through all the instances of the model */        for (here = model->B2instances; here != NULL ;                here=here->B2nextInstance) {	    if (here->B2owner == ARCHme) {		/* allocate a chunk of the state vector */		here->B2states = *states;		*states += B2numStates;	    }            /* perform the parameter defaulting */            if(!here->B2drainAreaGiven) {                here->B2drainArea = 0;            }            if(!here->B2drainPerimeterGiven) {                here->B2drainPerimeter = 0;            }            if(!here->B2drainSquaresGiven) {                here->B2drainSquares = 1;            }            if(!here->B2icVBSGiven) {                here->B2icVBS = 0;            }            if(!here->B2icVDSGiven) {                here->B2icVDS = 0;            }            if(!here->B2icVGSGiven) {                here->B2icVGS = 0;            }            if(!here->B2lGiven) {                here->B2l = 5e-6;            }            if(!here->B2sourceAreaGiven) {                here->B2sourceArea = 0;            }            if(!here->B2sourcePerimeterGiven) {                here->B2sourcePerimeter = 0;            }            if(!here->B2sourceSquaresGiven) {                here->B2sourceSquares = 1;            }            if(!here->B2vdsatGiven) {                here->B2vdsat = 0;            }            if(!here->B2vonGiven) {                here->B2von = 0;            }            if(!here->B2wGiven) {                here->B2w = 5e-6;            }                               /* process drain series resistance */            if( (model->B2sheetResistance != 0) &&                     (here->B2drainSquares != 0.0 ) &&                    (here->B2dNodePrime == 0) ) {                error = CKTmkVolt(ckt,&tmp,here->B2name,"drain");                if(error) return(error);                here->B2dNodePrime = tmp->number;            } else {                    here->B2dNodePrime = here->B2dNode;            }                               /* process source series resistance */            if( (model->B2sheetResistance != 0) &&                     (here->B2sourceSquares != 0.0 ) &&                    (here->B2sNodePrime == 0) ) {                if(here->B2sNodePrime == 0) {                    error = CKTmkVolt(ckt,&tmp,here->B2name,"source");                    if(error) return(error);                    here->B2sNodePrime = tmp->number;                }            } else  {                here->B2sNodePrime = here->B2sNode;            }                           /* 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);\}            TSTALLOC(B2DdPtr, B2dNode, B2dNode)            TSTALLOC(B2GgPtr, B2gNode, B2gNode)            TSTALLOC(B2SsPtr, B2sNode, B2sNode)            TSTALLOC(B2BbPtr, B2bNode, B2bNode)            TSTALLOC(B2DPdpPtr, B2dNodePrime, B2dNodePrime)            TSTALLOC(B2SPspPtr, B2sNodePrime, B2sNodePrime)            TSTALLOC(B2DdpPtr, B2dNode, B2dNodePrime)            TSTALLOC(B2GbPtr, B2gNode, B2bNode)            TSTALLOC(B2GdpPtr, B2gNode, B2dNodePrime)            TSTALLOC(B2GspPtr, B2gNode, B2sNodePrime)            TSTALLOC(B2SspPtr, B2sNode, B2sNodePrime)            TSTALLOC(B2BdpPtr, B2bNode, B2dNodePrime)            TSTALLOC(B2BspPtr, B2bNode, B2sNodePrime)            TSTALLOC(B2DPspPtr, B2dNodePrime, B2sNodePrime)            TSTALLOC(B2DPdPtr, B2dNodePrime, B2dNode)            TSTALLOC(B2BgPtr, B2bNode, B2gNode)            TSTALLOC(B2DPgPtr, B2dNodePrime, B2gNode)            TSTALLOC(B2SPgPtr, B2sNodePrime, B2gNode)            TSTALLOC(B2SPsPtr, B2sNodePrime, B2sNode)            TSTALLOC(B2DPbPtr, B2dNodePrime, B2bNode)            TSTALLOC(B2SPbPtr, B2sNodePrime, B2bNode)            TSTALLOC(B2SPdpPtr, B2sNodePrime, B2dNodePrime)        }    }    return(OK);}  intB2unsetup(inModel,ckt)    GENmodel *inModel;    CKTcircuit *ckt;{#ifndef HAS_BATCHSIM    B2model *model;    B2instance *here;    for (model = (B2model *)inModel; model != NULL;	    model = model->B2nextModel)    {        for (here = model->B2instances; here != NULL;                here=here->B2nextInstance)	{	    if (here->B2dNodePrime		    && here->B2dNodePrime != here->B2dNode)	    {		CKTdltNNum(ckt, here->B2dNodePrime);		here->B2dNodePrime = 0;	    }	    if (here->B2sNodePrime		    && here->B2sNodePrime != here->B2sNode)	    {		CKTdltNNum(ckt, here->B2sNodePrime);		here->B2sNodePrime = 0;	    }	}    }#endif    return OK;}

⌨️ 快捷键说明

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