8473926

Software-to-hardware compiler

PublishedJune 25, 2013
Assigneenot available in USPTO data we have
InventorsPaul Metzgen
Technical Abstract

Patent Claims
20 claims

Legal claims defining the scope of protection, as filed with the USPTO.

1

1. A method for generating gate-level hardware configuration data directly from high-level software programming code, the method comprising: parsing the high-level software programming code transparent with regard to hardware; compiling the gate-level hardware configuration data directly from the high-level software programming code, wherein the gate-level hardware configuration data is configured to generate a control flow for a current conditional block that indicates whether the current conditional block should be evaluated speculatively at run-time; configuring a programmable logic resource with the gate-level hardware configuration data; evaluating the current conditional block at run-time according to the control flow to produce a decision variable; updating the control flow at run-time to specify either a speculative or non-speculative evaluation mode based, at least in part, on the control flow and the decision variable to specify either a speculative or non-speculative evaluation mode for evaluating a next conditional data block; and evaluating the next conditional data block at run-time according to the updated control flow.

2

2. The method of claim 1 wherein the current conditional block is not comprised of any mutable operations.

3

3. The method of claim 1 wherein the current conditional block is comprised of a mutable operation, and wherein the mutable operation overwrites hardware states that are not needed.

4

4. The method of claim 1 wherein updating the control flow at run-time further comprises making a run-time decision to execute the next conditional block in parallel with another conditional block.

5

5. The method of claim 4 wherein there is no data dependency between the next conditional block and the another conditional block.

6

6. The method of claim 5 further comprising sharing a common variable between the next conditional block and the another conditional block.

7

7. The method of claim 1 , further comprising: determining, based, at least in part, on the control flow and the decision variable, a second control flow and a third control flow, wherein each of the second control flow and the third control flow specifies a respective speculative or a non-speculative evaluation mode.

8

8. The method of claim 7 , further comprising: evaluating at least two data blocks according to the second control and the third control flow to produce output data; and wherein the updating the control flow at run-time is further based on the produced output data.

9

9. The method of claim 1 , wherein parsing the high-level software programming code comprises parsing code selected from C code, C++code, JAVA code, LISP code, BASIC code, Pascal code, COBOL code, and Fortran code.

10

10. The method of claim 1 , wherein the compiling is configured to: identify a function of the high-level software programming code; and map the function to a dedicated set of hardware resources in the gate-level hardware configuration data.

11

11. A method for generating gate-level hardware configuration data directly from high-level software programming code, the method comprising: parsing the high-level software programming code transparent with regard to hardware; compiling the gate-level hardware configuration data directly from the high-level software programming code to generate gate-level hardware configuration data; configuring a programmable logic resource with the gate-level hardware configuration data; evaluating a current conditional block of the programmable logic resource at run-time according to a control flow determined during the compiling to produce a decision variable; determining at run-time, based, at least in part, on the control flow and the decision variable, a second control flow and a third control flow, wherein each of the second control flow and the third control flow specifies a respective speculative or a non-speculative evaluation mode; evaluating, at run-time, at least two data blocks according to the second control and the third control flow to produce output data; updating the control flow at run-time to specify either a speculative or non-speculative evaluation mode based, at least in part, on the control flow, the decision variable, and the produced output data to specify either a speculative or non-speculative evaluation mode for evaluating a next conditional data block; and evaluating the next conditional data block at run-time according to the updated control flow.

12

12. The method of claim 11 wherein the current conditional block is not comprised of any mutable operations.

13

13. The method of claim 11 wherein the current conditional block is comprised of a mutable operation, and wherein the mutable operation overwrites hardware states that are not needed.

14

14. The method of claim 11 wherein updating the control flow at run-time further comprises making a run-time decision to execute the next conditional block in parallel with another conditional block.

15

15. The method of claim 14 wherein there is no data dependency between the next conditional block and the another conditional block.

16

16. The method of claim 15 further comprising sharing a common variable between the next conditional block and the another conditional block.

17

17. The method of claim 11 , wherein compiling the gate-level hardware configuration data directly from the high-level software programming code comprises: identifying a plurality of software variables in the high-level software programming code; and mapping each of the identified plurality of software variables to a dedicated set of wires in the gate-level hardware configuration data.

18

18. The method of claim 17 , wherein, for each of the plurality of software variables: one of the wires in the corresponding dedicated set of wires indicates whether the respective software variable from the plurality of software variables has been computed; and the remaining wires in the corresponding dedicated set of wires indicates a value of the respective software variable from the plurality of software variables.

19

19. The method of claim 11 , wherein parsing the high-level software programming code comprises parsing code selected from C code, C++code, JAVA code, LISP code, BASIC code, Pascal code, COBOL code, and Fortran code.

20

20. The method of claim 11 , wherein the compiling is configured to: identify a function of the high-level software programming code; and map the function to a dedicated set of hardware resources in the gate-level hardware configuration data.

Patent Metadata

Filing Date

Unknown

Publication Date

June 25, 2013

Inventors

Paul Metzgen

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “Software-to-hardware compiler” (8473926). https://patentable.app/patents/8473926

© 2026 Patentable. All rights reserved.

Patentable is a research and drafting-assistant tool, not a law firm, and does not provide legal advice. Documents we generate are drafts for review by a licensed patent attorney.

Software-to-hardware compiler — Paul Metzgen | Patentable