Newbie question about autorouting

I tried autorouting once. I found I could do a much better job manually in less time. I guess it’s something people still do better than computers. Perhaps not for long.

1 Like

I don’t recommend auto-routing. I’ve used it on one project in 30 years.
The time spent setting up all the signal rules is better utilized laying out yourself.
And you should pre-route the important power & important signal tracks yourself anyway.

I’ve just written that some time ago here.
Our worker autorouted once one PCB. As he got 100% routed he was happy with it till the assembled PCB not worked. The reason was digital Data & Clock lines. One had about 1cm and the other was routed around the whole PCB - about 20cm. It was ± 20 years ago and it was my first and last contact with autorouting.
I agree that sonner or later computer will be better (and of course faster) than human in PCB design. I think it could be now, but there is less pressure to do it than to make computers playing chess or GO.

A computer could do a better job now but only if and this is a monster if, you have defined every tracks relationship to the rest - speed, crosstalk, current rating etc. This would take ages.
Humans turn out to be able to do this for themselves almost automatically with practice

1 Like

Don’t know what all the hair-tearing about autorouting is here. Like I was talking about I was using the autorouting function with microcontrollers on four of these older boards on my twenty-year-old tool, never had an issue, of course the fastest external signal is 8 MHz SPI, and the boards actually looked nice. In fact the last run with that tool I autorouted a board about 4x4 inches with 2 microcontrollers in 2 seconds, and it even passed DRC! Now I’m pretty meticulous about manual device placement but I haven’t touched the router settings in years. Maybe it’s that I do only through-hole and the footprints are all on tenth grid and the router understand that, I dunno. What I’m about to learn here is whether this “ancient” tool meets the criteria for being “obsolete” because from what you folks are saying, for my purposes it MAY be better than what’s being offered for that function today.

Are autorouters a good idea for me?

Autorouters are kind of ok as long as you have a smallish number of traces or only non critical traces. And i am sure they are better suited for low density boards than the more modern high density boards.


8MHz is also not the only parameter that is important when talking about digital signals like an SPI. How fast is your switching time? (dV/dt)
How long is the SPI? Is more than one device on it? Can you already see how the traces should look like before even starting the router? … The answers of all these will change how well the autorouter is suited for the task.


And possibly the most important question of all: How strict are the EMC requirements? Does your system need to be tested against some standard or does it only need to work in laboratory environments?

  • For the later: Who the hell cares as long as it works. (Well a perfectionist like me will. But that is a different story.)
  • For the former: You want it to be first time right as the guys that test your stuff are quite expensive. (And consider the time lost by multiple iterations.) So better invest more time into it than clicking autoroute. (Meaning one would use it at most as a first iteration.)

Does kicad come with an inbuild autorouter?
No it does not. It had a primitive one in the past but that only worked in the legacy toolset and it was simply not worth transferring it over to the new toolset.

There is an interface to an external autorouter available. (freerouter via the spectra DSN export/import. And there is a python plugin somewhere that does offer easier access. See: Announcing kicad_freerouting-plugin)
That one can sadly not be integrated at all as it is not 100% clear that everything is ok with its licensing (There is some sort of dispute going on but i am not really sure who exactly is involved.) Another problem is that it is written in java and no longer fully maintained making it even less likely to be included into kicad.

There are however vague plans to maybe at least include a basic autorouter again sometime in the future. (And i am sure nobody would have anything against a volunteer investing time into this. It simply is not a priority for the core team as they want to aim kicad at high end professional use. Autorouters simply are not there yet to fulfill these usecases so there is no real need to invest time into them.)


And shameless plug: https://contextualelectronics.com/product/never-trust-the-autorouter-t-shirt/

1 Like

You pretty much have to come to Kicad with the mindset that manual routing is better than auto routing? We like the idea that manual routing forces us to consider parts placement more carefully and do optimizations that probably don’t matter in any practical sense.

Seriously, I was where you are. I wanted huge libs and auto routing. Now, other than the 3D libs, I don’t really care. Spend some time with the available tools and maybe you’ll be a convert? The algorithms and code is out there for autorouting. Freerouting suffers from lots of forks by people that want to ‘keep the code alive’ and ‘port it to a more modern version of the language’ but in the end, no one seems interested in actually developing it. If you find someone, let us know. We would gladly invite them here and probably set up a Freeroute category for them.

Bottom line, you are allowed to have your preferences. I’m not sure any of the open source tools offer GOOD auto routing though.

Um, so my opinion should simply be disregarded DESPITE THE ISSUE that “my old tool” was actually producing results THAT DID THE JOB FOR ME?? This somehow makes me “unqualified to comment” on the state of current tools? Sorry but this defies logic in my book…

Anyway I just posted on the LayoutEditor support forum. Haven’t received any response yet but the general idea is I design the outline as I normally would, then I bring the netlist from Eeschema into Pcbnew, I do the footprint placement then I export a .DSN file back into LE, I have it autoroute then I generate a .SES file to send it back into Pcbnew so I can do DRC. (I’m having to GUESS that’s how it works because I don’t see credible documentation anywhere yet, maybe somebody here has actually tried this?) This is certainly a lot more complicated than my fully-integrated “obsolete” tool but I sure hope the results justify the relative complexity…

Or you use the plugin that interfaces with freeroute that i linked above. You know whatever suits your needs.

