Intel® High Level Synthesis Compiler Standard Edition: User Guide

ID 683306
Date 12/18/2019
Public
Document Table of Contents

2. Overview of the Intel® High Level Synthesis (HLS) Compiler Standard Edition

The Intel® High Level Synthesis (HLS) Compiler parses and compiles your your design to an x86-64 object or RTL code optimized for Intel® FPGA device families. It also creates an executable testbench. Use the x86-64 object to quickly test and debug the function of your design.

You can use the same testbench to verify your design both when it is compiled to x86-64 instructions or to HDL.

The Intel® HLS Compiler Standard Edition is command-line compatible with the g++ compiler, and supports most of the g++ compiler flags. See the Intel® High Level Synthesis Compiler Standard Edition Reference Manual for a full list of compiler flags.

The Intel® HLS Compiler recognizes the same file name extensions as g++, namely .c, .C, .cc, .cpp, .CPP, .c++, .cp, and .cxx. The compiler treats all of these file types as C++. The compiler does not explicitly support C, other than as a subset of C++.

Important: The Intel® HLS Compiler Standard Edition treats all input files as C++98. The compiler does not support files conforming to newer C++ standards.
When you target the compilation to an FPGA, the Intel® HLS Compiler outputs an executable and a project directory. The default executable is a.out on Linux and a.exe on Windows. The default project directory is a.prj, and it contains the following outputs:
  • Generated IP
  • High-Level Design Reports (report.html)
  • Verification testbench files
  • Quartus project that you can use to accurately estimate area requirements and fMAX for your design

To specify the name of the compiler output, include the -o <result> option in your i++ command, where <result> is the name of the executable. This command creates a project directory called <result>.prj.

Running the executable file runs your testbench. When you target the compilation to an x86-64 architecture, the output executable runs your design on your CPU like a regular C++ program. The output executable runs very quickly compared to running a simulation of your component RTL. When you target the compilation to an FPGA architecture, the output executable simulates your component RTL. This simulation can take a long time to run.