next up previous contents
Next: 5.3 Performance Considerations Up: 5. PROMIS-NT Application Examples Previous: 5.1 Analytical Implantation Simulation

5.2 Five Species Phosphorus Pair-Diffusion Model

Richardson, Carey, and Mulvaney formulated the five species phosphorus diffusion model[46,33] described by the differential equation system in (5.4) - (5.8). In these equations $P$, $I$, $V$, $E$, and $F$ represent the concentrations of substitutional phosphorus, the silicon interstitials, vacancies, phosphorus-vacancy, and phosphorus-interstitial pairs, respectively.


$\displaystyle \frac{\partial V}{\partial t}$ $\textstyle =$ $\displaystyle D_{V}\: \nabla ^{2}V-k^{E}_{for}\: P\: V+k^{E}_{rev}\: E-k_{bi}\: \left( V\: I-V^{eq}\: I^{eq}\right)$ (5.4)
$\displaystyle \frac{\partial I}{\partial t}$ $\textstyle =$ $\displaystyle D_{I}\: \nabla ^{2}I-k^{F}_{for}\: P\: I+k^{F}_{rev}\: F-k_{bi}\: \left( V\: I-V^{eq}\: I^{eq}\right)$ (5.5)
$\displaystyle \frac{\partial E}{\partial t}$ $\textstyle =$ $\displaystyle D_{E}\: \nabla ^{2}E+k^{E}_{for}\: P\: V-k^{E}_{rev}\: E$ (5.6)
$\displaystyle \frac{\partial F}{\partial t}$ $\textstyle =$ $\displaystyle D_{F}\: \nabla ^{2}F+k^{F}_{for}\: P\: I-k^{E}_{rev}\: F$ (5.7)
$\displaystyle \frac{\partial P}{\partial t}$ $\textstyle =$ $\displaystyle -k^{E}_{for}\: P\: V+k^{E}_{rev}\: E-k^{F}_{for}\: P\: I+k^{F}_{rev}\: F$ (5.8)

The according MDL input deck can be structured into

\includegraphics[width=0.6cm]{figures/exaLeft.eps}

// Parameters
Parameter<double> k_for_e = 1.0e-14;  // [cm^3/s]
Parameter<double> k_for_f = 1.0e-14;
Parameter<double> k_bi    = 1.0e-10;

Parameter<double> k_rev_e = 10.;      // [1/s]
Parameter<double> k_rev_f = 12.;

Parameter<double> Dv = - 1.0e-10;     // [cm^2/s]
Parameter<double> Di = - 1.0e-09;
Parameter<double> De = - 1.0e-13;
Parameter<double> Df = - 2.0e-13;

Parameter<double> Veq  = 1.0e14;      // [1/cm^3]
Parameter<double> Ieq  = 1.0e14;
Parameter<double> VIeq = 1.0e14 * 1.0e14;

Example 5.2: Global parameter declarations

\includegraphics[width=0.6cm]{figures/exaLeft.eps}

Instance PromisNTSetup = PairDiffInitModel;
NewModel PairDiffInitModel : PromisNTSetupModel {
   evaluate {
      :inputPBF  = "$COMPILE";
      :outputPBF = "$OUTPUT";

      :endTime   = "$ENDTIME";
      :stepTime  = "$STEPTIME";

      :quantityList          = "P_Pair_Quantities";
      :chargeStateTable      = "P_Pair_Charge_States";
      :processTemperature    = "PairDiffTemperatureModel";
      :deviceSetup           = "P_Pair_Diff_DeviceSetup";

      :diffusionModel["Si"]      = "Promis";
      :diffusionModel["Ambient"] = "Promis";
      :boundaryModel["Ambient"]["Si"] = "Promis";
   }
}

NewModel PairDiffTemperatureModel : ProcessTemperatureModel {
   evaluate {
      :temp = 1173.0;
   }
}

Example 5.3: Simulator setup for the five species pair diffusion model

\includegraphics[width=0.6cm]{figures/exaLeft.eps}

NewModel P_Pair_Quantities : QuantityListModel {
   evaluate {
      :quantity["P"] = {{ P }};
      :quantity["V"] = {{ V }};
      :quantity["I"] = {{ I }};
      :quantity["E"] = {{ E }};
      :quantity["F"] = {{ F }};
   }
}

NewModel P_Pair_Charge_States : ChargeStateTableModel {
   evaluate {}
}

Example 5.4: Quantity setup for the five species pair diffusion model

\includegraphics[width=0.6cm]{figures/exaLeft.eps}

