— FREE — GaAs p–n junction

Author Stefan Birner

Note

See a tutorial on IV curves for pn junctions described here

Input Files:
  • pn_junction_GaAs_1D_nnp.in

  • pn_junction_GaAs_2D_nnp.in

  • pn_junction_GaAs_3D_nnp.in

This tutorial discusses the nextnano++ input file. Identical results can be achieved with the nextnano³ input files listed above.

This tutorial aims to reproduce Figure 3.1 (p. 51) of Joachim Piprek’s book “Semiconductor Optoelectronic Devices - Introduction to Physics and Simulation” (Section 3.2 “pn-junctions”)

Doping concentration

The structure consists of 300 nm GaAs. At the left and right boundaries, metal contacts are connected to the GaAs semiconductor (i.e. from 0 nm to 10 nm, and from 310 nm to 320 nm). The structure is p-type doped from 10 nm to 160 nm and n-type doped from 160 nm and 310 nm.

The following figure shows the concentration of donors and acceptors of the p-n junction. In the p-type region between 10 nm and 160 nm, the number of acceptors, \(N_A\) is \(0.5 \times 10^{18}\) cm-3 In the n-type region between 160 nm and 310 nm, the number of donors, \(N_D\) is \(2.0 \times 10^{18}\) cm-3

../../../_images/dopingconcentrationofpnjunction.jpg

Carrier concentrations

The equilibrium condition for a p-n junction is achieved by a small transfer of electrons from the n region to the p region, where they recombine with holes. This leads to a depletion region (depletion width = \(w_p + w_n\)), i.e. the region around the p-n junction only has very few free carriers left. The following figure shows the electron and hole densities and the depletion region around the p-n junction at 160 nm. Here, we assumed that all donors and acceptors are fully ionized.

../../../_images/eandhdensities.jpg

Net charges (space charge)

In the depletion region, a net charge results from the ionized donors \(N_D\) and ionized acceptors \(N_A\). The following figure shows the net charge density of the p-n junction.

../../../_images/net_charge_density.jpg

Electric field

The slope of the electric field is proportional to the net charge (Poisson equation), thus the extremum of the electric field is expected to be at the p-n junction. In regions without charges, the electric field is zero. The following figure shows the electric field of the p-n junction.

../../../_images/electric_field.jpg

The extremum of the electric field \(F_{max}\) (at 160 nm) can be approximated as follows:

\[ \begin{align}\begin{aligned}F_{max} = \frac{-e N_A w_p}{\epsilon \space \epsilon_0} = - 6.997 \times 10^{14} \text{V/m}^{2} \space w_p = 387 \space \text{kV/cm}\\ = \frac{-e N_D w_n}{\epsilon \space \epsilon_0} = - 2.799 \times 10^{15} \text{V/m}^{2} \space w_n = 386 \space \text{kV/cm}\end{aligned}\end{align} \]

Symbol

Value

e

\(1.6022 \times 10^{-19} \text{As}\)

\(\epsilon\)

12.93 (Dielectric constant of GaAs)

\(\epsilon_0\)

\(8.854 \times 10^{12} \text{As/(Vm)}\)

\(N_A\)

\(0.5 \times 10^{18} \text{cm}^{-3}\)

\(N_D\)

\(2.0 \times 10^{18} \text{cm}^{-3}\)

\(w_p\)

55.3 nm

\(w_n\)

13.8 nm

Electrostatic potential, conduction and valence band edges

In regions, where the electric field is zero, the electrostatic potential is constant. The electrostatic potential phi determines the conduction and valence band edges:

  • \(E_c=E_{c0}-e\phi\)

  • \(E_v=E_{v0}-e\phi\)

The following figure shows the conduction and valence band edges, the electrostatic potential and the Fermi level of the p-n junction.

../../../_images/band_edges.jpg

Without external bias (i.e. equilibrium), the Fermi level \(E_F\) is constant (\(E_F=0 \space \text{eV}\)).

The built-in potential \(\phi_{bi}\) was calculated by nextnano++ to be equal to 1.426 V It can be approximated as follows:

\[\phi_{bi} = F_{\text{max}} (w_p + w_n) /2\]

Assuming \(F_{\text{max}} = 387 \text{kV/cm}\), this would result in a depletion width: \(w_p + w_n = 73.7 \text{nm}\)

To allow for a constant chemical potential (i.e. constant Fermi level \(E_F\)), a total potential difference of \(-e \phi_{bi}\) is required.

Quantum mechanical solution

Using the nextnano³ input file pn_junction_GaAs_1D_QM_nn3.in, we can solve the Schrödinger equation for the electrons, light and heavy holes in the single-band approximation over the whole device, rather than classically. We calculate up to 300 eigenvalues for each band. Thus the electron and hole densities are calculated purely quantum mechanically. The following figure shows the electron and hole concentrations for the classical and quantum mechanical calculations. For the QM calculations, different boundary conditions were used.

  • Dirichlet boundary conditions force the wave functions to be zero at the boundaries, thus the density goes to zero at the boundaries which is unphysically.

  • Neumann boundary conditions lead to unphysically large values at the boundaries.

For the classical calculation, the densities at the boundaries are constant. Nevertheless, in the interesting region around the p-n junction, all four options lead to identical densities.

../../../_images/carrier_concentration_QM.jpg

The following figure shows the band edges of the p-n junction for the four cases:

  • Classical calculation

  • Quantum mechanical calculation with Dirchlet boundary conditions

  • Quantum mechanical calculation with Neumann boundary conditions

  • Quantum mechanical calculation with mixed boundary conditions (this feature is no longer supported)

For all cases the band edges are identical in the area around the p-n junction. Tiny deviations exist at the boundaries of the device.

../../../_images/band_edges_QM.jpg

