Some frustrating things I have learnt during my PhD about low level ASIC design, that I haven’t entirely seen reflected in #PL research on hardware.
1. For all the PL research on hardware, SPICE is indispensable for circuit simulations. Pretty much everything else is behind paywalls or unusable. Analog and mixed signal simulations are super important.
2. Synchronous hardware, which is the standard route for hardware design has been done to death. It’s not necessarily the most challenging form of hardware design and verification. It’s still interesting.
3. Hardware at an an analog or mixed signal level really doesn’t compose the way one might naively expect. It really doesn’t. For example, buffer delays won’t compose linearly when you chain them together. When reasoning about delays it is important to consider how much any given module is “loaded” and “driven”.
4. Transistor sizing is a valuable tool for realising various delays and changing the drive of a device. A large delay cell can be obtained by cleverly resizing transistors on a single buffer instead of chaining buffers together.
5. You can’t just put test probes willy-nilly to test for weird effects. Your probes might end up adding load and increasing delays.
6. You really shouldn’t insert extra flip flops when compiling down to RTL level. Ever. No excuses. Latches are even worse. At the same if the designer wants to put a latch in there, you should let them do it.
7. It is important for a designer to be able to see the compiled output (at least the RTL) and match it to their design. This is because all manner of weird effects show up when one goes to lower level representations of a circuit. Thus the designer has to go back and forth between various levels of the design. This means that unlike software, aggressive optimisation in hardware might actually be a bad thing. Conversely designers remain wary of high level combinators precisely because they don’t trust the compilers to do what they want them to do. One engineer told me that hardware engineers even dislike generate blocks in vhdl and Verilog. Fine grained control and understanding is more important than some super high level combinators.
8. The exact same piece of hardware can be repurposed to different uses depending on where you plug it in. A Q flop in a self timing circuit can become a metastability containing latch in a circuit manipulating clocks. Any semantics assigned to hardware must take this into account.