AutoRouter Documentation


Good day,

I’m just wondering if there is any up-to-date guide for the latest developments surround the builtin Auto-routing capabilities and the general best practices workflow.

I’m working on a 4layer board, and can get decent initial results for top and bottom routing. But I cannot seem hold it’s hand to work on a single component routing, even changing the layer pairs. Even giving it a “blank layer” and telling it to route will just fail. For smaller components, I try and fan out the wiring to let autorouter take over from outstretched traces, but it seems to want to go right back to component.

It seems to not utilize the netclasses either? I’m not sure what options like “Reset unrouted” even do, and as I say, selecting layer pairs doesn’t seem to do what I expect either.

It was such a wonderful discovery to find this feature, but now I’m just wondering how I might leverage it – because it seems to be quite mature and I’m not so macho for full manual :slight_smile:


Kicad does not have built-in autorouting. it uses an external router.


Really? That’s certainly what I would think with a google search… and had previously mucked about with installing the freeroute.jar package etc, but while I haven’t looked at source, I thought this was now a native feature under the “Default canvas” pcb viewer.


People kept talking about the default autorouter and it drove me nuts trying to find it on my distro. I have a default Debian install and I assure you, I’ve never found it. I did finally add FreeRoute and promptly learned to ignore it. I think someone recently started a fork but I haven’t bothered with that either.

You mind sharing what version you are using? Perhaps a package developer added it somewhere along the way?


I hear yah hermit. Running stock 4.0.7 not sure when this was introduced, but in using newpcb, selecting “Default canvas” and then going into routing mode (the “green-red weave button”) Autorouting and features are present loud and proud at the first right click. All very slick, but very much a wild west with no documentation that I can find.


Damned. I use OpenGL. At some point there was some snafu that didn’t show dialogs in the hover boxes. Now that is working again I see it says that is the autoroute button. Double Damned. :wink: I always went up to the toolbar to start and that option isn’t listed. My current work flow really wouldn’t really benefit from it. My current project is a home bench power supply. I’m doing more area pours to handle current than anything else.

Have you tried setting up design rules for different nets and seeing if they were obeyed?


Aye, I did indeed. Setup a bunch of net classes, but the autorouting does some weird stuff with the info… partial segments have the attributes but not all, some redundant parallel tracks. Doesn’t connect to any user created fanouts, wanting only root pad connections. Seems to restrict itself to top and bottom layers and when I try and force, the results are lame… it might make one trace whereas a lot of possibly connections should be possible. Was hoping to understand the current implementation better to know how to work it, very promising work but early days it seems.

That said there are some nice context menus to make quick work of changing the track widths, etc after the fact. Would be nice to be able to assign nets to net classes at the canvas level as well.


I don’t see the reason for all this autorouter hate. I’ve been using FreeRoute successfully. I have a few complaints about subtle problems, but I’m getting work done.

100% autorouted with FreeRoute

This is a board with both analog power and digital components, and a range of trace widths and component sizes.


I think that the built in autorouter is being removed as not very good and the preferred method is the third party Freerouting


Have you/anyone tried this yet? I downloaded it when you posted the link originally but never even got it unzipped figuring I’d try it if I ever wanted to try autorouting on something.


I use FreeRoute (r/ing) all the time, in fact if I had to route by hand I probably wouldn’t bother making hardware. Admittedly, I only do toy 2 layer boards, not proper 8-layer BGA stuff :slight_smile:

FreeRouter works OK with fairly sparse boards, otherwise it gets stuck in a loop, and doesn’t really understand planes among several other quirks. One thing I never understood is why it spends so long optimizing the design to reduce the number of vias, I’ve never seen the benefit of doing that.

I haven’t tried it but I couldn’t really see what exactly makes FreeRoutingNew “better”, it seems more that some guy wanted to rewrite the code because he didn’t like it, which is normal but doesn’t necessarily make it better.


[quote=“bobc, post:11, topic:7962”]
One thing I never understood is why it spends so long optimizing the design to reduce the number of vias, I’ve never seen the benefit of doing that.
[/quote]In some software you can manually adjust ‘costs’. Vias always seems to be something aggressively targeted for some reason. From my understanding they are not desirable in high speed traces and they make it harder to trouble shoot the board.


[quote=“bobc, post:11, topic:7962”]
One thing I never understood is why it spends so long optimizing the design to reduce the number of vias, I’ve never seen the benefit of doing that.[/quote]
I remember being charged per via by the PCB fab >twenty years ago as one of the biggest price factors. Those days are gone

Hopefully to make it easier to maintain. Support for pads other than round and square is needed


I find that the longevity/reliability of a PCB falls with more via’s present. So many PCBs I have to end up filling the holes with solder just to keep the connection well enough. Most of these are 20-25yrs old.
High speed digital it’s never a good idea to swap layers if you can avoid it, the reflections at each point get worst and so you get noise. Well this used to be a problem, but IC’s are better these days…
Again things have improved and it might have been a manufacturing thing from back then. I still avoid it if I can just because its the way I always have :slight_smile:


Drill breaking out of via pads was a real and common problem twenty years ago. I suspect there was a lot of manual drilling going on.


Hi guys
Do you have any info on what is going to happen with Version 5 and auto routing?
It looks that the symbol for the free router is no longer available and internal auto routing function is gone.
So best solution is Engidea/FreeRoutingNew or the designers will implement some auto routing inside interactive routing?
Freerouter is open source now. It will be a good idea to include with V5
Thanks a lot


There was a duplication within the kicad gui. Freerouter uses the spectre file format which is available in the export menu. (Clicking the freerouter button did the same as the spectre export button. The devs do not want that people think they are the official freerouter support.)


Thanks @Rene_Poschl for the fast response. The think the desperateness of the button confused me. It was very convenient the dialog also because it was automating the procedure.
I understand the concern of the designers. But it looks that it is the best choice we have.
Are any windows binaries for Engidea/FreeRoutingNew? or any installation info for windows users?
I am using the old freerouter 1.2.43


Despite the “feature freeze”, and “always backward compatible” principle, Kicad devs are still removing features for no particularly good reason which people actually use, Disappointing.

I never use the Freerouter dialog, but removing it will confuse a lot of users, and require changes to many docs and tutorials. I don’t see the point of removing it.

Some windows binaries:


If Free Route was actively maintained I might agree. It seems most copies offer no new development. Legacy is sometimes a boat anchor that drowns a project. Developers have decided to put their efforts into interactive routing for a reason. gEDA offers auto routing so it isn’t as if there isn’t some open source code out there that could be used in Kicad if so desired.