Intel® High Level Synthesis Compiler Pro Edition: Best Practices Guide
ID
683152
Date
1/23/2025
Public
1. Discontinuation of the Intel® HLS Compiler
2. Intel® HLS Compiler Pro Edition Best Practices Guide
3. Best Practices for Coding and Compiling Your Component
4. FPGA Concepts
5. Interface Best Practices
6. Loop Best Practices
7. fMAX Bottleneck Best Practices
8. Memory Architecture Best Practices
9. System of Tasks Best Practices
10. Datatype Best Practices
11. Advanced Troubleshooting
A. Intel® HLS Compiler Pro Edition Best Practices Guide Archives
B. Document Revision History for Intel® HLS Compiler Pro Edition Best Practices Guide
6.1. Reuse Hardware By Calling It In a Loop
6.2. Parallelize Loops
6.3. Construct Well-Formed Loops
6.4. Minimize Loop-Carried Dependencies
6.5. Avoid Complex Loop-Exit Conditions
6.6. Convert Nested Loops into a Single Loop
6.7. Place if-Statements in the Lowest Possible Scope in a Loop Nest
6.8. Declare Variables in the Deepest Scope Possible
6.9. Raise Loop II to Increase fMAX
6.10. Control Loop Interleaving
10.1. Avoid Implicit Data Type Conversions
Compile your component code with the -W conversion compiler option, especially if your component uses floating point variables.
Using this option helps you avoid inadvertently having conversions between double-precision and single-precision values when double-precision variables are not needed. In FPGAs, using double-precision variables can negatively affect the data transfer rate, the latency, and resource utilization of your component.
Additionally, constants are treated as signed int or signed double. If you want efficient operations with narrower constants, cast constants to other, narrower data types like ac_int<> or float.
If you use the Algorithmic C (AC) arbitrary precision datatypes, pay attention to the type propagation rules.