Wednesday, June 5, 2024

Populating the ALU board

I decided today was a good day to populate the Arithmetic Logic Unit board I had fabricated in March.

I taped the bare board to my solder station workbench (which is separate from the one with all my test gear), then taped the solder stencil down as well. I scooped some solder paste onto the back of an old credit card and used that as a squeegee to apply the paste. The first time I got about half way done before I realized the stencil had slipped and the holes weren't lined up with the footprints, so I removed the stencil and wiped the board clean. Solder paste is sticky and hard to remove, but some 91% isopropyl alcohol on a rag made a quick job of it.

For my second attempt at applying the solder paste I was careful to hold the stencil in place with one hand, checking repeatedly to make sure it was still aligned, while I manipulated my card/squeegee with my other. I felt like there was too much paste on the pads on the Instruction Decoder board, so this time I was careful to make sure the stencil was flat against the board when applying the paste, and scraped any excess off the top of the stencil before removing it. This looked much better than the first attempt.

Then came the laborious process of placing the 380 components that squeeze onto this board. I started with the 2.2K resistors, as there are only 17 of them, and doing so meant the only remaining 0603 components would be 4.7K resistors (71) or the eight 100 nF Vdd bypass capacitors. From there I worked from the right side of the board to the left.

While laying out these boards I've tried to maintain a consistent orientation of the transistors: the drain lead of the FDV301Ns is oriented toward the left or the top of the board, while the substrate lead of the BSS83Ns is oriented toward the left or bottom of the board. This makes it much easier to place components, especially the BSS83Ns which would be easy to orient incorrectly. Before I started placing components this evening I checked this, and discovered that of the two BSS84Ns oriented horizontally, one of them had the substrate lead toward the bottom of the board and the other toward the top. Oops. I made sure to get them oriented correctly.

I started this process at about 2:30pm, and finished placing components at about 6pm. I did a double-check for missing components and found none. Then I got out my reflow skillet and carefully placed the board in the center of the heating area. While monitoring the board temperature with an infrared thermometer gun, I manipulated the skillet's thermostat to try to approximate the desired temperature profile. I doubt I achieved anything close to the published profile, but it worked much better than reflowing an entire board with a heat gun and a hot air rework wand, especially given that it's a 6-layer board with three full planes..

After maintaining the peak reflow temperature until every joint had reflowed and the components stopped shifting, I turned the thermostat to "off". I waited a minute or so for the solder to solidify, spot-checking with the infrared gun, then scooped the board out of the skillet with a thin metal spatula so it could cool faster. When the board was cool enough to handle I inspected it under my stereoscopic microscope. I was surprised to see crystals of flux around some of the components, as this hadn't happened before; I expected all the flux would have boiled away as it had with the hot air reflow. I removed these crystals with some isopropyl alcohol and a cotton swab.

Then brought the board over to my test bench and fired up my DMM. After verifying which lead of the DMM would be positive in the ohmmeter mode, I checked for shorts between Vdd and ground. I didn't find any, but the resistance measured about 600 ohms, which is less than I expected. I checked this on the ID board and found it to measure around 900 ohms. I connected the board to a power supply and slowly ramped the Vdd voltage while carefully monitoring the current. Reaching +5V I saw about 80mA, or about 63 ohms. Okay, that's in the acceptable range, given that the inputs to the board are all floating.

The last step was to insert and solder the inter-board connectors. This I did by hand with a soldering iron, of course. So here's the ALU board, in all its glory.

I still think there's too much solder on these pads, though I don't know whether I'll bother tweaking the stencil apertures before fabricating the remaining Timing & I/O board.

I'm also unclear whether the solder joints to the transistor leads are properly wetted. Maybe it's just a byproduct of having too much solder paste on the pads?

As I've mentioned before, this board can only be tested in conjunction with the Instruction Decoder board, as the FPGA board I'm using to drive the tests doesn't bring enough I/Os to the expansion connector. I think the current test framework is sufficient to drive the ID/ALU pair, but I have some PicoBlaze coding to do first.

1 comment: