Xilinx’s Spartan family has been one of the most popular series of FPGAs from Xilinx. The combination of good capabilities at a lower cost and design complexity has meant that Spartan FPGAs have enjoyed a lot of popularity over the years and earned their place in millions (billions?) of commercial and industrial devices worldwide. It’s no surprise that my first ever experience with an FPGA, back in university, was with a Spartan (3) FPGA. I am one of many.
From the Spartan family, the Spartan 6 series was introduced back in 2009 which makes it over 13 years old at the time of this writing. The successor Spartan-7 family was introduced in 2017 and taped out on a newer fabrication “node”. While Xilinx has been supporting the supply of Spartan-6 for existing products, recent component shortages due to Covid and resulting bottlenecks in Semiconductor fabrication have meant that manufacturers have had to make hard choices about what to prioritize in terms of production. In the context of the Spartan family, this has meant that Xilinx has had to prioritize the newer Spartan-7 over the Spartan-6, and recommends the existing users to migrate their designs to the Spartan-7.
Several people have written detailed technical articles highlighting the differences between Spartan 6 &7. In this blog post, however, my intention is to give a high-level comparison without diving too much into the numbers.
Device Availability:
As mentioned earlier, going forward, the fabs’ production will tilt in favour of the newer nodes, and since Spartan6 was taped out on an older node (45nm) compared with the Spartan7 (28nm), it will get harder to ensure a solid supply for Spartan6 devices. This means it is a good time to start migrating the older designs based on Spartan-6 to Spartan-7 devices.
As an example, I have used Xilinx FPGA boards from Opal-Kelly in the past for several commercial projects. In December 2021 Opal-Kelly issued a notice saying that they will discontinue the Spartan-6 based boards due to supply issues in future and have recommended moving to 7 series devices moving forward and has thus declared end-of-life on all it’s Spartan-6 based boards.
Development tools:
Personally, I think this is one of the best parts about moving to Spartan-7. With Spartan-6, you are stuck with Xilinx’s ISE toolkit which had its last major release in 2013, and has been in sustaining mode since then without any updates to the software or the included IPs. By moving to Spartan-7, you can instead use the latest and greatest versions of Vivado/VITIS. This means better design flows, more integrated, user friendly and modern UI, High-Level Systhesis (HLS) as well as the latest versions of the IP blocks. Having worked both with ISE/EDK in the past as well as Vivado/Vitis currently, I can tell you that I absolutely prefer Vivado/Vitis over the older tools.
Performance:
Due to being on the newer node (28nm), Spartan7 benefits with an extra ~30% speed. This can be a good opportunity for an upgrade of your design, when migrating to the Spartan7, if relevant. For example, a video design that was previously limited to a certain resolution due to fabric or I/O switching speed limits can perhaps support a higher resolution in the next iteration with Spartan-7.
Power consumptions:
Another advantage of Spartan-7 over Spartan-6 is the lower power consumptions by almost half. This can be a huge advantage especially if your design runs on batteries, of if you have had challenges with thermal or power management in your previous design. Imagine the newer version of your product giving 10 hours of battery time instead of 5 hours previously. This can be a huge improvement!
Transceivers:
Please note that if your previous Spartan-6 design used transceivers (device name ending with a “T”), then the only path to migration is moving to an Artix-7 device. There are no Spartan-7 devices with transceivers. On the positive side, when you do move to Artix-7, you will have 2x faster transceivers at your disposal.
XADC:
Spartan-7 includes a dual 12-bit, 1Msps ADC called the XADC, which are new to the 7 series devices. These can be very useful for things like monitoring internal die temperatures, monitoring core voltages, as well as sampling voltages external to the chip. Internal MUX means up to 16 differential signals can be sampled. This can greatly simplify the design by reducing or eliminating external ADCs in the design for such tasks. Do take care that the signals are within the input voltage range of the XADC.
Bit Encryption:
Spartan-7 includes a new feature of being able to encrypt the bitstream with 256-bit AES encryption and HMAC/SHA-256 authentication. This means better protection of your designs from unauthorized copying or tampering.
Infrastructure Changes:
There are some infrastructure changes between Spartan-6 and 7. These include changes to DSP slices, block rams and clocking structure. In most cases, these will translate to better performing designs. In terms of migration, the good news is that a lot of the heavy lifting will be done by the Vivado tools in most cases. For more fine-grained control the Vivado tool provides the relevant tools to assist the designer’s job (e.g. language templates).
Device Package/Pins
When I am wearing my hobbyist hat, my one gripe with the Spartan-7 family, compared to Spartan-6, is that all the devices in the Spartan-7 family have been offered in BGA packages only. This means that with Spartan-7 it’s much harder (impossible for most people) to hand-solder a FPGA to a board at home for one-off personal projects-something you could do with some Spartan-6 FPGAs in TQFP packages. On the other hand, for professional projects this should not be an issue since SMD assembly lines routinely handle such BGA packages these days without any drama. For personal projects, the workaround would be to either use SoMs (a.k.a “core boards”) with own-designed daughter boards, or by using the PCBA services of one of the many cheaper PCB vendors.
Also note that Spartan-7 devices are not drop-in replacements for Spartan-6 devices in terms of footprints/packages, so a new PCB design is inevitable.
Final words
Migrating designs from older devices to newer ones is not a favourite activity for many engineers, but nonetheless has to be done when it needs to be done. The good news is that, moving from Spartan-6 to Spartan-7 gives many advantages and can be seen as an opportunity to upgrade and improve on existing designs. There is plenty to gain and not a lot to lose. And a lot of the heavy lifting is handled by the Xilinx tools anyway.
Few things to keep in mind:
- While the Xilinx tool will do most of the heavy lifting, the migration could still need decent amount of effort, depending on the specifics of your design. Pay special attention to package pins, I/O standards, etc.
- Invest decent amount of time in specifying the timing constraints well, so that your design has best chances of meeting timing requirements over the mission profile.
- Last but not the least, make sure to qualify the new design across the specified operating conditions/mission profile. This could mean testing the implemented design over the full temperature range in a thermal chamber, for example.
Reference Material, Additional reading
- Whitney Knitter's post about migrating from Spartan6 to Spartan7
- Adam Taylor's detailed write-up about migration to Spartan7
- Spartan-7 family product table
- Xilinx's article about Power Advantage with Spartan-7
- UG429-7 Series FPGAs Migration Methodology Guide