In this article, we introduce a SPAD simulation workflow that involves 3D broadband optical and 2D electrical simulations for the calculation of the SPAD Photon Detection Efficiency (PDE). We demonstrate how to calculate the optical generation rate using FDTD solver and sweeping over different polarizations and incident angles of the input source. By combining these results with CHARGE simulations, we calculate the PDE vs wavelength for different incident angles and bias voltages.
Overview
Understand the simulation workflow and key results
To calculate the SPAD PDE both the optical generation rate (OGR) and the avalanche triggering probability (ATP) are required. In step 1 the OGR is calculated using FDTD simulations and in step 2 CHARGE solver is used for the calculation of ATP. These results are combined in step 3 for the PDE calculation.
Step 1: Calculate optical generation rate vs. external source angle and frequency
In this step, we calculate the optical generation rate (OGR) as function of incident polar angle θ, azimuthal angle ϕ, polarization, and wavelength using broadband FDTD simulations with a plane wave source and periodic Bloch boundary conditions (for more information see Important model settings).
The sweep results are then averaged over light polarization and incident azimuthal angles.
A series of mat files is generated each one corresponding to a theta angle/wavelength combination, which will be used in step 3 for the PDE calculation.
Step 2: Calculate the avalanche triggering probability
The avalanche triggering probability (ATP) is a unitless number between 0 and 1 that represents the probability that a single electron-hole pair generated at some location inside a Si SPAD will cause a self-sustaining avalanche. This probability can be calculated using the atp - Script command – Ansys Optics for one electric field line based on the input electric field and temperature from the CHARGE simulation of a Si SPAD. We obtain 2D ATP by running the atp command on a bundle of field lines for a selected voltage range.
The ATP result data is saved in file which will also be used in step 3 for the PDE calculation.
Step 3: PDE calculation
A series of CHARGE simulations is run sweeping over the different OGR data calculated by FDTD in step 1. The results are then combined with the ATP data saved in step 2 to calculate the PDE according to:
$$PDE(λ,θ,V) = L\int{G(λ,θ) \cdot ATP(V) dxdy} + L\int\limits_{\partial Ω_n}{P_h \left( \frac{\textbf{J}_p}{e} \right) \cdot d\textbf{l}} + L\int\limits_{\partial Ω_p}{P_e \left( \frac{\textbf{J}_n}{e} \right) \cdot d\textbf{l}}$$
where:
L: dimension of the plane wave light source along z (homogeneous dimension)
G: optical generation rate
𝜕𝛺 𝑛 : interface between depleted and n-doped regions
𝜕𝛺 p : interface between depleted and p-doped regions
ATP: avalanche triggering probability
J : charge current
𝑃 ℎ : hole-ATP
𝑃 e : electron-ATP
The first term corresponds to the contribution from the electron-hole pairs generated inside the depletion region (depletion contribution), while the other two terms correspond to the contribution due to diffusion.
Run and Results
Instructions for running the model and discussion of key results
Step 1: Calculate optical generation rate vs. external source angle and frequency
- Open [[fdtd_3d_external_wave_spad.fsp]], and then open [[run_optical_simulation.lsf]].
- In [[run_optical_simulation.lsf]] script file set the range of source incident angles and number of sampling points, which will be swept through during the simulation (Lines 12-16).
- Run [[run_optical_simulation.lsf]].
The script [[run_optical_simulation.lsf]] will create and run a sweep over the specified incident angles (both polar and azimuthal) and wavelengths as well as the three different polarizations to calculate the OGR.
The OGR results from the sweep will be averaged over the different azimuthal angles and polarizations.
The averaged OGR data will be saved in [[ogr_xyz_f.ldf]] file. Below the averaged OGR for 40 degrees incident angle and 600nm wavelength is plotted.
The OGR data for each polar angle and wavelength combination is saved in a different .mat file. These .mat files will be loaded in step 3 to run a number of CHARGE simulations for the PDE calculation.
Step 2: Calculate the avalanche triggering probability
- Open the [[spad_charge_project_xy.ldev]], and then open [[calculate_atp_2d.lsf]].
- In [[calculate_atp_2d.lsf]] script file the range of bias voltages at which ATP will be computed is defined (Line 11).
- Run [[calculate_atp_2d.lsf]] script.
The [[calculate_atp_2d.lsf]] script will load and run the [[spad_charge_project_xy.ldev]] file. Then it will calculate the ATP for the specified range of bias voltages using the atp - Script command – Ansys Optics which calculates the ATP along one electric field line. The results are saved in the [[atp_profile.ldf]] file. Please note that the ATP is computed without the optical generation rate (“generation” source object is disabled).
The plots below show the 2D ATP at two different voltages, -29 V (left) and -30 V (right).
Step 3: PDE calculation
- With the [[spad_charge_project_xy.ldev]] open, open and run [[ogr_import_sweep.lsf]] script.
The script will initiate a CHARGE simulation sweeping over the OGR data calculated in step 1. It will also load the ATP data from step 2 to calculate the PDE. Combining these results, the script will calculate the PDE vs wavelength for different incident angles and bias voltages, specified in the previous steps. The calculated PDE versus wavelength and bias voltage for 0° angle of incidence is shown below.
Important Model Settings
Description of important objects and settings used in this model
Photon Source Coherence
Since the light from the source is not coherent, both S and P polarized light are considered in separate simulations and averaged to calculate the generation rate of an unpolarized source. Furthermore, different azimuthal angles of the source are simulated and averaged.
Interpolation With Bloch Boundary Condition
There are multiple ways to simulate a broadband planewave source with oblique incidence:
- BFAST
- Single-frequency sweep with Bloch boundaries
- Broadband simulation with Bloch boundaries
For this workflow, we use the last approach because it has a good balance between accuracy and simulation time. For the plane wave source with Bloch boundary conditions, the polar angle of injection varies with wavelength. Therefore, it is necessary to interpolate between broadband results of simulations with multiple values of polar angle to obtain the broadband response for a given polar angle. For more information, please visit this link .
Doping profile
Knowing the exact doping profile is important to simulate the accurate electric field profile needed for the avalanche triggering probability calculation. In the benchmark example shown in Appendix we used the feature in CHARGE to import the user-defined doping profile. Other options are to use one of the analytical doping profile models in CHARGE, such as constant, diffusion, or implant doping.
Computational control parameter in the script in step 2
These parameters are used to specify important inputs for the 2D ATP calculation in step 2, such as the voltage range, space between E-field lines, and others. The users should adjust these parameters for their own Si SPAD device.
Additional Resources
Additional documentation, examples and training material
See Also
- SPAD Dark Count Rate – Ansys Optics
- SPAD Secondary Emission and Absorption – Ansys Optics
- Optical crosstalk in SPAD due to secondary emission – Ansys Optics
- Avalanche photodetector – Lumerical Support
- Vertical photodetector – Lumerical Support
Related Ansys Innovation Courses