Intel® High Level Synthesis Compiler Pro Edition: Reference Manual
                    
                        ID
                        683349
                    
                
                
                    Date
                    1/23/2025
                
                
                    Public
                
            
                
                    
                    
                        1. Discontinuation of the Intel® HLS Compiler
                    
                
                    
                    
                        2. Intel® HLS Compiler Pro Edition Reference Manual
                    
                
                    
                        3. Compiler
                    
                    
                
                    
                        4. C Language and Library Support
                    
                    
                
                    
                        5. Component Interfaces
                    
                    
                
                    
                        6. Component Memories (Memory Attributes)
                    
                    
                
                    
                        7. Loops in Components
                    
                    
                
                    
                        8. Component Concurrency
                    
                    
                
                    
                        9. Arbitrary Precision Math Support
                    
                    
                
                    
                        10. Component Target Frequency
                    
                    
                
                    
                        11. Systems of Tasks
                    
                    
                
                    
                        12. Libraries
                    
                    
                
                    
                        13. Advanced Hardware Synthesis Controls
                    
                    
                
                    
                        14. Intel® High Level Synthesis Compiler Pro Edition Reference Summary
                    
                    
                
                    
                        A. Advanced Math Source Code Libraries
                    
                    
                
                    
                        B. Supported Math Functions
                    
                    
                
                    
                    
                        C. Cyclone® V Restrictions
                    
                
                    
                    
                        D. Intel® HLS Compiler Pro Edition Reference Manual Archives
                    
                
                    
                    
                        E. Document Revision History of the Intel® HLS Compiler Pro Edition Reference Manual
                    
                
                    
                    
                        15. Discontinuation of the Intel® HLS Compiler
                    
                
            
        
                        
                        
                            
                            
                                7.1. Loop Initiation Interval (ii Pragma)
                            
                        
                            
                            
                                7.2. Loop-Carried Dependencies (ivdep Pragma)
                            
                        
                            
                            
                                7.3. Loop Coalescing (loop_coalesce Pragma)
                            
                        
                            
                            
                                7.4. Loop Unrolling (unroll Pragma)
                            
                        
                            
                            
                                7.5. Loop Concurrency (max_concurrency Pragma)
                            
                        
                            
                            
                                7.6. Loop Iteration Speculation (speculated_iterations Pragma)
                            
                        
                            
                            
                                7.7. Loop Pipelining Control (disable_loop_pipelining Pragma)
                            
                        
                            
                            
                                7.8. Loop Interleaving Control (max_interleaving Pragma)
                            
                        
                            
                                7.9. Loop Fusion
                            
                            
                        
                    
                
                                                
                                                
                                                    
                                                    
                                                        12.4.1.1. Integration of an RTL Module into the HLS Pipeline
                                                    
                                                    
                                                
                                                    
                                                        12.4.1.2. RTL Module Interfaces
                                                    
                                                    
                                                    
                                                
                                                    
                                                        12.4.1.3. RTL Reset and Clock Signals
                                                    
                                                    
                                                    
                                                
                                                    
                                                        12.4.1.4. Object Manifest File Syntax
                                                    
                                                    
                                                    
                                                
                                                    
                                                    
                                                        12.4.1.5. Mapping HLS Data Types to RTL Signals
                                                    
                                                    
                                                
                                                    
                                                    
                                                        12.4.1.6. HLS Emulation Models for RTL-Based Functions
                                                    
                                                    
                                                
                                                    
                                                    
                                                        12.4.1.7. Potential Incompatibility between RTL Modules and Partial Reconfiguration
                                                    
                                                    
                                                
                                                    
                                                    
                                                        12.4.1.8. Stall-Free RTL
                                                    
                                                    
                                                
                                                    
                                                    
                                                        12.4.1.9. RTL Module Restrictions and Limitations for HLS Libraries
                                                    
                                                    
                                                
                                            
                                        
                        
                        
                            
                            
                                14.1. Intel® HLS Compiler Pro Edition i++ Command-Line Arguments
                            
                        
                            
                            
                                14.2. Intel® HLS Compiler Pro Edition Header Files
                            
                        
                            
                            
                                14.3. Intel® HLS Compiler Pro Edition Compiler-Defined Preprocessor Macros
                            
                        
                            
                            
                                14.4. Intel® HLS Compiler Pro Edition Keywords
                            
                        
                            
                            
                                14.5. Intel® HLS Compiler Pro Edition Simulation API (Testbench Only)
                            
                        
                            
                            
                                14.6. Intel® HLS Compiler Pro Edition Component Memory Attributes
                            
                        
                            
                            
                                14.7. Intel® HLS Compiler Pro Edition Loop Pragmas
                            
                        
                            
                            
                                14.8. Intel® HLS Compiler Pro Edition Scope Pragmas
                            
                        
                            
                            
                                14.9. Intel® HLS Compiler Pro Edition Component Attributes
                            
                        
                            
                            
                                14.10. Intel® HLS Compiler Pro Edition Component Default Interfaces
                            
                        
                            
                            
                                14.11. Intel® HLS Compiler Pro Edition Component Invocation Interface Control Attributes
                            
                        
                            
                            
                                14.12. Intel® HLS Compiler Pro Edition Component Macros
                            
                        
                            
                                14.13. Intel® HLS Compiler Pro Edition Systems of Tasks API
                            
                            
                        
                            
                            
                                14.14. Intel® HLS Compiler Pro Edition Pipes API
                            
                        
                            
                            
                                14.15. Intel® HLS Compiler Pro Edition Streaming Input Interfaces
                            
                        
                            
                            
                                14.16. Intel® HLS Compiler Pro Edition Streaming Output Interfaces
                            
                        
                            
                            
                                14.17. Intel® HLS Compiler Pro Edition Memory-Mapped Interfaces
                            
                        
                            
                            
                                14.18. Intel® HLS Compiler Pro Edition Load-Store Unit Control
                            
                        
                            
                            
                                14.19. Intel® HLS Compiler Pro Edition Arbitrary Precision Data Types
                            
                        
                    
                
                        
                        
                            
                            
                                B.1. Math Functions Provided by the math.h Header File
                            
                        
                            
                            
                                B.2. Math Functions Provided by the extendedmath.h Header File
                            
                        
                            
                            
                                B.3. Math Functions Provided by the ac_fixed_math.h Header File
                            
                        
                            
                            
                                B.4. Math Functions Provided by the hls_float.h Header File
                            
                        
                            
                            
                                B.5. Math Functions Provided by the hls_float_math.h Header File
                            
                        
                            
                            
                                B.6. Default Rounding Schemes and Subnormal Number Support
                            
                        
                    
                A.2. Matrix Multiplication Library
 The matrix multiplication source code library provided with the  Intel® HLS Compiler Pro Edition gives you an FPGA-optimized templatized source code library to perform matrix multiplication of two matrices stored in a 2-D array. 
  
 
  When you use the matrix multiplication library, you can affect the number of DSP blocks and RAM blocks by controlling the dot product vector size and the number of matrix elements read at one time. Increasing the dot product vector size can achieve better latency, but at the cost of using more DSP blocks and other FPGA resources.
