Overview
This document describes how to create OpenCPI component implementations (workers) in a component library, so that they are available for OpenCPI application developers and users. It introduces a kit of tools to specify and develop OpenCPI workers in any supported authoring model, language and API. It also describes how to create, build, and manage libraries of heterogeneous components where the components may have multiple implementations.
This document describes tools and processes to development workers in component libraries in general. Other documents describe the process of developing workers for specific authoring models, which currently include Resource-Constrained C Language workers RCC (C and C++ workers for software targets), Hardware Description Language workers HDL (VHDL or Verilog workers for FPGAs), and OpenCL workers, OCL (OpenCL workers for GPUs).
The kit of tools, scripts, documents and libraries used for developing components and workers in libraries are part of the OpenCPI Component Development Kit (CDK). The CDK is not an integrated development environment (IDE), but rather is a set of commands, shell level tools, and scripts that support the development process.
The CDK also includes tools specific to OpenCPI that support heterogeneous code generation and component testing. OpenCPI’s code generation significantly reduces the code that needs to be hand-written in implementing heterogeneous components, applications, and FPGA bitstreams.
The OpenCPI CDK relies on technology-specific compilers (e.g. gcc), synthesis tools (for FPGAs) and simulation tools (e.g. Xilinx Vivado and Xsim, Altera Quartus, Modelsim etc.). These tools are a mix of open-source/free and commercially available products. Specific supported tools and versions are found in the Supported Systems and Platforms topic.
Several key concepts are described in the following sections, followed by the development process for libraries of components.
Component Specification: an XML file that describes a component in such a way that it may be implemented using different languages and APIs for different processing technologies and environments. It specifies the properties and ports of the component.
Protocol Specification: an XML file that describes the allowable data messages and payloads that are used for communication between components.
Property: writeable and/or readable values that enable configuration, control and monitoring of workers by control software at run time.
Port: an interface of a component that allows it to communicate with other components using a protocol. Ports are unidirectional: input or output, consumer or producer.
Authoring Model: one of several ways of creating component implementations (workers) in a specific language using a specific API between the component and its execution environment. Existing models described below are RCC, HDL and OCL.
Worker: a specific implementation of a component specification, with the source code written according to an authoring model.
Component Library: a collection of component specifications and workers that can be built, exported and installed to support applications.
Project: a work area in which to develop OpenCPI components, libraries, applications, and other platform and device oriented OpenCPI assets.