# Automaticphysics Kicad-EMS — Antenna Designer
> Antenna Designer is a plugin for KiCad's PCB editor (pcbnew) for designing
> and simulating PCB antennas without leaving the board editor. There are two
> ways to work: simulate the board you already have, with a bundled FDTD field
> solver that meshes your real copper, stack-up and drills; or design an
> antenna from scratch with a wizard
> that sweeps a topology's dimensions, ranks the candidates by how well they
> match at your target frequency, and places the winner on the board as a
> footprint. No deep EM background is required to get an answer — the mesh, the
> boundaries and the run length are all worked out from the board and the
> frequency you name — and nothing is held back from the engineer who would
> rather set them: it is the same solver either way, on real boards. It is free
> to download and use, with no account to make and no trial period to run out.
This file is the homepage said in plain text, for language models and other
readers that would rather not parse a page of markup, with more detail on the
two things the page shows in figures rather than words: how the mesh is built,
and how a dimension sweep runs. It follows the
[llms.txt](https://llmstxt.org/) convention. The page it summarises is
; the fullest documentation is the plugin's own
[README](https://github.com/admin-2026/kicad_ems_plugin_pub), which is where
anything here was taken from and where it should be checked against.
## The two ways to use it
**Simulate the board you have.** The solver meshes the layout itself — copper,
stack-up and drills. Rebuilding a board inside a field solver is slow work, and
keeping that copy honest is worse: every trace moved on the real board has to
be repeated in it, and when someone forgets, the simulation carries on giving
confident answers about a board that no longer exists. There is no second model
here to drift. The only thing marked by hand is where the antenna is fed, and
what comes back is a full antenna report: how it radiates, how well it is
matched across the band, where the current runs on the copper, and where the
power that does not radiate went instead.
**Design an antenna from scratch.** Several topologies ship as wizards — among
them an **L-shaped monopole** and a **meandered inverted-F** — and the set
grows with each release. Mark the area the antenna
may occupy, choose which dimensions to sweep — the resonant length, the track
width, the topology's own knobs — and the plugin simulates the candidates and
ranks them on how the antenna performs: the match at your target frequency, and
the other figures that decide whether a design is worth having. Each candidate
is simulated on a copy of the board, so the board itself is never modified. The
winner can be placed as a footprint and saved for reuse.
## Unique features
- **The simulation lives in the board editor.** Not a separate application with
the layout exported into it: the answer comes back in the window the board is
drawn in, with nothing to export and nothing to import.
- **The model is the board.** Other field solvers ask you to build the geometry
again in their own terms. This one reads the copper, the outline, the
stack-up and the drills the board already has, so the thing simulated is the
thing that will be fabricated — and it stays true after the next layout
change, with nothing to re-export.
- **The mesh is derived, not written.** The usual FDTD workflow has you place
mesh lines by hand, in a script, and get quietly wrong answers when you place
them badly. Here the cell sizes are measured off the board and the band.
- **It designs, not just checks.** Most tools tell you how the antenna you drew
performs. This one takes a rectangle of free board area and a target
frequency, searches a topology's dimensions by simulating the candidates, and
hands back a footprint placed on the board. Analysis and synthesis are the
same tool.
- **It runs on your machine.** A self-contained solver ships in the package —
nothing to install beside it, no cloud queue, no account,
and no board of yours leaving the building.
## Easy to pick up, built for real work
The inputs are the two things a board designer already knows: the frequency the
antenna is for, and what the layers are made of. Everything an EM tool normally
asks an expert to choose is derived from those and printed for you to see — the
cell size, the absorbing boundary and how far out to put it, the feed port's
axis and width and the gap cut through it, and how long the run has to be
before the answer has settled. Marking the feed is a click on the trace.
What that leaves is a plain sequence — set the frequency, click the feed, look
at the mesh, run it — and a report written to be read rather than decoded: one
gain figure rather than several a fraction of a dB apart, an efficiency
breakdown that adds up instead of leaving the arithmetic to you, and plots that
state their frequency, impedance and VSWR in words rather than waiting to be
hovered over.
The guardrails matter more for a beginner than for an expert, because a wrong
EM answer looks exactly like a right one. Rather than let a badly posed run
finish and hand back a confident pattern, the plugin refuses it and says which
part of the board it could not honour — see below. And nothing has to be paid
for on faith: the mesh is viewable before the solve, and a slider previews
candidates before any of them are simulated.
None of this is a beginner mode with the real tool behind it. There is one
solver and one full-wave solve; the derived numbers are printed rather than
hidden, and any of them can be set by hand by someone who wants to. What the
automation removes is the setup, not the physics — the answer is meant to be
good enough for boards that go to fabrication, and for the professional work
that gets paid for.
There are [example boards](https://github.com/admin-2026/kicad_ems_plugin_examples)
to open and simulate, which is the shortest way to see a real run end to end.
## The mesh builds itself
Meshing is the part of EM simulation that usually costs the day, and here there
is nothing to draw. The plugin exports the board's own fabrication data — the
copper layers, the outline, the plated and non-plated drills — and the solver
rasterises that directly. Traces, pads and slots land at their drawn width;
a multi-layer stack-up stacks at the thicknesses the board setup already
states; plated holes become vias tying the inner planes to the top, and
non-plated ones are drilled out of the substrate. There is no second model to
build, and none to keep in sync when the layout moves.
The cell size is measured off the board rather than guessed. It has to be fine
enough to carry the wave at the top of the band and fine enough to resolve the
thinnest copper the feed drives, and the tighter of those two requirements
wins; the copper is measured from the drawn shapes, so the answer does not
depend on where the feed marker was dropped. Too coarse on either count and the
antenna resonates in the wrong place — which is the mistake a default cell size
quietly makes for you.
The lattice is graded, not uniform, so resolution is spent where the RF current
is: fine over the board, coarse through the air margin and the absorbing
boundary, and finer again in a window pinned across the feed, so the gap the
port drives survives the grid instead of being painted shut — the failure that
otherwise turns into a confident, wrong answer. The vertical cells are sized
per dielectric slab, with a node landing exactly on each foil. Copper is
modelled as zero-thickness sheet rather than a 35 µm slab, which keeps the foil
from setting the timestep and is worth roughly 3.5x on the length of a run. The
air margin follows the analysis wavelength, far enough out that the absorber
sits clear of the antenna's reactive near field.
None of which is hidden from you. The mesh can be looked at in 3D, with its
cell counts, before any time goes into the solve; every number the rules
arrived at — the cell size, the vertical cells, the air margin — is printed in
the run log; and any of them can be set by hand instead, if you want the mesh
finer than the board asked for.
And when the board asks for something the mesh cannot deliver, the run says so
in as many words rather than running anyway. A feed marker that is not on
copper stops the run; a cell too coarse for the trace it has to resolve is
called out with the numbers that make it wrong ("cell 0.4 mm resolves only 11
cells per wavelength"). Each of those messages carries a short code, so it can
be looked up, searched for, or quoted in a bug report. The alternative — the
one this exists to avoid — is a run that finishes and hands back a radiation
pattern that looks perfectly reasonable and is off by a band.
## Templates and the dimension sweep
The wizards are for the other half of the job: not "is this antenna any good?"
but "what shape should it be?" Each ships as a topology with its dimensions
exposed — an **L-shaped monopole** and a **meandered inverted-F** are two of
them, more arrive with later releases — and none of them asks you to draw
anything.
1. **Mark the area.** Say where the antenna may live and which edge it is fed
from. That is the whole of the geometry the designer needs; the topology
supplies the rest.
2. **Choose what varies.** Pick the dimensions to sweep — the resonant length,
the track width, and the topology's own knobs. Moving a slider previews that
candidate on the board, so the space being searched is visible before
anything is simulated.
3. **Scan.** Each candidate is meshed and solved in full, on a *copy* of the
board — the board itself is never touched — and the results table ranks them
on the figures that matter for the antenna, the match at the target
frequency among them. Every number in the table came out of a simulation of
that candidate, not out of a formula interpolated between two of them.
4. **Place the winner.** **Generate + place footprint** puts it on the board as
an ordinary footprint, saved for reuse on the next design.
A scan is long-running work treated as such. Progress goes to a live log while
the board editor stays usable; a run can be stopped early and still produce a
report from what was simulated, or sampled mid-run without stopping. Results
are saved beside the scan, so reopening the plugin days later brings the ranked
table back rather than re-running the sweep.
## Requirements
- KiCad 9.0 or later is recommended.
- Windows, Linux and macOS are all supported. One package carries the simulator
for each, and the plugin runs whichever belongs to the machine it starts on.
The Windows and Linux builds are x86-64; the macOS build is Apple Silicon
(ARM).
## Installing
Download `AntennaDesigner--pcm.zip` from the repository's
[`dist` folder](https://github.com/admin-2026/kicad_ems_plugin_pub/tree/main/dist)
— the [releases page](https://github.com/admin-2026/kicad_ems_plugin_pub/releases)
keeps the older versions — and let KiCad install it:
1. **Plugin and Content Manager → Install from File…**, and pick the zip.
2. Restart KiCad.
The package is a plain zip, so the install is only a folder copy and can be
done by hand if the manager refuses the file: unzip it, put the `plugins`
folder inside it into the directory that **Tools → External Plugins → Open
Plugin Directory** opens, and rename it to `antenna_plugin`. On Linux and
macOS, check afterwards that the solver binary in `antenna_plugin/binaries/`
is still executable (`chmod +x`) — some archive managers drop the execute bit.
## Using it
To simulate an existing board: set the pattern frequency and the layer
materials; press **Generate feed marker** and click the feed trace; press
**Generate grid** for a look at the mesh; press **Run simulation** for the full
solve.
To design one: pick a designer in the sidebar (**L-monopole**, **Inverted-F**
and the others); place the area marker, a rectangle with a triangle marking the
feed edge; choose the
dimensions to sweep; press **Start scan**; then **Generate + place footprint**
for the winner.
A full solve takes anywhere from minutes to several hours, and can be stopped
early or sampled as it goes, as above. Everything a run produces — inputs,
configs and results — goes in a `simulation/` folder beside the board file,
inside the KiCad project directory.
A run comes back as one report rather than as something to plot afterwards. It
carries the far field — a rotatable 3D radiation pattern, the principal-plane
cuts, the pattern drawn over the board itself, peak directivity and gain — and
the port, swept across the band: input impedance, return loss (|S11|), VSWR and
a Smith locus with the target frequency marked. Alongside those it shows where
the current actually runs, as a surface-current map on each copper layer, which
is what tells you whether the radiator or the ground return is doing the work;
and an efficiency breakdown accounting for all of the power the source offered
— radiated, reflected and lost — as shares of one number, so a well-radiating
antenna that is badly matched is not flattered.
## Licence
**Free to use.** Download it and run as many simulations as you like. Personal
projects, teaching and research are all free, the reports they produce are
yours to publish or print, and the package may be passed on unchanged to anyone
else.
The plugin itself is MIT, so it can also be read, changed and shipped. The
simulator it carries is free for non-commercial use.
## Links
- [Homepage](https://www.automaticphysics.com/): the same material as this file, with
the figures — an interactive 3D radiation pattern, the meshed board, and two
screen captures of the plugin at work.
- [Repository](https://github.com/admin-2026/kicad_ems_plugin_pub): the plugin
itself, and the fullest documentation there is.
- [Getting started](https://github.com/admin-2026/kicad_ems_plugin_pub#getting-started):
both workflows, step by step and with screenshots.
- [Downloads](https://github.com/admin-2026/kicad_ems_plugin_pub/tree/main/dist):
the current package; [releases](https://github.com/admin-2026/kicad_ems_plugin_pub/releases)
keeps the older ones.
- [Examples](https://github.com/admin-2026/kicad_ems_plugin_examples): boards
to open and simulate.
- [Licence](https://github.com/admin-2026/kicad_ems_plugin_pub/blob/main/LICENSE):
MIT for the plugin; `LICENSE-solver.txt` for the simulator.
- [Development](https://github.com/admin-2026/kicad_ems_plugin_pub/blob/main/docs/DEVELOPMENT.md):
building, packaging, the module layout, and how to add an antenna topology.
- [Discord](https://discord.gg/XDY6EE5WA): where questions are answered, and
where a commercial licence is arranged.
## Terms it may be searched for
KiCad antenna simulation, PCB antenna design, FDTD solver, electromagnetic
simulation in KiCad, pcbnew plugin, antenna design wizard, L-shaped monopole,
meandered inverted-F antenna, dimension sweep, return loss, S11, VSWR, Smith
chart, impedance matching, radiation pattern, directivity, gain, antenna
efficiency, 2.4 GHz board antenna, automatic mesh generation, automatic
meshing, no manual meshing, mesh from gerbers, graded mesh, non-uniform grid,
cell size, cells per wavelength, mesh preview, antenna template, parametric
sweep, parameter scan, antenna optimisation, candidate ranking, footprint
generation, antenna simulation for beginners, EM simulation without deep EM
expertise, antenna design for PCB designers, free antenna simulator, offline EM
simulation, alternative to script-driven FDTD.