Post
by 1337 » Thu Jun 16, 2011 2:36 pm
And who says computer guys are not creative ^^
I think I owe you the real story:
A few weeks ago, a colleague of mine developed a PCB with several sensors on it. Since all the circuits for the different sensors and the power supply are publicly available, he "only" had to connect them, but the entire layout had to be done by hand (including the routing). A first board was then ordered according to his design and I helped him solder everything onto it. Apart from a few issues, the circuit worked just fine.
After that, a second iteration was issues by our supervisor because he wanted the board to be smaller. So that's what my colleague did. But to make it smaller, 2 copper layers were not enough anymore, so he went for a 4 layer board with the in-between layers being almost completely filled for ground and 2.3V power.
Again, the board was shipped and we started soldering components onto it but weren't sure about a capacitor's connection to the board. So we checked with the multimeter: connection OK. For some unknown reasons I checked the capacitor resistance as well, 0.1 Ohm. Well, not exactly what you expect... Capacitor fried because of the heat? Maybe, so we unsoldered it just to see that it was fine. There was another capacitor in parallel, so we unsoldered that as well --> fine too. But curiously, there was still a short over the capacitor pads and these were connected to Ground and Power.
Hmm, what the heck? Since we already soldered about 8 chips and another 2 components onto the board, we started removing them. Guess what, the short was still there once the board was empty ;(
We each double, triple and quadruple checked the pads for shorts, none. And long before that, my colleague triple checked the design on the computer (he had three almost independent ways to assert that there was no Ground-Power connection).
So, it had to be either a bug in the design program or a manufacturing error.
Around that point I made a joke by suggesting to do a binary search for the fault: just cut it in half, check, repeat.
Anyway, the next morning we talked to a guy who know more about PCBs than we did, but it didn't get us anywhere and it was pretty obvious that the board was useless anyway.
So my colleague turned my previous joke into reality and we started cutting it with a band saw. After the first cut, the fault was only in one half, phew. Then there were a lot of vias in the faulty part, so we cut off only about a quarter where there was just space for the Bluetooth module with very little vias and wires. And to our surprise, this was actually the faulty part (about 1.5cm x 3cm). With little to check, we pulled out the design and examined the vias. And when I checked the top left one (almost touching the corner), I could actually see that both in-between layers were connected to the via. That's bad... But in his design, that wasn't the case. So what the heck?
A hunch told me to check the actual files we submitted and the project file that was used to created it. And there it was, the fault. However, doing only some simple operations in the program already fixed the problem (leaving some space around the via in bother in-between layers as it was designed to have).
At least we knew where the problem was, but we didn't know what caused it. Anyway, a few hours later, when correcting a mechanical problem with the USB connector, my colleague used the auto-router program again which was different from the design program. And upon transferring the design back, the error was there again! And you could even see the problem in the auto-router program. So there was our bug!
And what did we learn about this? Finding bugs is not only about compiling a program a hundred times over ^^