Overall, our six participants had experience levels ranging from novices to professionals and worked on a variety of projects, all summarized in Table
2. On average, participants completed the tutorial in 1h 18m and spent 2h 43m on their projects. Interviews averaged 1h 48m.
6.1 Individual Observations
All participants completed their designs to a point where the HDL and its electronics model checks were error-free and we believed that the design would be functional if made. Projects are described below, with simplified block diagrams for all in Figure�
5.
6.1.1 P01: High Voltage Sensor.
P01 designed a high voltage sensor, with a microcontroller, opamp buffer, and high voltage resistive divider (requiring multiple resistors in series to limit the voltage across each resistor, unlike the classic two-resistor divider). The implementation of the divider was the main focus of the search process: choose resistor values that produce some target voltage division ratio, while loosely optimizing for full scale output range (output voltage as close to 3.3 volts as possible) and balancing power consumption and signal integrity (which are inversely correlated). P01 specified resistor values
10 for the DSE tool to search, while the system created the full cartesian product and the resistive divider library calculated the objective values and validated design correctness (e.g., for output voltage and resistor voltage ratings).
Uniquely, P01 also wrote a quick script to generate the search space for resistance. In mainstream flows, P01 would sometimes write scripts to search the design space, sometimes using Monte Carlo probabilistic methods for intractably large spaces.
6.1.2 P02: LCR Meter.
P02 designed a LCR (inductance-capacitance-resistance) meter, based off an existing open-source design
11 using a single-chip analog frontend
12. The DSE tool was used to select infrastructural components like the microcontroller and voltage regulator and used to search through some of the analog frontend parts. While P02 was able to select the most precise (tightest tolerance) resistor using the DSE tool and visualization, the parts libraries lacked the more detailed modeling for other parts like diode leakage current and noise immunity so those parts were chosen with existing parts tables and datasheets. However, on the user interface side, P02 noted that the electrical parameters were buried in lists of other data and difficult to find, and suggested instead a list of only objective functions sorted by most commonly used.
6.1.3 P03: Greenhouse Sensor.
P03 designed a greenhouse sensor, a wireless device that could measure temperature, humidity, and light spectrum. P03 started from the tutorial HDL, but cleared the refinements before adding the application-specific blocks like sensors. Uniquely, the AS7341 spectral sensor also needs a 1.8v supply, which generated an error and required another voltage regulator.
Workflow-wise, P03 added and connected all the application blocks, leaving the ideal blocks in place and ignoring the corresponding compiler errors. Only after the design was done did P03 use DSE to select the choice of voltage regulators and microcontroller. P03 compared this design flow to traditional schematics:
I need an MCU on this board, but not having to kind of commit yourself to one and then put all the other components on and then realize, oh, that’s not the one I want, and then having to like rearrange everything afterwards is a definite time saver in terms of prototyping
6.1.4 P04: Sleep Tracker.
P04 designed a sleep tracker, roughly architected off a class project report
13 which has a heart rate sensor, breath sensor (a variable resistance 710kOhm elastic cord), and accelerometer. P04’s overall process was to insert blocks from the library, compile to see the errors, incrementally fix them, and repeat until no errors remained.
Notably, the sensor for the elastic cord (a resistive divider, with the fixed resistor defaulting to 47kOhm) flagged an error because the high output resistance of the sensor could cause signal integrity issues. While P04 started by (perhaps unrealistically) perturbing the sensor resistance range, a bit of prompting from us to reflect on the circuit being built led P04 to use the DSE tool to try different values for the fixed resistor and to look at the automatically calculated output voltage range. From here, P04 scanned a combination of sensor resistance ranges and fixed resistor values (1kOhm to 50kOhm in about 10 steps) and picked the highest span non-error design point from the plot which had a 6.1kOhm fixed resistor.
During the interview, P04 compared our workflow to choosing parts in a mainstream board tool’s parts library. In particular, P04 noted the importance of not being overwhelmed with choices, especially when those choices aren’t meaningfully different from the substantial list of parts in mainstream tools. While part of the simplicity of our tool came from the limited parts library, another part was the use of parameterized abstract parts (e.g., resistor) and the use of reasonable defaults to avoid requiring the user to make excessive choices.
6.1.5 P05: Mechanical Keyboard.
P05 designed a mechanical keyboard, making use of the standard library’s parameterized (by number of rows and columns) switch matrix generator. Although P05 had not built a PCB before, P05 was a keyboard enthusiast and understood the major parts of a keyboard PCB to put together the high-level design HDL with a little help. Starting from the tutorial, P05 added a 5x15 switch matrix, which exceeded the available microcontroller pins and caused an error. While P05 initially tried manually reducing the switch matrix size until it stopped giving errors, we suggested trying alternative microcontrollers. P05 used the DSE tool to list the compatible microcontrollers and by area and component count, then (partially on our advice) cross-referenced QMK’s (open-source keyboard firmware) supported microcontroller list to narrow it down to two choices. Further examining the smaller (by area) RP2040-based design, P05 found it had a red proven indicator and finally selected the last, STM32F103-based design.
We also suggested searching the diode options by prompting P05 to compare the diode size against the boards P05 had. P05 added price and area objective functions, and while initially struggling with setting up and interpreting the scatterplot, eventually chose the cheapest and smallest diode.
6.1.6 P06: Game Controller.
P06’s project idea started with a game controller, though the scope expanded after browsing the library to also include an I2S (digital) speaker driver and more. P06 started with an empty design, though quickly re-created the basic USB connector, voltage regulator, and microcontroller design from the tutorial. P06 then inserted application-specific blocks from the library like switches and displays, then connected ports until the compiler errors went away.
With a completed design, P06 then used DSE to resolve the voltage regulator and microcontroller choice. For the voltage regulator, while P06 initially considered a switching converter given its higher efficiency, we discussed the associated layout challenges of a high-frequency switching circuit for their first board, prompting P06 to instead choose the simpler linear regulator.
6.2 Trends and Patterns
We noticed several trends across participants’ use of DSE. This section focuses on observations, while takeaways and ideas are in the discussion in Section
7.
6.2.1 Validity.
Overall, participants relied on the validity indicator to avoid choices that wouldn’t work, e.g., microcontrollers without requested number of GPIOs. P05 in particular noted that this was helpful for beginners to push out a working board with minimal knowledge:
Clean slate, like I don’t know anything. So if I was to say, I want to design a PCB. I feel like I can utilize this program and its features and tools and it will push something out.
The other more novice participants also mentioned the usefulness of the validity indicator, including the level of integration of component data into a usable interface.
6.2.2 Objective Functions.
Of the objective functions provided, participants generally used the cost, component count, area, and current draw to select between feasible points. As these points were all introduced in the tutorial, it is unclear if these are the most common optimization criteria for PCB design in general, or merely what was simplest for participants.
Outside the modeling of our system, programming considerations for microcontrollers were also important. For instance, P05 looked for a microcontroller with QMK firmware support, and P06 checked to make sure that the selected microcontroller was compatible with Arduino. P02 noted the potentially significant downstream impacts of microcontroller choice:
Generally I find the software side a lot more frustrating, it takes me longer especially if there’s some weird quirk, and there’s not much documentation [...] I think I spent a whole day on how to get the DAC on the STM32 chip to work.
Participants also mentioned other considerations, for example P03 noted the general reputation of nRF52 microcontrollers being more power efficient than ESP32 microcontrollers and P02 discussed the difficulty of soldering smaller parts.
6.2.3 Search Limitations.
Not all search operations that participants wanted were supported by the system. Some of these search operations would be conceptually straightforward if the libraries were expanded, like detent count for encoders. Others might be intuitively reasonable but not possible given the compatible components definition which requires identical electrical interfaces, like LCDs which have diverse interfaces.
6.2.4 Proven Data.
While participants didn’t plot the proven objective function outside the tutorial, some made use of the proven counts in the parts library. P04 noted similarities to a popularity indicator in a mainstream tool’s library, potentially useful as a tiebreaker to prefer the part with a more active community. Similarly, when confronted with a list of several displays, P06 picked the only one marked as being built prior.
More broadly, P01 discussed a preference for familiar parts:
At some point I have to pick it the first time, which is to say, I like this MCU [microcontroller], let me try it out. Oh, after using it, this is very good MCU. Let me use it for the rest of my life or something like that.
Furthermore, P01 discussed multiple levels of preferred components: whether an they’ve used the part, whether the organization they’re part of has used it, and if lots of people in general use the part.
6.2.5 Performance.
As participants swept through wildly different design spaces of different complexities, each had different experiences with the system performance: simpler sweeps over a few resistor combinations take seconds, while sweeping over all of almost 400 diodes takes about three minutes. Participants’ backgrounds also factored into what they felt was normal, for example, P05 was used to 10-minute Excel scripts.
Overall, most participants found performance to be acceptable for interactive design space exploration, though some also expanded on it further. For example, P01 commented on the trade-offs of fast results over complete results:
I don’t think I want 10,000 parts in five minutes. I think I want like 200 parts in 20 seconds. And then, and then I can be like, okay, which one of these points has whatever number of designs, and then go from there.
P02 also suggested a pre-filtering interface (like the parametric part selection tools from major component distributors like Digi-Key and Mouser) instead of testing everything in what may be a substantial list of matching parts:
I think a lot of times you have a general idea of what value you want, so it wouldn’t make sense to go through all of them.
Uniquely, P03 had a design space of two voltage regulators and a microcontroller, and was setting up the combinational search (thousands of points) when we told them that it would be computationally prohibitive. P03 then ran the sweeps sequentially. P06 also remarked that the benefits of sequential searches may not be obvious:
I think normal people will try to use a combined, because it’s more trivial, right? [...] I wasn’t really thinking, oh, I can run them separately to get a better timing.
6.2.6 Plots and Tables.
While all participants made use of the scatterplot, only P01 and P06 used the parallel coordinates plots outside the guided tutorial. Part of the reason may be that most only optimized for one or two objectives, while P01 was interested in a combination of output voltage range, signal strength, and price. P06 noted the data density benefits:
I can see more data in one screen.
Both P01 and P04 also noted the usefulness of the table view and its high-precision numeric format, especially when points may be close together on the plots. P05 noted a personal preference for tables instead of graphs.
6.2.7 Novices vs. Experts.
While the more expert participants P01 and P02 looked into optimizing parts (including overriding a default selection that wasn’t causing errors) and exploring the design space on their own initiative, the more novice participants P03, P04, P05, P06 ran searches to resolve errors. However, with a little explanation of the underlying circuit and design considerations from us, all participants were able to use the DSE tool to find a working solution even where they may not have sufficiently understood things to come up with a solution independently of the tool.
By sheer luck, both P01’s and P04’s design space exploration focused on a resistive divider circuit and makes for an interesting comparison case across skill levels. The more experienced P01 immediately knew to optimize for output range and signal strength and defined a search space of some E6 resistor values, as would be best practice. With a few promising results on a coarse grid, P01 then refined the search space with a finer grid. On the other hand, the more novice P04 only started design space exploration when prompted by an error on the divider and largely used the DSE tool to effectively guess-and-check solutions by scanning around the default resistance in arbitrary 5kOhm increments. P04 also needed prompting to think about the effect of signal range as an important factor and optimization objective and ultimately settled on the best signal range result with the coarse 5kOhm search grid instead of looking to optimize further.