Description
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.