Method, system and language structure for programming reconfigurable hardware
First Claim
1. A method for programming an integrated circuit, the method comprising:
- (a) using a first program construct to provide for execution of a computational block in parallel;
(b) using a second program construct to provide for automatic indexing of reference to a buffer object;
(c) using a third program construct for maintaining a previous value of a variable between process invocations; and
(d) using a fourth program construct to provide for iterations having a predetermined number of iterations at a compile time.
4 Assignments
0 Petitions
Accused Products
Abstract
The method, system and programming language of the present invention, provide for program constructs, such as commands, declarations, variables, and statements, which have been developed to describe computations for an adaptive computing architecture, rather than provide instructions to a sequential microprocessor or DSP architecture. The invention includes program constructs that permit a programmer to define data flow graphs in software, to provide for operations to be executed in parallel, and to reference variable states and historical values in a straightforward manner. The preferred method, system, and programming language also includes mechanisms for efficiently referencing array variables, and enables the programmer to succinctly describe the direct data flow among matrices, nodes, and other configurations of computational elements and computational units forming the adaptive computing architecture. The preferred programming language includes dataflow statements, channel objects, stream variables, state variables, unroll statements, iterators, and loop statements.
118 Citations
50 Claims
-
1. A method for programming an integrated circuit, the method comprising:
-
(a) using a first program construct to provide for execution of a computational block in parallel;
(b) using a second program construct to provide for automatic indexing of reference to a buffer object;
(c) using a third program construct for maintaining a previous value of a variable between process invocations; and
(d) using a fourth program construct to provide for iterations having a predetermined number of iterations at a compile time. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A system for programming an integrated circuit, the system comprising:
-
means for using a first program construct to provide for execution of a computational block in parallel;
means for using a second program construct to provide for automatic indexing of reference to a buffer object;
means for using a third program construct for maintaining a previous value of a variable between process invocations; and
means for using a fourth program construct to provide for iterations having a predetermined number of iterations at a compile time. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
-
29. A programming language for programming an integrated circuit, the programming language comprising:
-
a first program construct to provide for execution of a computational block in parallel;
a second program construct to provide for automatic indexing of reference to a buffer object;
a third program construct for maintaining a previous value of a variable between process invocations; and
a fourth program construct to provide for iterations having a predetermined number of iterations at a compile time. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42)
-
-
43. A method for programming an adaptive computing integrated circuit, the method comprising:
-
using a first program construct to provide for execution of a computational block in parallel, the first program construct defined as a dataflow command for informing a compiler that included commands are for concurrent performance in parallel;
using a second program construct to provide for automatic indexing of reference to a channel object, the channel object for providing a buffer for storing data, the second program construct defined as a stream variable for referencing the channel object;
using a third program construct for maintaining a previous value of a variable between process invocations, the third program construct defined as a state variable for maintaining a plurality of previous values of a variable after the variable has been assigned a plurality of current values;
using a fourth program construct to provide for iterations having a predetermined number of iterations at a compile time, the fourth program construct defined as an unroll command for transforming a loop operation into a predetermined plurality of individual executable operations;
using a fifth program construct to provide array accessing, the fifth program construct defined as an iterator variable for accessing the array in a predetermined, fixed address pattern; and
using a sixth program construct to provide for a fixed number of loop iterations at run time, the sixth program construct defined as a loop command for informing a compiler that a plurality of included commands contain no branching to locations outside of the loop and that a plurality of loop conditions are fixed. - View Dependent Claims (44, 45, 46, 47)
-
-
48. A programming language for programming an adaptive computing integrated circuit, the programming language comprising:
-
a first program construct to provide for execution of a computational block in parallel, the first program construct defined as a dataflow command for informing a compiler that included commands are for concurrent performance in parallel;
a second program construct to provide for automatic indexing of reference to a channel object, the channel object for providing a buffer for storing data, the second program construct defined as a stream variable for referencing the channel object, wherein the channel object is a buffer instantiated with a declared data type and a size, and wherein the stream variable is declared with a buffer of a plurality of data items of a specified data type;
a third program construct for maintaining a previous value of a variable between process invocations, the third program construct defined as a state variable for maintaining a plurality of previous values of a variable after the variable has been assigned a plurality of current values;
a fourth program construct to provide for iterations having a predetermined number of iterations at a compile time, the fourth program construct defined as an unroll command for transforming a loop operation into a predetermined plurality of individual executable operations;
a fifth program construct to provide array accessing, the fifth program construct defined as an iterator variable for accessing the array in a predetermined, fixed address pattern; and
a sixth program construct to provide for a fixed number of loop iterations at run time, the sixth program construct defined as a loop command for informing a compiler that a plurality of included commands contain no branching to locations outside of the loop and that a plurality of loop conditions are fixed. - View Dependent Claims (49, 50)
-
Specification