EMI Analyzer
Upload a KiCad board to see its copper, its stackup and a set of geometric EMI and EMC checks: where it radiates, what it conducts out through its cables, and where ESD and fast transients get in. Full-wave analysis of a selected region runs on openEMS, a real field solver, not an approximation.
New board
A .kicad_pcb, a zipped KiCad project, or a zip of your Gerber output. Gerbers must include the drill file and an IPC-D-356 netlist — they carry no net information on their own, so without one there is no way to tell which copper is which signal.
Board files are stored in DigitalOcean Spaces and processed by an EmbeddedCI worker — what that means.
How the analysis works
Three stages, and only the last one is slow. Nothing here is a rule-of-thumb estimate standing in for a solver.
- Ingest. A .kicad_pcb is parsed straight from its s-expression source, so nets, traces, vias, pads and the stackup arrive as they were drawn. Gerbers take a longer route: every copper layer is rasterised, its connected islands labelled, and the IPC-D-356 netlist coordinates dropped onto them to recover which island is which net. Both paths end at one normalised board model, and everything after this point reads only that.
- Geometric checks (seconds). Return paths and plane stitching, decoupling, length matching and impedance, and the layout details that make a board radiate. Then the other half of an EMC test: ESD protection at the connectors, shield and chassis grounding, reset lines that a transient can trip, and the power input and switching-regulator layout behind conducted emissions. Every check is in the table below. No solver is involved, which is why these run on any worker and finish while you wait.
- Full-wave solve (hours). openEMS, an EC-FDTD solver, over a region of interest you select. The worker meshes the geometry, excites the nets you nominate, and steps the fields through time on a rectilinear grid. Results come back as frequency-domain surface-current maps per layer, a near-field-to-far-field radiation pattern, and S-parameters. Whole-board solves are not offered: a 100 x 80 mm board meshed at 25 um is around 1.9 billion cells, which no amount of hardware makes practical.
The memory and runtime arithmetic behind a solve, and what the results can and cannot tell you, are on the limitations page.
What every board is checked for
18 checks run on every upload, in seconds, from the board geometry and stackup: what the board radiates and conducts out through its cables, and where ESD and fast transients get in. They say where to look. A solve on a selected region, or a near-field scan loaded onto the board, confirms what is actually radiating. Thresholds and which checks run can be set per board in an emi.rules.yaml.
Projects