Hey folks,
This is Scott Rider, sometimes known as the Old Crow. As I have done something like 4,500 distinct board layouts, I thought I would start off with a collection of board layout conventions I’ve picked up since I made my first board in 1983. In 2012 I ran across an article, OSH Knock offs where I first pointed out that even a popular board like the Arduino Duemilanove was not immune to suspect board layout issues. If you read the comments to the makezine article Phil asks how I would improve the duemilanove layout and the result is worth showing again here as it covers a number of basic conventions that help to improve both manufacturing and end-user reliability. Pictured below are the default Eagle artwork for the duemilanove followed by my reworked layout example.
I will cover the annotated items is detail. The first one to note is “avoid right-angle trace joins where possible.” In the days when one had to cast their own boards using an etchant tank, heaters, etc. “under-etch” was a common issue. This is when the ferric chloride etchant solution would start to dissolve the copper underneath the photoresist layer. One of the contributors to this particular issue were traces joined at right-angles as the etchant tended to react faster in “bounded” areas, that is, copper on more than one side in a small area. These days board houses have automated etching processes that reduce this problem, but the switch from 2 oz. copper layer thickness to 1 oz. over the years due to a number of factors such as rising metals cost, multi-layer boards, etc., means the problem can still crop up. In terms of actual trace thickness, 1 ounce of copper cladding plated to a 12″ x 12″ piece of board stock results in a trace thickness of just 1.4 mils. Joining traces, particularly those less than 16 mils in width, is best done as 120-degree angles as this causes the bounding areas to be far more oblique, resulting in an even etch.
The second item of note is the use of “neck traces” for all mechanical connectors. Headers in particular represent areas of a board that will undergo the most mechanical stress during the board’s operational life. Single-sided boards often had issues with traces cracking due to repeated connector/header use as any force applied to would transfer through the connector body to the solder joints and copper traces without the benefit of hole-plating to help “anchor” the connection. Even with today’s near-standard double-sided, plated-through copper artwork mechanical stresses can weaken or crack the copper given the standard is also now 1 oz. copper thickness. One way to reduce this risk is to use a larger width trace from a header pin for a short distance. then reduce the width as needed. In the example, the I/O headers all use a 16mil neck trace that are reduced to 10 or 12 mils. This greatly improves the mechanical resilience of the header.
The third item of note is this: autorouters suck. The default layout image illustrates some of the autorouter issues. The two key issues are the grid alignment of close-tolerance traces, such as between the pins of the DIP socket, and the endpoint positions of a given trace, such as where a trace connects to a component pin. In the case of this example, the snap grid was set to 2 mils, which is way too small given the requirements of the layout. A Raspberry Pi benefits from a small snap grid, a duemilanove not so much. I recommended a 5 mil snap for this example, but a 25 mil snap would be fine (and easier to work with!) The autorouter uses the snap grid interval to plot its decisions and given the tiny 2 mil grid uses in the default image, the autorouter saw no problem in running traces closer to pads than necessary. Perhaps the least-favorable aspect of the autorouter is how it handles endpoints: as long as the endpoint reaches its destination, it does not care how asymmetric the actual tracework looks. Most of my layout tweaks in this example were fixing endpoints and snap interval issues. I would love to have an autorouter that learns my habits, then uses them.
The final item I will cover for this session is mounting holes. Mounting holes are good. Where you place them can be bad. The Arduino series have this beveled board edge that probably serves as alignment indicator for attaching shield boards, but the mounting holes are too close to the edge. Anything less than 150 mils from hole center (125 mil hole) to the edge risks cracking the board when tightening mounting hardware. I did not move these holes in my example as they are a production standard (for better or worse), but I will still point out the issue for those making a device of their own.
My rework of the duemilanove was the result of about two hours of tinkering back in 2012. There are still a few things I would improve, and I will cover this in a future blog. Cheers!