I am a machine engineer and very used to work with CAD software. The abbreviation CAD stands for Computer Aided Design. I personally think, Autodesk Eagle fails with the ‘A’, because often it does not give you any aid. On the contrary it often puts a spoke in the wheel and makes your life horrible.

Please do not get me wrong, there are many aspects I like and the alternatives I know have other issues. I would really like to work with Altium Designer, but a license is way to expensive for me as hobbyist. There is also KiCAD, a very promising program. I will try to do a whole project design in this software soon, to see where the strengths and weaknesses are.

I hope the Eagle developers will be able to add the described features to the software. They develop Eagle using C++ and the Qt framework – I personally really like this language and framework combination and use it for most of my own software.

1. Inadequate Layer Handling

Even if you only work with a two layer board, the board display quickly gets crowded and it is very hard to see all details.

eagle-board1

It is not only the visual representation, as soon objects are close, selecting a specific one gets really hard. In some locations, you always have to cycle through many objects, until you find the right one. This is slowing down your work and is really annoying.

Hide some of the layers is the solution for this, but you have to do this either via text commands, or create many own keyboard shortcuts to work efficient. Just for the simple action to only show the top layer, you have to enter display none top and shortly after this display last to restore the previous view. There is a panel, where you can do this actions graphically, but this is a modal dialog and blocks further user input – it is useless for efficient work.

For a software, where layers play an such important role, the layer handling is inadequate. Every modern vector drawing program already demonstrates, how an efficient layer handling can be implemented.

layer-panels

There should be a permanent visible panel, docked in the window, where the list of all layers is visible:

  • It should be possible so view only a single layer and restore the previous view easily.
  • A special combination of layers should be save- and loadable.
  • Layer presets should be accessible via keyboard shortcut.
  • All layer should be made visible with one click.
  • There should be a default view to restore at any time.
  • The panel should be easily hidden and shown with a keyboard shortcut.

Another important missing feature is locking. Each layer should be lockable, so no objects on this layer can be selected or modified.

  • Each layer should be lockable.
  • All layers except one, should be easily lockable and the previous state restored easily.
  • There should be an option to allow modification of attached objects, even if the layer of these is locked.

It could look like this in Eagle:

layer-panel-eagle

Ideally a little bit more sophisticated and smaller.

2. No Board Preview

I really like the board viewer from Eurocircuits. One reason why I use it really often, is the lack of board preview in Eagle. There is now some obscure MCAD option, but this strange browser based extension is slow and does not really work with complex boards.

A board preview is really important to spot problems on the surface of the board, without the distractions of the editor view. The placing of labels, logos and other silkscreen elements really need a proper preview. You quickly see problems, if a label is placed on a via or similar.

The bottom of the board is only visible mirrored in the editor view. Here it is absolutely important to get a proper preview of the board not mirrored. I personally do not easily spot problems in mirrored text.

  • There should be a simple option to switch between edit and preview mode.
  • The preview should be in the same window, with the same viewport settings.
  • There should be another option to switch between a top and bottom view of the board.
  • This switch should also work in the editor, so the bottom side can be edited in a normal (not mirrored) view.
  • Both switches should be easily accessible with keyboard shortcuts, to quickly toggle the preview and top and bottom view.
  • Switching to bottom view should also reverse the layer order, so bottom elements are on top.
  • There should be a keyboard shortcut for both actions.

The preview could look like this:

eagle-preview

3. Copper Fill Outlines

A really annoying thing, if you place copper pours using the polygon tool on the board, is the strange handling of the outline. If you design an area on a board, you would actually expect you design the outline of this area. In eagle, each polygon has line width. This line width is used for the conversion of the area into the resulting Gerber data, but it also adds to the outline of the area.

In the images below, I added a fine green line which illustrates the actual drawn line of the polygon:

eagle-polygon

If you have a simple rectangle board, 10×10cm board and like to add a copper pour, you would expect you can draw a 10×10cm rectangle on the outline of the board. No!, you actually have to take this technical line width into account. If you use e.g. a 1mm line width, you have to draw a 9.9×9.9cm rectangle with a 0.5mm offset into your board.

eagle-polygon2

