Hardware Software Partitioning for Programmable Logic Devices

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Designing electronic circuits specified in high-level programming languages poses challenges in balancing hardware and software implementation, particularly in programmable logic devices (PLDs), where resource constraints and performance optimization are difficult to manage, leading to costly and complex analysis and implementation processes.

Innovation Solution

A method and apparatus that compiles high-level programming language programs into target language programs with functional elements, profiles their execution, and selectively implements subsets in programmable logic devices based on resource availability, generating a bitstream for hardware implementation and processing the remaining elements in software, allowing for dynamic or static reconfiguration.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a high-level programming language program is implemented entirely in software on a processor, then ease of modification and reconfigurability are improved, but performance and execution speed deteriorate

Engineering Contradiction:
ImprovereconfigurabilityVSAvoidexecution speed
Core Design Contradiction:
Adaptability or versatilityVSSpeed

Solution Approach 1:

The system dynamically determines at runtime which functional elements should be implemented in hardware versus software. The processor executes the target language program, profiles execution counts, and selectively configures the PLD to implement frequently-executed functions in hardware, while keeping less frequent functions in software. This dynamic adaptation resolves the contradiction between reconfigurability and execution speed.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The program is segmented into functional elements that are independently analyzed and selectively implemented. The system divides the high-level program into discrete functional elements, evaluates their execution characteristics through profiling, and partitions them between hardware (PLD) and software (processor) implementations based on performance requirements and resource availability.

Inventive Principle:
Principle #1Segmentation

2Speed

If frequently executed functional elements are implemented in hardware, then execution speed is improved, but device complexity and resource usage increase

Engineering Contradiction:
Improveexecution speedVSAvoidhardware resource usage
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The system uses execution profiling feedback to make informed decisions about hardware implementation. The processor executes the target language program and collects profile data on execution counts of functional elements. This feedback information is used to selectively implement only those functional elements with high execution counts in hardware, optimizing the balance between performance improvement and hardware resource consumption.

Inventive Principle:
Principle #23Feedback

3Manufacturing precision

If manual analysis and selection of hardware/software partitioning is performed, then design precision can be improved, but productivity and design time deteriorate

Engineering Contradiction:
Improvedesign precisionVSAvoiddesign efficiency
Core Design Contradiction:
Manufacturing precisionVSProductivity

Solution Approach 1:

The system performs automated hardware/software partitioning without requiring manual designer intervention. The compiler automatically compiles the high-level program to target language, the processor automatically profiles execution characteristics, and the system automatically selects which functional elements to implement in hardware based on execution counts and resource availability. This self-service approach maintains design precision while dramatically improving productivity.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system performs preliminary compilation and profiling actions to gather necessary information before making partitioning decisions. The high-level program is first compiled to target language with functional element identification, then executed to collect profile data on execution counts. This preliminary analysis enables subsequent automated, precise partitioning decisions without time-consuming manual review.

Inventive Principle:
Principle #10Preliminary action

4Speed

If the design is separated into hardware and software components, then performance optimization is improved, but device complexity and implementation difficulty increase

Engineering Contradiction:
ImproveperformanceVSAvoidimplementation complexity
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The system uses a universal target language that can represent both hardware and software implementations of functional elements. The same target language program serves as the basis for both the software execution on the processor and the hardware implementation in the PLD. This multi-functionality approach simplifies the implementation process by using a single language and unified workflow for both hardware and software components.

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

Data Source

PatentUS7823117B1Separating a high-level programming language program into hardware and software components
Publication Date: 2010.10.26 XILINX INC
  • US7823117B1 patent drawing
  • US7823117B1 patent drawing
  • US7823117B1 patent drawing

AI summary

Various approaches are described for implementing a high-level programming language program in hardware and software components. In one approach, a method comprises compiling the high-level programming language program into a target language program that includes a plurality of functional elements. Execution of the target language program is profiled to obtain execution counts of the functional elements. A subset of the functional elements are selected for implementation in programmable resources of a programmable device based on the profile data and availability of programmable resources. A bitstream is generated to implement a first sub-circuit that performs functions of the subset of functional elements, and the subset of functional elements is removed from the target language program. The programmable device is configured with the bitstream. The target language program is provided for execution by a processor.