Hi,
I've recently designed a simple board with Spartan-7 FPGA. The board was specifically designed to be very simple so that it could be used by others as a starting point for their own design, and also to prove that you can actually design a decent board using free tools. It was designed from the ground up in KiCAD 5, and full sources are publicly available in my Github repository. The board was designed for 4-layer JLCPCB.com process as the cheapest 4-layer boards with controlled impedance I was able to find, specifically for the JLC2313 spackup. The board is 72x89 mm in size, and 10 board is only $29 (+delivery), though I'd recommend to select ENIG finish which would raise the price to $43.5.
Initially I was going to make just a bare minimum board without any peripherals, but soon realized that it won't be very useful. So I've added 256 Mbytes of DDR2 memory (128Mx16). The reason I've chosen DDR2 over DDR3 is that it allowed me to save one DC-DC converter because DDR2 uses the same 1.8 V rail that is used by the FPGA itself, while DDR3 uses 1.5 or 1.35 V. There is also a coupe of user buttons (aside from CFG_RESET used to reset FPGA configuration, and active-low SYS_RESET used for system reset without reconfiguration), and a pair of RGB LEDs.
In order to make sure I'm providing a sources for the board that actually works, I've assembled the board and fully tested it. I've attached photos of that board. I've also uploaded pre-made Gerber packages ready to be uploaded to the JLCPCB.com (current revision is D), as well as schematics PDF, and assembly document which I used for manual assembly. I've installed XC7S50-2FTGB196C FPGA with MT47H128M16RT-25E:C DDR2 memory chip, which is pretty much the maximum configuration. I confirmed that the board is able to output 1080p@60Hz via HDMI, but the FPGA heated up enough that I need to place a small heatsink over it. I also confirmed that DDR2 memory works at 333 MHz without any bit errors, which indicates that my manual length matching in KiCAD was good enough.
Like I said, the idea for this board to be as simple as possible yet be useful, as well as being the basis for other designs, so I didn't pack the board as tight as possible to make manual assembly easier. The real challenge for assembly is 18 ultra-small 0201 0.47 uF capacitors. I tried to use 0402 size instead, but they don't fit between vias under FPGA without violating manufacturing tolerances.
It is possible to customize the hardware on board - you can install smaller capacity DDR2 chip as long as the data bus width is still 16 bit (make sure it's supported by MIG!) - or don't install any at all, or any Spartan-7 chip in 1mm pitch FTGB196 package (I wouldn't recommend using devices smaller than S25 if you keep DD2 memory as memory controller will consume some resources), you can opt to not fit any HDMI-related parts if you don't want. As a matter of fact, if you are not confident about BGA soldering, you can assemble the first board with the smallest S6 device to see just how easy it is to work with BGA chips.
KiCAD source for the board can be found here:
https://github.com/asmi84/kicad-projects It uses a library which is available here:
https://github.com/asmi84/kicad-libraryIf you have any questions or suggestions, feel free to post them here.