Invariant Logic Optimization in FPGA High-Level Synthesis

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing programming software for programmable devices like FPGAs requires knowledge of hardware description languages, making it inefficient for users without such expertise, especially when implementing logic with invariant elements.

Innovation Solution

Using a high-level programming language like OpenCL, which allows for the identification and optimization of invariant logic flows, converting them into separate instruction blocks, and compiling these to configure the integrated circuit device, thereby reducing hardware size, memory bandwidth, and latency while increasing throughput.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Manufacturing precision

If hardware description languages like VHDL or Verilog are used to program programmable devices, then the logic design can be implemented with high precision and control, but the ease of operation deteriorates because users need specialized knowledge

Engineering Contradiction:
Improvelogic design precisionVSAvoidease of programming
Core Design Contradiction:
Manufacturing precisionVSEase of operation

Solution Approach 1:

The patent introduces a high-level synthesis toolchain as an intermediary between the user's high-level programming language code and the final hardware configuration. This toolchain automatically translates and optimizes the code, eliminating the need for users to directly write hardware description languages while maintaining implementation precision.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent replaces the manual hardware description process with automated software-based synthesis. Instead of requiring users to manually write VHDL or Verilog code, the system uses high-level programming languages and automated compilers to generate the hardware configuration, substituting mechanical coding processes with software automation.

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

2Productivity

If invariant logic elements are implemented using conventional methods, then the code can be executed, but the hardware size and resource usage increase due to lack of optimization

Engineering Contradiction:
Improveexecution throughputVSAvoidhardware size
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent performs preliminary analysis of the high-level code to identify invariant logic elements before hardware generation. By detecting which logic elements remain constant across different execution contexts, the system can pre-optimize the hardware implementation to avoid redundant resources, thereby reducing overall hardware size while maintaining execution throughput.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent changes the parameters of logic implementation based on invariance detection. When invariant elements are identified, the synthesis tool adjusts hardware parameters such as resource allocation, data bus widths, and register usage to optimize for both reduced hardware size and maintained performance, rather than using uniform implementation for all logic elements.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS9547738B1Invariant code optimization in high-level FPGA synthesis
Publication Date: 2017.01.17 ALTERA CORP
  • US9547738B1 patent drawing
  • US9547738B1 patent drawing
  • US9547738B1 patent drawing

AI summary

A method of programming or configuring an integrated circuit device using a high-level language includes parsing a logic flow to be embodied in the integrated circuit device to identify invariant logic flow, converting the invariant logic flow into separate instruction blocks, incorporating the separate instruction blocks into a high-level language representation of a configuration of resources of the integrated circuit device, and compiling the high-level language representation to configure said integrated circuit device. The high-level language representation can be executed to generate a configuration bitstream for the programmable integrated circuit device, or can be run on a processor on the programmable integrated circuit device to instantiate the configuration.