This page describes how a number of open source FFTs perform relative to the BxBFFT and to each other in Altera Agilex7 FPGAs. Results for other Altera FPGAs follow the same general patterns.
To summarize the measurements below, the BxBFFT is at the top in the two most important categories: Fmax and power consumption. The BxBFFT does well in all other categories. BxBFFTs also have significant advantages in features, capabilities, options, testing, documentation, examples, and support.
BxB has studied the performance of other FFTs for a particular reason, which is to provide the best possible BxBFFT. An understanding of where these FFTs excel and where they are limited has led to improvements in the BxBFFT. In addition, it is hard to claim that the BxBFFT has exceptional performance if the performance of other FFTs hasn't been fully studied. The plots below show the BxBFFT's exceptional performance.
The open source FFTs chosen for this comparison meet two critera. First, they must be high-speed FFTs that operate on multiple input samples each clock. There are many additional FFTs designed for slower speeds, but they are in a different class and are not comparable. Second, RTL must be obtainable for the FFT, either VHDL or Verilog. So far, only one FFT, the CASPER FFT, has been excluded because RTL was too difficult to obtain.
Here's a list of the open source FFTs being compared:
Each of these FFTs is implemented with Quartus to determine Fmax, estimated power consumption, and resources used. The Altera Parallel FFT is also included on the plots for comparison, although there is a separate detailed comparison of the Altera Parallel FFT versus the BxBFFT here. Note that the Altera Parallel FFT does not include a bit reverse. A bit reverse coded by BxB was added to it in order to provide a fair comparison on the plots below. (This was not done for the two Astron-derived FFTs, since they are not in the top tier like the Altera Parallel FFT.) The results are plotted below.
For each plot, the X-Axis of the plot is divided into 6 sections, with different numbers of parallel-processed Points Per Clock (PPC). These vary from PPC2 to PPC64. In each section, FFT size varies from 128 to 262144. This allows a single plot to show a wide overview of FFT performance across a range of FFT Sizes and levels of parallel processing.
| Excellent Performers: | BxBFFT | ||
| Good Performers: | Altera FFT | CAStron FFT | Spiral FFT |
| Average Performers: | htfft | SGen FFT | |
| Poor Performers: | Astron FFT | ZipCPU FFT |
This plots show restricted Fmax when each FFT is compiled with nothing else in the FPGA. "Restricted" means that the plot takes into account speed limits internal to the DSPs and M20Ks as well as setup timing in the FPGA fabric. However, clock pulse width restrictions are excluded from the plot. This is because the clock tree wasn't fully optimized to overcome those restrictions -- those restrictions are a limitation of the test that says little about the FFT core.
There are two curves for the BxBFFT above -- one curve with extra pipelining turned on and one without. The curves show that the extra pipelining may help meet timing when there is resource contention, at large FFT sizes, or at large PPC.
| Excellent Performers: | BxBFFT | ||
| Good Performers: | Altera FFT | CAStron FFT | Spiral FFT |
| Average Performers: | htfft | SGen FFT | |
| Poor Performers: | Astron FFT | ZipCPU FFT |
This plots show setup-limited Fmax when each FFT is compiled with nothing else in the FPGA. "Setup-limited" means that the plot doesn't take into account speed limits internal to the DSPs or M20Ks. Achievable speeds in a real design will be lower, both because of the internal DSP and M20k limits and because resource contention with other parts of a larger design brings down speeds.
Even when a design has far higher Setup-Limited Fmax than is needed, the setup margin has advantages. It gives headroom to absorb timing degradation caused by resource contention from other IP in the FPGA. As a result, designs with higher setup-limited Fmax will close timing more easily than other designs, and will close timing where designs with lower Setup-Limited Fmax cannot.
| Excellent Performers: | Altera FFT | BxBFFT | SGen FFT |
| Good Performers: | Spiral FFT | ZipCPU FFT | |
| Average Performers: | Astron FFT | ||
| Poor Performers: | CAStron FFT | htfft |
This shows that the best FFTs and worst FFTs aren't much different in power for small sizes, but the power diverges more strongly for large sizes. This probably indicates that some of the dynamic power being reported by Quartus is actually static power.
| Excellent Performers: | SGen FFT | ||
| Good Performers: | BxBFFT | htfft | Spiral FFT |
| Average Performers: | Altera FFT | ||
| Poor Performers: | Astron FFT | CAStron FFT | ZipCPU FFT |
This shows that the worst FFTs often use 1.5 times the ALMs (or more) than the best FFTs.
| Excellent Performers: | SGen FFT | |||
| Good Performers: | Altera FFT | BxBFFT | Spiral FFT | ZipCPU FFT |
| Average Performers: | Astron FFT | htfft | ||
| Poor Performers: | CAStron FFT |
This shows that the worst FFTs often use 1.5 times the REGs (or more) than the best FFTs.
| Excellent Performers: | BxBFFT | SGen FFT | |
| Good Performers: | Altera FFT | Spiral FFT | |
| Average Performers: | ZipCPU FFT | ||
| Poor Performers: | Astron FFT | CAStron FFT | htfft |
DSP usage is often not incredibly important, since many FPGAs have large numbers of DSPs. However, for certain problems or certain FPGAs they can be critical.
| Excellent Performers: | Altera FFT | |||
| Good Performers: | Astron FFT | BxBFFT | CAStron FFT | SGen FFT |
| Average Performers: | ZipCPU FFT | |||
| Poor Performers: | htfft | Spiral FFT |
Sometimes FFTs with high ALM usage but low M20K usage have moved some data storage from M20Ks into distributed ALM-based MLAB memories.
The BxBFFT supports a much wider range of features than any other FFT. For example, the BxBFFT supports real-to-complex FFTs, non-power-of-2 FFTs, amplitude management controls, pipelining controls, memory placement controls, and controls for automatic generation of twiddles.
The FFTs vary widely:
| Altera Parallel FFT: | One of the top 4 in power, a generally good FFT, no bit reverse, no support for high PPC or large FFT sizes. |
| Astron FFT: | No bit reverse, performs poorly in most categories. |
| BxBFFT: | Top in Fmax and one of the top 4 in Power, generally good, widest range of features, best support. |
| CAStron FFT: | No bit reverse, performs poorly in most categories. |
| htfft: | Very high power, very high DSPs, very high M20K. |
| SGen FFT: | One of the top 4 FFTs in power, generally good, poor Fmax, some sizes historically give bad FFT answers. |
| Spiral FFT: | One of the top 4 FFTs in power, Generally good, higher Fmax than SGen but otherwise more mediocre than SGen. |
| ZipCPU FFT: | Only works for PPC2, poor Fmax, poor on ALMs, mediocre on DSPs and M20Ks. |
The BxBFFT is at the top in the two most important categories: Fmax and power consumption. The BxBFFT does well in all other categories. BxBFFTs also have significant advantages in features, capabilities, options, testing, documentation, examples, and support.
With the BxBFFT, you do get what you pay for. But if you can't afford anything, there are some other options, and this information may help you choose.