Header File
    To include the matrix multiplication library in your component, add the following line to your component:
    
 
   #include "HLS/matrix_mult.h"
The header file is self-documented. You can review the header file to learn how to use the matrix multiplication library in your component.
Template Arguments
    The matrix multiplication library multiplies two 2-D matrices, A and B. The resulting product is returned in a third matrix, C. The matrix multiplication library has the following template arguments: 
    
 
  - T
- The data type of the matrix elements (For example, int, float, long, double).
- t_rowsA
- The number of rows in matrix A.
- t_colsA
- The number of columns in matrix A. This value also the number of rows in matrix B.
- t_colsB
- The number of columns in matrix B.
- DOT_VEC_SIZE
- 
      The number of DSP blocks to use in a single computation. This value must be a factor of t_colsA. 
      You can achieve better component latency by increasing this value. However, you use more FPGA area to achieve this. Keeping this value low lowers your FPGA resource usage, but increases the latency. 
- BLOCK_SIZE
- The number of elements to read at one time from matrix A. The default value of BLOCK_SIZE is the value of DOT_VEC_SIZE. You can reduce this number if the bandwidth needed by matrix A is lower than the value of DOT_VEC_SIZE, but it must remain a factor of DOT_VEC_SIZE.
- RUNNING_SUM_MULT_L
- This parameter can be adjusted to try and improve the fMAX of a component that uses this library. Review the header file for a detailed description of this argument and its effects.