Intel® High Level Synthesis Compiler Pro Edition: User Guide

ID 683456
Date 12/13/2021
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

3. Creating a High-Level Synthesis Component and Testbench

The Intel® HLS Compiler Pro Edition converts individual functions into RTL code. The components are part of a C++ application that acts as a testbench for your component functions, and you can test your components by calling them from your main() function and verifying that the output is correct.

The compiler supports C++17 and can synthesize some C++ constructs, which might be easier for you to use to create cleaner code. For more information about the supported C++ subset and its restrictions, see "Supported C and C++ Subset for Component Synthesis" in Intel® High Level Synthesis Compiler Pro Edition Reference Manual.

The Intel® HLS Compiler Pro Edition synthesizes all the code in the function or functions that you identify as components, and any code that these components call, to an RTL representation.

Identify a function in your C++ application that you want to synthesize into RTL with the component function attribute.

Important:

Components are synthesized into RTL for all functions with the component function attribute and for all components listed in the --component <component_list> option of the i++ command. Avoid combining these methods because you might unexpectedly synthesize unwanted components.

If you do not want components synthesized into RTL for a function, ensure that you do not have the component function attribute specified in the function and ensure that the function is not specified in the --component <component_list> option of the i++ command.

You can see which components were synthesized into RTL in the summary page of the High-Level Design Reports ( <name>.prj/reports/report.html). For more information about the High-Level Design Reports, see The High-Level Design Reports.

The HLS compiler creates an executable to run on the CPU. The compiler then sends any calls to functions that you declared as components to simulation of the synthesized IP core, and the simulation results are returned.