This figure is a zoom into the right boundary of the conduction band edge. On this scale, the tiny deviations for the different boundary conditions can be clearly seen.

../../../_images/band_edges_QM_zoom.jpg

Non-equilibrium

So-called “quasi-Fermi levels” which are different for electrons (\(E_F\), \(n\)) and holes (\(E_F\), \(p\)) are used to describe nonequilibrium carrier concentrations.

In equilibrium the quasi-Fermi levels are constant and have the same value for both electrons and holes (\(E_{Fn} = E_{Fp} = 0 \space \text{eV}\)). The current is proportional to the mobility and the gradient of the quasi-Fermi level \(E_F\).

2D/3D Simulations

  • pn_junction_GaAs_2D_nn3.in / *_nnp.in - input file for the nextnano³ and nextnano++ software

  • pn_junction_GaAs_3D_nn3.in / *_nnp.in - input file for the nextnano³ and nextnano++ software

These input files are for the same p-n junction structure as in the 1D case, but extended into 2D and 3D.

  • 2D: rectangle of dimension 320 nm x 200 nm

  • 3D: cuboid of dimension 320 nm x 200 nm x 100 nm

Complete input file for nextnano++

#***************************************************************************!
#                                                                           !
# pn_junction_GaAs_1D_nnp.in                                                !
# --------------------------                                                !
#                                                                           !
# This is an input file for nextnano++ to calculate the band edges of a     !
# simple p-n junction with classical charge densities.                       !
#                                                                           !
# It's part of the 1D p-n junction tutorial which can be found at:           !
# https://www.nextnano.com/nextnano3/tutorial/1Dtutorial_pn_junction.htm     !
#                                                                           !
# For help on the individual keywords please go to                          !
# https://www.nextnano.com/nextnanoplus/software_documentation/input_file.htm !
#                                                                           !
# nextnano (c) nextnano GmbH                                                !
# This input file is (c) Stefan Birner, nextnano GmbH.                      !
# This file is protected by applicable copyright laws. You may use it       !
# within your research or work group, but you are not allowed to give       !
# copies to other people without explicit permission.                       !
#                                                                           !
# Documentation: https://www.nextnano.com/nextnanoplus/                     !
# Support:       support@nextnano.com                                       !
#***************************************************************************!


global{
simulate1D{}

temperature = 300.0                                                    # Kelvin

substrate{ name = "GaAs" }

crystal_zb{
        x_hkl = [1, 0, 0]
        y_hkl = [0, 1, 0]
}
}

grid{
#
# For consistency reasons, we use the same nonuniform grid spacing as the nextnano3 input file.
# However, using jumps in the grid spacing (e.g. at x=100.0 where the grid spacing changes abruptly)
# is not a good practice, as numerical errors increase.
#
xgrid{
        line{ pos = 0.0       spacing = 2.0  }
        line{ pos = 10.0      spacing = 2.0  }
        line{ pos = 10.0      spacing = 1.0  }
        line{ pos = 100.0     spacing = 1.0  }
        line{ pos = 100.0     spacing = 0.5  }
        line{ pos = 140.0     spacing = 0.5  }
        line{ pos = 140.0     spacing = 0.25 }
        line{ pos = 180.0     spacing = 0.25 }
        line{ pos = 180.0     spacing = 0.5  }
        line{ pos = 220.0     spacing = 0.5  }
        line{ pos = 220.0     spacing = 1.0  }
        line{ pos = 310.0     spacing = 1.0  }
        line{ pos = 310.0     spacing = 2.0  }
        line{ pos = 320.0     spacing = 2.0  }
}
}

structure{
output_region_index{ boxes = no }
output_material_index{ boxes = no }
output_alloy_composition{ boxes = no }
output_impurities{ boxes = no }

region{
        everywhere{}
        binary{ name = "GaAs" }
}
region{
        line{
                x = [0.0, 10.0]
        }
        binary{
                name = "GaAs"
        }
        contact { name = source }
}
region{
        line{
                x = [10.0, 310.0]
        }
        binary{
                name = "GaAs"
        }
}
region{
        line{
                x = [310.0, 320.0]
        }
        binary{
                name = "GaAs"
        }
        contact { name = drain }
}

region{
        line{
                x = [ 0.0, 160.0]
        # x = [10.0, 160.0]     # doping must not start at 10.0
        }
        doping{
                constant{
                        name = "p-type"
                        conc =  0.5e18
                }
        }
}

region{
        line{
        # x = [160.0, 310.0]    # doping must not end at 310.0
                x = [160.0, 320.0]
        }
        doping{
                constant{
                        name = "n-type"
                        conc = 2.0e18
                }
        }
}
}

impurities{
#    donor{ name = "n-type" energy = 0.027   degeneracy = 2 }
# acceptor{ name = "p-type" energy = 0.0058  degeneracy = 4 }
        donor{ name = "n-type" energy = -1000.0 degeneracy = 2 }    # '-1000.0' eV = all ionized
acceptor{ name = "p-type" energy = -1000.0 degeneracy = 4 }    # '-1000.0' eV = all ionized
}

contacts{
ohmic{ name = "source" bias = 0.0 }
ohmic{ name = "drain"  bias = 0.0 }
}

classical{
Gamma{}
HH{}
LH{}
SO{}

output_bandedges{ averaged = no}
output_carrier_densities{}
output_ionized_dopant_densities{}
output_intrinsic_density{}
}

poisson{
output_potential{}
output_electric_field{}
}

run{
solve_poisson{}
}
Input Files for nextnano³:
  • pn_junction_GaAs_1D_nn3.in

  • pn_junction_GaAs_1D_QM_nn3.in

  • pn_junction_GaAs_2D_nn3.in

  • pn_junction_GaAs_3D_nn3.in

Last update: nn/nn/nnnn