Board bring-up is the process of checking and validating a PCB assembly for the first time. The aim is to make sure that the board has been manufactured and assembled correctly and that all of the subsections of the design work as intended. This can be a nervous time for an electronics designer as it is a key proof point that many weeks or months of work has been successful.
Note that bring-up is not the same as validating an entire product or system – it is usually limited to validating the hardware. Writing firmware will likely be a part of the process, but only to the extent required to ensure the processor, its peripherals and external circuitry connected to them are working as expected.
I believe you should always have a written bring-up plan or check list to make sure nothing is missed. A repeatable process is essential if you have to bring-up more than one prototype over the course of a project. Label or otherwise uniquely identify each board before you start bring-up. This allows you to keep track of the state of multiple boards if rework is required.
The next step is a thorough visual inspection. You are looking for correct component placement, solder bridges or dry joints, manufacturing defects or anything else untoward. You might also want to check for continuity or shorts if you see anything suspicious. Fix any problems now, before power is applied for obvious reasons.
Next comes the smoke test. Apply power from a current-limited supply and ensure the current drawn is within the expected range. Check all the power rails are within specification. If you have a thermal imager, it can be useful to look at the heat profile of your board at this stage to see if anything is getting hotter than you would expect. Figure 1 shows a thermal image of one of my boards as it was going through this process. The hottest components (switch mode regulator, battery charger & microcontroller) are only about 8°C above ambient, so all is good.
If you board has a microcontroller or FPGA now is a good time to load some very simple firmware (maybe just to boot up and blink a LED or toggle a convenient GPIO). This will validate that the processor of FPGA boots, can be flashed and is operating at the expected clock frequency.
You can then move on to exercising the MCU peripherals and the circuitry attached to them. It’s pretty hard to be specific here, but I like to start with getting a debug output of some kind working (a USB or UART for example) that I can use to help with this process. Then it’s a matter of writing just enough code to exercise the hardware. I try not to make this too involved as I don’t necessarily want to spend time writing full device drivers at this point.
Sometimes a peripheral requires a lot of configuration in order to make it work well enough to test (such as some LCD display drivers) so, in these cases, I will usually write something that can be re-used in a proper driver. Since I have to go to the trouble to configure dozens of registers I only want to do it once!
If the board has lots of non-micro circuitry, it pays to break it into manageable chunks to test. For example, a signal conditioning circuit may have an amplifier followed by an anti-aliasing filter I will usually try to isolate each block and test it in turn.
If you find problems, you may be able to fix them on your prototype by changing components or cutting traces and adding “bodge” wires. If you are going to live with a bodged board for some time, put some thought into making sure the modifications are robust. Figure 2 shows one such bodge I perpetrated on an early prototype. The very fine bodge wire is “glued” to the board with black nail polish!
If you do make changes, make sure you document them thoroughly and methodically so that you can apply them to any additional prototypes and to next board spin. It is all too easy to make a critical component change in the heat of a debugging session and forget to carry it forward. I use a note-taking program to capture all such changes on a PDF version of the schematic. Figure 3 shows an example from one of my recent projects.
As I mentioned above, board bring-up can be a nervous time for a hardware designer. It really is the acid test of our design process. As nervous a time as it can be, it is always immensely rewarding to see your design gradually come to life and function as intended.
Andrew Levido (firstname.lastname@example.org) earned a bachelor’s degree in Electrical Engineering in Sydney, Australia, in 1986. He worked for several years in R&D for power electronics and telecommunication companies before moving into management roles. Andrew has maintained a hands-on interest in electronics, particularly embedded systems, power electronics, and control theory in his free time. Over the years he has written a number of articles for various electronics publications and occasionally provides consulting services as time allows.