The line width of the polygon also controls how the Gerber data is created. A smaller line width will generate a finer layout, but more data.

There is absolutely no reason why the user should deal with all this technical details!

If I change this line width in a later step, I automatically change the shape of the polygon and this is almost never something I really want to do.

  • Polygons should define the precise outline in a fine, pixel width line.
  • The outline of the polygon should always be the exact outline of the defined area.
  • The technical details, how this polygon is converted into Gerber data should be part of the conversion – not the editor.
  • There may be a preview, so the user can see, how the polygon will most likely be converted into Gerber data.

4. Control over Thermals

Thermals on pads are really important for hand soldering. If you have SMD or through hole pads connected to a copper pour, it is really hard to heat them up without them. For vias, thermals make absolute no sense. Even worse, the thermals on vias can disrupt the copper pour and prevent it from “flowing” into edges where a via is placed.

eagle-vias

One of the core problems seems that Eagle makes no difference between a through hole pad and a via. For Eagle, both is the same. You can only enable or disable thermals for the polygon of the copper pour, there are no further options to make this more specific.

  • Ideally there should be a different object for vias and for through hole pads.
  • Or at least there should be a flag or option which define the intent for this element.
  • There should be more control over the thermals. On the board level, on the polygon/fill level and on the pad level.
  • The angle of the thermals should be customisable. If you have a part in a 45º angle, the thermals may follow there.
  • The width of the thermal connection to the fill should be customisable.

Update: As Jorge Garcia from Autodesk Support pointed out, there is a way to control thermals of vias. For some unknown reason, this nice feature is hidden in the design rule checks. It seems the design rule checks in Eagle do not only check, they also modify the layout.

5. No Closed Line Support

There are various places where you need closed lines while designing a board. A closed line is like the current polygon, but without all this special technical handling it currently has. A such closed line stay always closed and line connection points always exactly match. Also the last point will always connect the first.

Eagle currently supports this with the polygon tool. This tool was made for fills and not for board outlines and cut-outs. There is also no further support, like combining two polygons and converting from lines to polygons or back.

The board outline is an important part of each board. It may be the case, 20 years ago, boards where always rectangle, today the board has to follow the casing of the device and this may be a very complex shape. I think Eagle should be aware of this board outline, and be able to aid the user there.

  • There should be support to draw arbitrarily closed lines which always define an area.
  • There should be tools to combine multiple closed lines to create new shapes.
  • The closed line on the outline layer should be used to define the board area. This area should be visualised so the user can easily see what is part of the board.
  • If Eagle would know the board area, it would know if a package is actually on the board or not.
  • On the board outline layer, a preview/warning for different milling cutter diameters would also be helpful.
  • There should be support to edit a closed line (as supported by the polygon).
    • Move points on the line.
    • Remove points from the line.
    • Add new points to the line.
    • Combine the area of two lines into one (merge).
    • Cut the area of one line from another (cut).
  • Closed lines should be convertible into single lines.
  • A group of single lines should be convertible into a closed line if all points match.
  • The matching of line ends for this conversion should allow some tolerance.

Why not a simple option to fill the top and/or bottom layer of the board. If the board outline changes, the fill will change. There could be another option to define the spacing between the board outline and the copper pour. The user could focus on the areas where he does not like copper and place restrict areas there.

As mentioned in the point “copper fill outlines”, this closed lines would be a perfect replacement for the current polygons.

6. No Usable Vector Import

Eagle has no usable vector import. There is an import dialog, where DXF data can be imported, but already this dialog looks … interesting.

eagle-import

This import process is somewhat very strange and it needs a lot of tweaking to finally import some board outline. If something goes wrong, there is not even a error message. Only straight lines can be imported, curves are silently ignored. One has to specially prepare the outline in advance, convert bezier paths into straight lines. There is also no way to import a closed line as polygon, this would be especially useful to import a copper pour in the same shape as the board.

  • Eagle should provide a complete and smart import of DXF data.
  • There should be a preview of the import, so you can see what to expect and see problems in advance.
  • All curves should be imported and automatically converted into the right representation suitable for eagle.
  • There should be an option to import lines as polygons.