Huh, I looked at random_builder’s instructions and it’s almost bewildering why it’s even called a “plug-in”, you still need to export the .DSN, you run the plug-in then you import the generated .SES, it’s not like you’re saving anything to avoid using LE. Yes I’m aware in the final analysis it’s probably implementing the same “no longer supported” .JAR file. Maybe LE could be a bit more tolerant than a “naked” .JAR about the import/export processes but probably not likely.

Kind of amazing to me that 20 years ago someone was offering a fully-integrated package for $1K whose autorouter (yes for “simple” projects) still hasn’t been equalled by open-source. And oh by the way yes I am an EE but understand not everyone is in the business of trying to lay out motherboards or other high-performance digital systems PCBs or cell phones with digital waveform “fidelity” or RF/microwave/microstrip critical issues where quite understandably a simpler autorouter may be either useless or uncompetitive.

Um, did you miss? not 20 characters. sigh…

The external freerouting requires a lot of work to better with more than two layers and to be able to guide and constrain critical tracks to limited areas.
Oracles recent licencing changes have made Java awkward in office use, so Java is now seen as undesirable in opensource projects

You obviously didn’t try it because it does all of what you described for you, it’s literally single click plugin. Watch the video linked in readme on github.
Keep in mind, that plugin does require that you run a recent nightly build.

Just a few months ago here on this forum there was a discussion on the future of autorouters, which had some impressive demos about “guided” routing.
The Idea is to guide the software to what you want to do. For example connect a databus from one chip to another, and then the software fills in the details.
The designer has the overview of the big picture.
The demo looked really impressive, but it was a very short demo of an “ideal” case.
The setup work beforehand was also just skipped to make the video more impressive.

I’m convinced that highly effective autorouters already exist. If not in the PCB world, then surely in the microchip world. It’s simply physically impossible to generate the layout of a 20 billion transistor count chip by hand.

I have very little experience with autorouters myself. From what I remember they very easily make a big mess of your PCB and give up near the end. and then you have a 95% routed PCB in a few minutes, with an impossible to route 5% left, and cleaup takes more effort than laying out the board in the first place would have.
They may be applied more effectively if you have a lot of experience with them though.

But I do want to add the way KiCad is going with it’s interactive router. Pushing tracks aside to make room for one more, or squeeze in the few last via’s keeps meshmerising me and is fun to do (Maybe not for a daily job though).

Sorry no. There is a reason why analog chips are still routed by hand. (Some of my friends would loose their job if your assertion will ever come true.)

The digital world made it a lot simpler for the auto routers as it has standardized cells of equal height spaced regularly in rows. (In the beginning the space between was used for routing channels now the whole area is used and the rows are nearer to each other.) This and the fact that digital is not that critical at these very small scales makes it possible to be auto placed and auto routed.
Also remember the software has much more information about every single part and can do very powerful simulations that help make the result of auto routing better. Plus it can use a hierarchical approach as chips are build from hierarchical units. Again a luxury that is not necessarily there in pcb design.
And the autorouter does not run on a normal pc but like the simulators on quite powerful servers. (Needs a lot of computational resources. Your laptop will not cut it.)

And remember cadence costs a ■■■■■■■ of money (per month and per employee.) I seem to remember 100k€ is nothing for this software but am not sure if this was the per month or per year price.

You’re right I didn’t try it, I was simply going by what I read because I have no database ready to test yet. I certainly did not intend to disrespect the plugin or its developer, it sounds fabulous and I can’t wait to try it.

FWIW, I use Freerouting all the time. I haven’t subscribed to the Real Men Don’t Eat Quiche mentality. Frankly, bringing up the debate about autorouters every time is tedious and annoying.

If people want to use the autorouter, help them. If your religion prevents you from using the autorouter, please preach somewhere else.

2 Likes

Unfortunately it is usually beginners who want to use an autorouter and they don’t realise that freerouting can be fiddly to use

1 Like

A nice video about it at KiCon

3 Likes

Disclaimer: I have the kicad flair because i am in the library team not because i am a developer. So i have not much more insight into how kicad really is developed compared to anybody else following the mailing list for a few years. Meaning everything below is a conjecture by me personally not written in stone rules of kicad development.

I think all of these autorouter things can be summarized as follows. They are nice if they are there. But require a lot of investment in development resources without much payoff. (The more you expand it towards being useful in complex boards the less it will be suited for beginners who typically ask for it the loudest.)

A kicad dev will ask themselves how can they improve kicad more. By providing a simple to use autorouter that only works on boards that are handrouted in minutes anyways (After carefully hand placing the components of course) or by adding rounded and tapered traces that allow kicad to expand into very high frequency (>6GHz) and flexible board applications.

Or compare a bad autorouter to providing an improvement to the interactive router such that it can route a full bus at once. So the differential pair router without limit to the number of traces in parallel. (I think eagle calls this guided bus auto routing. I wonder why?)


And i think the fact that freerouter is there makes this equation worse. As implementing anything that is worse than freerouter makes no sense at all. (Anybody skilled enough to implement an autorouter is also skilled enough to setup freerouter to work with kicad. Remember volunteers need something that motivates them personally.) And getting to a state that is better than freerouter will require a lot of investment. (This will go on until freerouter simply breaks because of lack of maintainance.)


In general i think we will see a part placement optimizer before we will see a true autorouter. (But i could be wrong with that prediction. Maybe somebody reading this will simply take proofing me wrong as their motivation.)


By the way there is only one bug requesting an autorouter and it does not have a lot of heat. So if you want an autorouter fully integrated in kicad again then vote for it https://bugs.launchpad.net/kicad/+bug/1797799 (@pointhi even has a basic demonstrator implementation.)

1 Like