I was working on a board tonight. It's an FPGA-to-USB high-speed interface using the Xilinx Spartan-3E and the SMSC USB3317 USB interface. The two parts are connected via a standard interface called ULPI. The interface runs at about 60MHz – fast, but not too demanding. So when I started prototyping my FPGA code, the signals just looked insane. I'd put a probe on a particular signal, and it'd jitter and jiggle around. What was happening? Was my oscilloscope probe dying? No, the signal-jiggling seemed to be independent of if and how I moved the probe or its cable. Is my soldering job terrible? I reheated a bunch of joints on the board. Sometimes the signals got better and sometimes they got worse. Once, I wound up with a measurable short circuit across the power supply. I thought I was losing my mind. In a last-ditch effort, I slathered on a bunch of rubbing alcohol and scrubbed off the (rather heavy) amount of solder flux I used to solder the through-hole connector to the FPGA board. Guess what? The signals immediately thereafter were perfect. And I moved on with the project.

Lessons? Don't assume your solder flux is non-conductive. Don't use too much solder flux. If you do use solder flux, clean it off with rubbing alcohol and a stiff brush (like a toothbrush). And don't trust any circuit until you've cleaned it of solder flux.

Duh. Well, some of us have to learn things the hard way…