SYSTEM AND METHOD FOR CONVERTING SOFTWARE TO A REGISTER TRANSFER (RTL) DESIGN
First Claim
1. A method for converting program code that is not in a hardware description language (HDL) to hardware, said program code including an algorithmic representation of a process using variables, the method comprising the steps of:
- compiling the program code into an HDL synthesizable design, said step of compiling includes the steps of;
categorizing each of said variables in said program code as using either a respective implicit memory or a respective custom memory,when a respective variable of the variables in said program code is categorized as using the respective implicit memory, defining a first type of accessor function for accessing the respective implicit memory, andwhen the respective variable in said program code is categorized as using the respective custom memory, defining a second type of accessor function for accessing the respective custom memory, the second type of access function being different from the first type of accessor function; and
generating the hardware including implementing, as hardware, the first and second accessor functions based on said HDL synthesizable design.
10 Assignments
0 Petitions
Accused Products
Abstract
A method for converting a C-type programming language program to a hardware design, where the said program is an algorithmic representation of one or more processes. The C-type programming language program is compiled into a hardware description language (HDL) synthesizable design. The compiler categorizes variables as using either implicit memory or custom memory. Different accessor functions are used depending on which type of memory is used. The programming language may use ANSI C and the HDL may be Verilog Register Transfer Level (RTL). The hardware device generated from the HDL synthesizable design may be an Application-Specific Integrated Circuit (ASIC) or a Field Programmable Gate Array (FPGA).
40 Citations
23 Claims
-
1. A method for converting program code that is not in a hardware description language (HDL) to hardware, said program code including an algorithmic representation of a process using variables, the method comprising the steps of:
-
compiling the program code into an HDL synthesizable design, said step of compiling includes the steps of; categorizing each of said variables in said program code as using either a respective implicit memory or a respective custom memory, when a respective variable of the variables in said program code is categorized as using the respective implicit memory, defining a first type of accessor function for accessing the respective implicit memory, and when the respective variable in said program code is categorized as using the respective custom memory, defining a second type of accessor function for accessing the respective custom memory, the second type of access function being different from the first type of accessor function; and generating the hardware including implementing, as hardware, the first and second accessor functions based on said HDL synthesizable design. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A system for converting program code that is not in a hardware description language (HDL) to hardware, said program code including an algorithmic representation a process, the system comprising:
-
means for compiling the program code into an HDL synthesizable design, wherein said means for compiling includes; means for categorizing each of said variables in said program code as using either a respective implicit memory or a respective custom memory, means for accessing the respective implicit memory using a first type of accessor function when a respective variable in said program code is categorized as using the respective implicit memory, and means for accessing the respective custom memory using a second type of accessor function, different from the first type of accessor function when the respective variable in said program code is categorized as using the respective custom memory; and means for generating the hardware from the HDL synthesizable design.
-
-
15. A method of simulating hardware in program code using a multi-thread system, the program code including an algorithmic representation corresponding to the hardware, by executing a plurality of processes, comprising the steps of:
-
running each process in a separate thread of the multi-thread system; declaring at least one directive for each separate thread of the multi-thread system; and controlling, by each directive, a respective one of the separate threads to execute in a timed sequence relative to the other respective ones of the separate threads.
-
-
16. A multi-threaded system for simulating hardware in program code, the program code including an algorithmic representation corresponding to the hardware by executing a plurality of processes, comprising:
-
means for running each process in a separate thread of the multi-thread system; means for declaring at least one directive for each separate thread of the multi-thread system; and means for controlling, by execution of respective directives, each of the separate threads to execute at particular time such that respective ones of the separate threads execute in a sequence.
-
-
17. A method of simulating hardware in program code, the program code including an algorithmic representation corresponding to the hardware, comprising the steps of:
-
declaring a custom memory accessor function in the program code, the customer memory accessor function including a timing model for accessing a custom memory; compiling the program code into a hardware description language (HDL) synthesizable design, said step of compiling includes the steps of; categorizing at least one variable in said program code as using the custom memory; and translating the timing model in the declared program code to access the custom memory using the custom memory accessor function.
-
-
18. A system for simulating hardware using program code that is not in a hardware description language (HDL), the program code including an algorithmic representation corresponding to the hardware by executing a plurality of processes, comprising:
-
means for declaring a custom memory accessor function in the program code, the customer memory accessor function including a timing model for accessing a custom memory; means for compiling the program code into a hardware description language (HDL) synthesizable design, said means for compiling includes; means for categorizing at least one variable in said program code as using the custom memory; and means for translating the timing model in the declared program code to access the custom memory using the custom memory accessor function.
-
-
19. A method of generating Register Transfer Level (RTL) code from program code in an other program language not intended to produce RTL, to simulate hardware, comprising the steps of:
-
defining a renaming function directive for renaming variable names used in arguments of the program code; receiving a predetermined name of a variable used in the program code that does not conform to program code naming standards; declaring in a specified argument, the renaming function directive including the predetermined name, and a second name, which is to be associated with the predetermined name and which conforms to the program code naming standards; compiling the program code in the other language including the steps of; associating the predetermined name with the second name for the variable of the specified argument, and processing the specified argument using the second name as the name of the variable; and compiling the program code into the RTL code including the step of; processing the specified argument using the first name as the name of the variable.
-
-
20. A system for generating Register Transfer Level (RTL) code from program code in an other program language not intended to produce RTL code, to simulate hardware, the program code receiving a predetermined name of a variable that does not conform to program code naming standards, comprising:
-
means for defining a renaming function directive for renaming variable names used in arguments of the program code; means for declaring in a specified argument, the renaming function directive including the predetermined name, and a second name, which is to be associated with the predetermined name and which conforms to the program code naming standards; means for compiling the program code in the other language including; means for associating the predetermined name with the second name for the variable of the specified argument, and means for processing the specified argument using the second name as the name of the variable; and means for compiling the program code into the RTL code including; means for processing the specified argument using the first name as the name of the variable.
-
-
21. A method for converting program code that is not in a hardware description language (HDL) to hardware, said program code including an algorithmic representation of a plurality of process, the method comprising the steps of:
compiling the program code into an HDL synthesizable design, said step of compiling includes the steps of; defining a first HDL synthesizable module corresponding to a first one of the plurality of processes and a second HDL synthesizable module corresponding to a second one of the plurality of processes, defining input/output ports for the first and second HDL synthesizable modules, and defining an interface function to define inputs and/or outputs between the first and second one of the plurality of processes that map to the created input and output ports of the first and second HDL synthesizable modules; and generating the hardware including implementing, as hardware, the first and second HDL synthesizable modules and interface function based on said HDL synthesizable design. - View Dependent Claims (22, 23)
Specification