Convergence errors are one of the more common errors when running CHARGE simulations. This error indicates that the solver hasn’t been able to self-consistently solve the system of equations describing Poisson and drift-diffusion equations for the given problem (more information about the solver physics can be found in this article). This article provides recommendations for troubleshooting the convergence error when it occurs.

Below are some common examples that may cause a convergence error in CHARGE:

- The high field mobility model is enabled in one or several materials.
- The impact ionization model is enabled in one or several materials.
- The voltage step is too large or advanced solver settings need to be adjusted.

Here’s different recommendations for addressing the error:

## Voltage

Using an appropriate voltage step for the contacts (defined as an electrical boundary condition) are important for the simulation to converge. In CHARGE the solution at each bias voltage is based on the solution obtained at the previous voltage. Therefore, having a large voltage step can make obtaining a solution harder and result in convergence error. Here are some recommendations:

- Even when the simulation is just single voltage, start from equilibrium and sweep the boundary to the voltage of interest to help with convergence. Starting from nonzero voltage may be more difficult to converge.
- The voltage step should not be too big.
- Try to enable "range backtracking" in sweep type "range" or try to use sweep type "auto" in electrical boundary conditions. This will enable automatic reduction of voltage steps upon convergence failure and attempting to solve again and repeat this process down to the minimum step set by the user.

## Advanced settings

Many settings in the advanced tab of the solver can impact the convergence behavior:

Adjusting one or few of the highlighted settings can address convergence errors:

- Solver type: Changing the solver type (Newton or Gummel) can be helpful in addressing the convergence error. Newton is more general and can be used both in reverse and forward bias, while Gummel usually works better in reverse bias. Please refer to this article for more information about each of these methods.
- Global iteration limit: This is the number of times the solver will attempt to find a solution. Increasing this value can be helpful especially if the error values shown in the message indicate that the solver is approaching a solution (which meets the tolerance); if the change doesn't fix the error, the drawback is that the solver will now take longer to announce convergence error.
- Gradient mixing: Enable this option (fast or conservative) when the high field mobility model or the impact ionization model are turned on for a material. Test and use whichever option might resolve the convergence error.
- Update limiting: These options determine the largest solution update between every two iterations for the drift-diffusion equation (dds), the Poisson equation, and the heat equation (ht). Reducing the max update may make the convergence more stable but it may also become slower, so try increasing the number of allowed iterations in conjuction with reducing the updates.
- Initialization is used to generate an improved initial guess when the operating point of the device is far from equilibrium. If the simulation fails at the initialization stage try to reduce the init step size. Please refer to this article for more information about initialization.

## Impact ionization model

This model is mainly used when simulating avalanche photodetectors (APDs). All of the above mentioned troubleshooting steps can be used to make the convergence in breakdown as good as possible. Specifically, one of the gradient mixing models should always be turned on. There is no guarantee that the convergence can be achieved deep into breakdown. However, most of the times it will be possible to converge up to breakdown, with gain in the range of up to a few hundred, which allows the determination of the breakdown voltage (the beginning of the steep IV curve on the log scale) and the simulation of linear mode APDs.

## Mesh

Sometimes refining the mesh to more accurately capture the variation of device variables occurring across the device (e.g. current density or electric field) may help with the convergence. To inspect this, mesh the structure and visualize the result "grid". Or if the simulation has already been run the mesh can be visualized from 2D or 3D results. If the mesh seems too coarse use smaller values for max and min edge length in mesh tab of the solver or use mesh constraint objects in appropriate regions.

## Transient settings (bandwidth simulation)

**Transient simulation + FFT **

One method to calculate photodetector bandwidth due to optical source is to perform a transient simulation followed by the Fourier transform. In the transient simulation we apply a step on shutter to optical source, then calculate the impulse response from the step response, and finally perform the Fourier transform on the impulse response. More details on this workflow can be found in our vertical photodetector application example .

To get accurate photodetector bandwidth, the high field mobility model should be turned on. This will allow more accurate modeling of electron velocity saturation and in turn the transit time, which affects the bandwidth. So, in addition to common convergence issues, we have to account for the issues that may arise from the usage of the high field mobility model.

Below are common troubleshooting steps. Most options can be found in the CHARGE edit window in Advanced tab. It is recommended to try the steps below using newton solver type, and then try with gummel in case the issues are not resolved.

- In majority of cases convergence will be difficult without turning on gradient mixing. Make sure this is enabled and set to one of possible options.

** Initialization stage **

- Initialization is necessary when the photodetector is reverse biased, which is usually the case. It provides a more accurate initial guess for the nonequilibrium solution at t=0s. If it fails try reducing the init step size. This is equivalent to using smaller voltage steps in a voltage sweep, since it makes convergence more stable.

** Time stepping stage **

- If any of the time steps for t>0s fail to converge first try simultaneously reducing the dds (charge transport) and poisson (electrostatics) max update values, which are given in units of Vth=kT. Values as small as 1 are not unusual. This is assuming there is no heat coupling, so ht max update value can be ignored.
- If step 3 alone does not help, try increasing the number of iterations. In step 3 you will make simulations more stable, but slower, so that increasing the allowed number of iterations may be necessary. Values of 100 are not unusual.
- If the simulation still fails, try reducing the min step size in the Transient tab of the CHARGE edit window. This is equivalent to using smaller voltage steps in a voltage sweep and should make the simulation more stable.

** Shutter slew **

- If the convergence fails in the vicinity of the shutter ton time, try increasing shutter tslew in order to make the shutter less steep. This should make the simulation more stable around the rising edge and should be possible as long as your shutter bandwidth is still larger than the device bandwidth, so that the device bandwidth can be properly probed.

If none of the above steps helped (remember to try both solver types) with your simulation please contact our technical support.