FPGA Virtual Logic Tile Arrays for Independent Multi-Function Operation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing FPGA architectures lack the ability to efficiently partition and configure logic tiles into virtual arrays that can operate independently or dependently, with varying clock domains and I/O configurations, to perform diverse functions such as data processing, encryption, and signal processing.

Innovation Solution

The FPGA is designed with a physical array of logic tiles that are functionally partitioned into virtual arrays, allowing for independent or dependent operation, separate or common clock signals, and separate or shared I/Os, with configuration managed through compilers generating merged bitstreams for unified operation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If the physical array of logic tiles is partitioned into multiple virtual arrays to implement diverse functions, then adaptability and versatility are improved, but device complexity increases due to multiple configuration management requirements

Engineering Contradiction:
Improvefunctional versatilityVSAvoidconfiguration complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The physical array of logic tiles is segmented into multiple virtual arrays, where each virtual array can be independently configured to perform different functions. This segmentation allows the same physical hardware to be divided into functionally independent units that can operate autonomously or cooperatively, thereby improving adaptability without requiring separate physical devices for each function.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The FPGA architecture implements multi-functionality by allowing a single physical array of logic tiles to serve multiple virtual arrays simultaneously. Each virtual array can be programmed to perform different operations (e.g., data processing, encryption, signal processing), enabling the same hardware resources to fulfill diverse functional requirements through software-like reconfiguration.

Inventive Principle:
Principle #6Universality (Multi-functionality)

2Ease of operation

If separate clock signals are provided to different virtual arrays for independent operation, then operational independence is improved, but device complexity increases due to multiple clock distribution networks

Engineering Contradiction:
Improveoperational independenceVSAvoidclock distribution complexity
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The clock distribution system is designed to be dynamic and configurable, allowing clock signals to be selectively routed to different virtual arrays based on operational requirements. Each virtual array can receive its own clock signal when independent operation is needed, or share common clock signals when synchronized operation is required, providing flexibility in managing operational independence without permanent dedicated clock networks.

Inventive Principle:
Principle #15Dynamics

3Adaptability or versatility

If multiple I/O configurations are supported across virtual arrays, then adaptability is improved, but device complexity increases due to separate I/O management

Engineering Contradiction:
ImproveI/O configurabilityVSAvoidI/O management complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The I/O system is designed with universal management capabilities that allow a single set of physical I/O resources to serve multiple virtual arrays with different configuration requirements. The I/O management architecture can dynamically allocate and configure I/O pins according to the needs of active virtual arrays, enabling diverse I/O configurations without requiring separate dedicated I/O networks for each virtual array.

Inventive Principle:
Principle #6Universality (Multi-functionality)

4Adaptability or versatility

If virtual arrays operate independently with separate configurations, then functional independence is improved, but loss of time increases due to separate configuration loading

Engineering Contradiction:
Improvefunctional independenceVSAvoidconfiguration time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The configuration system merges multiple virtual array configurations into a unified configuration process. Instead of loading configurations for each virtual array separately, the system combines all configuration data into a single operation that simultaneously programs multiple virtual arrays, thereby reducing the total configuration time while maintaining the functional independence of each virtual array.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentEP3631987B1FPGA having a virtual array of logic tiles, and method of configuring and operating same
Publication Date: 2025.09.24 ANALOG DEVICES INC
  • EP3631987B1 patent drawingFigure 1A
  • EP3631987B1 patent drawingFigure 1B
  • EP3631987B1 patent drawingFigure 1C

AI summary

An integrated circuit comprising a physical array of logic tiles, wherein each logic tile includes a perimeter and a plurality of external I/O disposed in a layout on the perimeter of the logic tile wherein the layout of the external I/O of each logic tile is identical. The physical array includes a first virtual array of logic tiles, programmed to perform data processing operations, including a first plurality of logic tiles of the physical array. The physical array also includes a second virtual array of logic tiles, programmed to perform second operations, including a second plurality of logic tiles of the physical array. The logic tiles of the second plurality are different from the logic tiles of the first plurality. In one embodiment, performance of the data processing operations of the first virtual array is independent from performance of the second operations of the second virtual array.