Cadsoft’s Eagle schematic capture and PCB layout software has become very popular among hobbyists, most likely due to its reasonable (non-existent, for the lite version) price tag. However, at times it is not the most straightforward piece of software to use and learn. While I’m afraid I’m not going to write a tutorial that explains how to start using Eagle, I will introduce some of the tips that I have come across in my (very limited) experience with Eagle, so that hopefully others dealing with these situations will find some answers.
Please be advised, though, that I am still pretty new to Eagle and PCB design, and, in fact, I have not yet had any of my board designs actually fabricated (I have been etching my own boards using the toner-transfer method). That said, you should take my tips with a grain of salt, as I don’t always know what’s best. I would be more than happy to accept any suggestions or improvements in the comments, though.
Grid Spacing
One of the most basic, but important, provisions of Eagle is the fact that everything you place snaps to a grid. The grid spacing that you select ultimately determines where you can place things, both in the schematic, and in the layout editors. To change the grid spacing, you can go to View->Grid, or click on the grid icon towards the upper left corner of the window, and specify a value for “Size” in the dialog window. This much was pretty obvious to me. What was NOT immediately evident to me was the role of the “Alt” field. This field allows you to quickly change the grid size on-the-fly by holding down the ALT key as you navigate the editor workspace. This allows you to snap to a finer grid when you need more precise placement.
You should only ever change the grid size in the layout editor. According to the Eagle user manual, you should never set the grid size in the schematic editor to anything but 0.1 inches. This is because schematic connections can only take place at grid points, and all component symbols (should) have pins that fall on a grid point. A connection between a wire and a pin will not be made unless the two are at the exact same location. Thus, always using the same (0.1″) grid spacing in the schematic editor should ensure that you will be able to connect nets/wires to your component pins.
Manual Routing Tips
Although I have the hobbyist license for the Eagle’s Autorouter, I have nonetheless only ever manually routed the boards that I have designed. There were several times when I couldn’t quite understand how to get Eagle to act the way that I wanted it to under certain circumstances while manually routing my traces, and the tips that follow are the answers to my questions.
How can I make a route where there isn’t an airwire?
When Eagle draws airwires, it draws them such that the airwire distance between traces that should belong to the same net is minimized. However, sometimes where Eagle draws the airwires is not necessarily where you want to begin your routing segment. Fortunately, Eagle allows you to start your routing anywhere on a net if you hold down the CTRL key when you left-click to begin your route. This gives you much greater flexibility with your routing. Also, recall from above that you can also hold down the ALT key to gain finer precision while routing.
How can I easily make vias?
The most obvious way to create vias is by using the “Via” tool in the command toolbar on the left. However, this method is not particularly convenient. Fortunately, it is possible to create vias in a very streamlined manner, without ever having to switch tools or event move the mouse outside of the drawing area. With the “Route” tool activated, you will notice that middle-clicking allows you to change the layer on which you are routing. If you begin routing on one layer, change layers while the route is still active, and then continue your routing on the new layer, you will see that Eagle will have automatically created a via for you that traverses the layers between which you were routing. (The current layer will be evident by the color of the trace, and will also be updated in the parameter toolbar at the top.)
Also, it is worth noting that you can also use the SHIFT key while left-clicking to create a via at the current point in your route. Recall that, if there is not already an airwire present where you would like to start routing to make your via, you can hold the CTRL key while left-clicking to begin your route just about anywhere.
How do I deal with components whose pads don’t fall on a grid point?
Oftentimes, component pads do not fall exactly on a grid point. However, you will probably notice that when you route, it seems that your tracks always have to end a grid point. The question, then, is how do you get everything to line up properly?
One answer is to leverage Eagle’s different wire bend styles. While using the “Wire” or “Route” tools, the current wire bend style appears in the parameter toolbar at the top of the window, as shown below. There are several different bend styles that allow you to make traces that use right angles, arbitrary angles, smooth curves, etc. Because I prefer to do my routing using obtuse 135° angles, I will show an example that uses the second and fourth wire bend styles in the picture (although the concepts are transferable to some of the other types, as well).
Suppose that I have two components that need to be connected, but neither of the pads fall on the grid. Despite the fact that just about everything in Eagle snaps to the grid, Eagle does, fortunately, allow you to begin creating traces from the center of a component pad, where an airwire starts, even if the pad does not fall on the grid. Similarly, you can end off the grid, provided that that endpoint is the center of a component pad where the airwire for the current route ends.
Assume, for example, that in the layout below, I am attempting to route a trace from the component on the left to the component on the right, with the current wire bend style selected. Notice that, because I am starting the route segment on a pad, and ending the route segment on another pad, the route does not have to snap to a grid line. Unfortunately, because of the way that the wire bends, I end up with a situation where the route clobbers one of the neighboring pads on the component on the right.
One solution to this problem would be to change the wire bend style. The diagram below demonstrates routing between the same two points as before, from left to right, but using the complementary wire bend style. Whereas the route in the previous example started with a horizontal line and ended with a diagonal, this route starts with a diagonal and ends with a horizontal line. Obviously, this arrangement is far more conducive to this routing scenario, as it doesn’t clobber any pads on the destination component. Fortunately, switching between complementary wire bend style on-the-fly is very streamlined in Eagle. Simply use CTRL+right-click to toggle between complementary wire bends. Using this technique, you can avoid having to route from each pad individually to meet in the middle.
Although not shown, keep in mind that, when creating a route that consists of multiple bent segments, only the segments that terminate on a pad can snap to an off-grid location. Any intermediate routing segments will always start and end on the grid. As an aside, Eagle uses a parameter value called “SNAP_LENGTH” to determine how close the cursor must come to the pad in order for the route to snap to the pad. By default, this value is 20mil, though this can be changed using the “SET SNAP_LENGTH number;” command.
Net Classes and Trace Widths
When creating a printed circuit board, it is often desirable to have certain sets of signals use different trace characteristics than others. For example, supply nets might need thicker traces than other signals, or high-speed serial signals may need more clearance from other traces. To address such needs, Eagle supports the notion of net classes. This allows you to designate categories for various nets in your design, and apply a set of common characteristics for nets belonging to the same class.
By default, all nets in Eagle already belong to a net class aptly named “default”. However, you can create new classes by navigating to Edit->Net Classes… This will bring up a window like that shown below. To create a new net class, simply type a name for the class in the left-most text box and assign some characteristics. In this example, I have created a net class named “Power” whose nets will be routed using 25mil traces.
Now, in order to utilize this convenient new net class, you will need to assign some nets to it. There are a couple of ways to do so. You could use the “Change” tool (the one with the wrench icon) to change the “Class”, and subsequently click on the nets whose class you want to change. Alternatively, you could use the “Info” tool (the one with the “i” icon) and click on the nets whose class you wish to change. This tool will bring up a properties dialog like that shown below, where you can select the appropriate class for your net.
There is one more thing that you need to do to make sure that your class characteristics are actually honored while routing (I have no idea why this isn’t the default behavior). Click on Options->Set… and navigate to the “Misc” tab. There, you will find a check box for “Auto set route width and drill”, which you should enable. Now, when you route your signals in the layout editor, you should find that the trace characteristics adhere to those that you specified in the net class options.
Unfortunately, the net class rules to not apply retroactively. That is, if you already have a layout routed, and then change your net class settings, your existing traces will not be updated accordingly. There is, however, a quick way to change the widths of all traces belonging to one or more nets. Eagle includes a ULP (User Language Program) called “cmd-change-brd-width.ulp” that can be run by navigating to File->Run… and selecting this script. When you do so, you will be presented with a window like the one shown below. In this window, you can choose from the list on the left which nets will be affected, and the new trace width for those signals.
Internally Connected Pins/Pins That Require the Same Signal
There exist many components that have multiple pins that are internally connected, or that have multiple (not internally connected) pins which require the same signal be applied (for example, multiple independent grounds). For these reasons, Eagle has a feature that allows you to create a device whose symbol has fewer pins than its package has pads.
In the example below, I have created a device for a voltage regulator that has only three functional pins. However, the package has four pads, as the ground tab at the top (pin 4) is internally connected to one of the other pins (pin 2). When creating such a part, you can use the “Append” button while associating pins and pads in the “Connect” dialog. As you can see in the column on the right-hand side of the dialog, I have assigned pads 2 and 4 to the same pin.
Take note of the icon that appears next to the appended connections. Eagle offers two important options here, which can be toggled by clicking on the icon. The options are as follows:
– Any – This icon means that only one of the pads for this pin will have an airwire and will need to be routed. This option should be used if the pads are internally connected.
– All – This icon means that all of the pads for this pin will have airwires and will need to be routed. This option should be used if the pads need to be connected to one another, but there is no internal connection.