7. Readability of Vector Font

The vector font in Eagle is … poor. I clearly see, the idea behind this font was to reduce the amount of data to the minimum. This clearly made sense 1970, today, a little bit more details in the font would really improve the readability.

eagle-font

  • Eagle should provide a modern, well readable vector font.
  • Alternatively, it should be possible to convert any true type font into a nice Gerber output, without too much data.

autocad-vector-font

This is a random vector font from Autodesk AutoCAD. The same company who owns Eagle now. With AutoCAD comes quite a large collection of very nice vector fonts, even the default for AutoCAD are TrueType fonts as for all modern CAD applications today.

I think most PCB manufacturer today will use a bitmap for the silkscreen anyway and no vector data. So Eagle converts the silkscreen into a complex Gerber file, which is converted back into a bitmap at the PCB manufacturer. At least, I know Eurocircuits is using an ink-jet printer for the silkscreen – so they use bitmaps for the silk – Gerber is converted back into a bitmap.

I personally would really like to have all labels on the board in a well readable true type font. Because the manufacturer anyway converts the Gerber back to a bitmap, Eagle could use a very fine line for this layer to render the true type font there. Maybe this is already possible?

Really nice would be a high resolution 600dpi or even 1200dpi, monochrome TIFF export for the silk screen. The PCB manufacturer would have to define some standard, in which format this could be generated. More important would be the definition of the zero point for this layer.

8. No Generic/Dynamic Symbols

If I draw a new circuit, I spend a lot of time creating new symbols. There are always a number of chips, which are not in the library and have to be drawn. Are this chips special? No! The whole process is annoying and repetitive:

  • I draw a rectangle.
  • I add pins to the rectangle.
  • I place a >NAME and >VALUE text above and below. Here I have to change every time to the right layer, Eagle will not support me here. It could know these special texts.
  • I click each pin and define the name and features. Yes, I click every pin…
  • I notice, the rectangle is to small for the names, sigh… I use the group command and move command and lose a lot of time expanding the chip symbol.
  • Now I need to copy a package from somewhere and add it to my own library to use it for my device. It is a standard package, nevertheless I have to copy it to my library.
  • I create the device and have to place the symbol there.
  • I connect all pins with the pads of the package.

Wow! What a lot of work for something you have to do over and over again.

  • Eagle should support a generic chip symbol.
  • This is a dynamic symbol, automatically generated by the pin descriptions.
  • The symbol should stay dynamic. This should not just generate static data – if the dynamic symbol data is copied and pins changed, the symbol should change dynamically. Only the parameters should be stored for the symbol.

The feature could be implemented like this:

  • I select “New chip…” somewhere, which opens the chip assistant.
  • I select one or multiple compatible packages for the chip.
  • Here I simply add all pins in a table until I defined all pins. In each row I define the pin name, pad number, etc.
  • I can reorder this table until I am happy with the chip.
  • There is a permanent preview of the symbol in the assistant.
  • Pins can be placed on all four sides of the chip. The size of the chip is automatically calculated to allow space for all names.
  • A click on “Create” will create the chip and add it to the schema, optionally store the parameters in the library.

Other Symbols

There should be also a comprehensive library of generic symbols for most other electrical symbols. Like a resistor, MOSFET, capacitor, etc. The idea is, that you can simply use this generic symbols, like the chip editor. If I have a special component, like e.g. a special RGB LED, I can save a lot of time by just placing these generic symbols/shapes in my symbol.

Ideally there are also generic symbols like the chip assistant, but simpler. I just select “New symbol…”, there I choose “Diode” and see the diode with the two connections. I select my special package for this diode and can optionally change the pin names in the table. I click on “Create” and are done.

9. No Generic/Dynamic Packages

Each package has to be designed in Eagle from scratch, or copied from the library. Actually there are either very special packages, like the pads for a battery holder, which you have to design from scratch – and there are very generic packages which should be dynamically generated from a template.

You can see this best if you study the spec sheets from chips:

generic-package

