Hi. My name is Evan Strasnick, and this talk is titled,
"Coupling Simulation and Hardware for Interactive Circuit Debugging."
Simulation is a powerful tool in the design of analog circuits. And most often,
we use it before building out real components in a prototype or a PCB, to verify a schematic design.
However, simulation also has the potential to aid as a debugging tool
when working with that physical hardware. Specifically, it can help the designer to
compare their measurements to theoretical expected behaviors, to identify where errors
may first arise. They also offer a way for the designer to quickly explore alternatives
without modifying the hardware, to reveal how changes to the design can improve the behavior.
But there are also challenges in making comparisons between the simulation and the
physical circuit. When the designer adjusts the hardware and measures a response to some input,
they have to perform that same change in the simulation,
capture the input that they observed, and import that input into the simulation.
Similarly, when the designer explores alternatives in simulation and wants to compare back to the
hardware, they would need to manually rework that physical circuit for each case explored.
We address these challenges in a tool called Simpoint. Simpoint tightly couples the designer's
physical circuit with its simulated counterpart to facilitate debugging.
Simpoint is built on the infrastructure of Pinpoint, a PCB debugging tool we introduced at
CHI in 2019. Pinpoint generates for the designer a custom jig board that interfaces their PCB
to testing hardware, allowing the user to perform their debugging operations
in a software interface as opposed to manipulating the hardware.
Simpoint uses new testing hardware capable of modifying the physical components within the
circuit, and routing in external components in their place. Simpoint's software then
also manages the simulation of the user's circuit, represented as a SPICE netlist.
At the highest level, the first thing that Simpoint enables is comparing live
measurements from the hardware to the expected behavior as predicted by the simulation.
As an example, imagine you have this simple RC filter circuit, which attenuates high
frequency noise. Suppose we have a fault, and the capacitor's value is outside of tolerance.
When we hook up the circuit to an input -- here,
a sine wave shown in red -- we can see that the output -- in cyan -- is attenuated.
But is this filter working correctly according to the parameters of our design?
With one command, Simpoint takes measurements across the full circuit and juxtaposes them in
an interactive plot with the responses to the same live input as predicted by the simulation.
We can see here how our physical circuit's output -- shown in purple -- differs from
the simulation -- shown in light blue. Simpoint also makes it easier for me to make
changes to my physical circuit and its inputs, and when I do so, the simulation updates in parallel,
so that I can continue to compare behaviors. For example, it can programmatically substitute
a physical component on the board with a different component from an external bank.
As an example of that, here I can use this "modify resistor" command to change R1 in my physical
circuit to a different resistor value. As I do so, we can see the circuit update in real time.
When we repeat the comparison, we see that the simulation has updated as well.
So this ability to modify the hardware helps us to mirror on the hardware the explorations
that we typically perform in simulation. For example, Simpoint gives us automated tools to
directly investigate how these alternative circuit parameters affect the behavior.
Here we can ask how the amplitude of the output varies with the value of the resistor. And with
one command, Simpoint rapidly samples different values of that resistor, measures the responses,
and plots the results -- here in green -- alongside the simulation -- in red -- at
those values. We can see that the output varies inversely with the resistance in both cases,
but with a different coefficient because of that incorrect capacitance in the circuit.
Please check out the paper for many other features of Simpoint, such as: summarizing high
level patterns across the circuit, automatically detecting relationships that may indicate error,
and a specification language for authoring tests on high level behaviors. The paper also includes
demonstrations to show how these capabilities can be used in context to solve a variety of
real-world bugs on different types of circuits. Thank you very much.