# 1.2. pn junction¶

Author Stefan Birner

Input files for nextnano³ software

• GaAs_pn_junction_1D_nn3.in

• GaAs_pn_junction_1D_QM_nn3.in

• GaAs_pn_junction_2D_nn3.in

• GaAs_pn_junction_3D_nn3.in

• GaAs_pn_junction_1D_ForwardBias_nn3.in

• GaAs_pn_junction_2D_ForwardBias_nnp.in

• GaAs_pn_junction_3D_ForwardBias_nnp.in

Input files for nextnano++ software

• GaAs_pn_junction_1D_nnp.in

• GaAs_pn_junction_2D_nnp.in

• GaAs_pn_junction_3D_nnp.in

• GaAs_pn_junction_1D_ForwardBias_nnp.in

This tutorial discusses the nextnano++ input file. Identical results can be achieved with the nextnano³ input files listed above. The keyword list that you may find helpful can be downloaded here.

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 300nm GaAs. At the left and right boundaries, metal contacts are connected to the GaAs semiconductor (i.e. from 0nm to 10nm, and from 310nm to 320nm). The structure is p-type doped from 10nm to 160nm and n-type doped from 160nm and 310nm.

The following figure shows the concentration of donors and acceptors of the pn-junction. In the p-type region between 10nm and 160nm, 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 ## Carrier concentrations¶

The equilibrium condition for a pn-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 pn-junction only has very few free carriers left. The following figure shows the electron and hole densities and the depletion region around the pn-junction at 160 nm. Here, we assumed that all donors and acceptors are fully ionized. ## 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 pn-junction. ## 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 pn-junction. In regions without charges, the electric field is zero. The following figure shows the electric field of the pn-junction. The extremum of the electric field $$F_{max}$$ (at 160nm) 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 pn-junction. 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 GaAs_pn_junction_1D_QM_nn3.in, we can solve the Schroedinger 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 pn-junction, all four options lead to identical densities. The following figure shows the band edges of the pn-junction for the four cases:

• Classical calculation

• Quantum mechanical calculation with Dirchlet boudnary conditons

• Quantum mechanical calculation with Neumann boundary conditions

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

For all cases the band edges are identical in the area around the pn-junction. Tiny deviations exist at the boundaries of the device. 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. ## Nonequilibrium¶

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¶

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

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

These input files are for the same pn-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 pn-junction with classical charge densities.                       !
#                                                                           !
# It's part of the 1D pn-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{}
}