Software-to-hardware compiler
First Claim
1. A method for generating hardware configuration data from software constructs, the method comprising:
- parsing high-level software programming code, wherein the code is transparent with regard to hardware resources and hardware configuration; and
compiling hardware configuration data based on the high-level software programing code.
1 Assignment
0 Petitions
Accused Products
Abstract
A software-to-hardware compiler is provided that generates hardware constructs in programmable logic based on pure software constructs. More particularly, a high-level program language may be used to create a program using only software constructs that is compiled into hardware constructs. Optimizations may be made in the later stages of compilation to retime the circuit, allowing for maximum data flow. The hardware may make run-time decisions with respect to executing programmable logic blocks in parallel. The decisions may be at least partially based on a control flow.
89 Citations
37 Claims
-
1. A method for generating hardware configuration data from software constructs, the method comprising:
-
parsing high-level software programming code, wherein the code is transparent with regard to hardware resources and hardware configuration; and
compiling hardware configuration data based on the high-level software programing code. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method for generating hardware that exploits parallelism by making decisions at run-time, the method comprising:
-
generating a control flow in the hardware, wherein the control flow indicates a status for a block, wherein the status indicates a capability for speculation; and
making run-time decisions regarding execution of the block at least partially based on the control flow. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 25, 26, 29, 30, 31, 32, 33, 35, 36)
-
-
20. A method for optimizing hardware that is generated by a software-to-hardware compiler during compilation, the method comprising:
-
locating at least one expression in a software program using the software-to-hardware compiler, wherein the expressions are used more than once in the program;
using a single set of hardware resources to implement the expression; and
selecting at run-time instances that will have access to the single set of hardware resources.
-
-
24. A method for mapping software constructs of a program into hardware constructs, the method comprising:
-
mapping software constructs into a block of logic operations using a software-to-hardware compiler;
coupling an input environment to the block that carries information into the block; and
coupling an output environment to the block that carries information out of the block.
-
-
27. A method for mapping software constructs into hardware constructs, the method comprising mapping a variable into a set of wires, wherein one of the wires indicates whether the variable has been computed and the remainder of the wires indicate a value of the variable.
-
28. A programmable logic resource that exploits parallelism by making decisions at run-time, wherein the programmable logic resource is configured to:
-
generate a control flow in the hardware, wherein the control flow indicates a status for an operation; and
make run-time decisions regarding execution of the operation at least partially based on the control flow.
-
-
34. A programmable logic resource that is made of hardware constructs mapped from software constructs of a program into hardware constructs, the programmable logic resource comprising:
-
blocks of logic operations that are mapped from software constructs using a software-to-hardware compiler;
an input environment that is coupled to the block that carries information into the block; and
an output environment that is coupled to the block that carries information out of the block.
-
-
37. A hardware construct that is implemented in programmable logic that is a mapping of a software constructs into hardware constructs, the hardware construct comprising a set of wires that is a mapping of a variable, wherein one of the wires indicates whether the variable has been computed and the remainder of the wires indicate a value of the variable.
Specification