Skip to main content
Build an RF signal path using connector and antenna wrappers, a reusable matching module, and a board that connects them. See the language reference for the Zener APIs used here. Rendered antenna matching board

Repository layout

Create one package for each reusable block:
The root pcb.toml can be as small as:
Use pcb new board and pcb new package to create this structure. The component values below are examples. Select production values from the antenna data, finished PCB stackup, and vector network analyzer measurements.
Before writing Zener source, copy the KiCad symbol and footprint for each physical part into its package directory with the filenames shown above. Zener does not copy these assets from an installed KiCad library. Confirm that the symbol pin names match the wrapper’s pins mapping.

1. Wrap the physical endpoints

Use standard-library generics for common passives. Use a small custom module for the specific SMA connector and antenna. Each wrapper calls Component() once and exposes the required pins through io().

SMA connector

Chip antenna

2. Build the matching module

The module reserves three tuning footprints: a series inductor, a shunt capacitor, and a final series resistor. Populate the resistor with a damping value or with 0ohm.
io() exposes parent connections; Net() creates internal nodes. The config() types convert parent-supplied strings such as "6.8nH" to physical quantities.

3. Compose the board

Instantiate the connector, matching network, and antenna in the board file:
The resulting RF path is:

4. Build and lay out the board

Run these commands from the repository root:
pcb build validates the design. pcb layout generates the KiCad board and opens it for placement and routing.
RF performance depends on placement and stackup. Place the matching components close to the antenna feed, route the RF trace for the required impedance, and leave access for component changes during bringup.