Two competitive FPGA methodologies for run-time reconfiguration
While a significant amount of time and effort has been dedicated to solving the run-time reconfiguration challenge in FPGAs, the resolution can come from two very different approaches.
Modifying or changing the functional configuration of a device during its operation is a feature unique to FPGAs. For years, FPGA designers have been able to reconfigure a portion of their design with a new bitstream, either through hardware or software. Ryan and David discuss run-time reconfiguration approaches in the FPGA arena.
The ability to perform run-time reconfiguration is primarily used in communications, military, and consumer applications as an approach to reducing component count and power consumption. Examples of run-time reconfiguration applications include Software Defined Radio (SDR), field testing, airborne applications, and remote sensors. While a significant amount of time and effort has been dedicated to solving the run-time reconfiguration challenge in FPGAs, the resolution came from two very different approaches.
Two approaches to run-time reconfiguration
Currently, there are two FPGA-based solutions to run-time reconfiguration: Partial Reconfiguration (PR) employed by Xilinx and Software Programmable Reconfiguration (SPR) used by Altera. The more ambitious PR approach necessitates an FPGA architecture designed to support reconfiguration zones. With the SPR approach, FPGA components are created as highly flexible building blocks controlled and manipulated through embedded software code running on an embedded processor or even through host software running on a general-purpose processor (GPP).
Partial Reconfiguration is a design flow that creates reconfiguration regions in an FPGA. Figure 1 shows the architecture of Xilinx's Virtex family of FPGAs that allows design modules to be swapped on the fly using this PR methodology. This capability allows limited resources within the device to be timeshared (reconfigured) while mission-critical or other base design requirements continue to operate in system.
The FPGA is divided into reconfiguration regions, and a partial bitstream must be created for programming each. The FPGA continues to operate mission-critical functions and meet external interface requirements while reconfiguration regions are reprogrammed to provide different functionality. An analogy can be drawn with a microprocessor methodology known as context switching, which is where the current state is preserved in order to switch to a different process. FPGA reconfiguration, however, switches the functional hardware, not a software state. The main advantage of this methodology is that mission-critical operations can be preserved, while only part of the FPGA device is reconfigured, as opposed to full reconfiguration of the FPGA, which does not allow for uninterrupted operation.
FPGAs using PR are typically limited to a single reconfiguration region that falls within logic column boundaries, adding significant additional timing constraints. Although these FPGAs currently promote a design flow offering partial reconfigurability, only available through Application Engineering, there is no robust documented design methodology to guide a user through the implementation of the reconfiguration region. In order to implement PR, a strict design methodology must be followed:
- Insert bus macros between the PR modules and the static portion of the design
- Follow the PR synthesis guidelines to generate a partially reconfigurable netlist
- Create floor plans for all PR and cluster static modules
- Place bus macros
- Follow PR-specific design rules
- Run the PR implementation flow
Due to the strict guidelines, requirements, and a steep learning curve, significant effort is required to implement PR. The required methodology significantly complicates FPGA development efforts, lowering the abstraction level and forcing developers to focus their time and efforts on device-dependent designs close to the gates. In an effort to achieve more design flexibility and reduce risk, PR adds a significant amount of design risk to programs, especially those in the military sector. In addition, the PR approach is very dependent on tool version and device, limiting the designer's selection of FPGA for size, I/O capability, and power. (Currently, there is no PR support for Spartan-class FPGA devices.)
Software Programmable Reconfiguration
Software Programmable Reconfiguration is the designed-in capability used by Altera to modify digital logic flows through internal or external software commands in the Cyclone family of FPGAs. SPR is a methodology that leverages existing IP and design software to provide an FPGA reconfiguration solution superior to PR. By taking a more software-based approach to FPGA development and looking at the FPGA as a System-on-Chip (SoC) with the peripheral infrastructure in place, the goals of SPR and rapid development of FPGA-based Software Defined Radio applications can be achieved with all of the previously stated advantages. Figure 2 shows the similarities between a SPR implementation and a standard microprocessor with peripheral support.
The application is separated into two distinct processing planes, each utilizing a common interface standard for component interconnect. The first is the control plane used for control, (re)configuration, status, and memory management. Routing of control/configuration and status is accomplished with a control fabric. The second plane is the streaming data plane. Each of the processing blocks is connected to a streaming data fabric that allows for point-to-point data transfer between waveform components.
The functionality of an FPGA can be increased significantly by using SPR, as the developer is able to raise the abstraction level to one similar to software. Additionally, design and hardware reuse is promoted, which allows multiple waveforms to be implemented on one device or across multiple devices and component building blocks that can be reused with each different application. The integration of a soft-core microprocessor into the design improves design exploration and test, providing a method of control, status, and flexible, real-time adaptive reconfiguration. Instead of redesigning, rewriting HDL, simulating, resynthesizing, and finally, reprogramming the FPGA every time a change is required, the whole range of application requirements are implemented and all the necessary adaptive software reconfigurable components are deployed to a single device or across multiple devices for easy software reconfiguration. As with microprocessors, this type of high level design is scalable, allowing for an increase in application complexity, mapping directly to an ASIC flow, and resulting in a significant increase in overall design portability.
Instead of reconfiguring the device with a new bitstream, the whole application is implemented with a single unchanged bitstream, integrating all components in a single device. A control plane provides a path for control, configuration, and status of the implemented components, allowing dynamic reconfiguration and feedback of each function. It also allows commands to be sent to the streaming data switch fabric, reconfiguring the date path and allowing other functions to operate.
Similar components within each function can be shared by multiple functions to save resources. In addition, a mixed Time Division Multiplexed (TDM) mode can be applied that is not supported by Partial Reconfiguration. PR is function A or function B. The SPR-based methodology is not a true TDM function, in that f(x) can be operating while g(x) also operates, sharing only the resources necessary, as shown in Figure 3.
In order for SPR to meet Size, Weight, and Power (SWaP) requirements using this methodology, FPGAs must feature low power, providing a significant amount of computational resources. By leveraging low-power, high-density FPGAs, the goals of FPGA reconfiguration can be easily achieved. The core static power curve shown in Figure 4 illustrates a comparison of the significant power savings per logic block available in various FPGAs.
One drawback to SPR is that it has no significant capability to recover from Single Event Upsets (SEUs) as a properly designed PR scheme could theoretically achieve. Specific FPGAs that have memory-scanning capabilities, however, can prevent the propagation of SEU failures, though such a system may require the device to be reconfigured, interrupting operations. It should again be emphasized that for systems using various different waveforms, SPR holds significant assurance in single-FPGA implementations. As Moore's Law continues to hold true, the advantages of SPR implementations will increase.
Future growth opportunities
Current FPGA capabilities for run-time reconfiguration are maturing to meet the needs of military and wireless communications applications. As the capabilities of programmable logic devices grow, there will be more demand for flexible reuse of FPGA resources. Advances in this area continue to be made in device configuration and reconfiguration speed, built-in error detection and recovery, and ease of design of the reconfiguration modes. Designers will continue developing sophisticated multifaceted designs that require robust implementations of PR. For this reason, work will continue both in developing the capabilities and ease-of-use of PR, as well as SPR. As is the case with many FPGA capabilities, having the technology available today is not sufficient to compel usage; crossing over a ‚Äúdesign usability‚Äù barrier is required. SPR has both the design usability and reconfigurable features for today's reconfigurability requirements.