Intel® FPGA SDK for OpenCL™: Intel® Stratix® 10 GX FPGA Development Kit Reference Platform Porting Guide

ID 683809
Date 3/28/2022
Public
Document Table of Contents

1.1. Introduction to Intel® Reference Platform

The Intel® FPGA SDK for OpenCL™ provides you an environment to target FPGAs while abstracting FPGA details.

It allows you to target Intel® FPGA devices either on reference platforms provided by Intel® or Intel® board partners, or on your own custom platforms. A typical setup for using the SDK is illustrated in the following image:

Figure 1. Setup for Using Intel® FPGA SDK for OpenCL™

The setup consists of a host application running on the host processor and offloading kernel tasks to the FPGA. The OpenCL kernel is converted to a hardware circuit by the SDK compiler. Leveraging this capability for your FPGA platform requires an Intel® FPGA SDK for OpenCL™ -compatible Board Support Package (BSP). The BSP describes the reference platform to the SDK.

The following illustration depicts segments of the Intel® FPGA SDK for OpenCL™ solution:

Figure 2. Layers of Intel® FPGA SDK for OpenCL™

Your host application communicates with the BSP layers through the Hardware Abstraction Layer (HAL). A typical Intel® BSP consists of software layers and a hardware project created using the Intel® Quartus® Prime Pro Edition software. The hardware project consists of FPGA board peripheral IPs and custom IPs.

The following illustration depicts the hardware project components, and how these components communicate with software layers:

Figure 3.  Intel® FPGA SDK for OpenCL™ Complete Solution

In Intel® FPGA SDK for OpenCL™ Complete Solution, left side depicts the host application running on host processor while right side depicts the FPGA hardware acceleration board. If you are developing a custom platform to run your software applications, then you must create a custom BSP for your platform. In that case, everything that appears in blue in the image must be included in your custom BSP as follows:

  • On the FPGA side, your custom BSP must include all hardware necessary to communicate with the host and the memory, that is, DDR and/or QDR memory interfaces, the DMA host interface (which can be PCIe), and any streaming interfaces to be implemented as channels. The Intel® FPGA SDK for OpenCL™ compiles your OpenCL kernel into a data flow circuit, connects to the BSP hardware components, and generates an FPGA image for this combined circuit, which is used to configure the FPGA.
  • On the host side, your custom BSP must provide the Memory Mapped Device layer (MMD) (in the form of a library) to facilitate communication between OpenCL libraries and your hardware. When you compile your host application, the host application links with both the Intel® FPGA SDK for OpenCL™ and MMD libraries to form a host executable.

Intel® provides reference BSPs for Intel® FPGA development kits. Most of these reference BSPs are included in the installed directory for Intel® FPGA SDK for OpenCL™ :

Table 1.   Reference BSPs for Intel® FPGA development kits
Reference BSP Install Path
Intel® Arria® 10 GX FPGA Reference Platform Installed with the Intel® FPGA SDK for OpenCL™ in INTELFPGAOCLSDKROOT/board/a10_ref.
Intel® Stratix® 10 GX FPGA Reference Platform Installed with the Intel® FPGA SDK for OpenCL™ in INTELFPGAOCLSDKROOT/board/s10_ref.
Intel® Arria® 10 SoC FPGA Reference Platform Installed with the Intel® FPGA SDK for OpenCL™ in INTELFPGAOCLSDKROOT/board/a10soc.
Attention: Cyclone® V SoC and Stratix® V GX reference platforms are also available within the Intel® FPGA SDK for OpenCL™ installation of version 18.0 and earlier.

You can use one of the above BSPs as a reference to get started with custom BSP development. You can also use reference platforms from one of the following Intel® FPGA’s preferred board partners and download BSP from their website if it matches your hardware requirements: