I've used CadSoft's Eagle PCB EDA tool for a long time, all the way back to 2009 when I first started down the silly path of learning something more about making electronics. Eagle has, for the most part, been good enough I've not really looked at many other tools.

For one thing, it's cross platform and has a very reasonably priced hobby version, as well as free-as-in-beer versions. The free/hobby version is limited really only by board area (100x80mm) and layers (just two), but these are actually quite reasonable limits. It's enough area to do something very useful and two layers is all anyone needs to begin with.

Eagle also has a very rich set of libraries and has been the defacto choice of a number of major producers of Open Source Hardware, most notably the Arduino platform. Companies like Sparkfun make most of their products available with libraries for Eagle so you can drop them into your designs quickly.

It's not without problems. All EDA software seems to have been designed largely by engineers and engineers suck at UI (and I think they'd admit they do too). Eagle is no exception, it has a myriad of quirks and strange behaviours you just have to know to get used to. And Kicad also has a stream of quirks and behaviours that make no sense either.

I've tried Kicad out a few times before, and there was a lot which left me less than willing to switch. Schematic capture felt very rough and cumbersome as a process, the separation of footprints from parts made no sense to me, and the PCB layout tool .. well I didn't get very far with it. And every time you drew anything it left graphical glitches all over the place. Besides which, part libraries were thin and I was less than keen to start creating my own.

Eagle did a lot of things I wanted well enough to stick with it. The autorouter was included in the free/hobby versions and I lent on this quite heavily for a long time. It felt better connected between the schematic and board, and flowed better between the two. I got more comfortable with making my own libraries, and manually routing boards.

But, I've also started to bang up against those hobby license limits. I've started to work on boards with an edge longer than 100mm. And the next license step up in Eagle is over a grand. Would I pay that much for Eagle? No.

The problem with Eagle is it hasn't really improved a great deal over the last four years. They've added differential pair support but it's extremely clumsy, because manual routing in Eagle is very clumsy as well. Meanders (adding additional length to a trace to make it the same as other traces) just never worked at all for me, whatever I was supposed to do with the tool it wasn't obvious and explanations were thin.

Manual routing is where it really starts to fall apart, it's much harder to work out what is useful to route next, and adjusting traces is difficult. You can't lock any traces either, so it's easy to trash a bunch of layout. You don't seem to be able to force a trace out of an existing pad unless an airwire connects with it.


Yellow lines are airwires, I can see what needs to be routed, but what's more important to route now? That can be worked out from the schematics, but that's a lot of flipping back and forth.

So this brings me back to Kicad. I need a tool which can handle larger boards which isn't thousands of dollars, and my requirements have changed over the years, manual routing is now really important.

The bad first: schematic capture is still just as bad as it has ever been, and every one of the graphical glitches I saw a few years ago are still there. Now, to be fair, there is actually some work on the latter under way now so it'll go away soon, but I was surprised some of the basic stuff was just the same. There's more libraries but it's still not really the case you can hop along to various open hardware outfits and see kicad libraries for their parts. It's still got a terrible UI.

Okay, I can live with some of that, more so than I could four years ago. And now I care about manual routing, Kicad just completely beats Eagle in every way at manual routing.

kicad-routingThis is a board I've already done some routing on. Note how each pad on the IC and trace is labelled with the name I've assigned in the schematics. At a glance, I can see the priority of what I need to trace, in this case the XO and XI pins are very critical to do first, and everything else should work around it.

That single feature alone has made it a far more capable tool. Manual routing which actually is very capable is a huge win now for me, and I'm much more willing to get through the pain to come to accept Kicad as my preferred tool. Despite only a week of trying to get my head around it, I think I'm already managing to produce better manually routed designs.