antenna-cad
Compile antenna and phased-array design intent into simulation-ready KiCad PCB layouts.
antenna-cad is a Python design compiler for printed antennas. You describe requirements
(frequency, substrate, polarization, gain); it synthesizes geometry, writes a
DRC-checkable .kicad_pcb, simulates the layout with openEMS, and reports predicted
performance against the requirements. Every step is deterministic and runs headlessly,
with no KiCad GUI and no LLM in the loop. Agents can drive the same typed API, but
nothing depends on one.
Status
Pre-alpha; the closed loop works end to end for single patches and corporate-fed
arrays. From a spec file, the toolchain synthesizes the geometry (patch dimensions,
T-junction feed tree with quarter-wave transformers and phase-compensated mirrored
rows), emits a KiCad board that passes DRC with zero violations, and verifies it
with openEMS FDTD. The 2x2 example, after simulation-feedback tuning (--tune):
resonance 10.12 GHz against a 10 GHz target, S11 -14.8 dB, directivity 12.8 dBi,
a single broadside beam. Lattice positions interoperate with
phased-array-modeling;
an MCP server exposes the pipeline to agents. APIs are unstable.
uv run antenna-cad report examples/array_2x2_10ghz/spec.yaml -o build/array_2x2 --tune
Design principles
- Compiler, not file generator. The source of truth is a typed internal representation of the design — geometry, stackup, nets, ports, constraints, units. KiCad, Gerber, and solver files are build artifacts compiled from it.
- Deterministic core. The same spec produces the same board, byte for byte.
Verification runs through real engines: KiCad DRC (
kicad-cli) and full-wave FDTD (openEMS). - Physical quantities carry units (via pint).
10 GHzand8.42 mmare values in the API; bare floats cross into backends only at explicit conversion boundaries. - Narrow scope by design. This targets the structures printed antennas need (patches, microstrip lines, impedance transformers, feed trees, ground pours, via fences) rather than general PCB autorouting or schematic capture.
Install
Not yet published. From a checkout:
uv sync --all-extras --group dev
KiCad 10 provides DRC and manufacturing export (brew install kicad on macOS).
openEMS setup is documented in docs/ once the solver backend lands.
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file antenna_cad-0.1.0.tar.gz.
File metadata
- Download URL: antenna_cad-0.1.0.tar.gz
- Upload date:
- Size: 237.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23a4c767e74c27e7ac904e8a668c2a39a30c2c4746f5d01ea02679e96db1b3c9
|
|
| MD5 |
5916fcd0e02f881082cbf0e2fc6d799b
|
|
| BLAKE2b-256 |
193309c9487bbb29ef4e57ccaab7bed2b5b92bf9e0474a9f1a601a6f094beed3
|
Provenance
The following attestation bundles were made for antenna_cad-0.1.0.tar.gz:
Publisher:
release.yml on jman4162/antenna-cad
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
antenna_cad-0.1.0.tar.gz -
Subject digest:
23a4c767e74c27e7ac904e8a668c2a39a30c2c4746f5d01ea02679e96db1b3c9 - Sigstore transparency entry: 2416751455
- Sigstore integration time:
-
Permalink:
jman4162/antenna-cad@a97560b3f5f39e731023b0de0aa1a2d0194555a5 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/jman4162
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a97560b3f5f39e731023b0de0aa1a2d0194555a5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file antenna_cad-0.1.0-py3-none-any.whl.
File metadata
- Download URL: antenna_cad-0.1.0-py3-none-any.whl
- Upload date:
- Size: 65.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d340fad52792b3f15e0417dbea320a3424276e5bcb6fc9335e6088607ea20f5
|
|
| MD5 |
60ee958603f306b0ad8c3e69815083ee
|
|
| BLAKE2b-256 |
2378ef49aea627020930196c80f170b35986e01fddd1c74041c98edcd7a344e8
|
Provenance
The following attestation bundles were made for antenna_cad-0.1.0-py3-none-any.whl:
Publisher:
release.yml on jman4162/antenna-cad
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
antenna_cad-0.1.0-py3-none-any.whl -
Subject digest:
4d340fad52792b3f15e0417dbea320a3424276e5bcb6fc9335e6088607ea20f5 - Sigstore transparency entry: 2416751954
- Sigstore integration time:
-
Permalink:
jman4162/antenna-cad@a97560b3f5f39e731023b0de0aa1a2d0194555a5 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/jman4162
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a97560b3f5f39e731023b0de0aa1a2d0194555a5 -
Trigger Event:
push
-
Statement type: