Branch and Data Selector Nodes for FPGA Control Flow

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current programmable logic devices require extensive knowledge of hardware description languages like VHDL or Verilog for configuration, making it impractical for users without such expertise to efficiently program complex logic designs, especially with the need for long compile times that hinder development.

Innovation Solution

The use of high-level programming languages like OpenCL, which allows configuration of programmable devices through kernels and a host program, with precompiled virtual fabrics to reduce compilation time and facilitate control flow implementation, utilizing branch selector and data selector nodes to manage control signals and data flow.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If hardware description languages (VHDL/Verilog) are used for configuration, then device functionality can be implemented, but user accessibility and ease of programming deteriorate due to requiring specialized expertise

Engineering Contradiction:
Improvedevice functionalityVSAvoiduser accessibility
Core Design Contradiction:
Adaptability or versatilityVSEase of operation

Solution Approach 1:

The patent introduces high-level programming languages (C, C++, Fortran, MATLAB) as an intermediary between the user and the hardware description languages. The translation system acts as a mediator that converts high-level code into VHDL/Verilog, allowing users without hardware description language expertise to program FPGAs effectively.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent replaces the manual process of writing hardware description languages with an automated translation system. Instead of users directly manipulating hardware description syntax, the system automatically translates high-level programming constructs into equivalent hardware description code, reducing the complexity barrier.

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

2Adaptability or versatility

If complex logic designs are implemented manually, then design flexibility is maintained, but compilation time increases significantly

Engineering Contradiction:
Improvedesign flexibilityVSAvoidcompilation time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent applies preliminary action by pre-compiling frequently used logic designs and storing them in a library. When users need these designs, the pre-compiled versions are directly applied without requiring full recompilation, significantly reducing compilation time while maintaining design flexibility through the ability to combine pre-compiled modules with custom code.

Inventive Principle:
Principle #10Preliminary action

3Ease of operation

If translation from high-level languages to hardware description languages is performed, then user accessibility improves, but translation accuracy and reliability may deteriorate

Engineering Contradiction:
Improveuser accessibilityVSAvoidtranslation accuracy
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The translation system incorporates feedback mechanisms including syntax validation, semantic analysis, and error reporting that provide users with information about translation issues. This allows users to verify and correct their high-level code before final compilation, ensuring translation accuracy while maintaining ease of use.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS10033387B2Method apparatus for high-level programs with general control flow
Publication Date: 2018.07.24 ALTERA CORP
  • US10033387B2 patent drawing
  • US10033387B2 patent drawing
  • US10033387B2 patent drawing

AI summary

A method of configuring a programmable integrated circuit device to implement control flow at a current basic block. A branch selector node within the current basic block is configured to receive at least one control signal, where each of the at least one control signal is associated with a respective previous basic block. The branch selector node is further configured to select one of the at least one control signal based on one or more intended destinations for the at least one control signal, and provide the selected control signal to a data selector node within the current basic block. The data selector node is configured to select a data signal based on the selected control signal, where the selected data signal is from the respective previous basic block that is associated with the selected control signal.