Skip to content

Latest commit

 

History

History
27 lines (13 loc) · 2.29 KB

Programmer_View.md

File metadata and controls

27 lines (13 loc) · 2.29 KB

AWS FPGA: Programmer's View of the Custom Logic

This document describes how an application running in Linux userspace would interface with the FPGA Custom Logic (CL) during runtime.

There are two parts required to work with AWS FPGA: Management and Runtime, and the next figure provides a high-level view of these components and how they relate to the underlying FPGA hardware.

alt tag

  1. Management Interface: is required for loading/clearing an AFI, checking the status of an AFI, debug of the AFI, Emulated LEDs and Emulated DIP Switches. The management interface is provided in one of three way, one or more can be used concurrently:

[A] As linux shell commands called FPGA Management Tools.

[B] As a C-library called FPGA Management Lib to be compiled with the developer's C/C++ application.

[C] Pre-integrated with OpenCL runtime library

  1. Runtime code: is required for reading/writing from/to the Custom Logic, handling interrupts, and using the DMA. This is provided by:

[D] FPGA PCIe Lib is a C-library used to access the FPGA memory space behind the AppPF PCIe BARs, from Linux application space like reading/writing to register space or passing messages. This library can be compiled and linked with the developer's C/C++ application.

[E] A DMA Interface using standard POSIX API like open()/read()/write() to be used in any C/C++ application for data transfer using DMA. This DMA interface requires installing the XDMA kernel driver - marked as item [G].

[F] A Userspace Interrupt/Event notification using standard POSIX API like open() and poll(), to be used in any C/C++ application. This Interrupt/Event interface requires installing the XDMA kernel driver - marked as item [G].

[I] An openCL ICD library that links with openCL runtime application, like the one generated by Xilinx Vitis.