EEVblog #93 – PCB Autorouters SuckPosted on June 12th, 2010 31 comments
Drive time rant again.
Dave begs beginners not to use PCB autorouters, and questions why the low end EDA CAD packages even bother to have them.
Dave I definitely with you on auto routes in general with DRC rules and LVS are absolute dog shit ive had to fix many a design destroyed because someone discovered the auto route feature. But I also believe before you use an EDA tool you should learn to build circuits with bread board and then move to perf board and wire wrap the skills involved in trouble shooting and and route large designs or these type of builds give you a better understanding of proper layout techniques at least that is what i have found to be true. What are your thoughts or were a beginning hobbyist or engineering should start.
sorry about the shit grammar and some misspellings writing and talking at the same time with no review after submissions
Hey Guys, I love this blog, let me just say. Dave, the eagle software is free and it comes with an autorouter. I know this is a rant, but besides for saying that the autorouter is crap if it isn’t setup properly, you didnt really tell us why its so bad (we don’t have your experience). For instance, i’m no expert, but I know you could have talked about things like noise, resistance, capacitance, sizing the power traces correctly, etc. Its an interesting topic, I think you should talk about it more in the future.
Only a hobbyist here, but here are my thoughts:
Autorouting has its place for sure, but like being taught how to do maths at school before being handed a calculator (or pc) it is just a damn good idea to understand what it is you are asking an auto-router to do before you just dive on in. It then brings to the forefront elements of your design that the autorouter cannot cater for – such as EMI, component placement (especially sockets and interconnects) as well as different traces for different requirements.
If you have not done much manual routing – how will you be able to set up the proper rules for the autorouter?
Anyway, I use eagle at home. I also don’t use the autorouter except to get a general idea of how my component layout seems to work.
Manual layout from a hobby point of view leads to the following:
- Ability to lay tracks that can be easily traced and allow ‘hacking’ as you find issues or make modifications to the etched pcb
- ability to reduce vias which on a home PCB are a pain to drill and jumper
- ability to use spare space for prototyping areas
- start to learn about comparing reality to the schematic; finding things like minor changes such as pin swapping in packages or pinouts on connectors makes for a more sensible layout
None of that is really available from autorouting without a lot of effort (which the autorouting was supposed to save!)
Yeah, autorouters suck. They can be useful as a starting point if you already know how to route and can fix up all the egregious fuckups, but a beginner isn’t going to know how to identify them – much like spell-check really isn’t much good unless you already know how to spell.
Only yesterday I saw a microcontroller project that was having significant reliability problems because the autorouter had put random signal traces under the crystal! *facepalm*
Dave, that was a good little rant! I can understand why beginners would expect an autorouter to be helpful. After all, there are applications that do all sorts of things nowadays, and often inexpensively or even for free. The thing is, an autorouter isn’t just performing a complex operation; it is solving a complicated puzzle. It is really more of an artificial intelligence program than just a time-saving utility. Although it is like maze solving or playing chess, it is more difficult than both of those in some ways – there are all sorts of constraints and rules, and those keep changing. I suppose just about everyone would love to have the computer automatically place and route parts on their PC boards, and do as good or better a job than they would do themselves by hand. But in reality, that kind of thing doesn’t come cheaply. (Or does it at all?) I think you did good by telling people not to expect cheap autorouters to perform well. A better approach might be to use white lab rats. They have real, actual intelligence, and if you’re lucky, maybe even some experience solving mazes.
I used PCB Artist (free software) in senior design 2. I agree that autorouters suck. The big problem I faced in senior design 2 was that the autorouter (at least in PCB Artist) did not prioritize certain footprints over others, so I had to go back and slightly redo things twice to get it to work. But then again, the PIC for that board had a bad design too.
Also, I hate that there isn’t a uniform database of footprints with proper part numbers, etc.
I LOVE routing. I wouldn’t want to do it every day, but when I do, I have to stop myself from spending TOO much time making things perfect.
It’s like a complicated mind puzzle. And, when you’re only working with a single sided board for home etching…well it can get really crazy!
I agree after making the same mistake myself I’ve comfortably settled down with expresspcb software, completely free, very easy to use and make custom parts and footprints and yes i now prefer to manually route, I saw some simple auto-routing in a demo package completely screw up a 4 part demo board, apart from being a difficult software to use well I was getting faster results by hand.
By the way, interesting way you aussies pronounce autorouter
In the past I used to rely on the autorouter because I didn’t think that I could do a better job of it myself. I saw how the autorouter was doing complex runs of wires all over the place, dumping vias as it went along. That just re-enforced my belief that I didn’t stand a chance. Surely, if the smart autorouter had to jump all over the place to get the job done then I couldn’t do it half as good. As time went on I realised that that just wasn’t true, at all. (this is for Eagle’s router btw). So, I started routing manually.
But as an amateur there is one thing that I do like about autorouters, they give you a starting point. Sometimes you just sit there thinking, jeebus where the hell do I even start on this thing!? I then hit the autorouter and let it run and it gives me ideas on how to approach it myself.
I also have to agree with George Graves, sometimes you end up spending WAY too much time fiddling around with stuff that really doesn’t matter just to make it look “cooler”. But hey, it’s fun
I have to agree to Tony Stark. I would like to see some experiments and examples which show why autorouter is crap comparing to hand routing.
I use Eagle autorouter all the time for my boards and i think is very good. If you set it up properly, set all the constraints and rules it does a better job then me.
Maybe is good to know how to hand route for some specific or sensitive parts but even then my obvious choice will be hand routing those small areas and let the autorouter do its job for the rest.
Maybe is good to manual route production boards, final devices or for time/frequency sensitive projects but my work is 99% prototyping. Why bother ? Autorouter takes 1 minute and if I don’t like the job I can delete traces, I can move the parts around and try again.
I don’t have so much experience with manual board routing like you guys but trust me, if you are a beginner in these days you will use autorouting. It was designed to help, not to screw our projects.
Manual routing is the same as using assembler instead of C for projects. C increases productivity and should be used for the most parts of any program and assembler is used to optimize the sensible and slow parts.
Manual routing is the same as using pen and paper and special ink-tools with different pen sizes to do any technical drawing instead of using specialised CAD tools like AutoCAD.
At least this is how I see it… and doing it…
The problem is that autorouting is an NP-complete problem and as such greedy algorithms will always provide suboptimal results. Quantum computing will eventually solve the problem optimally but who knows how much time will it take to get there.
If you want to see why autorouters are crap, try doing a single sided board with one, (preferably a circular one) They are quite handy if you’re doing back planes or
memory boards, providing you route the first track manually to force the correct pattern, though here I suspect I’m showing my age. I occasionally use one for a placement check only, but find I can always do better myself.
It is also easier to place and route small sections of a board at a time, though it’s getting more of a struggle to do this as the pcb packages now seem to require endless ECO confirmations and are muck harder to bully than they once were.
Good placement is 95% of pcb design, the routing will be fairly trivial if you get this bit right. If you know you will re doing the routing yourself there is a far greater incentive to but a bit more thought into the placement up front.
I’d rather have a good post processing package
myself than sort of electro-statically spread out the tracks and got rid of (or connected) isolated copper pour islands, but I not holding my breath.
Well Dave this time I have to respectfully disagree with some of your statements. I agree that mid grade autorouters are not perfect, but I would say that it all depends on your requirements.
I do some PCB’s for my own interest and have tried many solutions, including the popular eagle. I have come up with a windows based solution http://www.diptrace.com, which is free for personal use under 300 pins and 2 layers; perfect for most of my little projects. The included autorouters (grid and shape based) perform relatively well and I rarely have to manually intervene, in which case only a few clicks fixed the issues. I would probably not use this solution to create pcb’s where high speed routes are required (such as where trace lengths is very important). I have built very small boards and intricate larger boards with TQFP64 chips, with great results with the autorouter which saved me hours of manual routing vs 1 hour for the design itself.
Setting up the autorouter properly is somewhat important, especially for fine traces, and where there is a fair amount of them.
Parts placement is also important to some degree. A little logic would suggest to limit the connection crossings prior to autorouting.
I like the comment that autorouters give you a starting point. Beginners could learn a fair amount from it, and if needed, correct or improve on the process at a later point.
Diptrace is not perfect (being windows and all), but for a cheap and decent autorouter for beginners and average designs, I give it a strong A.
slight tangent perhaps…
While I’m not a PCB MAKER, I HAVE been taking notice of some of the older industrial equipment my company repairs.
It’s very interesting to look at the boards, components, and PCB layouts on older boards.
Older hand-drawn boards can have an almost organic look to the trace layouts.
It’s quite striking sometimes.
I agree with stark and dics on this one, particularly the Assembly – c comparison. Manual routing is alot like coding in assembly, if you get everything just right the first time what’s the extra couple of hours matter? Manual routing becomes a pain in the ass when you’re working on a tightly packed board and some design changes mean you need to fit an ic and some passives in somewhere, with the autorouter you just shift parts around a bit and reroute, if it doesn’t work, shift’em around until it does. With manual routing, chances are you’ll have to rip up and reroute half your traces as you move parts and make room. I used to agree with Dave actually, but after going through multiple board revisions that put me in the above situation, spending the time to properly setup and use auto-routing got alot more appealing.
Dave, you’ve lost me. I use FreeRouting.net for just about all my boards and am very happy with the results. Like any other tool, it becomes more effective and more powerful as you learn some tricks. And like any other tool, it has its limitations. But IMO it’s a huge time saver and a great way to get started on the road to PCB design, especially for beginners – sorry to break your bubble, but IMO your rant comes down to “why use something like C when you can use assembler to make so much nicer and tighter code?”.
FWIW, I do agree that EAGLE’s autorouter is next to useless, since it so often fails to even find a solution in the first place.
I wish I had known this a few weeks ago. I’ve just completed the etching and drilling on my first double-sided home-made PCB, and I let the autorouter route it. It never occurred to me that I might be able to do a better job, or that there would be design criteria that the the autorouter couldn’t know about. In particular, it has routed a couple of signal traces under the crystal. I guess if it doesn’t work I can always cut those traces and reroute them with wire. Good to know about that potential problem though so I can test for it, and avoid it next time. I wonder what other PCB design pitfalls there are that I didn’t know to avoid.
I spent more than 6 months evaluating low-cost PCB design tools, and I have to agree with Dave on auto-routers. Why bother? Why do developers even waste their time on them? I would much rather see a PCB CAD developer spend their time hammering out bugs than providing the gimmicky auto-routers. One of the reasons I settled on ‘PCB Elegance’ was that the developer didn’t waste any development effort on an auto-router.
I have to agree with Dave. I am in hardware too, but in our company the hardware designers (e.g. me) do not do the layout.
In our company we do a lot of densely packed PCB designs with (high-)power electronics and microcontrollers and analog circuits.
For the PCB design we have specially trained PCB designers.
They do most of the layouts by hand. Only in very special cases they decide to go with the autorouter. Most of these cases are low density boards or adaptors for prototyping, nothing that goes to a customer.
One of the reasons for the hand made layout is that for electromagnetic compatibility measures no autorouter can help.
But for the autorouter of Eagle: I find it quite useful in the current version, where it supports you by (hand-)placing the routes with online DRC checks so that the routes are not to close to each other. (But I did not do many designs lately in Eagle)
Regarding inexpensive EDA Tools:
Currently I am playing with Kicad (http://www.lis.inpg.fr/realise_au_lis/kicad/). A free EDA tool, but I am currently not sure if it fits my needs.
I’ve been using KiCAD recently.
It’s pretty good considering it’s free.
I’ve not tried to do more than two layer, but I’m sure it can.
I doesn’t obviously have an auto-router, but I’ve not bothered even trying to find it. (In agreement with the vid post). There is some stuff in the help file, on auto-routing. But like some of the other features described in help, they’re just mysteriously absent.
The schematic editor seems to have some difficulties with hierarchical port names, when you replicate identical sheets. In the end I just replicated the sheets and provided different names for each similar port of the replicated sheet.
It’s no big deal, and I seem to remember that old versions of Protel used to do that.
The only real complaint I had was that it can’t back-annotate reference designators from the PCB package to the schematic editor.
It’s just an annoyance, but these are the only things I noticed that I’d want to change.
well. i never use any autorouter before. just hand routed some simple pcb before. maybe my comment here is invalid. but generally my IMO…. if i can do it quick and better manually, i’ll do it manually, if its better and quick with autorouter, i will do it automatically. if both cannot give good result in time, i’ll combine both manual and auto skill. its just a tool, its up to us to use it or not, learn how to use it or not… or whatever…. why autoroute for simple project? where we can do it by hand easily?
i agree with previous commenter, Dave didnt give a complete (if not any) and specific reason why we should avoid autorouter… except the reason it sucks.
I just wonder when looking at 20yo trade rag ads regarding PCB design software how little really seems to have changed in capabilities there… if you believe the old ads some of yesterdays (DOS and 486 era!) stuff was more powerful than todays entry level…
Almost there for 25 years…
Great rant Dave.
As a new engineer myself I have found just how right Dave is. I did my thesis project last year and had to build several pcb’s which had analog and digital circuitry on them. Some 0.5mm pitch IC’s and some 0.65mm pitch IC’s. I fought with the auto-router for over a week trying to get it to work. I am a hobbyist as well and thought the auto-router was always my savior because it seemed to get the job done and I didn’t have to do anything really. I ended up hand routing the boards for thesis and couldn’t be happier with the results. One thing I realized at least with my analog circuitry is that just because the auto-router may be able to route a section of the board doesn’t mean its going to perform well or perform at all for that matter.
I have to second AnSc on one important point there. Not only are you leaving yourself in a quite likely position of sections of your design coupling to each other creating problems that you might not so easily debug if you not used to it.
But there is also a more real, serious issue here…
If you’re designing for at least some more serious project/implementations that you consider for a real world commercial product you have a whole host of emc-requirements to be concerned about. If you’re using soley an auto-router and think that your design’s actually gonna past all the EMC requirements and be allowed on the market you’re in the best case just blissfully ignorant, sorry but had to be blunt here. You do NOT want to do a schematic, pick components, do a layout, produce it and pay $10000 on emc testing just to realize that hey, you have to redo the whole design cause you didn’t spend a couple of hours more on actually doing a proper layout…
Using soley autorouters might work if’re you doing a simpler hobby level project where you do not care about signal integrity, EMC, etc. but if you’re aiming a bit higher i highly recommend getting used to doing some “hands on” layout, otherwise you’re very likely at costing someone (or yourself) a lot of money and lost time
The main thing that has changed is that computers have grown powerful enough to do more of the work, but designs naturally grew along with them. Computers are, after all, electronics designs.
Two functions that I find interesting nowadays are “push” routing and trace tightening. They both lead to more organic looking layouts, something that came naturally in the days they were taped out by hand. For examples of the concept, have a look at liquidpcb or kicadocaml.
Autorouting itself has seemed so dumb to me that I find it only interesting in constrained settings, i.e. to let it do the traces for a small group of nets that really don’t need much attention. Then again, I’m not very experienced.
Another aspect of this is that if you are designing similar things regularly, you will repeat certain design patterns, eg the setup around a 9 pin d-type, max232 and four x 1uF capacitors that make an rs232 i/o, or your own pet instrumentation amp layout, hell even a linear power supply. And as well as repeatably being able to reproduce these ccts an systems from memory, you will do the layout ‘from memory’. Thus your PCB work becomes modular at level of intention, and you, or another EE tech looking at it will find it easier to understand. The autorouter can take that away.
Okay, I’m convinced that autorouters are a bad idea.
Anyone have any links to information/tutorials on good manual routing practices for hobbyists (e.g. someone routing simple to moderately complex microcontroller-based projects, not boards running in the multi-GHz speed range)?
Autorouters have their place. It is just that the autorouters that come with the cheaper software is so poor. I used autorouting software in 1996 that leaves the autorouter supplied by Altium in 2011 for dead. The autorouter that came with Orcad was not bad either.
Good autorouters require work at the front end to get good results. Net classes with associated design rule definitions to enforce trace separations. And good placement. Route keep out zones
As for good routing practices. High Speed Digital Design, A Handbook of Black Magic by Howard Johnson published by Prentice Hall and Electromagnetic Compatibility Engineering by Henry Ott published by Wiley are good starting points.
Leave a reply