Visible to Intel only — GUID: ewa1457721446091
Ixiasoft
1. Intel® High Level Synthesis Compiler Pro Edition User Guide
2. Overview of the Intel® High Level Synthesis (HLS) Compiler Pro Edition
3. Creating a High-Level Synthesis Component and Testbench
4. Verifying the Functionality of Your Design
5. Optimizing and Refining Your Component
6. Verifying Your IP with Simulation
7. Synthesize your Component IP with Quartus® Prime Pro Edition
8. Integrating your IP into a System
A. Reviewing the High-Level Design Reports (report.html)
B. Intel® HLS Compiler Pro Edition Restrictions
C. Intel® HLS Compiler Pro Edition User Guide Archives
D. Document Revision History for Intel® HLS Compiler Pro Edition User Guide
Visible to Intel only — GUID: ewa1457721446091
Ixiasoft
B. Intel® HLS Compiler Pro Edition Restrictions
When creating your IP using the HLS compiler, be aware of the current set of software and programming restrictions.
C++ Language Restrictions
The Intel® HLS Compiler accepts C++ code.
- A component cannot include virtual functions, function pointers, or bit fields.
- Function-scoped static variables that are a part of the component cannot use function arguments for initialization.
- A component or task function cannot contain an irreducible loop. That is, loops in component and task functions must have only one entry point into the loop.
- C++ restrictions
-
- The HLS compiler does not support using lambda functions as components.
- Class membership
-
- HLS component functions cannot be a C++ class member. However, you can declare your component function as a wrapper function. This wrapper function can call a member function of a class or a part of a namespace.
- Exception handling
-
- A component cannot contain exception handling.
- Library calls
-
- The HLS compiler does not currently support calls to C++ runtime libraries on Windows, including calls from the testbench code.
- Library functions
-
- A component cannot contain standard C or C++ library functions, unless they are explicitly supported by header files provided with the Intel® HLS Compiler.
- Multiple inheritance
-
- The HLS compiler does not support classes with multiple inheritance used as parameters. You may use classes as parameters provided that each class inherits from, at most, one class directly.
- Namespaces
-
- HLS component functions cannot be a part of a declared namespace. However, you can declare your component function as a global wrapper function. This wrapper function can call a member function of a class or a part of a namespace
- Parameters
-
- The HLS compiler does not support classes with multiple inheritance used as parameters. You may use classes as parameters if each class inherits from, at most, one class directly.
- Recursion
-
- The HLS compiler does not support the synthesis of components that use recursion; however, tail recursion is supported.
If a component has an algorithm that uses recursion, and it is identified for FPGA acceleration, modify the algorithm to use tail recursion, if possible.
- The HLS compiler does not support the synthesis of components that use recursion; however, tail recursion is supported.