Home

Awesome

Snowflake FPGA HAT

As an experiment, I am designing a PCB using only my Pi 4 4GB. Any other machine is off-limits. This includes

Rendering of PCB

This is a HAT (Raspberry Pi addon board) with an iCE40 HX8k FPGA. The Pi can program the FPGA, and communicate with it via a UART, or a fast, bidirectional SDIO link. This project was spurred by the realisation that Pi 4 is a plausible FPGA development platform: faster processors, expanded memory and, above all, dramatic improvements in Symbiotic EDA's open source design flows in the last few years.

View schematic (PDF)

With the exception of the datasheet/ directory (to which I do not lay claim), this repository is distributed under the Apache-2.0 License.

Features

Tolerances

Of the 121 balls on the FPGA's BGA package, I am using 120; the sole unconnected ball is VPP_FAST, which is used only for NVCM programming. This will make the layout exceptionally tight, which is part of the experiment! For a fighting chance, I am using JLCPCB to manufacture the prototype boards, rather than my usual iTead. Their tighter manufacturing tolerances should permit two traces between 0.3 mm pads on a 0.8 mm-pitch BGA, which allows the first 3 ranks of balls to be routed out on layer 1.

The capability requirements for this board are:

Stackup

This is a 4-layer board.

All layers 1 oz/sqft copper. Assumed stacking for FR4 layers:

These dimensions are not critical. Signal integrity will be improved by minimising separation of L1-L2, but none of the routing is impedance-controlled.