The Latency-insensitive Environment for Application Programming (LEAP) is a set of modules that provide a convenient platform for the development of FPGA-based applications. To get started with LEAP, you need AWB. Documentation and installation instructions are here. The examples on that page are all LEAP based designs. If you are feeling lazy, VirtualBox images can be downloaded here.
The latest LEAP release is version 15.02. Debian packages are available for Ubuntu 14.04 "Trusty" and 12.04 "Precise".
LEAP is released under BSD and MIT license terms.
LEAP sources are organized in a hierarchy of repositories:
- LEAP-Core contains the central libraries that manage compilation, I/O and memory.
- LEAP-Workloads holds sample applications written in the LEAP framework.
Compilation of LEAP is also dependent on code from a few other libraries:
- AWB - the Architect's Workbench for composing LEAP modules into systems.
- asimcore contains some required header files.
One of the chief difficulties in developing for FPGAs is interfacing with the physical devices attached to the FPGA. LEAP abstracts the physical devices using a set of simple abstraction layers. Additionally LEAP provides a library of generally useful services built on top of these abstraction layers. LEAP facilities include:
- SoftConnections modular interconnect, supporting latency-insensitive channel-based communications among multiple heterogeneous platforms
- RRR-based remote request response protocol
- LEAP Scratchpads, an abstract interface to memory
- Coherent Scratchpads, extending LEAP scratchpads to support shared memory in FPGA
LEAP provides multiple service libraries built on top of its communications services. Some include:
LEAP layers on top of various physical platforms by replying on a standard low-level interface provided by various physical board-specific platforms.
As with all AWB-based projects the build process for a LEAP design involves a configuration step where a sub-set of .awb modules from the module pool are collected into a build tree where Make (or SCons) can be invoked. A description of this process and the facilities provided is here, including a description of the modular Build Pipeline. LEAP also supports a simple FPGA programming and management tool, leap-fpga-ctrl.
LEAP supports a number of commercially available platforms including:
Multiple FPGA configurations of these systems are also supported.
Running a LEAP Program
A basic tutorial for running a LEAP program can be found here.
LEAP is written in Bluespec System Verilog. Applications written in Bluespec can take advantage of all LEAP features. Applications written in any synthesizable language can connect to LEAP services through shims.