Our OSS website is launch for OpenCPI, Sign up!
The Component Portability Infrastructure (CPI) is a real-time embedded (RTE) middleware solution that simplifies programming of heterogeneous processing applications requiring a mix of field-programmable gate arrays (FPGA), general-purpose processors (GPP), digital signal processors (DSP), and high-speed switch fabrics. The “mix” can be over a lifecycle (technology insertion) as well as within a single implementation (to meet SWAP constraints). CPI improves code portability, interoperability, and performance in FPGA and DSP-based environments by providing well-defined waveform component APIs (application programming interfaces) with a set of infrastructure blocks that act as a hardware abstraction layer (HAL). CPI is also appropriate for the incorporation of GPU and multicore technologies. CPI is uniquely positioned to meet the goals of S3 since in some sense component-based systems are computer-science’s answer to dealing with “knowledge capture” and lock-up of intellectual property (IP). CPI is classified at a technology readiness level 6, and is in programs that will establish it for level 7.
Built on the U.S. Government’s Software Communications Architecture (SCA) standard, CPI extends component-based architectures into FPGAs and DSPs to decrease development costs and time to market with code portability, reuse, and ease of integration. All interfaces are openly published and non-proprietary, using an appropriate mix of industry and government specifications.
To overcome the challenges of code portability in FPGA environments in particular, CPI provides a pre-validated set of building blocks to interface the FPGA waveform applications with high-performance switch fabrics, onboard memory, system command and control, and wideband I/O. CPI’s non-proprietary interfaces act as an abstraction layer to increase the portability of FPGA applications. A verification suite is also included to facilitate debugging and reduce development time.
At the highest level, the CPI vision allows users to outsource the technology transition management job to others. Using the CPI interfaces, developers can protect their application development investment by cost-effectively moving their applications to new generations of systems using the latest technologies. CPI is essentially a kit of necessary pieces to create an application platform for component-based applications based on the SCA model extended to a heterogeneous mix of computing, interconnect and I/O resources. When CPI is adapted to, and installed on a platform, we say that the platform is now “waveform-ready”. While the SCA defines the operating environment and APIs for C++ software applications components running in a CORBA and POSIX-compliant environment, CPI extends the SCA environment, according to the Proposal 289 to SCA (FPGA/DSP extension by Mercury funded by program office) to DSP and FPGA technologies. Analyses for suitability for GPU and Multicore technologies have shown promise.