Skip to main content

Measure exact routed pad-to-pad signal lengths from KiCad PCB files.

Project description

kicad-signal-path

kicad-signal-path measures exact routed pad-to-pad signal lengths directly from KiCad .kicad_pcb files.

It supports:

  • single pad-to-pad path measurement
  • regex-based source and destination net matching
  • automatic 2-pin bridge detection for series resistors and similar pass-through parts
  • separate Track mm, Via mm, Total mm, and Delta mm reporting
  • CLI and Python usage from the same package

Install

Run it without installing:

uvx kicad-signal-path --help

Install it as a CLI tool:

uv tool install kicad-signal-path

Add it to a Python project:

uv add kicad-signal-path

Quick Start

Single path measurement:

kicad-signal-path board.kicad_pcb --start U1:B3 --end J1:H23

Regex batch matching:

kicad-signal-path \
  board.kicad_pcb \
  --src-net-regex '/AXIS_I_(.*)/' \
  --dst-net-template '/FMC_AXIS_I_($1)/'

Verbose path breakdown:

kicad-signal-path \
  board.kicad_pcb \
  --start U1:B3 \
  --end J1:H23 \
  --verbose

Use the module form if you prefer:

python -m kicad_signal_path --help

Development

Create a local environment and install the project in editable mode through uv:

uv sync --dev

Run tests:

uv run pytest

Build distributable artifacts:

uv build --no-sources

Local smoke test against built artifacts:

uv run --isolated --no-project --with dist/*.whl tests/smoke_test.py
uv run --isolated --no-project --with dist/*.tar.gz tests/smoke_test.py

Release

This repo is prepared for public PyPI publishing with uv and GitHub Actions.

  1. Create the PyPI project kicad-signal-path.
  2. In PyPI trusted publishing, allow your GitHub repository for this package.
  3. Set the trusted publishing workflow to .github/workflows/publish.yml.
  4. Set the trusted publishing environment name to pypi.
  5. Create and push an annotated release tag such as v0.1.2 on the commit you want to publish.
  6. The package version is derived from that git tag during build, so the tag must match the intended release version.

Manual local publish also works after authentication is configured, but build from the tagged commit so the derived version is exact:

rm -rf dist/
uv build --no-sources
uv publish

Test Data

This repository intentionally ships no KiCad board design files. Tests generate a small synthetic board description at runtime so the package can be validated without bundling proprietary PCB data.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kicad_signal_path-0.1.2.tar.gz (18.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kicad_signal_path-0.1.2-py3-none-any.whl (22.2 kB view details)

Uploaded Python 3

File details

Details for the file kicad_signal_path-0.1.2.tar.gz.

File metadata

  • Download URL: kicad_signal_path-0.1.2.tar.gz
  • Upload date:
  • Size: 18.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for kicad_signal_path-0.1.2.tar.gz
Algorithm Hash digest
SHA256 1138f775fce13613a6d8c84276a6188064bc967a85029074dcf0eb3dd0bc8b57
MD5 e79a6afca248b5e75cd2fd2af5bc468b
BLAKE2b-256 d5b6ee8d1172bf6baddf2207edd426209b77775a231fd4044d8a05c11c853164

See more details on using hashes here.

File details

Details for the file kicad_signal_path-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: kicad_signal_path-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 22.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for kicad_signal_path-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7e3f219e483f791081ece6b9ea2aaf33f946092237340b6d331c0239d8fb4002
MD5 e06941f4344df1db3764a64a83f69d4d
BLAKE2b-256 7c122849ed01e002f6dbc7af3b11da06c6e49fda4d67509240e8824d6b9cb377

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page