You can see the letters with the different dimensions. Why should I spend time placing all these pads, if they can actually be generated automatically using these parameters?

  • Eagle should support dynamic package layouts.
  • E.g. there should be a dynamic SMD chip package: You specify the number of pads, the distance between the pads, the size of the pads, the marking for pin 1, etc. The package is automatically generated from these parameters.
  • Most SMD packages can be designed with a few simple parameters.
  • Usually a simple rectangle over this dynamic package is enough to represent the component as place marking.
  • This dynamically generated packages should stay dynamic. Only parameters should be stored. If a such package is copied and modified, you should get back to the parameter dialogue.

10. No Bezier Curves

Eagle currently has only support for arcs. This is based on technical limitations of the output format. There are often special board shapes which can not be designed using arcs. Bezier paths or more advanced curves would simplify the design of special board outlines.

Currently special board outlines have to be traced with many many small straight lines. This is very time consuming and editing these lines after initially drawing them is almost impossible.

  • Eagle should support bezier paths or similar curves, so any custom outline can be created in the editor.
  • Eagle can automatically convert these lines into a suitable representation of the output format.

I personally think, a CAD software should never limit its capability just because of limitations of the output format.

11. Confusing Group Selection

The way Eagle handles the simple task of selecting multiple objects is very cumbersome. It will make the simplest operations complex and slow.

For example, to move a group of objects:

  1. Click on the group icon or type GROUP
  2. Select the objects.
  3. Click on the move icon or type MOVE
  4. Right click on a element.
  5. Select “Group: move” in the menu.
  6. Finally move the elements.

There was a strange new option, something like “auto group”. I think the idea was to simplify this process, but actually it does not solve the main problem.

The main problem here in Eagle is how selections are handled in general. As all 1970 CAD systems, you first choose the action, then you use your point device to add points to this command, which will execute the action.

Modern system turn this process around. They first select the object to be manipulated, then the selected tool will do changes on these objects.

Is this a unsolvable conflict? No! The first problem, why this selection process is that annoying, is because selecting the group command will immediately forget the actual action you would like to do. If you had move selected and select group – Eagle does not remember you had move selected. “Group” should not be a command (a text command, yes, but no interactive command) – “Group” should be an input feature.

E.g. if you have the “move” command active and you click an element (line, whatever) while you have the S key (for select) pressed down – this will not start the move, it will just select the line. If you hold the S key, you can select as many lines and objects as you like. The key could also be used as toggle, press it once you select objects, press it again to leave the selection mode and switch back to you last action. As soon there are selected lines and objects, and you click somewhere, this selection of lines and objects is moved.

There are disadvantages from the usability point of view. This introduces a “mode”, which can be confusing. You have to tell the user, hey! there is a group selected, be careful, you current action will move the group – not just your clicked object. Hard to do with a old 1970 windowless screen with a line cross as cursor… luckily, today we have several options to solve this problem. One could change the cursor shape (show a group symbol there), one could dim all elements except the selected ones, one could put a colourful clearly visible indicator on the screen, one could do all of this to make sure to get the users attention.

How to leave this mode? Press ESC or press D or select “Deselect All” from the menu.

Update: Jorge Garcia from Autodesk Support pointed out, there is the “group command default on” option in the preferences to address this problem. For me personally, this feature isn’t consistent, because it only speeds up the move command – all other commands work as usual.

12. No Scale Command

It is mind blowing, but Eagle has no scale command. Why would one like to scale a group of lines? Like a logo, or board outline – nobody would like to do this – never.

  • Eagle should provide a scale command.
  • This command scales a group of lines and polygons.
  • Packages, labels, texts can be ignored by this command.

Epilogue

As mentioned in the introduction, usually I like to work with Eagle. It is a well developed software and works very well for simple circuits and boards. I wrote this article, because I always see the potential of this software – how great it actually could be.

I especially did not mentioned some annoying bugs the software currently has and the license model. I personally like a subscription model, because it let me plan my expenses in advance – my own software is sold that way as well (it is just called differently). Limiting the board area or dimensions seems still hilarious to me. So hobbyists only create small boards? I would prefer no auto router in the standard edition, but unlimited board size.

All the points in this article are my personal opinion and highly subjective.

If you have questions, miss some information or just have feedback, feel free to add a comment below.