Intel® High Level Synthesis Compiler Pro Edition: Reference Manual

ID 683349
Date 4/01/2024
Document Table of Contents

11. Libraries

With libraries, you can reuse functions without knowing the underlying hardware design or implementation details. Libraries can be created with Intel FPGA high-level design tools including the Intel® HLS Compiler and the Intel® FPGA SDK for OpenCL™ , either from code initially targeting that tool or from RTL code.

The Intel® HLS Compiler supports two types of libraries:

Static-Object Libraries

A static-object library is a single platform-specific archive file that contains one or more object files. A static-object file contains implementations of one or more functions. The object and library files use the same formats as the operating system that you compile your Intel® HLS Compiler code on, with additional sections that carry HLS-specific information.

On Linux platforms, an object library is a .a archive file that contains .o object files. On Windows platforms, a library is a .lib archive file that contains .obj object files.

A static-object library includes one or more function signature files that you include in your component source code so that your component can call the functions provided by the library. A function signature file is a C-style header file (.h) that declares the signatures of the functions that are provided in an object library.

Static-object libraries can be created from RTL or high-level source code.

Source Code Libraries

A source code library is a C-style header file that contains a source code library. You include this header file in your component source code, and the header file code is compiled along with your component.

You can use C++ templates to make your source code library more customizable.

The Intel® HLS Compiler provides some source code libraries that provide you with FPGA-optimized code for some commonly-used algorithms.

For details about source code libraries included with the Intel® HLS Compiler, see the following sections: