Eagle CAD or Eagle PCB or just Eagle is the electronic design automation (EDA) software package that most hobbyists and beginners use. Some of this blog post is probably useful to Eagle beginners, or people just learning the package. Other parts of it are only going to be understood thoroughly by people who have used Eagle for a while, and experienced its mysteries. This is NOT a tutorial on how to begin using Eagle, there are lots of excellent ones on the web. Not too many of them actually take a critical attitude toward Eagle though, and ask why things are the way they are.
Newark Electronics bought Eagle about six months ago, so perhaps they are ready to throw a little money at CadSoft to move Eagle a little closer to modern EDA software packages. This blog is offered in the spirit of both constructive criticism, and as caveat emptor (let the buyer beware), for potential purchasers and adopters of Eagle.
Some of the reasons why the DIY electronics and Open Source community have adopted Eagle are summarized below:
- Cross platform versions with Windows, Mac and Linux available.
- Reasonably priced and freeware options: basically Eagle is one of the lowest cost EDA products after freeware, for our shop, it’s the EDA software we can afford.
- Extensive libraries are available.
- An extensive user community – at least on the “low end” of hobbyists, DIY and casual users.
Modern Device also uses Eagle, with our choice influenced mostly by the cross platform availability. There are several other nice features of Eagle – I’ll get to the downsides in just a bit
- An extensive user scripting language that allows extending the software package with script files being plain text so that they are human readable. This is a double-edged sword, being handed a DIY interface instead of a finished, sensible GUI might seem like “thin gruel” but it does really allow one to have some things the way you would wish.
- The navigation seems to be usable. You may laugh at this, but many software packages don’t allow flexible
“zooming to navigate”, one of the fastest ways to move around. InDesign comes to mind. - The interface, while clunky at times, is modifiable in many ways.
The Downside
OK here comes the rant. Eagle has many, many rough spots that require getting used to, especially for Mac users who are accustomed to more fluid user interfaces. Let me lay out of the list of my pet peeves then I’ll have some words of explanation about each one. This list is fresh in my mind as I recently had a lengthy conversation with a representative of CadSoft, the publishers of Eagle.
First a few words about the nature of my comments. There are many things that Eagle can’t do, and which Eagle does not try to do. For example, the Beagle Board and Raspberry PI were not designed in Eagle because it would be slightly insane to attempt projects of that complexity without proper design automation tools to accomplish the job. These are not the downsides I’m talking about with Eagle. I am talking about basic things that the package should do because they are standard interface items on low-end (and free!) CAD and drawing packages.
- In Eagle, the mouse is used in a manner that is likely different than any way you have used it in other drawing or CAD packages. CadSoft seemingly invented the GUI from whole cloth, impervious to existing interface design. The CadSoft rep told me that Eagle had been in existence for 25 years, so my technician’s remark that “Eagle looks like it was designed before modern GUIs”, might in fact be partly true.
- The UNDO buffer is different from any software package I have ever used.
- The user interface forces the user to do many things the “Eagle” way.
- Error messages are often wrong, leading new users to the wrong place to try to get their task accomplished.
- Creating parts is quite mysterious and a bit tedious. Which doesn’t mean that it’s impossible to create parts, just harder than it should be in my view.
- Some tasks require using the command line interface because there is no menu item for the task.
- Seemingly paradoxically, some tasks require using the mouse, because there is sensible command line equivalent.
- There is no dialog or even method for aligning parts, or distributing them (spacing them evenly over a distance), something I find very useful. Yes I know there is a grid, and no, it does not make up for this lack of functionality.
- The arrow keys do not move a part a custom distance, this is highly useful part of many other drawing and CAD programs. How hard can this be to implement?
- Many items have less than useful default settings for tools and GUI behavior.
- Color palettes are not able to be loaded, saved and saved in files the way they should be.
The mouse
As I said above, Eagle uses the mouse in entirely different ways than any graphic programs I have used. Selecting objects is a entirely new experience, for example you can’t shift-click to add to a selection, nor command-click to subtract from a selection. The main way in which Eagle varies from other graphics packages though is that in most (all?) of the other software packages I’ve used, one selects an object and then decides what operation to perform on the object. In Eagle this is inverted, one first decides what to do with an object and then selects either an object or a group, further mouse clicks are required to actually confirm the operation. This has the effect of multiplying mouse clicks by at least one third. Many things in Eagle just seem like they take much more work than they should.
In many graphic software packages it is possible to select a group of objects just by dragging a rectangle around them with the same arrow tool that does the clicking. Eagle requires the use of a group tool to do the same thing, which again increases mouse clicks for no good reason that I can see. I’m not holding my breath for Eagle to change this bizarre feature though, since it has been a part of Eagle for too long to ever be changed without irritating some die hard “clickers”. The group tool in general is a pain to use. After selecting a group, the tool defaults back to its “function” tool (the last tool clicked before the group tool). To select the group tool, one needs to click on it again, more useless clicks IMO. Considering that a more conventional paradigm would eliminate the need for the “group” tool, and some items in sub-menus, is enough of a reason to change this in my opinion. The KISS principle should apply here I’d say.
Undo what?
The UNDO buffer is also implemented in a fairly bizarre way. Often undoing a move, also undoes the last (desired) action, so that one has to go back and redo the correct action one just performed before the mistaken action. This is easily worked around by continuing to perform another errant click, and then UNDOing but WHY? Again, it just seems to be the Eagle way. It’s hard to say if this could ever change, it doesn’t seem like such a hard thing to me, but the motivation to fix something which maybe doesn’t seem broken (to CadSoft) is probably lacking.
You can’t do that from here!
I have several examples of being forced to do things “the Eagle way”, but one undoubtedly has wasted several human-years of time, especially for Eagle beginners. The useful Properties dialog box lets users change almost every property of a pcb trace. And one can even change the signal name (which determines the network of (parts) to which the trace is connected). IF THE SIGNAL NAME IS A NEW NAME, all works well. If however an existing signal name has been used before, Eagle brings up...
The vile error message! Why God, why?
OK, so instead of the Eagle programmers sending us elsewhere, why doesn’t Eagle just change the damn name of the signal, as if one were in the Names dialog box? I’m afraid this is a divine mystery and it may have been this way for 25 years. It has been baffling newbies and intermediate users just as long.
Another example is copying a symbol in the library editor. Although the Copy command works from the command line with Devices and Packages, the same functionality is missing from Symbols. Again, why? Humans are very flexible and will learn to use every kind of clunky interface. They’ll even complain when a bad interface is changed to a better one, because they have invested so much time in learning the bad interface, but it doesn’t have to be this way.
Warning: error messages are wrong!
Here’s a little experiment. Take one your Eagle board designs that has a ground plane. Add a via from the Draw menu, Name it GND (with the Name tool sic) , or whatever you have your ground plane named, and then try and delete the via. Depending on the circumstances, it will delete, or it will bring up this dialog:
So if you were a beginner, you would go to the schematic and start looking for your Via, which of course is nowhere on your schematic. The trick, which every intermediate user and beyond knows, is to use the Ripup tool. So why hasn’t CadSoft figured out how to parse out what people are trying to delete and send them to the appropriate tool? The same thing holds when a user wants to “delete” a trace, when they really want to Ripup a trace. Again they are sent to the schematic page when all they want to do is to rip up a trace, which looks strikingly similar to deleting a trace, to a beginner. This is simple stuff to fix (change the error messages – it doesn’t get easier than that). CadSoft keeps adding much more complex features and ignoring these trivial details to fix.
The parts editor
Making parts in any CAD package is tedious and requires concentration. Eagle just seems to make it harder than it should be. In Eagle a device is umbrella container which holds the schematic symbol and the package (board footprint) together. From the device editor window, one may click to edit either the symbol or the package (footprint), but once done editing, there is no way to get back to the device window without digging through a possibly quite lengthy menu.
When you open a library to edit parts, the library window has a column of “date modified” values. When you Add a part, or go to the Control Panel, the “date modified” column is no where to be found. When one Adds a part, there is a nice search box to find your part in a long list of libraries. However when you visit the Control Panel to copy a part into another library, the search box is nowhere to be found. Why? Is it useful in one context and not in another? It’s another divine mystery and you can ask the Vatican (or not) if you want an answer. Copying, renaming and deleting parts is also more complex, inconsistent and far from intuitive than it should be.
The missing align/distribute tool
If you have ever used a drawing program or page layout program you know that guide lines and methods of aligning things is highly useful. Here is one from Inkscape:
Adding this functionality is not rocket science. If you think back to your high school coordinate geometry.
An algorithm for aligning parts might look like this:
- Find the centers of the selected parts.
- Check to see if the x or y dimension of the parts is more consistent
- Set all the centers to the average of all the parts, or the nearest grid point, or whatever.
It just is not that hard. Why hasn’t this been added ages ago? There is a user language program (ulp) which aligns and distributes parts. It works OK, but is a thin shadow of the dialog box above. For CadSoft it would be a good introductory assignment for their intern programmers just getting up to speed in the ulp language.
The missing arrow keys functionality
In most drawing and layout programs, the arrow keys nudge the selected element according to the direction selected by the user. The amount could be set by the grid or in a separate dialog. Again, the functionality is AWOL without good reason.
Less than useful defaults – the color palette
Eagle comes with sixteen extremely saturated colors in a palette of 64 colors. The rest of the colors are set to middle gray. Many of the layers in the default setting are set to gray. Why? More subtle and more transparent colors are more useful. Ask Edward Tufte. Saturated colors tend to take over and displace other information. Even Sparkfun figured out that they should set the defaults of the top and bottom copper layers to something less saturated. OK I’ve spent some time in art school. How much work does it take to get someone to design a decent palette and put it into Eagle instead of gray squares. Why can’t I load and save palettes and why aren’t they saved in files, so when I send a file to someone else I can know that they are seeing the same thing I am when I discuss the file? The programming (and other simple UI things above) for features such as a decent color palette implementation is much simpler than the Meander distances that the Eagle programers seem to have been working on of late.
The defaults for the text sizes and trace widths are less than useful too. Yes you can set these things in a script file (but they’re not shown in the default eagle.scr file) but how about a decent preferences page with these things in it, so users don’t have to program to setup their software?
Scripting Eagle – “the Eagle way”
Although the interface does leave a ton of things to be desired, CadSoft should be recognized for their scripting system, which allows users to add back some of the missing functionality, albeit in a slightly less convenient way.
Wrapping up
Tomorrow I’ll go over my first attempts at setting up a personal style for the editor with a couple of my own scripts.
If you know of good script repositories and script resources, I would appreciate the information. We may not have been offered a truly professional grade tool like Photoshop, but we can still control a lot of it ourselves, which is at least a palliative.
I’ll also keeping adding and editing this post for a while. I’m going to link to it from the Eagle forum. The CadSoft representative I spoke to said that the programmers work on what users are asking for, so register on the CadSoft forum and start posting if you agree with any of the things I’ve said. You may also want to have a word with your Newark representative, if you buy parts from Newark, they now own CadSoft and Eagle. I believe my conversation with the CadSoft rep was initiated when I mentioned Eagle in a marketing phone call from Newark.