Pinpoint: In-circuit PCB debugging for all

Evan Strasnick
ACM CHI
Published in
5 min readMay 4, 2019

This article summarizes a paper authored by Evan Strasnick, Sean Follmer, and Maneesh Agrawala. The paper will be presented at CHI 2019, a conference of Human-Computer Interaction, on Tuesday at 14:00 in the session Making.

At the heart of the computing revolution lies a printed circuit board (PCB). PCBs are the final stage of most circuit designs thanks to compactness, robustness, and ease of mass production. These strengths come at a cost, however — PCBs are invariably harder to debug than more malleable form factors, such as breadboarded circuits. While our HCI community has focused recent attention to the prototyping stages of circuit design, great challenges remain in our abilities to effectively debug the PCBs in proliferation around us.

We classify these observed challenges into three primary areas:

First we highlight issues of access. The compactness of PCBs creates difficulties in simply accessing signals of interest. To debug effectively, designers need to operate as closely as possible to their hardware, readily observing behaviors while perturbing the circuit in measured ways. Instead, designers often find themselves manually probing the pins of small integrated circuits, hunting faults that lie hidden beneath components, or manually adding in test pads to afford themselves greater access.

We also observe challenges of isolation. Connections on a PCB are fixed with solder and therefore are not readily disconnected. In debugging, however, many of the more powerful tools at our disposal require testing a component or subcircuit in isolation. Many of the greatest strides in PCB debugging, such as the widely adopted JTAG standard, improve on our ability to perform “in-circuit” testing (on a board in its fully connected state).

Modifying a PCB for test often involves costly desoldering.

Finally, PCBs suffer from difficulties in iteration. The fixed nature of traces on a board raises barriers to modification. Often, if a designer modifies their design they must refabricate the entire board. This limited alterability limits debugging as well — there is often no better way to explore a potential solution than to simply produce a new PCB.

Our Vision

In consideration of these challenges, we produced a vision for our ideal debugging session:

After encountering an issue, a designer sets their newly fabricated PCB on an augmented test platform. The system immediately scans the board for short circuits, loose connections, and other deviations from the intended design.

For bugs escaping automatic detection, the test platforms allows the designer to inspect any signal in their circuit with a click. With similar ease, they can inject test signals at any point to observe responses throughout the circuit, or load a library of tests to verify properties of each component.

Without modifying their hardware, the platform can temporarily manipulate connectivity within the circuit, allowing the designer to isolate regions to test a component or subcircuit outside of the larger circuit context. And with similar ease, the designer can interactively replace parts of the circuit, allowing them to explore modifications without fabricating a new board.

In these interactions, the test platform is both automated tester and debugging aid, offering the designer control over and visibility into otherwise immutable and impenetrable hardware. This vision guided our design of Pinpoint.

Pinpoint

Pinpoint is an end-to-end pipeline enabling in-circuit PCB debugging techniques like those described above at low-cost and with minimal overhead. We designed Pinpoint to integrate into a designer’s existing workflow: After designing a PCB, Pinpoint’s instrumentation stage automatically adds test pads to their board. When fabricating their PCB, the user fabricates also fabricates a “jig board” — a bespoke hardware interface that connects their PCB to test software. Then, debugging proceeds as in the vision proposed above: the designer secures their board to the jig, connects the jig to Pinpoint’s Control Board, and uses the test software to explore their circuit.

The Pinpoint system. The user’s PCB rests atop a jig board, connected to testing hardware (Control Board) and a software interface.

Pinpoint’s software interface enables debugging interactions in alignment with our vision. Users can probe or inject signals at any instrumented point in their circuit, and they can record and replay these signals to study reproducible test examples. Rather than locating connections of interest on potentially complex board layout, users can instead indicate points on the schematic diagram. They can author functional tests in a custom scripting language to build up a suite of unit tests that quickly detect deviations from intended behavior. Pinpoint can also generate tests automatically, such as pairwise tests to detect unintended shorts in the circuit.

Pinpoint’s most powerful features utilize built-in solid state relays that control the connectivity of instrumented points in the circuit. Users can independently toggle any of these switches, effectively isolating parts of their circuit on demand. This enables tests which normally cannot easily run in-circuit (e.g. measuring current flow) and facilitates structured approaches to debugging (e.g. integration testing). Pinpoint also breaks out these instrumented locations for easy access by external connections. As a result, users can engage in what we call “splicing” — introducing external circuit elements to explore modifications to the circuit. Instead of desoldering a problematic component, the user can simply disconnect it from the rest of the circuit and replace it with an external component via jumper cables. These capabilities introduce sorely needed control over an otherwise static PCB.

Our vision calls for access, isolation, and iteration — for increased control over and a tighter coupling with hardware for more effective debugging. Pinpoint is a step towards that vision, providing in-circuit testing capabilities to all via automated instrumentation, programmatic probing/injection, high-level test authoring, subcircuit isolation, and more. For more details about its design, implementation, and evaluation, see our paper at CHI 2019 or see our project page!

Full citation: Evan Strasnick, Sean Follmer, Maneesh Agrawala. 2019. Pinpoint: A PCB Debugging Pipeline Using Interruptible Routing and Instrumentation. In CHI Conference on Human Factors in Computing Systems Proceedings (CHI 2019), May 4–9, 2019, Glasgow, Scotland UK. ACM, New York, NY, USA, 11 pages. https://doi.org/10.1145/3290605.3300278

--

--