Protip: nicer via stitching

It’s generally “known” that pcbnew doesn’t really support via stitching. You have to link together a bunch of vias using traces, so that they keep their net association. And this is clunky. The traces get in the way of everything, look distracting, and will be removed by “Cleanup Tracks and Vias”.

Here’s a better way. It’s a bit long-winded to set up, but easy to use once you get it going.

  • Click “Open footprint editor” on the right toolbar:
  • Click “New footprint” on the top toolbar:
  • Name it something sane - I tend to call it something like “VIA-0.6mm”
  • Place a single pad in the center. Configure it like this:
  • Pad type: Through-hole
  • Shape: Circular
  • Drill: Circular, desired via drill size (0.3mm in my example)
  • Size X: Desired via diameter (0.6mm in my example)
  • Layers:
    • Copper: All
    • Uncheck all other layers (F.SilkS, F.Mask, B.Mask are checked by default)
  • Set both reference and value to Invisible. I usually also make them tiny so they don’t bother me even if I have hidden text set displayed.
  • Set “Pad connection” to “Solid” (this is on the second tab of the pad properties).

Here’s what I have:

You may want to save these to a library on your system, though they’re quick enough to make that I don’t always bother.

  • Click the “Insert footprint into current board” button on the top toolbar:
  • Grab the via from where it was inserted at the upper left, and edit it. Set the net name to the name of the net you want to stitch.

Now you’ve made a single stitching via. There’s no need to repeat this for the others, as long as you’re using GAL/OpenGL! To manually place a few, click on one that already exists on your board, and press Ctrl-D to duplicate it. If you want to make an array of them, right-click one of them, select “Create array”, and set your array properties. Here’s a stitching array I made quickly:

These are “proper” stitching vias! They don’t need traces to keep them connected, so they can be placed anywhere in big groups easily. Push-and-shove won’t move them, so you don’t have to worry about accidentally losing parts of a good stitching array without noticing.


Here’s a quick video of it:

Edit: fixed the blurriness issue.


Meh, YouTube’s transcoding made a horrid mess. It’s still watchable, but the blur is annoying. Depending on how many view it actually gets, I might just host future ones on my server. Don’t want to blow my bandwidth, but I don’t want to torture people’s eyes either :frowning:


Your writeup should be in the official Kicad docs! So straightforward and logical. Thank you.
Your next mission, should you decide to accept it, is to figure out how to join multiple ground nets with different names at a common point in an equally elegant way. All without violating DRC of course:-)

Net tie.

Perhaps I’ll do a writeup on those as well soon.

I agree! I’ve pasted this writeup into my Evernote file. I especially like the part about how push-and-shove won’t move them.

1 Like

However now you can’t use functionality “Delete Extra Footprints” when you import a netlist. I’m all for workarounds, but this issue have been a pain in the butt for a long time and wouldn’t be hard to correct for developers.


I just shared a cool trick that you can do with the tools that are available. I agree, standalone vias would be a nice thing to have, but I am not even slightly interested in turning this thread into a place to complain about the developers. There has already been discussion about adding these, so be patient.

Hi; thanks for the thread. It is a pretty good answer for the issue I just encountered, and it amazes me that stitching vias was not planned in the software design. You say:

“Now you’ve made a single stitching via. There’s no need to repeat this for the others, as long as you’re using GAL/OpenGL! To manually place a few, click on one that already exists on your board, and press Ctrl-D to duplicate it. If you want to make an array of them, right-click one of them, select “Create array”, and set your array properties.”

I read on Wikipedia about GAL/OpenGL and that does not tell me much. If I do not know what it is does that mean that I am not using it? Or how do I know; how do I use it, etc? I am an analog circuit designer but not so knowledgeable regarding software and programming.

There is another thread where I asked about interconnecting different ground nets. It seems (??) the best way is to make an SMT component with long (enough) pads and a copper graphic element connecting the inside pad edges. I tried this and it works. I guess it is a workaround but maybe not so much.

Ah, sorry. I forget that GAL isn’t always common knowledge. GAL (Graphics Abstraction Layer) refers to the underlying graphics engine the CERN folks are developing and the new routing engine on top of it. It’s still a work in progress, but very close to completion now. In a development build you can switch to it by choosing “OpenGL” in the View menu.

Thanks a lot for the fast response. I am using:
Version: (after 2015-may-25 BZR unknown)-product release build

I do not see that option in the View menu. :frowning:

You don’t see “Switch canvas to OpenGL” under “View” in pcbnew? :open_mouth:

Aaaaaaaaah yes! Thanks!

Well I broke out the champagne too soon. I found it on the menu (Including Cntrl-D) and in my .pdfed version of the online manual, but I cannot figure out how to really make copies of my first pad. Let’s say that I reverse click on the pad and choose “duplicate” from the context menu; then what? I can normal or reverse click after that and get no result…

If it gives you a menu, make sure to choose the footprint instead of the pad.

Other than that, I can’t really imagine what’s going wrong.

OK…afraid I am testing your patience…I got another component from my project library and have the same result. By the way I get the same if I choose “create array.” I can choose that and nothing happens.

No patience-testing, just confusion. Any chance you can record your screen?

Well…I have reverted to default Canvas…it seems that Cntrl-D does not work with either canvas, but with default canvas, the context menu seems to work and I am able to duplicate one at a time. I do not know why the developers did not allow copy paste just for familiarity sake.

I have not figured out how to paste an image in this forum…

Some malfunction here. I did not intend to withdraw my previous post so I will try to re-post.

I find that Cntrl-D does not work for either “canvas”. But in default canvas the context menu seems to be working now and I am able to duplicate.

Cntl-D does show up on my hotkey list but does not work.

I have not figured out how to paste images to this forum.

Just drag an image into the edit box.