Kicad emsim
Electromagnetic field simulation of a KiCad board via gerber2ems + openEMS (dockerized, headless): S-parameters, impedance, and E-field PNG visualizations fed back to the agent. Use when asked to simulate a board's EM behavior, check impedance of traces, or visualize fields.From its SKILL.md
npx -y skills add AvatarSD/KiSkill --skill kicad-emsimAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 1 command, including `docker build -t gerber2ems $(kx root)/.tools/gerber2ems/`.
SKILL.md
1.9 KB, 459 tokens by cl100k_base, as published. Nobody here has run it
EM simulation (gerber2ems + openEMS)
Engine: $(kx root)/kicad_lib/emsim.py.
STATUS: chain VALIDATED — meander_loose example simulated end-to-end
(rc 0; |S11|≈1 + 455 ps delay on the open meander = physically correct).
Image gerber2ems (6.6 GB); rebuild if missing:
docker build -t gerber2ems $(kx root)/.tools/gerber2ems/. NEVER mount over
/home/docker — it shadows the image toolchain; emsim.run mounts at
/home/docker/sim.
Flow
emsim.prepare(pcb, workdir)— gerbers+drill+pos via fab.py (names already match),stackup.jsontranslated from the board's(setup (stackup ...)),simulation.jsontemplate.- Fill ports in simulation.json (width/length in µm, impedance,
layer index, excite flag) and
traces(start/stop port indices) — ports sit at position-file footprint locations (use simulation-port footprints on the board for clean port placement). emsim.run(workdir, export_field=True)— dockerizedgerber2ems -a --export-field: geometry → FDTD → postprocess.- Read the outputs:
ems/*.csvS-params/impedance; field PNGs are the agent feedback — Read them, check field concentration against expectations (return paths, gaps, stubs). VTR dumps open in ParaView for the user.
Notes
- Frequency range/grid in SIM_TEMPLATE: 0.2–6 GHz, sane FR-4 defaults; finer grids explode runtime (FDTD is O(cells × steps)).
- Worked examples:
.tools/gerber2ems/examples/*(differential pair, filters, stubs) — copy a simulation.json from the closest one. - Docker daemon does its own networking — image build/pull works even though the agent sandbox blocks direct DNS.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.