Automated FPGA Code Optimization via Dataflow Graphs

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current high-level synthesis (HLS) tools require significant expertise and manual effort to optimize software code for FPGA hardware accelerators, limiting their accessibility and efficiency, especially in generating optimized hardware implementations that leverage concurrent execution and energy savings.

Innovation Solution

A method that uses a dataflow graph representation of computations, obtained through instrumentation of critical functions, to automatically restructure C code and generate HLS-friendly code with directives, enabling efficient hardware acceleration without requiring extensive HLS expertise.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Manufacturing precision

If manual code restructuring and manual insertion of HLS directives are used to optimize FPGA hardware implementations, then hardware optimization performance is improved, but development time and expertise requirements increase

Engineering Contradiction:
Improvehardware optimization performanceVSAvoiddevelopment time
Core Design Contradiction:
Manufacturing precisionVSLoss of time

Solution Approach 1:

The system performs self-service by automatically analyzing source code, generating dataflow graphs, applying optimizations, and producing optimized HLS code without requiring manual intervention from experts. The automated pipeline includes source code parsing, dataflow graph generation, optimization application, and code generation, eliminating the need for manual code restructuring and directive insertion while maintaining high hardware optimization performance

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent replaces the mechanical process of manual code restructuring with an automated computational system. Instead of developers manually analyzing and rewriting code, the system uses automated algorithms to parse source code, construct dataflow graphs, apply transformations, and generate optimized HLS code, substituting human expertise with automated mechanical processing

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

2Ease of operation

If high-level synthesis tools are used to program FPGAs with C code, then ease of programming is improved, but the ability to generate optimized hardware implementations deteriorates without manual restructuring

Engineering Contradiction:
Improveease of programmingVSAvoidhardware optimization performance
Core Design Contradiction:
Ease of operationVSManufacturing precision

Solution Approach 1:

The patent introduces an intermediary system between the high-level C code and the FPGA hardware. This intermediary automatically generates dataflow graphs from C source code, applies optimizations to these graphs, and produces optimized HLS code. The intermediary layer bridges the gap between ease of C programming and hardware optimization performance, eliminating the need for manual code restructuring while maintaining both accessibility and optimization quality

Inventive Principle:
Principle #24Intermediary (Mediator)

3Productivity

If code restructuring optimizations are applied to C code for FPGA, then hardware execution performance is improved, but the complexity of the coding process increases

Engineering Contradiction:
Improvehardware execution performanceVSAvoidcoding process complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent replaces complex manual coding processes with automated mechanical systems. The system automatically performs code restructuring, dataflow graph generation, optimization application, and HLS code generation. This substitution eliminates the complexity burden from developers while maintaining high hardware execution performance through systematic automated transformations

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Data Source

PatentUS11656857B2Method and apparatus for optimizing code for field programmable gate arrays
Publication Date: 2023.05.23 INESC TEC INST DE ENGENHARIA DE SISTEMAS E COMPUTADORES TECHA E CIENCIA
  • US11656857B2 patent drawing
  • US11656857B2 patent drawing
  • US11656857B2 patent drawing

AI summary

A method for the generation of a hardware accelerator (20) is described. The method comprises inputting (110) a program (105) with a plurality of lines of code describing an algorithm to be implemented on the hardware accelerator (20) and generating (125) a dataflow graph in memory from the inputted program (105). The dataflow graph is optimized and an output program (140) created from the dataflow graph is output. The output program (140) is then provided to a high-level synthesis tool for generating the hardware accelerator (20).