Skip to main content

Stitching via visualization and manual forced neckdowns for KiCad

Project description

Breakneck: Via Stitching and Manual Neckdown for KiCad Layouts

Introduction

Via Stitching

Ground via stitching is a common technique to reduce EMI and improve signal integrity in PCB designs. It involves placing GND vias next to signal vias to provide a return signal path between reference ground planes and to minimize the loop area. This is important for any signal with a high edge rate; nowadays basically every digital signal in a design.

Breakneck visualizes stitching via requirements by drawing lines between signal vias and their closest GND vias if the nearest GND via is further away than a specified distance. The user can then manually place the GND vias to meet the requirements. The lines are drawn on the User.Eco2 layer which should not be used for any other purpose (any existing content on this layer will be overwritten).

The screenshot below shows a design with routed signals lacking stitching vias. The yellow lines indicate the signal vias missing a GND via within a distance of 2mm.

Stitching Vias

Manual Neckdown

NB: This kicad-python bug prevents manual neckdown from being properly used at the moment.

Neckdown, or its inverse, fanout, refers to narrowing down of PCB tracks and their clearances when routing tracks to fine-pitch components such as BGAs or QFNs. KiCad does not provide a built-in feature to automatically neckdown tracks, and while the KiCad Custom Rules are powerful, they do not support neckdowns. It is possible to define rules for tracks intersecting footprint courtyards, but the rule applies to the entire length of the track segment, not just the part that intersects the courtyard.

Breakneck is a Python script that communicates with KiCad and cuts tracks at a specified distance from the intersection with a footprint courtyard. After these track cuts, custom rules apply to the expected track segments. The layout isn't otherwise modified. Automatic re-healing of broken tracks is prevented by nudging the track widths by one nanometer, making adjacent tracks different widths.

Installation

As a prerequisite, install uv.

To run breakneck without actually installing it:

uvx breakneck <command> [options...]

This actually works really fast and the only downside is that you have to type uvx every time. If you want to install breakneck, run:

uv tool install breakneck

Usage

NOTE: If you are running breakneck with uvx, prepend all breakneck commands below with uvx.

Run breakneck -h to see the available options.

breakneck gndvia draws stitching via lines on the User.Eco2 layer. The default distance is 2mm, but it can be changed with the --distance option.

It is possible to run breakneck gndvia repeatedly using watch to provide semi-real time updates while placing the GND vias:

watch -n 1 breakneck gndvia

NOTE: It turns out, every execution will bump the undo buffer, so until breakneck is made a bit smarter, it will become very difficult to undo any actual changes.

Breakneck has basic support for filtering the affected tracks and components by layer, netclass or selection.

Limitations

  • Component classes are not supported due to API limitations.
  • Grouped tracks and footprints are ignored due to API limitations. It is possible to enter a group and run breakneck --selection to process the group members.
  • Multiple ground layers are not supported in gndvia. If you have isolated board sections, you will have a lot of bogus lines to the closest regular GND via.

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

breakneck-0.2.1.tar.gz (630.6 kB view details)

Uploaded Source

Built Distribution

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

breakneck-0.2.1-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

File details

Details for the file breakneck-0.2.1.tar.gz.

File metadata

  • Download URL: breakneck-0.2.1.tar.gz
  • Upload date:
  • Size: 630.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.16

File hashes

Hashes for breakneck-0.2.1.tar.gz
Algorithm Hash digest
SHA256 ad4658f3f4391651d1e0529adb15c9018ccc4caa64fb8eb2b970c145c61a8a90
MD5 59fde400a407db69ba4f497642438cc2
BLAKE2b-256 0c511887c018cab295ffe96c7792aa62c23084b30a4d77928381886a24afa588

See more details on using hashes here.

File details

Details for the file breakneck-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: breakneck-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 14.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.16

File hashes

Hashes for breakneck-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a47f6d59bb4e6bc53b52300e811d9906008b77d2f4937f763e867b64c9702cf1
MD5 a0cd11ae7a7fb31c4d5b0218d4c9810f
BLAKE2b-256 517ad98b279c02eccc70992214ed4925079e1d1535f13df6a17f372531550439

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