Automated system for designing and developing field programmable gate arrays
First Claim
1. An automated system for programming field programmable gate arrays (FPGAs) to implement a desired user-defined algorithm specified in a high level language for processing data vectors with one, two or more dimensions, the system comprising:
- means for analyzing the user-defined algorithm to determine what logic components are required and their interrelationships, including means for determining how many of such components are required, the relative timing between the required components, and means for determining partial products and the presence of signal delays between selected components;
means for mapping the required logic components onto a target FPGA, including means for evaluating alternative interconnection routes between logic components within the target FPGA, and means for producing an optimized placement and routing of the logic components and interconnections on the target FPGA, and means for generating a low level command listing in a file operable to serve as an input file to a low-level conventional FPGA programming tool, whereby the FPGA programming tool from the input file is able to generate a hardware gate programming bitstream to be directed to the target FPGA, thereby programming the FPGA with the desired user-defined algorithm.
5 Assignments
0 Petitions
Accused Products
Abstract
An automated system and method for programming field programmable gate arrays (FPGAs) is disclosed for implementing user-defined algorithms specified in a high level language. The system is particularly suited for use with image processing algorithms and can speed up the process of implementing and testing a fully written high-level user-defined algorithm to a matter of a few minutes, rather than the days, weeks or even months presently required using conventional software tools. The automated system includes an analyzer module and a mapper module. The analyzer determines what logic components are required and their interrelationships, and observes the relative timing between the required components and their partial products. It also ascertains when signal delays are required between selected components. The mapper module utilizes the output from the analyzer module and determines where the required logic components must be placed on a given target FPGA in order to reliably route, without interference, the required interconnections between various components and I/O. The mapper includes means for evaluating alternative interconnection routes between logic components within the target FPGA, and means for producing an optimized placement and routing of the logic components and interconnections on the target FPGA. The mapper also generates a low level command listing as a source file that serves as an input file for a conventional low-level FPGA programming tool. From that input file, the tool is able to generate a hardware gate-programming bitstream to be directed to the target FPGA, thereby programming the FPGA with the user-defined algorithm.
89 Citations
20 Claims
-
1. An automated system for programming field programmable gate arrays (FPGAs) to implement a desired user-defined algorithm specified in a high level language for processing data vectors with one, two or more dimensions, the system comprising:
-
means for analyzing the user-defined algorithm to determine what logic components are required and their interrelationships, including means for determining how many of such components are required, the relative timing between the required components, and means for determining partial products and the presence of signal delays between selected components;
means for mapping the required logic components onto a target FPGA, including means for evaluating alternative interconnection routes between logic components within the target FPGA, and means for producing an optimized placement and routing of the logic components and interconnections on the target FPGA, and means for generating a low level command listing in a file operable to serve as an input file to a low-level conventional FPGA programming tool, whereby the FPGA programming tool from the input file is able to generate a hardware gate programming bitstream to be directed to the target FPGA, thereby programming the FPGA with the desired user-defined algorithm. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method for programming field programmable gate arrays (FPGAs) substantially automatically so as to render the FPGA operable to implement a user-selected algorithm involving the processing of data that is specified in a source code listing, the method comprising the steps of:
-
considering constraints associated with the user-selected algorithm including data processing steps involved and throughput speed requirements;
selecting a target FPGA to utilize;
selecting a specific data processing architecture to use in connection with the low-level programming of the target FPGA;
automatically analyzing the source code listing in order to identify order of functions and dependencies within the source code; and
automatically generating a mapping for implementing the user-selected algorithm on the target FPGA, taking into account the identified functions and dependencies within the source code during the step of automatically analyzing. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A computer program product, to be used in a FPGA development and programming environment, the software product comprising:
a storage medium readable by at least one processing circuit and storing instructions for execution for by the processing circuit for performing a method comprising the steps of considering constraints associated with the user-selected algorithm including data processing steps involved and throughput speed requirements;
selecting a target FPGA to utilize;
selecting a specific data processing architecture to use in connection with the low-level programming of the target FPGA;
automatically analyzing the source code listing in order to identify order of functions and dependencies within the source code; and
automatically generating a mapping for implementing the user-selected algorithm on the target FPGA, taking into account the identified functions and dependencies within the source code during the step of automatically analyzing.
Specification