Intel® High Level Synthesis Compiler Pro Edition: Best Practices Guide
ID
683152
Date
6/20/2022
Public
A newer version of this document is available. Customers should click here to go to the newest version.
1. Intel® HLS Compiler Pro Edition Best Practices Guide
2. Best Practices for Coding and Compiling Your Component
3. FPGA Concepts
4. Interface Best Practices
5. Loop Best Practices
6. fMAX Bottleneck Best Practices
7. Memory Architecture Best Practices
8. System of Tasks Best Practices
9. Datatype Best Practices
10. 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
5.1. Reuse Hardware By Calling It In a Loop
5.2. Parallelize Loops
5.3. Construct Well-Formed Loops
5.4. Minimize Loop-Carried Dependencies
5.5. Avoid Complex Loop-Exit Conditions
5.6. Convert Nested Loops into a Single Loop
5.7. Place if-Statements in the Lowest Possible Scope in a Loop Nest
5.8. Declare Variables in the Deepest Scope Possible
5.9. Raise Loop II to Increase fMAX
5.10. Control Loop Interleaving
10. Advanced Troubleshooting
As you develop components with the Intel® HLS Compiler Pro Edition, you might encounter issues whose solution is unclear.
The issues typically fall into the following categories:
- Your component behaves differently in simulation and emulation.
- Your component has unexpectedly poor performance, resource utilization, or both.
(Windows only) Long Path Issues
Components kept in directories that result in a long path name might not compile properly or fail in simulation. Check your compilation log or simulation log (debug.log) to determine if the path length is a cause of the failures. Errors that indicate that a file could not be found can indicate that your paths might be too long.
The Intel® HLS Compiler uses the component name in many of the directories that it creates. Long component names can introduce long path issues even if your component is in a relatively shallow location in your directory structure.
To resolve a long path issue, try the following actions:
- Move your component up the directory hierarchy.
- Use a shorter name for your component.