Recently I’ve been expanding my retro game collection to include game cartridges imported from Japan. The problem is that I don’t have Japanese game systems (yet). So I’m creating an open source adapter to convert Famicom carts to the NES. Before I submit the PCB to OSH Park, I’m going to run through this PCB Checklist to make sure I don’t forget something silly.
This PCB checklist is something I’ve built over my years of creating boards. If you’ve got tips from your own list, don’t forget to leave a comment letting us know.
PCB Production Checklist
The concepts on this list will apply to almost any PCB software. The tips I give relate to EAGLE, since that is what I use most often. Feel free to comment to add tips for other design software like upverter.com or KiCad.
1. Dimension Outline
After your board is done processing, a CNC router will cut the panel. The router uses the dimension layer to run the cutting bit. So make sure the shape of the dimension layer is what you want. Most board services will let you cut almost any shape (but charge you as if the board fit inside of a quadrilateral.)
The example above, you can see I made a cut-out for the Wii’s accessory connector. Not all (cheap) services allow cuts inside your design, so double-check before you send it out.
2. Mounting Holes
One of the biggest mistakes I make with every PCB, is to forget mounting holes. I get so caught up in part placement, I forget to consider how I’m going to mount the board into a case. At the very least, make sure you add some holes to the board’s design.
The example here is from my Binary Clock controller. Notice right above the RTC (DS3212) that there is a small hole. That’s because when I got the first board back, I realized the battery was on the bottom layer and had no way to push the battery out from behind! So that hole lets me stick a small screwdriver inside to push out the battery.
3. Clearance for Connectors
This check list item requires a bit of experience or a lot of 3D CAD work.
BinBoo is one of my favorite projects. It was my first experience with a laser cutter and one of my first PCBs to run through my toaster reflow oven. However, I have to keep the back panel off, because the USB connector isn’t offset enough. I lined up the edge of the connector’s layout with the edge of my PCB’s dimension layer. I should have extended the connector off the edge a little, so that it had enough clearance to get past the back panel.
4. Component Labels
Even though leaving off part values could be a quick short cut, it can make board assembly a little more frustrating. Make sure each part (especially the passive components like resistors, capacitors, and inductors) have a value associated with them. Once you’ve added those, carefully look each part to make sure both the designated (R1, R3, etc) and the value are in a place that makes sense.
The SMASH Command in EAGLE will separate the NAME and VALUE labels from a part. This will let you move them anywhere. This is really useful for when you have parts overlapping or the silkscreen is “off the board.”
Nothing is worse than getting a board back and getting confused about whether you should be placing a 100ohm or 1000ohm resistor.
5. Label Important (All) Pins — Both Sides
This is especially helpful on boards with through-hole parts. Put a mirrored label on the bottom side of the board. This way when you have it flipped over, you can easily find where different components are. Otherwise, you’ll end up flipping the board over a few times (or try to turn your head upside down) to find your place.
6. Print out a 1:1 Copy
Print the board design on a piece of paper, and place components on the paper. If you have some foam, you can even put some through-hole parts down as well. Then move around with a pencil tip and see if your soldering iron is going to hit something plastic by example.
7. Add a revision number and your name
Sometimes a board will come back with a mistake on it. Sometimes that mistake is so bad you have to send it out again (or “re-spin” it.) In those cases, you might end up with two boards floating around your workbench that look very similar. Adding a “rev 1” tag to one side of the board will help you find which version you have, even if you think you’ll only make one.
Don’t forget to add some text with your name and/or the name of the board. I like to put this on both sides of the board.
8. Double check the final files
One of the cool features of OSH Park’s PCB service is that you’ll see a rendered version of your board’s EAGLE files. If you are submitting gerber files, there are free Gerber viewers that let you see a graphical versions of the gerber files.
Make sure they make sense before you send. Double check that traces aren’t overlapping, that traces don’t touch vias or through-holes, and that ground planes aren’t shorting anything out.
Speaking of ground planes…
9. Don’t forget Ground Planes
When you first start making PCBs, you might notice a slight difference between your boards and other people’s boards. Good PCBs always include some ground (and sometimes power) planes in the empty spaces.
To make these is actually pretty simple, at least in EAGLE. Draw polygons on both layers of your board, name them GND, and connect them together with some Vias. These ground planes will help provide better signal integrity with a lower impedance path to ground. Use this video tutorial on creating ground planes in EAGLE to learn more. (Hint: there is a trick in there.)
MAKE SURE THE BOARD LAYOUT MATCHES THE SCHEMATIC!
Breadboard the circuit exactly as the schematic is drawn.
If changes are needed, make the change on the schematic.
Make the board layout from the exact finished schematic.
Don’t be in such a hurry that you are sloppy.
That circuit board can be exactly right, or exactly wrong, the mfg. will send you what you send them.
Don’t pay for useless boards made for half thought out plans
Zoom way out, then select all to make sure there aren’t any forgotten or stray objects outside of your board outline.
Don’t choose so small of a font size it is unreadable.
Print essential notes or instructions on the board. (Will I know how to use it by just looking at it a year from now?)
Treat it as though you are stranger going to have to troubleshoot it. Label voltages at strategic locations.
Mark calibration points and their settings.
Don’t make the board so small you have no room for labels, test points, etc.
Label e-b-c, d-s-g etc….component outlines and descriptors on both sides of board.
Put all part outlines on both sides.
Don’t print on top of any solder connection. Solder is contaminated by ink.
Label pin description on top of and following the trace near the component.
Use larger pads if wires are to be directly soldered to board. Possibly both a solder pad and a header connector.
More than one wire soldered to a connection? Make another pad for it to connect to.
Make generous sized traces, especially those with higher current flow.
Include a board title describing what it is. Among many others a year from now it may not be so obvious.
Add a logo for a little polish and professional look to your personal boards.
here’s my checklist, http://pastebin.com/yJNZPDxV
Thanks for the list of things to check before submitting a PCB! I’m just an amateur pcp manufacturer, but this is very helpful to me as I learn how to make these boards. I agree that “even though leaving off part values could be a quick short cut, it can make board assembly a little more frustrating.” I’ll make sure not to leave those off in the future!
Pingback: KiCAD tips | /dev/thrash
I forgot to mention that I also like to add to the board, in an out-of-the-way place, a small text string on each layer to identify it; TOP, L2, L3, BOT, TMASK, BMASK, TSILK, BSILK, etc. Again, anything to make the fabricator’s life easier…
That’s a great idea Tom. Sounds like that would also help with verifying the layers in a gerber viewer.
If you are leaving it up to the board house to panelize your design, whether you send a gerber or ODB++ package, most fabs will add scored 1/2″ rails which contain tooling holes, fiducials. and mouse bites (breakaway tabs) free of charge.
More on panelizations: Many board shops like to use 9″x 12″ working panels, so whatever they have to do to fit as many of your boards into that working panel size… It’s all about the material waste for them, you are still paying for whatever material gets discarded. They will also do 6×12, 8×12, 10×12, based on your board geometry, to mitigate wasted material on their end.
Fids are good to manually add to the actual board envelope if your board hs SMT components, and especially if it is over 9″x12″, since beyond that geometry, your board will likely be “1 up” on an 18″ x 24″ master panel, and you might not get rails unless you ask (especially if you have a board with oddball geometries and cutouts, arcs, etc,.).
Some of my checklist items and techniques:
The comments from others on DRC are all well taken, and I cannot agree enough – DRC is your friend! Trust it, and dismiss DRC warnings at your own peril.
I use slightly different pad libraries for hand-soldered boards versus those that will be IR reflow soldered. I like to be a bit more generous with pads that will be hand-soldered – to provide a bit more “runway” before the fillet.
Testpoints are always a good idea. I favor a DSPTH testpoint with a 0.042in hole to accommodate a 0.025in square post. That allows easy connection to a scope or logic analyzer.
The corollary to testpoints: I always provide a few ground attach points. I prefer a pair of holes with 0.1inch spacing, and I solder a loop of scrap wire between. This forms a non-slip attachment point for scope clips.
The comment about including isolation resistors in supply and other critical nets is a good one. However, I find it a pain to always have to place and solder the resistors (esp when hand soldering). Another negative side effect is that the isolated nets (VDD1, VDD2, VDD3, etc.) tend to make the netlist become overly-complex. My solution is to place an SMT resistor “over” the trace; with the trace travelling through and shorting across both pads. If I want to isolate, I use a razor knife to cut the trace in between the pads. To rejoin, I place and solder the SMT 0-ohm onto the pads. Electrically, they’re all the same net, so the netlist doesn’t grow out of control. Only works well for relatively low-current traces, of course.
I create a PDF file of each layer within a standard title block and border, and include this PDF file in the ZIP archive that goes to the board house (if they allow it). That’s saved my bacon a couple of times, where something looked strange during processing by the fabricator, and was resolved when they looked at the PDF file.
I personally don’t like to include component values on the PCB itself (point #4). Most of my work involves analog, in particular RF, where it’s hard to know up-front what the final values will be. My approach is to move the component values to a separate layer, and then include in my PDF file (preceding tip) a composite plot of each side and the component values to serve as a placement reference. It’s easy enough to back-annotate the schematic and PCB database with the final values and re-generate the PDF after the dust settles.
Kicad can do 3d-view from within, as wel as DRC ans ERC.
From the EMC-Guy perspektive:”be careful with GND-planes”. You can easily share switching signals over your whole PCB unintentionally or render your filters(e.g. for DC/DC-converters) easily unused…
Pingback: PCB Checklist | Alan C. Assis
It is also important to put Fiducial in your board. This way if your project becomes a success you could to send it to be assembled in an SMT factory.
There are a few extra steps you can take to ensure a successful fab.
(disclaimer: I am a Senior PCB Designer who has also worked for both design houses/service bureaus and board fabs in the past)
1. DRC’s are your friend – if you get a successful pass, run it again. And again with tighter constraints. Also, when you send your board files out for a quote, ask the fab to run a DRC on it. If you ask the fab to CAM it, they will do it for free in many instances as part of your quote. Some overseas fabs will build your board as-is without an incoming CAM, and you will receive boards with shorts, or excessive warpage, so choose your fab wisely.
2. Bounce your design netlist against a gerber generated netlist if possible. Many fabs will toss your netlist file if you include it, so ask them to bounce it also. They can do this, if they say the can’t, find another competent fab.
3. Print 1:1 on transparency films if possible so you can overlay any particular layer with another, it’s worth the money in the end – designers are not not in the business of eating boards.
Just taking a few extra precautionary steps can save you a lot of time and money in the end.
Oh I cannot believe I forgot to mention DRC!
I had a board where the DRC kept complaining of overlap. I finally convinced myself it was a bug. Got the board back and there was a dead short between Power and Ground. I couldn’t figure out why. Finally I realized, I had drawn a power plane polygon on top of a ground plane polygon by accident.
Before I submit a board, I think about what else I can include without increasing the cost. For example, most Chinese manufacturers charge the same for any board less than 10×10 cm. So if I haven’t filled that area yet, I think about adding in some breakout boards or part of another project I’m working on.
Also, the choice of manufacturer is almost my last decision. You stated upfront that you were using OSHPark. I would go to PCBShopper.com, which is a price comparison site for PCB manufacturing. OSHPark is included there, but so are 20 other manufacturers.
run DRC, ERC and check Tools/Statistic (in the pcb designer window) for “N unroutet (airwire)” in the summary (last line). You can’t find the entry – everything is good.
One more important topic: Try to split your PCB into specific areas, i.e. Power Supply, Microcontroller, I/O, Fieldbus, … and put 0 Ohm resistors (i prefer 0603 size) into the VCC lines between components.
That makes debugging much easier when you have a short circuit or strange effects on your power lines. You only need to remove the Resistor behind your voltage regulator and you can check the output voltage. Put the resistor in and remove the next one (i.e. Controller), check again. Then check one I/O component after another.
Using that method, I’ve saved many hours at work and at home whilst searching for bugs.