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

📄 b3soifdcheck.c

📁 ngspice又一个电子CAD仿真软件代码.功能更全
💻 C
📖 第 1 页 / 共 2 页
字号:
	}	    	if (fabs(1.0e-6 / (pParam->B3SOIFDw0 + pParam->B3SOIFDweff)) > 10.0)	{   fprintf(fplog, "Warning: (W0 + Weff) may be too small.\n");	    printf("Warning: (W0 + Weff) may be too small.\n");        }/* Check subthreshold parameters */	if (pParam->B3SOIFDnfactor < 0.0)	{   fprintf(fplog, "Warning: Nfactor = %g is negative.\n",		    pParam->B3SOIFDnfactor);	    printf("Warning: Nfactor = %g is negative.\n", pParam->B3SOIFDnfactor);	}	if (model->B3SOIFDkb3 < 0.0)	{   fprintf(fplog, "Warning: Kb3 = %g is negative.\n",		    model->B3SOIFDkb3);	    printf("Warning: Kb3 = %g is negative.\n", model->B3SOIFDkb3);	}	if (pParam->B3SOIFDcdsc < 0.0)	{   fprintf(fplog, "Warning: Cdsc = %g is negative.\n",		    pParam->B3SOIFDcdsc);	    printf("Warning: Cdsc = %g is negative.\n", pParam->B3SOIFDcdsc);	}	if (pParam->B3SOIFDcdscd < 0.0)	{   fprintf(fplog, "Warning: Cdscd = %g is negative.\n",		    pParam->B3SOIFDcdscd);	    printf("Warning: Cdscd = %g is negative.\n", pParam->B3SOIFDcdscd);	}/* Check DIBL parameters */	if (pParam->B3SOIFDeta0 < 0.0)	{   fprintf(fplog, "Warning: Eta0 = %g is negative.\n",		    pParam->B3SOIFDeta0); 	    printf("Warning: Eta0 = %g is negative.\n", pParam->B3SOIFDeta0); 	}	      /* Check Abulk parameters */	            if (fabs(1.0e-6 / (pParam->B3SOIFDb1 + pParam->B3SOIFDweff)) > 10.0)       	{   fprintf(fplog, "Warning: (B1 + Weff) may be too small.\n");       	    printf("Warning: (B1 + Weff) may be too small.\n");        }    	if (model->B3SOIFDadice0 > 1.0)	{   fprintf(fplog, "Warning: Adice0 = %g should be smaller than 1.\n",		    model->B3SOIFDadice0); 	    printf("Warning: Adice0 = %g should be smaller than 1.\n", model->B3SOIFDadice0); 	}	if (model->B3SOIFDabp < 0.2)	{   fprintf(fplog, "Warning: Abp = %g is too small.\n",		    model->B3SOIFDabp); 	    printf("Warning: Abp = %g is too small.\n", model->B3SOIFDabp); 	}    	if ((model->B3SOIFDmxc < -1.0) || (model->B3SOIFDmxc > 1.0))	{   fprintf(fplog, "Warning: Mxc = %g should be within (-1, 1).\n",		    model->B3SOIFDmxc); 	    printf("Warning: Mxc = %g should be within (-1, 1).\n", model->B3SOIFDmxc); 	}/* Check Saturation parameters */     	if (pParam->B3SOIFDa2 < 0.01)	{   fprintf(fplog, "Warning: A2 = %g is too small. Set to 0.01.\n", pParam->B3SOIFDa2);	    printf("Warning: A2 = %g is too small. Set to 0.01.\n",		   pParam->B3SOIFDa2);	    pParam->B3SOIFDa2 = 0.01;	}	else if (pParam->B3SOIFDa2 > 1.0)	{   fprintf(fplog, "Warning: A2 = %g is larger than 1. A2 is set to 1 and A1 is set to 0.\n",		    pParam->B3SOIFDa2);	    printf("Warning: A2 = %g is larger than 1. A2 is set to 1 and A1 is set to 0.\n",		   pParam->B3SOIFDa2);	    pParam->B3SOIFDa2 = 1.0;	    pParam->B3SOIFDa1 = 0.0;	}	if (pParam->B3SOIFDrdsw < 0.0)	{   fprintf(fplog, "Warning: Rdsw = %g is negative. Set to zero.\n",		    pParam->B3SOIFDrdsw);	    printf("Warning: Rdsw = %g is negative. Set to zero.\n",		   pParam->B3SOIFDrdsw);	    pParam->B3SOIFDrdsw = 0.0;	    pParam->B3SOIFDrds0 = 0.0;	}	else if ((pParam->B3SOIFDrds0 > 0.0) && (pParam->B3SOIFDrds0 < 0.001))	{   fprintf(fplog, "Warning: Rds at current temperature = %g is less than 0.001 ohm. Set to zero.\n",		    pParam->B3SOIFDrds0);	    printf("Warning: Rds at current temperature = %g is less than 0.001 ohm. Set to zero.\n",		   pParam->B3SOIFDrds0);	    pParam->B3SOIFDrds0 = 0.0;	}	 if (pParam->B3SOIFDvsattemp < 1.0e3)	{   fprintf(fplog, "Warning: Vsat at current temperature = %g may be too small.\n", pParam->B3SOIFDvsattemp);	   printf("Warning: Vsat at current temperature = %g may be too small.\n", pParam->B3SOIFDvsattemp);	}	if (pParam->B3SOIFDpdibl1 < 0.0)	{   fprintf(fplog, "Warning: Pdibl1 = %g is negative.\n",		    pParam->B3SOIFDpdibl1);	    printf("Warning: Pdibl1 = %g is negative.\n", pParam->B3SOIFDpdibl1);	}	if (pParam->B3SOIFDpdibl2 < 0.0)	{   fprintf(fplog, "Warning: Pdibl2 = %g is negative.\n",		    pParam->B3SOIFDpdibl2);	    printf("Warning: Pdibl2 = %g is negative.\n", pParam->B3SOIFDpdibl2);	}/* Check overlap capacitance parameters */        if (model->B3SOIFDcgdo < 0.0)	{   fprintf(fplog, "Warning: cgdo = %g is negative. Set to zero.\n", model->B3SOIFDcgdo);	    printf("Warning: cgdo = %g is negative. Set to zero.\n", model->B3SOIFDcgdo);	    model->B3SOIFDcgdo = 0.0;        }              if (model->B3SOIFDcgso < 0.0)	{   fprintf(fplog, "Warning: cgso = %g is negative. Set to zero.\n", model->B3SOIFDcgso);	    printf("Warning: cgso = %g is negative. Set to zero.\n", model->B3SOIFDcgso);	    model->B3SOIFDcgso = 0.0;        }              if (model->B3SOIFDcgeo < 0.0)	{   fprintf(fplog, "Warning: cgeo = %g is negative. Set to zero.\n", model->B3SOIFDcgeo);	    printf("Warning: cgeo = %g is negative. Set to zero.\n", model->B3SOIFDcgeo);	    model->B3SOIFDcgeo = 0.0;        }	if (model->B3SOIFDntun < 0.0)	{   fprintf(fplog, "Warning: Ntun = %g is negative.\n",		    model->B3SOIFDntun); 	    printf("Warning: Ntun = %g is negative.\n", model->B3SOIFDntun); 	}	if (model->B3SOIFDndiode < 0.0)	{   fprintf(fplog, "Warning: Ndiode = %g is negative.\n",		    model->B3SOIFDndiode); 	    printf("Warning: Ndiode = %g is negative.\n", model->B3SOIFDndiode); 	}	if (model->B3SOIFDisbjt < 0.0)	{   fprintf(fplog, "Warning: Isbjt = %g is negative.\n",		    model->B3SOIFDisbjt); 	    printf("Warning: Isbjt = %g is negative.\n", model->B3SOIFDisbjt); 	}	if (model->B3SOIFDisdif < 0.0)	{   fprintf(fplog, "Warning: Isdif = %g is negative.\n",		    model->B3SOIFDisdif); 	    printf("Warning: Isdif = %g is negative.\n", model->B3SOIFDisdif); 	}	if (model->B3SOIFDisrec < 0.0)	{   fprintf(fplog, "Warning: Isrec = %g is negative.\n",		    model->B3SOIFDisrec); 	    printf("Warning: Isrec = %g is negative.\n", model->B3SOIFDisrec); 	}	if (model->B3SOIFDistun < 0.0)	{   fprintf(fplog, "Warning: Istun = %g is negative.\n",		    model->B3SOIFDistun); 	    printf("Warning: Istun = %g is negative.\n", model->B3SOIFDistun); 	}	if (model->B3SOIFDedl < 0.0)	{   fprintf(fplog, "Warning: Edl = %g is negative.\n",		    model->B3SOIFDedl); 	    printf("Warning: Edl = %g is negative.\n", model->B3SOIFDedl); 	}	if (model->B3SOIFDkbjt1 < 0.0)	{   fprintf(fplog, "Warning: Kbjt1 = %g is negative.\n",		    model->B3SOIFDkbjt1); 	    printf("Warning: kbjt1 = %g is negative.\n", model->B3SOIFDkbjt1); 	}	if (model->B3SOIFDtt < 0.0)	{   fprintf(fplog, "Warning: Tt = %g is negative.\n",		    model->B3SOIFDtt); 	    printf("Warning: Tt = %g is negative.\n", model->B3SOIFDtt); 	}	if (model->B3SOIFDcsdmin < 0.0)	{   fprintf(fplog, "Warning: Csdmin = %g is negative.\n",		    model->B3SOIFDcsdmin); 	    printf("Warning: Csdmin = %g is negative.\n", model->B3SOIFDcsdmin); 	}	if (model->B3SOIFDcsdesw < 0.0)	{   fprintf(fplog, "Warning: Csdesw = %g is negative.\n",		    model->B3SOIFDcsdesw); 	    printf("Warning: Csdesw = %g is negative.\n", model->B3SOIFDcsdesw); 	}	if ((model->B3SOIFDasd < 0.0) || (model->B3SOIFDmxc > 1.0))	{   fprintf(fplog, "Warning: Asd = %g should be within (0, 1).\n",		    model->B3SOIFDasd); 	    printf("Warning: Asd = %g should be within (0, 1).\n", model->B3SOIFDasd); 	}	if (model->B3SOIFDrth0 < 0.0)	{   fprintf(fplog, "Warning: Rth0 = %g is negative.\n",		    model->B3SOIFDrth0); 	    printf("Warning: Rth0 = %g is negative.\n", model->B3SOIFDrth0); 	}	if (model->B3SOIFDcth0 < 0.0)	{   fprintf(fplog, "Warning: Cth0 = %g is negative.\n",		    model->B3SOIFDcth0); 	    printf("Warning: Cth0 = %g is negative.\n", model->B3SOIFDcth0); 	}	if (model->B3SOIFDrbody < 0.0)	{   fprintf(fplog, "Warning: Rbody = %g is negative.\n",		    model->B3SOIFDrbody); 	    printf("Warning: Rbody = %g is negative.\n", model->B3SOIFDrbody); 	}	if (model->B3SOIFDrbsh < 0.0)	{   fprintf(fplog, "Warning: Rbsh = %g is negative.\n",		    model->B3SOIFDrbsh); 	    printf("Warning: Rbsh = %g is negative.\n", model->B3SOIFDrbsh); 	}	if (model->B3SOIFDxj > model->B3SOIFDtsi)	{   fprintf(fplog, "Warning: Xj = %g is thicker than Tsi = %g.\n",		    model->B3SOIFDxj, model->B3SOIFDtsi); 	    printf("Warning: Xj = %g is thicker than Tsi = %g.\n", 		    model->B3SOIFDxj, model->B3SOIFDtsi); 	}        if (model->B3SOIFDcapMod < 2)	{   fprintf(fplog, "Warning: capMod < 2 is not supported by BSIM3SOI.\n");	    printf("Warning: Warning: capMod < 2 is not supported by BSIM3SOI.\n");	}	if (model->B3SOIFDcii > 2.0)	{   fprintf(fplog, "Warning: Cii = %g is larger than 2.0.\n", model->B3SOIFDcii);	    printf("Warning: Cii = %g is larger than 2.0.\n", model->B3SOIFDcii);	}	if (model->B3SOIFDdii > 1.5)	{   fprintf(fplog, "Warning: Dii = %g is larger than 1.5.\n", model->B3SOIFDcii);	    printf("Warning: Dii = %g is too larger than 1.5.\n", model->B3SOIFDcii);	}     }/* loop for the parameter check for warning messages */      	fclose(fplog);    }    else    {   fprintf(stderr, "Warning: Can't open log file. Parameter checking skipped.\n");    }    return(Fatal_Flag);}

⌨️ 快捷键说明

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