Printed Circuit Board (PCB) design tools are critical in enabling users to build non-trivial electronics devices. However, mainstream tools work at the lowest level of design --- schematics and individual components --- which can make design difficult for beginners and tedious for experts.

In this work, we start by examining current board design practices to learn how a variety of users approach the process, what tools they use, what works well, and where things are lacking. From those results, we focus on building tools to support the system architecture level of design --- a representation that we believe captures the most important design decisions without getting mired in the details.

Taking inspiration from software engineering and chip design languages, we implement a hardware construction language (HCL) that supports users at multiple levels of abstraction (from system to subcircuits), enables mixed-ambiguity design through abstract components (such as a generic resistor instead of a particular part number), and encodes the methodology for subcircuit design instead of static instances (for example, automatically sizing a resistor in a LED circuit). To support users working with this very different interface to board design, we also build an integrated development environment (IDE) plugin that adds a linked graphical view and editor to the standard textual code editor.

Small but in-depth user studies on these tools indicate that this approach can provide benefits over mainstream flows, but also suggests avenues for continued work.




Download Full History