Sunday, October 14, 2012

Dummy BGAs and failure analysis

I'm back... it's been a while since my last post so I figured I'd write something. I spent most of the summer working on my PhD research and don't have anything ready to publish on that, but I'm now starting design work on a new development board that will tentatively use an Artix-7 FPGA in FGG484 package.

The chip is going to be quite expensive and will be on a six-layer board (also not cheap) so I decided to do some research to characterize my BGA process a bit better as well as improving yields once failure sources can be identified.

I began by designing two mating PCBs in FT[G]256 form factor (pictured below) and buying a jar of 250,000 SAC305 solder balls. The contact-chain pattern was structured such that every ball was electrically isolated from the ones immediately up, down, left, and right, and connected to those diagonally opposite via a leapfrog-zigzag pattern. The end result is two chains of 128 balls in series, so that any open circuit can be detected, which should be electrically isolated. All possible horizontal or vertical shorts would be detectable as a short between the two chains.

Dummy FTG256 component

Dummy FTG256 carrier board (probe pads at top and bottom cropped)

The next step once the boards came back from fab was to take one of the dummy components and ball it.

I began by smearing the board with sticky flux using a microfiber swab. I need to come up with a good way of depositing thin films of sticky flux (a stencil of some sort maybe? thin and spin coating) uniformly over a board... the amount pictured turned out to be too much.

Fluxing the board

The next step was to begin placing solder balls. Lacking a stencil I just used tweezers to place them one at a time. It took a while but as long as I won't be doing this very often I can't justify the cost.

Beginning to place solder balls

Close-up of placed solder balls before reflow

Since this was just a test I decided to reflow the first half of the board to see how it turned out.

A minute or so into the reflow profile it was obvious something was wrong - the solder balls were moving all over the place.

Drifting solder balls

Close-up of drifting solder balls

It appeared that as the gel-based flux liquified, thickness variations caused it to flow and take solder balls with it. Surface tension resulted in balls trying to cling to one another.

I removed some of the excess flux, repositioned the misaligned balls, and reflowed, then repeated for the rest of the balls. A few of the balls moved again and bridged together so I removed them with solder braid, re-fluxed, and reflowed again with new balls.

Another defect visible post-reflow. For some reason this ball never quite made contact with the pad. It seemed to be fine after reflow.

The entire dummy component after reflow (whitish residue was left by flux after cleaning)

After reflow I took a quick look at the board and everything seemed fine, there was a ball on each pad and nothing was shorting.

I then treated the resulting board as an FTG256 component and reflowed it to the carrier board using my standard profile.

The resulting assembly passed the "no shorts" test and the "continuity of chain 1" test but the other chain showed an open circuit. After sanding the soldermask off the back of the dummy component (in retrospect I should have left the vias open for easy probing) a binary search quickly determined that pads F8 and F10, which should have been connected, were not. At this point it wasn't known which of the two connections was open.

I then cross-sectioned the board several rows back from the F row to get a general look at how the reflow had gone. I made the cut slightly off parallel so that I could get a slice through some of the balls as well as seeing the dog-bones and vias.

After making the cut I de-fluxed with a high-pressure stream of 50% v/v acetone/IPA from a syringe.

Close-up of two balls showing saw marks (very quickly polished). The apparent void on the left-hand ball is actually diamond abrasive paste on top of the ball, not a solder defect.

Cross section of the board. Note that the cut is slightly off parallel to the balls; each ball is cut slightly higher than the one to its left and the right-hand two are not cut at all.

Everything looked good - the balls had clearly flowed around the sides of the NSMD pads and were showing good adhesion, none of them were distorted or anywhere near shorting, and there were no visible cracks or other defects.

I then made another cut just before the F row in hopes of locating the actual defect. I didn't even need to use the microscope to see something was wrong - there was no ball in the F10 position whatsoever!

Missing solder ball!

At this point I was quite confused because I knew that I had put a ball on every pad. I decided to polish a tiny bit closer and get some more images.

The pad on the carrier board (bottom) can be observed to still have the gold plating on it. There is no evidence of tinning whatsoever.

After seeing that the pad on the board was completely un-tinned and gold plated, it seemed that the ball had not adhered to the pad at all.

I then went back and looked at the post-balling picture of the board. What had originally escaped my notice was that ball F10 (origin at lower right, up six, left ten) was a lot smaller than the others. It's not clear what happened but I'm guessing that while removing shorted balls with braid I accidentally sucked some of the solder off that pad.

I'm not certain that this is the correct explanation yet but it fits the data well and is simple. I'll be doing several more dummy BGAs over the coming weeks to see how things turn out.

10 comments:

Novel idea! My approach to this sort of test (on a less grand scale) was going to be to find a relatively cheap but interesting BGA part, such as a big PIC32 microcontroller. Still haven't got around to it though!

The problem with that is that you can't test every pin. If the chip has several power/ground pairs you might have a bad joint on one of them (or a short between two of the same net) and not be able to tell.

Also, PIC32 BGAs are 0.8mm (0.4mm balls) which is difficult to do on cheap batch fab. I am mostly targeting 1mm pitch (0.5mm balls) because most of the larger Xilinx FPGAs use this form factor.

You can buy dummy BGAs with contact-chain patterns from industrial suppliers but they are hard to buy in small volume. Nobody buys one or two units, they buy several trays of a hundred or so chips to test their production line on.

I know you can buy stencils but unless I plan to be doing a lot of balling it may not be cost effective. The problem is not placing them, it's them moving around once placed. I just need to use next flux next time.

I have been very busy and not had the time to instrument the oven. In the near future I'm going to make myself a process control board, though. As a minimum I'll want temperature readings that I can use for manual feedback but I have 120V rated relays and doing full closed-loop control should not be that much harder.

I use a stencil and put the flux on the board after i put the balls (if u use a stencil its really easy and fast to put the balls on) then i put a thin film of flux on BGA and put it on top of the balls very carefully then i just use my heat gun with the BGA tip and let it flow. This is very easy if you do it the right way I have never seen anyone put the balls on the BGA because you get what happens to you.c1nteqc2

The problem was not balling the chip, though - all of the balls were just fine before I put it in the oven, but I had used too much flux so they started floating off the chip. With less flux everything should be fine.