Hacker News new | past | comments | ask | show | jobs | submit login

It's probably because most people who come into PCB design assume autorouting is like a compiler: you just need to design the schematic and then the computer does the rest for you. Even with very good autorouting this is never the case, and if you assume so, especially as a beginner, you will wind up with hilariously bad results. This is why experienced PCB designers will often smack the beginner's hand away from the autorouter.

That said, they aren't completely useless (though I've never had a case where I needed it), but they are also a very high effort to improve: it's a thorny optimisation problem to start with, but also what is not appreciated is it's also a really difficult user interface problem, since the designer needs to be able to specify the requirements to the autorouter in high precision enough to get a good result, while also taking less time than just doing the routing themselves (which for experienced PCB designers is not really that long for most cases), especially when placement is just as important for a good result, intermingles with routing to a large degree, and is even harder to specify (placement depends on finding a good compromise between thermal, electrical, and mechanical goals, all of which are difficult to specify precisely).

Given they're a big trap to newcomers and also a huge amount of effort for something which has pretty niche applications in practice, I'm not suprised the team behind KiCAD decided it was not worth the effort. If you (or someone else) thinks they can make a more useful one, it's definitely a space where improvements on the current state of tooling can be improved, but don't underestimate the effort involved.




What specifically are most autorouters bad at? My understanding is that most autorouters are simply using bad algorithms and miss optimizations that a human could spot easily. I was recommended to try this autorouter https://www.eremex.com/products/topor/ but I haven't got round to trialling it yet.

>The designer needs to be able to specify the requirements to the autorouter in high precision enough to get a good result, while also taking less time than just doing the routing themselves

Aren't most of those rules the same between projects. Once you have a good setup you're good to go on many projects?


A lot of the routing work is in the placement, setting up components to make the routing as trivial as possible, and the autorouter isn't doing that for you. I don't think it'll do pours either but I haven't used one in years. If it's a simple board with just some power lines and digital signals the auto-router will probably do ok, maybe faster than doing it by hand if you can reuse most of your rules. But if the board is that easy an experienced layout engineer would also make short work of it.

Now what if the board is more complex? You have some sensitive analog signals, high speed digital signals, and some RF stuff that. Do you take the time to set up a room in Altium with special rules for the RF stuff? Make some complicated rules so that the high speed digital would mess up either of the other things I mentioned? Could be done, but the trial and error of getting all the design rules right is probably more work than just doing it.

The problem is that easy stuff is easy, and doesn't need an autorouter. Hard stuff is still hard with the autorouter and unlikely to save that much time. It's hard to find a use case where you come out ahead. Maybe a board with a massive amount of GPIO and nothing else?


Back when I used Eagle the "oh boy that's so many pins of signals I care so little about" was pretty much the only time I found their autorouter somewhat useful. The remainder of the time I was annoyed because Eagle being essentially just a vector-drawing program doesn't have (or didn't, at the time) push & shove routing which made tweaking layouts so goddarn annoying, in particular because the tools to move stuff around were completely trivial (i.e. they just moved the selected vertices and made no adjustments at all). KiCad is imho way better in almost every way than Eagle (in the versions I am familiar with).


I had that with the autorouter. I was doing a board that had one critical area, a custom switching power supply. The rest was slow signals. The switcher area had to be given a little extra space and some obstacles so the autorouter would do a tight job there. For the rest, whatever the autorouter did was fine.

I, too, am amused by how wound up some people get about this. It's a tool.


Autorouters are generally bad at: routing related signals together (often important for performance), routing power (especially high current traces), prioritising sensitive signals, keeping sensitive signals away from noise ones, and often somewhat suprisingly coming up with any solution at all or coming up with a solution that passes the tool's own design rule checks. Some of this is bad algorithms but a lot of it is because the autorouter is not given enough information. You can specify some of this to most autorouters but it's not super easy, and that information does usually change between projects. That's part of why I think improving the state of the art is in large part a UI problem.

Another big part of why the autorouter might underperform is it's entirely subject to where you've put the components, whereas a human will generally do placement and routing in parallel to at least some extent. Placement is if anything the harder problem in PCB design and there's no systems currently that really combine the two operations (there are auto-placers but they're generally even worse than autorouters, for similar reasons of the requirements are complex and hard to specify).

In general these kinds of systems run into a bit of a catch 22: in order to use them well you need to have enough experience to do the job yourself, and be able to effectively evaluate the output. But when you have this you find it's faster and easier to do it yourself. And expecting it to be helpful for beginners is a bit like expecting github's copilot to be a shortcut for beginners: the tool is going to throw out bad results sometimes and the beginner is not going to be able to evaluate that or know how to fix it.

Like I said, I think there's room for improvement here, both in terms of interface and in terms of algorithms. But it's far from non-trivial. As for TopoR, it does look like one of the better options, and I really like that it's challenging the 45 degree orthodoxy which is basically a relic from limitations of early PCB CAD which is sadly still solidified in the tools (even in a modern PCB CAD tool it's hard to route something at an arbitrary angle, and it tends to break routing features like push-and-shove), but I haven't had a situation where I've been looking to try it myself (part of this is PCB routing takes up a relatively small portion of my time: if I spent 70% of my time doing it like some specialists I would definitely be spending more time trying to optimise it. As it is it's about 20% of time I spend designing PCBs and I spend less than half my time at work designing PCBs).


I really like the flowing, organic layouts of 60s and 70s PCBs, they are unfortunately very difficult and high maintenance to recreate in modern CAD tools compared to their brutalist brethren. OTOH it's not like anyone will really see the works...



Routing tracks on PCBs. They suck at it.

The real problem that needs to be solved is automatically placing the components optimally, not routing the PCB. Routing the PCB is just colouring in.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: