Skip to content

Implementation of Light HLS and Further Development

Tingyuan LIANG edited this page Jan 8, 2020 · 10 revisions

The Overview of Light-HLS Implementation

As shown in Light_HLS_Top.cc, the procedure of Light-HLS contains mainly four steps:

  1. Clang part for Front-End Processing:

      extract the information of arrays in the source code   
      set labels for each loop in the source code   
    
  2. Front-End Passes for FPGA-Oriented Optimizations and Transformation:

      Function Level: Function Instantiation     
      Loop Level: Loop Extraction / Loop Simplification / Index Variable Simplify / Loop Stregnth Reducation / Loop Unrolling                               
      General Instruction Level:  Duplicated Instruction Removal / Multiplication Optimization / Reduction Optimization / Instruction Hoisting / Bitwidth Reduction / etc..      
      Memory Access Level:  GEPLowering / Redundant Access Removal
    
  3. Front-End Passes just before Back-End Analysis:

      map the IR loops to the loop labels in the source code for the configurations of loops. 
      mainly account for inserting MUX for the accesses to array partitions.   
    
  4. Backend-end Pass

      for scheduling and binding       
      After running this Pass, the information will be stored in
      The public variables of the Pass pointer.                 
      such as function latencies, loop tripcounts and etc.