A friend expressed an interest in implementing a RISC-V processor using an FPGA, something like learn-fpga. Due to the ongoing parts shortage, many of the low-end FPGA dev boards are either out of stock, or have moved out of the pocket change price range. With an eye toward building a board using whatever might still be in stock, I found that the major retailers have many thousands of ICE40 parts in fine pitch BGA packages. I started playing around in KiCad with the ICE40UP5K-UWG30 (30-ball 0.4mm pitch) part to see if there was a way to fan out enough of the pins to make a reasonably useful board. By modifying the shape of the pads, I was able to achieve a complete fanout that can be fabricated with JLCPCB's 4-layer process. Most boards like this use an FTDI serial converter for host communication and FPGA configuration, but these have also been hard to get. I decided to use an RP2040 for these functions, since they are in stock and much less expensive.
FPGA development tools can directly write a bitstream to the ICE2040 via the USB mass storage device interface provided by the RP2040.
KiCad design files are provided along with a CircuitPython script to configure and clock the FPGA.