Rerouting after changing a footprint

I’m modifying an open source keyboard project https://github.com/haru-ake/lets-split-pcb-hs-cherry
I am changing the keyboard switch footprint to another footprint that supports more switch types.

I’ve changed the footprint in the layout. But, autorouting doesn’t seem to work well.

  • How should I reroute the tracks so that they won’t overlap with the pads/holes effectively?
  • Should I try FreeRouter?
  • Should I remove all tracks and route again?

I found that it works when I exchange one footprint, run DRC, delete the tracks that are near pad, and auto reroute. Eventually when I repeat this 24 times it should finish. But this doesn’t seem to be a effective way.

How should I work on this?

Did you try the shove router ?
The Shove router auto-fits in valid channels, but old trace segments can block those, so a little care is needed to unroute segments that block, and you can use Edit.Cleanup tracks and vias to remove final dangling segments.

Start with a clean channel, then do more routes that allow more and more ‘old segments’ to get a feel for how this interacts.


When a new hole overlaps with an old track, edit->cleanup tracks and vias wouldn’t remove those track. Now I manually move, or delete those track and reroute it. But I feel there should be some smarter ways.

I would delete all the tracks and run through FreeRouter, there don’t seem to be any critical areas. You would be done in a couple of minutes, assuming you have FreeRouter installed.

thank you! free route seems to work very well.
But, I’ve these 2 unconnected pads error. But the pads seems to be connected.

Because there is a ground plane, Freeroute assumes it will be connected everywhere, but often that is not the case after KiCad has filled it. You probably have two separate areas of ground plane broken by tracks.

To fix this, you need to find a suitable place to join the two sections, just draw a track to join a GND node in one section to a GND node in the other section, which will probably need to hop over another track, using vias.

1 Like

Great tip! I’ve reconnected the ground planes by using 2 vias

Is this the right way?

It’s what I would do. If you have time/patience you might be able to fix the layout to create a single unbroken plane, but if you don’t have signal integrity requirements then it doesn’t seem necessary. For a keyboard I think you mostly have low speed digital signals.

1 Like

Is there an option to keep the edge of the ground plate clear of tracks when I auto route?
Would it be possible when I reduce the copper plate first, do the autoroute, and then expand?
So I can always have an unbroken plane.

It might be more effective to reduce the board size in the Edge.Cuts layer, do the autoroute, and then restore the board size in Edge.Cuts layer. This would reduce the physical area allowed for autorouting.

(You wouldn’t need to reduce the size of the filled zones. It’s actually common to define a filled zone larger then the board size, allowing the edges (and clearances) in Edge.Cuts to define the actual “poured” copper area.)

Yes, Kicad uses Pins and Net-Names as the ‘information base’, and then applies net-names to traces by intersect inference. That means too many unwanted/bad intersects can actually take you backwards.

It could benefit from an unroute attached segments command, or even a select attached segments.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.