📄 b3soifdcheck.c
字号:
} 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 + -