OpenCPI

Documentation

The documents available for OpenCPI are described below, with links to the actual PDF files.  Other than the overview document, they are organized by the activity and/or role of the reader.  The installation document attempts to be standalone for an installer or system administrator who will not necessarily be using OpenCPI and thus will not need to read any other documents.  The roles are:

  • Installer:  obtains or downloads the software and tools, installs them on development systems, and configures software or hardware for targeted runtime systems.
  • Application Developer:  uses existing libraries of components to assemble them into applications, deploys them on targeted runtime systems, and executes them.
  • Component Developer:  develops libraries of components for various processing technologies (GPP, FPGA, GPU), for use by application developers.
  • Platform Developer:  performs the various tasks required to enable a new type of platform to be used for OpenCPI applications and components

Of course anyone can perform any of these roles and experts frequently do.  Component developers and platform developers may be specialists in one type of processing technology (e.g. FPGAs).  There are separate documents for component developers that are specific for each processing technology or component authoring model.

The OpenCPI Overview introduces the framework and describes its capabilities and terminology.  It has no prerequisites and is the first document to read for all interested parties.  It is not required for installation. [This document is currently offline and the link only references a placeholder]

The OpenCPI Application Development Guide describes tools and interfaces required to build, deploy and run OpenCPI applications, assuming the existence of libraries of components made available from component developers.  For simple applications, only text editors and some built-in OpenCPI executables are required to create and run applications.  For more complex applications or embedding OpenCPI applications in other software systems, a C++ API is available.  This document is sufficient for those who do not need to create new components, but only use existing ones.

The OpenCPI Component Development Guide describes the concepts, tools, APIs and processes necessary to create OpenCPI components in component libraries, to be provided to application developers.  This guide describes all aspects of the component development process that are common across the different ways of implementing a component.  Each of these authoring models (e.g. for C & C++, VHDL &Verilog, OpenCL, etc.) has a separate development guide with the particulars of that model.  A component is a functional abstraction that can have alternative implementions (called workers) for different languages and technologies.  An important aspect of OpenCPI is to make the development process for workers as common as possible across technologies and languages.  This includes the unit testing aspect.  The documents for the specific aspects of the individual authoring models are described next.

The OpenCPI RCC Development Guide describes how to create workers in the RCC (Resource-Constrained C/C++)  authoring model, which supports writing workers in C or C++ (they are not the same).  This model was designed for lean embedded environments with limited resources, but of course is also appropriate for larger or development systems.  The execution model for RCC workers is data-driven and/or time-driven.  The OpenCPI Component Development Guide is a prerequisite. 

The OpenCPI HDL Development Guide describes the HDL (Hardware Description Language) authoring model, primarily used for writing VHDL workers targeting FPGAs.  It describes the required signal interfaces (the "API") as well as the tools for simulation and hardware interrogation during HDL/FPGA worker development .  It also describes how groups of HDL workers are assembled into complete FPGA configuration loads (a.k.a. bitstreams).  Simulators (e.g. Modelsim, and ISim) are considered build targets equal to hardware targets (FPGA parts), and workers running in simulators can directly communicate to other workers running outside the simulator (e.g. RCC workers running in software environments).  HDL workers use the unit test framework defined and described in the OpenCPI Component Development Guide, which is a prerequisite.

The OpenCPI Platform Development Guide describes the various processes and tasks involved in enabling new platforms to support OpenCPI applications and components.  This includes development platforms (software-based hosts, with tools), as well as target execution platforms for software (RCC) and FPGA (HDL) workers.  For target platforms it essentially is defining the BSP (Board Support Package).  For FPGA platforms this includes integrating support for the devices that surround the FPGA (e.g. ADC or GPS) as well as optional cards that might be plugged into slots (e.g. FMC) on the platform.  This document is for platform developers and requires familiarity with component development, especially for HDL platforms.

The OpenCPI Installation Guide describes how to obtain the open source OpenCPI software and gateware package, install, configure and build it from source.  It describes various platform setup and configuration requirements and procedures.  It does not require any other documents as a prerequisite.  It only describes this process based on sources obtained from github.com, and not any other pre-built packaged versions of OpenCPI obtained from other sources.  Such packages have their own installation guides.

Various other internal documents are in the doc/internal/ directory of the source distribution and notes about coding standards used are in the coding/ subdirectory.