Numerical Precision Problems

Known Bugs ››
Parent Previous Next

Symptoms

Under certain circumstances you may notice that your Sonnet results are noisy at the low frequency portion of your simulation. For example, your results might look something like this:


Notice that the data looks smooth at the higher frequencies, but looks noisy at lower frequencies.

If you are using an ABS sweep, then the analysis may require a lot more frequency points to resolve the noise in the data. The response might look something like this:



Notice that ABS required additional discrete frequency points to resolve the noisy data.

You may also notice noisy current density plots. In the current density plots below, the left plot is at high frequency and the right plot is at low frequency.

Notice the higher current on the edges of the lines, and on the inside edges of the bends in the high frequency plot (left). When precision problems occur, the low frequency current density plots are usually spotted and make no sense.

Cause

The reason why Sonnet has precision problems at low frequency is because Sonnet is based on the Method of Moments technique (like most other planar solvers). At low frequency, the number of significant digits required for calculations to fill the moment matrix becomes very large, exceeding the computer limits for the double-precision arithmetic which Sonnet uses by default. This introduces numerical precision error into the calculations, producing noisy simulation results and spotty current density data.

Workarounds

The first step you should take is to determine if the anomalies you are seeing are due to this numerical precision problem or something else. The best way to do this is to simulate with compute currents checked and to view the current density at your lowest frequency. If the current density is spotted as mentioned above, then your circuit is probably suffering from precision problems.

Once you suspect your project has precision problems, you should follow one or more of these steps to eliminate the problem:

1. Don't use Single Precision: If you are running with the single precision option, you should uncheck this option and re-simulate. Single precision should only be used when you do not have enough memory to run double-precision. Unchecking this Single Precision checkbox will use double-precision, which lowers the minimum frequency where precision problems will occur.

2. Use a larger cell size: In general, the minimum frequency at which numerical precision problems occur is inversely proportional to the cell size. So, for example, if you double your cell size, the lowest frequency at which you can trust is approximately halved.

3. Use ABS to extrapolate a DC point: Often, users will simulate at a very low frequency because they want to approximate DC. A better approach is to use an ABS Sweep, and set the first frequency to 0.0. Sonnet will simulate at higher frequency values which are not affected by the numerical precision error, and then use ABS to extrapolate to DC. This method has proven to give much better results than attempting to simulate at a very low frequency.