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.
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 --selectionto 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
Release history Release notifications | RSS feed
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad4658f3f4391651d1e0529adb15c9018ccc4caa64fb8eb2b970c145c61a8a90
|
|
| MD5 |
59fde400a407db69ba4f497642438cc2
|
|
| BLAKE2b-256 |
0c511887c018cab295ffe96c7792aa62c23084b30a4d77928381886a24afa588
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a47f6d59bb4e6bc53b52300e811d9906008b77d2f4937f763e867b64c9702cf1
|
|
| MD5 |
a0cd11ae7a7fb31c4d5b0218d4c9810f
|
|
| BLAKE2b-256 |
517ad98b279c02eccc70992214ed4925079e1d1535f13df6a17f372531550439
|