Well, here it is. I'm embaressed to say that the design worked the first time. That never happens! But it is a relief.
If there's any single trick to getting a board so that all the parts fit, it's the paper model trick. Here's the almost last revision before going to press.
I'm way behind in posting, so I'll make this the last post on the CAD part of the process. The last steps pretty much follow the official KiCad tutorial on their website, but I'll summarize it in a few words.
After the board is done in PCBNEW, you post it out to files that go to the board house. In KiCad, the menu item that gets you there is "plot". The plot function makes one CNC file for each layer or process that goes between a blank PCB board and the finished board. In the plot function there are a bunch of layers you can turn on or off. The layers used in this board are
- bottom solder mask
- bottom (back side) copper
- top (component side) copper
- top solder mask
- top legend (printed text)
Additionally there are two other "technical layers" that produce CNC files. One is the border layer, which is jut a rectangle delimiting the board edges. The other is a registration mark layer that shows which end is up.
All these layers are in the Gerber g-code format which is used to run photoplotters. Photoplotter machines actually make the silkscreen image that is used in processing each layer of the board. There is one other CNC file you output in the plotting stage, but it isn't a plot file. The board house's CNC drilling machine takes "drill files". A common drill file format is Excellon RS274X.
As a last step before shipping the files to the board house, it is very good practice to run the plot files through a g-code viewer. All kinds of nasty surprises can be caught at this stage. A g-code viewer isn't necessarily part of the CAD suite, and I think it's better if it isn't. The viewer plots the different layers of the board as the inverse of the process used in drawing them to begin with. It's kind of like using multiplication to check the result of hand dividing two numbers. If the two don't match, STOP. Find the source of the discrepency and fix it.
In the case of this board, I found out after it was all done that one of the part libraries had errors that didn't show up earlier in KiCad. The exact problem was that the solder mask layer on certain parts layer failed to provide holes to solder the parts onto the board. Very, very bad. I had to modify the componants in the library to fix the pads. It was a close call.
One thing needs to be clear. Board houses are in the business of running CNC files on production machines. They don't care what's in the files, and it's not their problem if you don't like your result. It's your responsibility to get it right before you upload your files, enter your credit card number into ther website, and hit send.
It's really best to spend the extra time and expense doing a short run of maybe five boards to see where the bugs are in your design before committing to a larger quantity order.