NewModel P_Pair_Diff_DeviceSetup : DeviceSetupModel {
   evaluate {
      :segmentPreProcessingSetup ["Si"]      = "SiSegmentPreProcessingSetup";
      :segmentCoefficientSetup   ["Si"]      = "SiCoefficient";
      :segmentPostProcessingSetup["Si"]      = "SiSegmentPostProcessingSetup";
      :segmentPreProcessingSetup ["Ambient"] = "AmbientPreprocessingSetup";
      :segmentCoefficientSetup   ["Ambient"] = "AmbientCoefficient";
      :segmentPostProcessingSetup["Ambient"] = "AmbientPostprocessingSetup";

      :boundaryCoefficientSetup["Ambient"]["Si"] = "P_Pair_BoundarySetup";
   }
}

Example 5.5: Device setup for the five species pair diffusion model

\includegraphics[width=0.6cm]{figures/exaLeft.eps}

NewModel SiSegmentPreProcessingSetup : SegmentPreProcessingSetupModel {
   basicSetup {
      :quantityInitialization["P"] = "Zero_Init";
      :quantityInitialization["V"] = "Zero_Init";
      :quantityInitialization["I"] = "Zero_Init";
      :quantityInitialization["E"] = "Zero_Init";
      :quantityInitialization["F"] = "Zero_Init";
   }
   evaluate {
      call basicSetup;
      :quantityInitialization["V"] = "VI_Init";
      :quantityInitialization["I"] = "VI_Init";
   }
}

NewModel AmbientPreprocessingSetup  : SegmentPreProcessingSetupModel {
   evaluate { call basicSetup; }
}

NewModel SiSegmentPostProcessingSetup : SegmentPostProcessingSetupModel {
   setup {
      :quantityPostprocessing["P"] = "No_Post";
      :quantityPostprocessing["V"] = "No_Post";
      :quantityPostprocessing["I"] = "No_Post";
      :quantityPostprocessing["E"] = "No_Post";
      :quantityPostprocessing["F"] = "No_Post";
   }
   evaluate { call setup; }
}

NewModel AmbientPostprocessingSetup : SiSegmentPostProcessingSetup {
   evaluate { call setup; }
}

Example 5.6: Pre- and postprocessing setup

\includegraphics[width=0.6cm]{figures/exaLeft.eps}

NewModel SiCoefficient : CoefficientSetupModel {
   evaluate {
      :alpha["P"]["P"] = "Uno_alpha"; :alpha["V"]["V"] = "Uno_alpha";
      :alpha["I"]["I"] = "Uno_alpha"; :alpha["E"]["E"] = "Uno_alpha";
      :alpha["F"]["F"] = "Uno_alpha";

      :a["V"]["V"] = "V_a"; :a["I"]["I"] = "I_a";
      :a["E"]["E"] = "E_a"; :a["F"]["F"] = "F_a";

      :gamma["P"] = "P_gamma";  :gamma["V"] = "V_gamma";
      :gamma["I"] = "I_gamma";  :gamma["E"] = "E_gamma";
      :gamma["F"] = "F_gamma";
   }
}

NewModel AmbientCoefficient : CoefficientSetupModel {
   evaluate {
      :alpha["P"]["P"] = "Uno_alpha"; :alpha["V"]["V"] = "Uno_alpha";
      :alpha["I"]["I"] = "Uno_alpha"; :alpha["E"]["E"] = "Uno_alpha";
      :alpha["F"]["F"] = "Uno_alpha";
   }
}


NewModel P_Pair_BoundarySetup : BoundaryCoefficientSetupModel {
   evaluate {
      :dirichlet2["V"] = 1.0e14;      :dirichlet2["I"] = 1.0e14;
      :dirichlet2["P"] = 5.0e20;      :dirichlet2["E"] = 5.0e19;
      :dirichlet2["F"] = 4.16666e19;
   }
}

Example 5.7: Coefficient setup

\includegraphics[width=0.6cm]{figures/exaLeft.eps}

NewModel Zero_Init : QuantityInitializationModel {
   evaluate {
      :Cown = 0.0;
   }
}

NewModel VI_Init : QuantityInitializationModel {
   evaluate {
      :Cown = 1.0e14;
   }
}

NewModel No_Post : QuantityPostprocessingModel {}

Example 5.8: Quantity initialization and postprocessing

\includegraphics[width=0.6cm]{figures/exaLeft.eps}

NewModel Uno_alpha : CoeffModel_alpha {
   evaluate { :Coeff = 1.; }
}

// Coefficients for P related equation
NewModel P_gamma : CoeffModel_gamma {
   evaluate {
     :Coeff      = - ::k_for_e * :P * :V + ::k_rev_e * :E -
                     ::k_for_f * :P * :I + ::k_rev_f * :F;
     :dCoeff \ensuremath{\mathtt{\backslash}}d_P = - ::k_for_e * :V - ::k_for_f * :I;
     :dCoeff \ensuremath{\mathtt{\backslash}}d_V = - ::k_for_e * :P;
     :dCoeff \ensuremath{\mathtt{\backslash}}d_I = - ::k_for_f * :P;
     :dCoeff \ensuremath{\mathtt{\backslash}}d_E =   ::k_rev_e;
     :dCoeff \ensuremath{\mathtt{\backslash}}d_F =   ::k_rev_f;
   }
}


