Click here to go to our main computer-aided design page
Click here to go to our EM analysis software page
Computational electromagnetics (CEM)
Maxwell's Equations are the basis of all electromagnetics (see Mr. Maxwell in our Microwave Hall of Fame!) The propagation of all electromagnetic radiation, from hard X-rays to ultra-low frequency radio waves, is governed by this system of equations. Most electrical engineers learn just enough theoretical electromagnetics to realize that they never, ever want to solve E&M problems analytically. In practice, analytical and semi-analytical solutions to Maxwell's Equations are only available in the simplest possible cases - situations like simple striplines, or plane waves scattering off of spheres.
The moment you move away from the very simplest designs, analytical methods become mostly useless. In order to predict what even a simple antenna or waveguide will do, you almost always have to simulate.
In a world where a wafer fabrication run takes 6 months and costs a couple of million dollars, there is a huge incentive to be able to accurately predict the behavior of structures without having to build and test them. This is, not unexpectedly, big business, and there are lots of commercial codes out there that solve Maxwell's Equations. Each code has different capabilities and limitations; each has different strengths and weaknesses, and choosing the right electromagnetics codes is a key step in making your project a success.
There are several different ways of simulating Maxwell's Equations. The gold standard for electromagnetic modeling is 3D simulation of the full 6-vector Maxwell's Equations. Packages that do this tend to be very expensive, because this is a very difficult computation to perform. This kind of computation is absolutely essential in many situations, particularly for modeling structures that are larger than perhaps 1/10 wavelength, where structures cannot be treated as lumped elements. Certainly in the regime where the structure is on the order of 1/4 wavelength or larger, such 3D electromagnetics codes are absolutely essential. As frequencies increase, true 3D electromagnetic simulation becomes more and more important. Problems that contain multiple wavelengths and need to be simulated in three dimensions can rapidly become so computationally challenging that they take days to solve on a modern workstation.
There are many ways to simplify the computations used in the simulation of Maxwell's Equations. Simplified methods, though often much faster and able to handle much more complex structures than full 3D electromagnetic tools, must be treated with some caution. You need to be sure that the simplifications being applied are valid for the device you're trying to model. If you use a tool that assumes that all of your currents are in-plane to simulate a structure where critical current paths are out-of-plane, your results will often be misleading - the solution can be fully converged, but just not represent the physics of what's really going on in your device. There's always a balance to be struck between accuracy and speed, both in choosing algorithms and in choosing settings for your simulation runs.
Some of the most common simplifications that can be made include (speaking in the broadest possible terms):
- Quasi-planar - assume that the structures are planar, in some cases with isolated exceptions for vias. Some of these software packages are limited to infinitely thin metal models, which have problems in predicting the losses associated with real metal absorption. Others integrate thick metal models to get around these issues.
- 2D - Assume that structures are translationally invariant in one dimension. This greatly simplifies computations, but is rarely a valid assumption for designing real devices. However, using 2D simulators is often a powerful way to develop intuition quickly for how a system behaves and to understand trends, even if the specific numbers that come out are not always relevant.
- Physical optics/shooting and bouncing rays/ray tracing - In the regime where the structures are substantially larger than the wavelength of the radiation that's being bounced off of them, methods that use these approaches are often very advantageous. These methods generally fail to account for phase and diffraction effects, and are often incapable of dealing with resonances within the structures being modeled.
- Poisson's equation - Solve for quasi-static, low-frequency behavior of electromagnetic systems. This is often an excellent approximation in the regime where the entire device being designed is less than 1/10 of a wavelength at the frequency of interest - provided of course that the structure does not have a long internal path length, such as a spiral inductor.
- 3D electromagnetics - The gold standard for finding solutions to Maxwell's Equations. Because of the complexity of this type of calculation, these simulations can be quite slow. Also, they are often limited in the complexity of the structures that can be simulated, because a dense grid of points is usually necessary for accurate results. Methods include finite difference, finite element, boundary element, method of moments, and several others. Different methods are best adapted for different situations.
Computational methods and packages for 3D solution of Maxwell's equations
Maxwell's Equations are a linear system. A lot of work has gone into coming up with clever ways to solve large linear systems using computers. The different methods for simulating Maxwell's Equations basically boil down to different ways of looking at the mathematics of representing this system of linear equations on a computer.
In general, computational methods are divided into explicit and implicit methods. Implicit methods are ones where a linear system representing the problem domain is directly solved through an iterative method. The most common methods of this class will give solutions in the frequency domain, and the solutions are refined by increasing mesh density for better accuracy. As the mesh becomes denser, the solution becomes better and better; in the limit as the mesh becomes infinitely dense, the solution should converge to a perfect solution of Maxwell's Equations.
Because implicit methods depend on inverting a matrix, they generally are limited in terms of the size of the domains they can solve by available memory on your computer - for instance, 3D finite element packages are usually limited to solving problems with less than ½ million grid points on a modern personal computer. When you consider that you want at least 15 grid points per wavelength (and often far more) in most cases for reasonable accuracy, and that 500,000 grid points evenly distributed in three dimensions only gives about 80 points on a side of a box, you realize that these methods have sharp limitations for multi-wavelength problems. With finite-element methods this is somewhat alleviated by the fact that the grid can conform to structures, but the grid still needs a minimum density of points to represent the radiation and the structures.
One of the most popular computational methods for solving problems too large to handle in finite element packages is FDTD (finite difference time domain), which gets around having to invert a large linear system by instead mimicking Maxwell's Equations in the time domain. By implementing a uniform mesh, the overhead associated with storing the location of each point is eliminated (though there are conformal FDTD methods that try to split the difference), allowing order-of-magnitude increases in the size of domains that can be solved, compared to finite-element approaches. The cost for this is that FDTD methods are far harder to use than finite-element approaches - the analysis of the data to deconvolve behavior as a function of frequency can be nontrivial, and numerical stability is not always assured. In general, it requires a couple of years of experience to get really reliable results out of 3D FDTD methods, even with modern packages.
Other methods include MoM (method of moments), which depends on a Fourier decomposition of the structures to be simulated, and BEM (boundary element method) which uses a surface mesh rather than a volumetric mesh.
Hardware accelerations
One of the newest trends in the CEM community is the development of hardware-accelerated software packages. Some vendors have implemented their core algorithms using custom fast-programmable gate arrays, and claim speedups as a result. Others have taken advantage of the enormous computational power available in graphical processing units to speed up their computations. Many vendors are offering distributed computing as an option for their software - often this consists of simply farming out different problems to different machines. This kind of distribution, which is trivial to implement, must be distinguished from distributing a single problem across many machines in order to deal with larger domains or speed up single computations.
It is very important, in evaluating the speed of these accelerated methods, to ensure that they work well for the problems that you care about solving. Some vendors will claim '100X' speedups, but when you look at the raw speed you realize that they're 100X only in only a very narrow class of cases, or that they are comparing against some specific academic code whose performance is not all that good to start with. Make sure that you understand exactly where performance claims come from and that you are confident that the software will perform well for your specific type of problem. After all, these codes aren't cheap, and you don't want to get stuck explaining to your boss why you need to buy yet another piece of CEM code, because the first one is a dog! You really don't want the price to come out of your bonus.
Buying CEM software
There are several questions you will want to answer when selecting CEM software:
1) What problem do you want to solve?
Different codes will cope better or worse with different kinds of problems. If you're trying to do a simple low-speed PCB layout, you probably don't need the newest, fastest, most expensive piece of 3D high frequency code. If you're building complicated antenna feed structures or trying to determine detailed radar scattering cross sections, you probably need a high-end 3D code.
2) What codes will handle my problem?
Generate some test problems. Pick out some problems that represent the kinds of things you want to be able to solve, but that don't give away any of your intellectual property. Make sure that these problems are representative of the real complexity and scale of the things you want to do in the future, not just right now. Expect vendors to be willing to demonstrate that their software can handle your problems, and not to just hand you the demo and let you flounder. If they won't help you before your buy the software, what kind of support can you expect afterwards? Make sure that you understand what approximations each code is making - is it throwing away physics that your device depends on in order to improve speed? Different techniques make different simplifications, and not every code will solve every problem.
3) What does it cost?
Different CEM solutions will span the space from free tools available on the web all the way up to $100k or more for a truly powerful 3D solution. The best tools cost a lot of money; but the most expensive tool is not necessarily the fastest or the best for you. One of the neat things about software is that because the barrier to entry is low, there are always young companies with the newest, fastest thing appearing on the scene and trying to take market share away from the big players.
4) Can I use it?
Once you pick out a tool or two that fits your budget and that seems like it can solve your problems, do a demo. In an ideal world you would test the code yourself, possibly with someone from the vendor looking over your shoulder to get you running quickly. Many vendors will have a mechanism for doing live demos on the web; this can be a great way to learn to use a new code really quickly. See what happens as you change the meshing settings around - do some long, slow simulations and evaluate how close the quick-and-dirty answers are to the ultimate accuracy of the code. Consider how fast you want the code to run for your designs; if what you're looking at isn't fast enough or is inaccurate for your designs, look at some other vendors' codes. Pay attention to whether the software is stable, and how easy it is to use. A good rule of thumb is that anything that takes longer than overnight starts to be impractical for a commercial project - what do you do all day if yesterday's simulation runs aren't done yet?
5) How's the support?
Is the company responsive? Does the manual tell you the things you need to know? Do you feel like you can rely on advice from the support people? Do the people supporting the code care about helping you when you run into a problem?