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

📄 b3soiddcheck.c

📁 ngspice又一个电子CAD仿真软件代码.功能更全
💻 C
📖 第 1 页 / 共 2 页
字号:
	}	    	if (fabs(1.0e-6 / (pParam->B3SOIDDw0 + pParam->B3SOIDDweff)) > 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->B3SOIDDnfactor < 0.0)	{   fprintf(fplog, "Warning: Nfactor = %g is negative.\n",		    pParam->B3SOIDDnfactor);	    printf("Warning: Nfactor = %g is negative.\n", pParam->B3SOIDDnfactor);	}	if (model->B3SOIDDkb3 < 0.0)	{   fprintf(fplog, "Warning: Kb3 = %g is negative.\n",		    model->B3SOIDDkb3);	    printf("Warning: Kb3 = %g is negative.\n", model->B3SOIDDkb3);	}	if (pParam->B3SOIDDcdsc < 0.0)	{   fprintf(fplog, "Warning: Cdsc = %g is negative.\n",		    pParam->B3SOIDDcdsc);	    printf("Warning: Cdsc = %g is negative.\n", pParam->B3SOIDDcdsc);	}	if (pParam->B3SOIDDcdscd < 0.0)	{   fprintf(fplog, "Warning: Cdscd = %g is negative.\n",		    pParam->B3SOIDDcdscd);	    printf("Warning: Cdscd = %g is negative.\n", pParam->B3SOIDDcdscd);	}/* Check DIBL parameters */	if (pParam->B3SOIDDeta0 < 0.0)	{   fprintf(fplog, "Warning: Eta0 = %g is negative.\n",		    pParam->B3SOIDDeta0); 	    printf("Warning: Eta0 = %g is negative.\n", pParam->B3SOIDDeta0); 	}	      /* Check Abulk parameters */	            if (fabs(1.0e-6 / (pParam->B3SOIDDb1 + pParam->B3SOIDDweff)) > 10.0)       	{   fprintf(fplog, "Warning: (B1 + Weff) may be too small.\n");       	    printf("Warning: (B1 + Weff) may be too small.\n");        }    	if (model->B3SOIDDadice0 > 1.0)	{   fprintf(fplog, "Warning: Adice0 = %g should be smaller than 1.\n",		    model->B3SOIDDadice0); 	    printf("Warning: Adice0 = %g should be smaller than 1.\n", model->B3SOIDDadice0); 	}	if (model->B3SOIDDabp < 0.2)	{   fprintf(fplog, "Warning: Abp = %g is too small.\n",		    model->B3SOIDDabp); 	    printf("Warning: Abp = %g is too small.\n", model->B3SOIDDabp); 	}    	if ((model->B3SOIDDmxc < -1.0) || (model->B3SOIDDmxc > 1.0))	{   fprintf(fplog, "Warning: Mxc = %g should be within (-1, 1).\n",		    model->B3SOIDDmxc); 	    printf("Warning: Mxc = %g should be within (-1, 1).\n", model->B3SOIDDmxc); 	}/* Check Saturation parameters */     	if (pParam->B3SOIDDa2 < 0.01)	{   fprintf(fplog, "Warning: A2 = %g is too small. Set to 0.01.\n", pParam->B3SOIDDa2);	    printf("Warning: A2 = %g is too small. Set to 0.01.\n",		   pParam->B3SOIDDa2);	    pParam->B3SOIDDa2 = 0.01;	}	else if (pParam->B3SOIDDa2 > 1.0)	{   fprintf(fplog, "Warning: A2 = %g is larger than 1. A2 is set to 1 and A1 is set to 0.\n",		    pParam->B3SOIDDa2);	    printf("Warning: A2 = %g is larger than 1. A2 is set to 1 and A1 is set to 0.\n",		   pParam->B3SOIDDa2);	    pParam->B3SOIDDa2 = 1.0;	    pParam->B3SOIDDa1 = 0.0;	}	if (pParam->B3SOIDDrdsw < 0.0)	{   fprintf(fplog, "Warning: Rdsw = %g is negative. Set to zero.\n",		    pParam->B3SOIDDrdsw);	    printf("Warning: Rdsw = %g is negative. Set to zero.\n",		   pParam->B3SOIDDrdsw);	    pParam->B3SOIDDrdsw = 0.0;	    pParam->B3SOIDDrds0 = 0.0;	}	else if ((pParam->B3SOIDDrds0 > 0.0) && (pParam->B3SOIDDrds0 < 0.001))	{   fprintf(fplog, "Warning: Rds at current temperature = %g is less than 0.001 ohm. Set to zero.\n",		    pParam->B3SOIDDrds0);	    printf("Warning: Rds at current temperature = %g is less than 0.001 ohm. Set to zero.\n",		   pParam->B3SOIDDrds0);	    pParam->B3SOIDDrds0 = 0.0;	}	 if (pParam->B3SOIDDvsattemp < 1.0e3)	{   fprintf(fplog, "Warning: Vsat at current temperature = %g may be too small.\n", pParam->B3SOIDDvsattemp);	   printf("Warning: Vsat at current temperature = %g may be too small.\n", pParam->B3SOIDDvsattemp);	}	if (pParam->B3SOIDDpdibl1 < 0.0)	{   fprintf(fplog, "Warning: Pdibl1 = %g is negative.\n",		    pParam->B3SOIDDpdibl1);	    printf("Warning: Pdibl1 = %g is negative.\n", pParam->B3SOIDDpdibl1);	}	if (pParam->B3SOIDDpdibl2 < 0.0)	{   fprintf(fplog, "Warning: Pdibl2 = %g is negative.\n",		    pParam->B3SOIDDpdibl2);	    printf("Warning: Pdibl2 = %g is negative.\n", pParam->B3SOIDDpdibl2);	}/* Check overlap capacitance parameters */        if (model->B3SOIDDcgdo < 0.0)	{   fprintf(fplog, "Warning: cgdo = %g is negative. Set to zero.\n", model->B3SOIDDcgdo);	    printf("Warning: cgdo = %g is negative. Set to zero.\n", model->B3SOIDDcgdo);	    model->B3SOIDDcgdo = 0.0;        }              if (model->B3SOIDDcgso < 0.0)	{   fprintf(fplog, "Warning: cgso = %g is negative. Set to zero.\n", model->B3SOIDDcgso);	    printf("Warning: cgso = %g is negative. Set to zero.\n", model->B3SOIDDcgso);	    model->B3SOIDDcgso = 0.0;        }              if (model->B3SOIDDcgeo < 0.0)	{   fprintf(fplog, "Warning: cgeo = %g is negative. Set to zero.\n", model->B3SOIDDcgeo);	    printf("Warning: cgeo = %g is negative. Set to zero.\n", model->B3SOIDDcgeo);	    model->B3SOIDDcgeo = 0.0;        }	if (model->B3SOIDDntun < 0.0)	{   fprintf(fplog, "Warning: Ntun = %g is negative.\n",		    model->B3SOIDDntun); 	    printf("Warning: Ntun = %g is negative.\n", model->B3SOIDDntun); 	}	if (model->B3SOIDDndiode < 0.0)	{   fprintf(fplog, "Warning: Ndiode = %g is negative.\n",		    model->B3SOIDDndiode); 	    printf("Warning: Ndiode = %g is negative.\n", model->B3SOIDDndiode); 	}	if (model->B3SOIDDisbjt < 0.0)	{   fprintf(fplog, "Warning: Isbjt = %g is negative.\n",		    model->B3SOIDDisbjt); 	    printf("Warning: Isbjt = %g is negative.\n", model->B3SOIDDisbjt); 	}	if (model->B3SOIDDisdif < 0.0)	{   fprintf(fplog, "Warning: Isdif = %g is negative.\n",		    model->B3SOIDDisdif); 	    printf("Warning: Isdif = %g is negative.\n", model->B3SOIDDisdif); 	}	if (model->B3SOIDDisrec < 0.0)	{   fprintf(fplog, "Warning: Isrec = %g is negative.\n",		    model->B3SOIDDisrec); 	    printf("Warning: Isrec = %g is negative.\n", model->B3SOIDDisrec); 	}	if (model->B3SOIDDistun < 0.0)	{   fprintf(fplog, "Warning: Istun = %g is negative.\n",		    model->B3SOIDDistun); 	    printf("Warning: Istun = %g is negative.\n", model->B3SOIDDistun); 	}	if (model->B3SOIDDedl < 0.0)	{   fprintf(fplog, "Warning: Edl = %g is negative.\n",		    model->B3SOIDDedl); 	    printf("Warning: Edl = %g is negative.\n", model->B3SOIDDedl); 	}	if (model->B3SOIDDkbjt1 < 0.0)	{   fprintf(fplog, "Warning: Kbjt1 = %g is negative.\n",		    model->B3SOIDDkbjt1); 	    printf("Warning: kbjt1 = %g is negative.\n", model->B3SOIDDkbjt1); 	}	if (model->B3SOIDDtt < 0.0)	{   fprintf(fplog, "Warning: Tt = %g is negative.\n",		    model->B3SOIDDtt); 	    printf("Warning: Tt = %g is negative.\n", model->B3SOIDDtt); 	}	if (model->B3SOIDDcsdmin < 0.0)	{   fprintf(fplog, "Warning: Csdmin = %g is negative.\n",		    model->B3SOIDDcsdmin); 	    printf("Warning: Csdmin = %g is negative.\n", model->B3SOIDDcsdmin); 	}	if (model->B3SOIDDcsdesw < 0.0)	{   fprintf(fplog, "Warning: Csdesw = %g is negative.\n",		    model->B3SOIDDcsdesw); 	    printf("Warning: Csdesw = %g is negative.\n", model->B3SOIDDcsdesw); 	}	if ((model->B3SOIDDasd < 0.0) || (model->B3SOIDDmxc > 1.0))	{   fprintf(fplog, "Warning: Asd = %g should be within (0, 1).\n",		    model->B3SOIDDasd); 	    printf("Warning: Asd = %g should be within (0, 1).\n", model->B3SOIDDasd); 	}	if (model->B3SOIDDrth0 < 0.0)	{   fprintf(fplog, "Warning: Rth0 = %g is negative.\n",		    model->B3SOIDDrth0); 	    printf("Warning: Rth0 = %g is negative.\n", model->B3SOIDDrth0); 	}	if (model->B3SOIDDcth0 < 0.0)	{   fprintf(fplog, "Warning: Cth0 = %g is negative.\n",		    model->B3SOIDDcth0); 	    printf("Warning: Cth0 = %g is negative.\n", model->B3SOIDDcth0); 	}	if (model->B3SOIDDrbody < 0.0)	{   fprintf(fplog, "Warning: Rbody = %g is negative.\n",		    model->B3SOIDDrbody); 	    printf("Warning: Rbody = %g is negative.\n", model->B3SOIDDrbody); 	}	if (model->B3SOIDDrbsh < 0.0)	{   fprintf(fplog, "Warning: Rbsh = %g is negative.\n",		    model->B3SOIDDrbsh); 	    printf("Warning: Rbsh = %g is negative.\n", model->B3SOIDDrbsh); 	}	if (model->B3SOIDDxj > model->B3SOIDDtsi)	{   fprintf(fplog, "Warning: Xj = %g is thicker than Tsi = %g.\n",		    model->B3SOIDDxj, model->B3SOIDDtsi); 	    printf("Warning: Xj = %g is thicker than Tsi = %g.\n", 		    model->B3SOIDDxj, model->B3SOIDDtsi); 	}        if (model->B3SOIDDcapMod < 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->B3SOIDDcii > 2.0)	{   fprintf(fplog, "Warning: Cii = %g is larger than 2.0.\n", model->B3SOIDDcii);	    printf("Warning: Cii = %g is larger than 2.0.\n", model->B3SOIDDcii);	}	if (model->B3SOIDDdii > 1.5)	{   fprintf(fplog, "Warning: Dii = %g is larger than 1.5.\n", model->B3SOIDDcii);	    printf("Warning: Dii = %g is too larger than 1.5.\n", model->B3SOIDDcii);	}     }/* 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 + -