Right. Very expensive. It's out there, it definitely exists and works -- but if you aren't doing large scale commercial production... do you really care? There are cheaper methods to figure it out (including not needing to at all
).
I half-ass it by using:
1. A layout approach which produces a simple inductor matrix, and
2. approximating that matrix with estimated inductances in the simulation.
Between any pair of connected pads on a PCB, there is a winding on a transformer; the coupling between all of these windings can be represented by an NxN matrix of coupling coefficients. Most of these will be near zero, meaning that the traces are very distant and do not interact significantly. These can be first approximated as zero, giving a sparse matrix.
The matrix can be further reduced by assuming that ground inductances are negligible or zero, or can be moved to supply or device connections instead. This is a poor assumption, to be used carefully, but a useful one.
If the only significant couplings are self-inductance, then you don't need any coupling terms at all, and can use lone inductors in the model.
To achieve this in the layout, first and foremost you must have significant shielding between any traces for which coupling will be a problem. That means ground plane, solid, well stitched. The PCB does not need to be multilayer, but it cannot be an extremely dense layout on 2 layers: you must reserve enough space between components and subcircuits to fill and bond that ground around them.
"Ground" does not necessarily mean circuit or earth ground, but whatever the local return current path is in a given location.
That key assumption I mentioned, has these implications:
- Even for a solid ground plane, there are ground loop voltages induced in it. Ground will not be "ground" in some absolute sense, at any point on the board. It may be close, but not exactly (and things are worse at higher frequencies and currents).
- Ground is a local concept: the local current return path, the local voltage reference plane. Design the circuit and layout around the concept of a subcircuit reading its inputs against local ground. If local ground will be at a different (AC or DC) potential than where the signal comes from, add local filtering, or differential sensing. (This concept hints at how one might connect a coaxial cable to a circuit, while avoiding traditional problems with galvanic connections (ground loop) or EMI susceptibility.)
Otherwise -- if you meant in terms of how fields are distributed over the board, you can apply the same principles at design time: for example, a trace running over a ground plane will produce so-and-so current distribution. As long as it's not crossing other traces, you can take that assumption and run with it, no problem. But if you have to jumble traces together and you want to know where the signals are going, or if you're dumping a lot of power into some weird shaped polygons or planes, or you simply need a more accurate answer than a hand-wave; you can only solve that the hard way: with a simulator.
Tim