In my previous post I talked about my first attempts at some BGA soldering. I ran through all three of my test chips, and ordered some more; they came in recently, so a took another crack at it.
I went back to using liquid flux, since I find it easier to use (the felt-tip flux pen is a brilliant idea), and it didn’t have any of the “getting in the way of the solder” issues I found with the tack flux I have.
Test #1: ruined due to bad alignment. I have some alignment markers on the board which usually let me align it reliably, but I tricked myself this time by having my light shine on the board at an angle; the chip’s shadow gave a misleading indication of how it was aligned. Later, I discovered that if I applied pressure on the chip, it would actually snap into place — I think this is from the solder balls fitting into the grooves defined by the solder mask openings. This probably isn’t the best way to do things but I haven’t had any alignment issues since trying this.
Test #2: ruined by taking it out of the oven too quickly, and the chip fell off. After I saw that, I tested some of the other solder indicators on the board and saw that they were still molten…
Test #3: fixed those issues, took it out of the oven and the chip was simply not attached. I don’t really know what happened to this one; my theory is that I never melted the solder balls. My explanation for this is that I’ve been using my reflow process on leaded-solder only; I think these BGA parts have lead-free solder balls, which means that they most likely have a higher melting point, and I might not have been hitting it.
Test #4: kept it in the oven for longer, and let it cool longer before moving it. And voila, the chip came out attached to the board! This was the same result I got on my first attempt but hadn’t been able to recreate for five subsequent attempts; a lot of those failures were due to silly mistakes on my part, though, usually due to being impatient.
So I had my chip-on-board, and I connected it up to my jtag programmer setup. Last time I did this I got a 1.8V signal from TDO (jtag output), but this time I wasn’t getting anything. One thing I wanted to test is the connectivity of the solder balls, but needless to say this is no easy task. Luckily, the jtag balls are all on the outer ring, ie are directly next to the edge of the chip with no balls in between. I tried using 30-gauge wire to get at the balls, but even that is too big; what I ended up doing is using a crimper to flatten the wire, at which point it was thin enough to fit under the package and get to the balls. I had some issues from my scope probe, but I was eventually able to determine that three of the four jtag lines were connected all the way to their balls — a really good sign. The fourth one was obstructed by the header I had installed — I’ll have to remember to test this on my next board before soldering the header.
The ground and power supply pins are all on the inner ring, though, so I highly doubt that I could get in there to access them. I’m optimistically assuming that I got one of the three ground balls connected and that that is sufficient; that means I just have to have two of the power pins connected. At this point I feel like it’s decently likely that there’s an issue with my testing board; this was something I whipped up pretty quickly. I already made one mistake on it: apparently BGA pinouts are all given using a bottom-up view — this makes sense, since that’s how you’d see the balls, but I didn’t expect that at first, since all other packages come with top-down diagrams. Also, to keep things simple, I only used a 1.8V supply for all the different power banks; re-reading the datasheet, it seems like this should work, but this is just another difference between this particular board and things that I’ve gotten working in the past.
So, what I ended up doing is I made a slightly altered version of the board, where the only difference is that the CPLD comes in a TQFP package instead of BGA; all electrical connections are the same. Hopefully there’ll be some simple thing I messed up with the circuit and it’s not actually a problem with the assembly, and with a quick fix it’ll all work out — being able to do BGAs reliably would open up a lot of possibilities.