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