# --LOCOS cross section with stress effects opt chat # --Substrate mesh definition-- line x loc=-1 spac=0.2 tag=l line x loc=0 spac=0.05 tag=c line x loc=1 spac=0.2 tag=r line y loc=0 tag=t line y loc=1 tag=b region silicon xlo=l xhi=r ylo=t yhi=b bound expo xlo=l xhi=r ylo=t yhi=t init ori=100 # --Pad oxide and nitride mask-- deposit oxide thick=0.02 div=1 deposit nitride thick=0.15 div=1 etch nitride left p1.x=0 #----------Field oxidation oxide Vc=300 Vr=30 Vd=25 stress.dep=t meth viscous oxide.rel=1e-2 plot.2 bound y.mi=-0.3 x.mi=-0.3 x.ma=0.3 diffuse tim=90 tem=1000 weto2 movie="plot.2 bound cl=f ax=f line.b=1" stru outf=sdep15.strThe grid structure and nitride/oxide sandwich is very similar to the fully-recessed oxide example. The substrate grid is as sparse as possible (two lines). The lateral grid is a little coarse to compensate for the increased computation time used in the nonlinear model.
The new statements are as follows:
oxide stress.dep=tThe nonlinear stress-dependent model is turned on. The default is to turn it off since it is much more expensive to run than the linear model.
The activation volume for plastic flow Vc, for the stress-dependent reaction rate Vr, and for the diffusivity Vd, are taken from the defaults in the model file. The values used were derived by fitting Kao's cylinder oxidation data [2].
meth viscous oxide.rel=1e-2The viscous model is chosen, because only this model takes stress effects into account. (Only the viscous model calculates stress accurately enough to feed back into the coefficients). The relative error criterion is chosen as 1% in the velocities. The default of 1.0E-6 is rather tight and requires more CPU time.
The diffuse statement is as usual.
This input file was executed twice, once with 0.05 microns of nitride and once with 0.15 microns of nitride. The output contains the usual features, along with many lines as follows:
Newton loop 0 cut 1 upd 0.9914 orhs 3.811 rhs 3.534e-15 Newton loop 1* cut 1 upd 1.322e-12 orhs 3.534e-15 rhs 1e-38 Continuation step #0 to lambda = 0.25 step 0.25 Newton loop 0 cut 1 upd 0.008394 orhs 0.0002229 rhs 0.0003045 Newton loop 0 cut 0.25 upd 0.008394 orhs 0.0002229 rhs 0.000135 Newton loop 2 cut 0.25 upd 0.005944 orhs 0.0001278 rhs 6.63e-05 Newton loop 4 cut 0.5 upd 0.004301 orhs 6.479e-05 rhs 1.638e-05 Newton loop 5* cut 1 upd 0.002137 orhs 1.638e-05 rhs 1.43e-05 Newton loop 7 cut 1 upd 0.000463 orhs 1.625e-05 rhs 1e-38 Continuation step #0 to lambda = 0.5 step 0.25 Newton loop 0 cut 1 upd 0.1527 orhs 0.0359 rhs 0.04011 ... Newton loop 4 cut 0.031 upd 2.062 orhs 0.01961 rhs 0.0199 Continued too far, backing off. Continuation step #-1 to lambda = 0.375 step 0.125 Newton loop 0 cut 1 upd 0.06759 orhs 0.02686 rhs 0.02223 Newton loop 2 cut 1 upd 0.1005 orhs 0.02204 rhs 0.02313 &... Newton loop28 cut 0.5 upd 0.00263 orhs 0.0005139 rhs 0.0002645 Newton loop30 cut 1 upd 0.0009523 orhs 0.0002647 rhs 1e-38 Continuation step #0 to lambda = 0.5 step 0.125 Newton loop 0 cut 1 upd 0.01423 orhs 0.01075 rhs 0.008121 Newton loop 2 cut 1 upd 0.002104 orhs 0.008299 rhs 0.003507 Newton loop 4 cut 1 upd 0.002404 orhs 0.003543 rhs 0.007114 Newton loop 4 cut 0.25 upd 0.002404 orhs 0.003543 rhs 0.002892 Newton loop 6 cut 0.25 upd 0.0007027 orhs 0.002888 rhs 1e-38 Continuation step #0 to lambda = 1 step 0.5 Newton loop 0 cut 1 upd 0.0005178 orhs 0.002156 rhs 1e-38The nonlinear solver works by proceeding first from the linear solution. The linear solution takes exactly two Newton steps. The first has a large update step 0.9914, which reduces the error from 3.811 to 3.5E-15. The second Newton step 1.3E-12 then of course is trivial since the solution has been reached. The Newton loop counter is incremented by two whenever a new Jacobian is factorized, and by one when only the error is recalculated.
The stress-dependent viscosity is turned on (continuation step 0 to lambda = 0.25). The first step is moderately large 0.008394 and causes the error to increase 0.00022 to 0.0003045. A quarter-step (cut 0.25) in that direction is tried, which is found to decrease the error from 0.00022 to 0.0001. This new position is accepted as worthwhile, and a second Newton step is taken from there. It is found to decrease the error from 0.0059 to 0.00012. Since this is successful, the cutback factor is increased back to 0.5.
The third Newton step (#4) reduces the error by a large factor, so on the subsequent step not only is the length increased back to 1 but the same Jacobian is recycled, indicated by the asterisk. The recycled Jacobian proves not to be effective, since the error only goes from 1.6E-5 to 1.4E-5. One more Jacobian is factored, and causes an update of 0.0004636, less than the accuracy criterion. The first nonlinear problem has been solved.
The stress-dependent reaction rate is then turned on (continuation to 0.5). In this case, the Newton process fails. Successively smaller steps along the Newton direction are taken, but at each attempted new position the error is larger than the current location. The smallest step tried is 0.031; the next would be 0.031/4 which is less than 1% of the Newton update and the situation is considered hopeless. The program then backs off by trying an intermediate lambda of 0.375. This corresponds to a stress dependence which is only half as strong as the desired dependence. After 15 Newton steps, this weaker problem is solved. The solution is then used as an initial guess for the problem first tried, that with the full stress dependence (lambda = 0.5). The improved initial guess leads to a successful solution of the problem after 3 Newton steps. Finally, the stress-dependent diffusivity is turned on (lambda =1). Since the activation volume for diffusivity was left at 0, nothing of interest happens and the problem is solved after one loop. The total number of Newton loops is therefore about 24, compared to 1 for a linear problem. Thus the nonlinear problem is about 24 times as expensive to solve as a linear problem.
The different oxide shapes are shown in Figure 1 and Figure 2. The thicker nitride clearly has the effect of reducing the bird's beak.