The Eagle design files for my millable Arduino Pro Mini are available on GitHub.
I chose to start with Sparkfun’s Arduino Pro Mini due to its minimal design but had no intentions of trying to replicate its minimal size. Some components were changed to better match what I had in my personal inventory (LP2985 voltage regulator, ceramic 10uF caps) and others because I wanted to use them in future projects (the smaller reset pushbutton).

Milled PCB before assembly. There are a couple of scratches on the copper that look worse than they really are. The camera flash really brought out their highlights.
If you read through my iModela PCB Milling post, you’ll know that the ATMEL megaAVR TQFP package needs PCB milling resolution of 8 mils or smaller. This design is a reasonably aggressive test of the milling process. Replicating this on a mill at less resolution just won’t cut it.
I used three design tricks to make my life a little easier. First, all the components are surface mount, and only on the top side. Wait, surface mount makes this easier? Yup… Using surface mount components only means I don’t have to drill holes for any component leads, and I only have to solder components on the top side. This is a two sided copper board, but drilled holes will be unplated. If you want a connection between the top and bottom of the board, you need to solder the connection on the top and the bottom, and you also need to flip the board and do some milling on the bottom. Routing both sides of a PCB leads to a whole other series of issues.
Second, the bottom copper is a ground plane, and nothing else. Vias are used to make connections to the ground plane from the top side. The only drill bit I needed was a small one for the vias (I used 0.5 mm). During board assembly, I inserted 30 AWG bare wire into each via hole and soldered it to the top and bottom copper.
The last trick was to fill the top side copper with VCC.
You can see how I placed some SMT pads close to the edge of the board to make it easy to add a connector without drilling holes. I did hack some pin headers into pseudo-SMT components to access the SPI programming pins of the megaAVR. Future projects based on this design will have access to the AVR pins at the SMT pads (which can be removed) and take advantage of the existing layout. There is plenty of room for additional circuitry to the left and right.
The software process was Eagle layout -> PCB-GCODE (an Eagle ULP) -> iModela Controller. PCB-GCODE generates the gcode files for both removal of copper and drilling. Once you have the gcode files, the iModela Controller software is used to run the mill. I’ll go into mode details of this whole process in a future post, including the settings I tweaked in PCB-GCODE.