Blog
Engineering notes
Post-mortems and comparisons from building firmware-in-the-loop for real boards — written for people who have shipped a respin.
- The Makefile Comment That Compiled Out All Logging
A design partner's board printed nothing over UART in simulation. The cause was one line in the Makefile: GNU make keeps the spaces before a trailing comment, so DEBUG was never equal to 1.
Adam Szefer · 2026-10-22
- The I²C Timing Bug We Caught Four Weeks Before Fab
Post-mortem: SCL high time of 0.42 µs against the 0.60 µs Fast-mode minimum. It looked like clock stretching, but the cause was the master's timing configuration, and a simulated timing check caught it before fab.
Adam Szefer · 2026-07-23
- Why QEMU’s Idealized Peripherals Hide Respin Bugs
QEMU is excellent for software bring-up. Idealized peripherals that always ACK will not catch pinmux, address, or clock-stretch mistakes that force PCB respins.
Adam Szefer · 2026-07-23