matthuszagh / pyems

High-level python interface to OpenEMS with automatic mesh generation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Tolerance analysis

matthuszagh opened this issue · comments

Pyems should be able to perform a tolerance analysis based on PCB manufacturer tolerances. For instance, dielectric, prepreg thickness and copper etching all have associated tolerance values.

For each uncertainty value, we can generate a range. As part of the analysis, the user must specify some parameter of interest. Then, if we assume that the transfer function of that parameter with respect to the input parameter with an uncertainty is monotonically increasing or decreasing, we only need to test the boundaries of the uncertainty range. Additionally, if we assume that the direction of this monotonicity is not affected by the value of other parameters with uncertainty, then we only need to test 2 simulation inputs: (1) the simulation composed of all bounds that minimize the output parameter and (2) the simulation of all bounds that maximize it.

If the user knows the monotonicity direction for an input parameter, that user should be able to input it. If this direction is not input, pyems must compute it. For each parameter, pyems can compute the monotonicity direction by testing each bound. If we define n to be the number of input parameters with an uncertainty, the worst case requires 2n+2 simulations (2n to test the monotonicity directions and 2 for the final boundary simulations). We should, of course, perform these in parallel (see the sweep method).

As an example, we can imagine performing a tolerance analysis on a simple GCPW impedance simulation using the OSHPark 4-layer process. This consists of a backing ground plane, a dielectric and a top layer with the grounded coplanar waveguide. The parameter uncertainties are the prepreg thickness and the location of each "line" between copper and etched copper on the top layer. This amounts to 5 total uncertainty inputs. So, this analysis would require 12 simulations, which is very feasible. There are a number of other possible uncertainty values such as copper thickness, conductivity, roughness, etc. but these are not provided. Additionally, OpenEMS cannot model surface roughness.