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
                            
                        
                    
                8.3. Merge Memories to Reduce Area
In some cases, you can save FPGA memory blocks by merging your component memories so that they consume fewer memory blocks, reducing the FPGA area your component uses. Use the hls_merge attribute to force the Intel® HLS Compiler Pro Edition to implement different variables in the same memory system.
When you merge memories, multiple component variables share the same memory block. You can merge memories by width (width-wise merge) or depth (depth-wise merge). You can merge memories where the data in the memories have different datatypes.
   Figure 35. Overview of width-wise merge and depth-wise merge
    
     
  
 
 The following diagram shows how four memories can be merged width-wise and depth-wise.