Saturday, June 12, 2010

Eagle Cad autorouter

In EEVblog #93, Dave Jones rant's that "PCB Autorouters Suck". Especially for beginners, and most definitely in cheap tools.  

I happen to agree.  So I tried a little experiment.  My results surprised me.

I have a small microcontroller board that I created in the free version of Eagle CAD.  I manually routed it a few months back.  Including placement, I think this took me about 2 to 3 hours (one evening).

The MCU runs at 4MHz off of its internal oscillator.  The crystal you see is a 32KHz for a time of day function.  None of the signals on this board are above 400KHz, and currents are low.  I like to make power traces big mainly so I can quickly tell them apart from signals.  I don't like vias under my QFP.  I got lazy and put in a top layer ground plane to help with routing ground through my power supplies on the left of the board.  So basically, one can say none of the traces are critical.  Good design practice has bypass caps near the power pins of the MCU, and the XTAL should have a solid ground plane.

So I ripped up all the traces and took out the top side ground plane.  Loaded my 10/10 width/spaces design rules.  I set the autorouter to a 10 mil grid.  If you leave it at the default of 50 mil, it can't route to SMT pads that are "off grid".

I clicked OK and about 5 seconds later, the autorouter gave me this:

Note it says 100% routed!  That right there shocked me.  And the other thing I noticed is that the autoroute looks pretty decent.  Not too many oddball excursions - it was smart enough to clean those up.

But, it did put 5 vias under my QFP.  I don't like that.  I like my traces where I can get to them for debugging.  So I ripped up the routing, placed a couple power traces under the QFP, then blocked out the rest with some rectangles.  I'll take the rectangles out when routing is finished.

I fired up autoroute, and this time it took slightly longer, maybe 10 seconds.  I could see it trying various routes.  But when it got done, I again had 100% routing, and it looked like this.

Not bad at all!  Not counting copy/pasting images for posting here, I've got only a couple minutes invested in this routing so far, and it looks presentable.  Sure, there are some longish routes, but at these speeds, its not a problem. 

A bit of cleanup, widening some power signals, a little bit of moving signals and vias for manufacturability, and now with a total of 15 minutes invested I have this:

That looks pretty good to me.  I'd say that's quite acceptable for a small prototype design. 

I have to say I'm surprised at the results.  For a quick, small, prototype PCB, typical of what I'm seeing other hobbiests do on Eagle, the autorouter helped me finish the job in 1/5th of the time of manual routing (excluding placement, which will be the same either way). And I got similar quality to my manual work without much fiddling with the autorouter settings.

Sorry Dave, I've failed to prove your (and my) position on autorouters.


Laen said...

I'm glad you found the autorouter so passable.

I really admire people that can do really good manual routing, but I'm not one of those people. I hand route critical signals, but otherwise let the autorouter do its job.

But really, in most of my designs, there aren't any "critical" signals.

Thanks for this! It allays my guilt for relying on the autorouter so much. :)

David L. Jones said...

There will always be cases like this where the autorouter produces useful results!

David L. Jones said...

There will always be cases like this were the autorouter will produce useful results.
This board had no major signal integrity issues, and plenty of space, so not too surprising it produced a usable result in this case.

SiliconFarmer said...

Thanks for taking a look Dave.

Down at the hobbyist level, I think there are a lot of prototype designs that are in the same solution space as this board.

For those boards, the auto routed spaghetti seems to be as good as the hand routed spaghetti.