// Coefficients for V related equation
NewModel V_a : CoeffModel_a {
   evaluate { :Coeff = ::Dv; }
}

NewModel V_gamma : CoeffModel_gamma {
   evaluate {
     :Coeff      = - ::k_for_e * :P * :V + ::k_rev_e * :E -
                     ::k_bi * ( :V * :I - ::VIeq );
     :dCoeff \ensuremath{\mathtt{\backslash}}d_P = - ::k_for_e * :V;
     :dCoeff \ensuremath{\mathtt{\backslash}}d_V = - ::k_for_e * :P - ::k_bi * :I;
     :dCoeff \ensuremath{\mathtt{\backslash}}d_I = - ::k_bi    * :V;
     :dCoeff \ensuremath{\mathtt{\backslash}}d_E =   ::k_rev_e;
   }
}

// Coefficients for I related equation
NewModel I_a : CoeffModel_a {
   evaluate { :Coeff = ::Di; }
}

NewModel I_gamma : CoeffModel_gamma {
   evaluate {
     :Coeff      = - ::k_for_f * :P * :I + ::k_rev_f * :F -
                     ::k_bi * ( :V * :I - ::VIeq );
     :dCoeff \ensuremath{\mathtt{\backslash}}d_P = - ::k_for_f * :I;
     :dCoeff \ensuremath{\mathtt{\backslash}}d_V = - ::k_bi    * :I;
     :dCoeff \ensuremath{\mathtt{\backslash}}d_I = - ::k_for_f * :P - ::k_bi * :V;
     :dCoeff \ensuremath{\mathtt{\backslash}}d_F = + ::k_rev_f;
   }
}

Example 5.9: Coefficient Models (part 1)

\includegraphics[width=0.6cm]{figures/exaLeft.eps}

// Coefficients for E related equation
NewModel E_a : CoeffModel_a {
   evaluate { :Coeff = ::De; }
}

NewModel E_gamma : CoeffModel_gamma {
   evaluate {     
     :Coeff      =   ::k_for_e * :P * :V - ::k_rev_e * :E;
     :dCoeff \ensuremath{\mathtt{\backslash}}d_P =   ::k_for_e * :V;
     :dCoeff \ensuremath{\mathtt{\backslash}}d_V =   ::k_for_e * :P;
     :dCoeff \ensuremath{\mathtt{\backslash}}d_E = - ::k_rev_e;
   }
}

// Coefficients for F related equation
NewModel F_a : CoeffModel_a {
   evaluate { :Coeff      = ::Df;  }
}

NewModel F_gamma : CoeffModel_gamma {
   evaluate {
     :Coeff      =   ::k_for_f * :P * :I - ::k_rev_f * :F;
     :dCoeff \ensuremath{\mathtt{\backslash}}d_P =   ::k_for_f * :I;
     :dCoeff \ensuremath{\mathtt{\backslash}}d_I =   ::k_for_f * :P;
     :dCoeff \ensuremath{\mathtt{\backslash}}d_F = - ::k_for_f;
   }
}

Example 5.10: Coefficient Models (part 2)

The simulation results depicted in Fig. 5.3, Fig. 5.4, and Fig. 5.5 show the expected formation of the flat point defect profiles in the inner device regions determined by their reaction term $\left( V\: I-V^{eq}\: I^{eq}\right)$ in the according equations (5.4) and (5.5). The formation of the sharp gradients of the defect concentrations near the surface induced by the Dirichlet boundary conditions and the coupling with the equations for the phosphorus, phosphorus-interstitial, and phosphorus-vacancy pair profiles in term is responsible for the creation of the phosphorus plateau, kink, and tail. The resulting profiles perfectly coincide with the results obtained by the authors of this pair diffusion model.

Figure 5.3: Dopant distribution after 6 seconds
\begin{figure}
\begin{center}
\resizebox{0.8\textwidth}{0.25\textheight}{
\ps...
...{$0.4$}
\includegraphics{figures/testpair06.6.col.eps}}\end{center}\end{figure}

Figure 5.4: Dopant distribution after 60 seconds
\begin{figure}
\begin{center}
\resizebox{0.8\textwidth}{0.25\textheight}{
\ps...
...]{$1$}
\includegraphics{figures/testpair06.60.col.eps}}\end{center}\end{figure}

Figure 5.5: Dopant distribution after 600 seconds
\begin{figure}
\begin{center}
\resizebox{0.8\textwidth}{0.25\textheight}{
\ps...
...$1$}
\includegraphics{figures/testpair06.600.col.eps}} \end{center}\end{figure}


next up previous contents
Next: 5.3 Performance Considerations Up: 5. PROMIS-NT Application Examples Previous: 5.1 Analytical Implantation Simulation
Robert Mlekus
1999-11-14