Claims
- 1. A method for compiling a cycle-based design comprising:
generating a parsed cycle-based design from the cycle-based design; elaborating the parsed cycle-based design to an annotated syntax tree; translating the annotated syntax tree to an intermediate form; and converting the intermediate form to an executable form.
- 2. The method of claim 1, wherein the cycle-based design represents a hardware description language.
- 3. The method of claim 2, wherein the hardware description language comprises a hierarchical collection of modules.
- 4. The method of claim 3, wherein a plurality of variables at different levels of the hierarchical collection of modules represent a common variable.
- 5. The method of claim 2, wherein the hardware description language is Verilog.
- 6. The method of claim 5, wherein the cycle-based design comprises a clocked logic design having at least one periodic clock source.
- 7. The method of claim 6, wherein the cycle-based design allows an initialization of a variable.
- 8. The method of claim 7, wherein the initialization of the variable is performed by an external simulation control system.
- 9. The method of claim 7, wherein a change to the variable may cause an execution of at least one dependent component and the propagation of a value.
- 10. The method of claim 1, further comprising:
representing the cycle-based design in an external symbol table.
- 11. The method of claim 10, further comprising:
using the external symbol table with an external simulation control system.
- 12. The method of claim 1, wherein converting the intermediate form to an executable form comprises:
applying predicates for control conversion to transform the intermediate form into a straight-line process; mapping at least one node of the intermediate form to an operation of an execution processor; applying flow optimization to the intermediate form; scheduling the sequence of a plurality of instructions associated with the intermediate form; mapping intermediate form operations of the intermediate form to instructions of the execution processor; assembling instructions of the execution processor.
- 13. The method of claim 12, further comprising:
partitioning the intermediate form into a plurality of parallel segments.
- 14. The method of claim 13, wherein partitioning comprises a coarsening phase, an initial partitioning phase, and an uncoarsening and refinement phase.
- 15. The method of claim 13, further comprising:
adding a message passing instruction to the plurality of parallel segments.
- 16. The method of claim 15, further comprising:
generating routing instructions for the message passing instruction to traverse a multiprocessor system.
- 17. The method of claim 12, further comprising:
allocating storage for variables associated with the intermediate form.
- 18. The method of claim 1, wherein the parsed cycle-based design models a logic design as an object-oriented data structure having reference objects and instance objects, the reference objects providing static attributes, the instance objects providing attributes of at least one point of invocation, and wherein a plurality of the instance objects share the attributes of one of the reference objects.
- 19. The method of claim 4, further comprising:
combining the plurality of variables into a single variable.
- 20. The method of claim 12, wherein applying predicates for control conversion comprises:
eliminating at least one internal branch.
- 21. The method of claim 1, further comprising:
recognizing a three state subset of a four state logic computation; and producing executable code specialized for the three state subset.
- 22. The method of claim 1, further comprising:
recognizing a two state subset of a four state logic computation; and producing executable code specialized for the two state subset.
- 23. The method of claim 1, wherein the cycle-based design models a design net having multiple driving sources, further comprising:
inserting a phantom gate, wherein the phantom gate resolves multiple signal logic states.
- 24. The method of claim 1, further comprising:
levelizing the annotated syntax tree; and sorting the annotated syntax tree.
- 25. The method of claim 24, wherein sorting allows a single evaluation of logical components.
- 26. The method of claim 24, wherein sorting comprises:
sorting the annotated syntax tree into a clock logic design class, a sequential logic design class, and a combinatorial logic design class.
- 27. The method of claim 1, wherein elaborating comprises:
examining a plurality of modules; marking any module used by any other module as a child module; and identifying a root module candidate, if one of the plurality of modules is unmarked.
- 28. The method of claim 1, wherein the cycle-based design comprises a plurality of design logic instructions.
- 29. The method of claim 28, wherein the compiler partitions the design logic instructions among a plurality of memory elements in a hardware simulation system.
- 30. The method of claim 1, wherein the cycle-based design has a plurality of bit level operations, and wherein the compiler generates executable code to evaluate the plurality of bit level operations simultaneously.
- 31. The method of claim 1, further comprising:
detecting a procedure call outside the cycle-based design; and recording in a data structure required at run time to interpret the procedure call.
- 32. A method for compiling a cycle-based design comprising:
generating a parsed cycle-based design from the cycle-based design; elaborating the parsed cycle-based design to an annotated syntax tree; translating the annotated syntax tree to an intermediate form; converting the intermediate form to an executable form; representing the cycle-based design in an external symbol table; levelizing the annotated syntax tree; sorting the annotated syntax tree; detecting a procedure call outside the cycle-based design; and recording in a data structure required at run time to interpret the procedure call.
- 33. A method for compiling a cycle-based design comprising:
generating a parsed annotated syntax tree from the cycle-based design; inferring a logic type from parsed annotated syntax tree for each of a plurality of logic components; elaborating the plurality of logic components to construct a design logic comprising a hierarchical design tree and a flattened design connectivity; levelizing the design logic to schedule execution order of logical components using the flattened design connectivity; translating the parsed annotated syntax tree and levelized flattened design connectivity into an intermediate form operation; assigning each intermediate form operation to an execution processor; ordering of the intermediate form operation within the assigned execution processor; generating routing instructions for a message passing instruction to traverse a multiprocessor system; converting the intermediate form operation into an annotated symbol table; and converting the intermediate operation into executable form.
- 34. The method of claim 33, wherein the cycle-based design represents a hardware description language.
- 35. The method of claim 34, wherein the hardware description language comprises a hierarchical collection of modules.
- 36. The method of claim 34, wherein the hardware description language is Verilog.
- 37. The method of claim 33, wherein the logic type comprises clock logic, sequential logic, data logic, and initial logic.
- 38. A method for levelization of a cycle-based design, comprising
collecting a plurality of simulated components by a logic type; identifying a design constraint violation in the cycle-based design; and sorting the plurality of simulated components according to the logic type into a component list; wherein sorting determines an execution order of the plurality of simulated components whereby each of the plurality of simulated components are evaluated only once per simulation clock cycle.
- 39. The method of claim 38, further comprising:
correcting the cycle-based design if the design constraint violation is identified in the cycle-based design.
- 40. The method of claim 38, wherein the logic type comprises clock logic, sequential logic, data logic, and initial logic.
- 41. A compiler comprising:
a design analyzer configured to generate a parsed cycle-based design from a cycle-based design; a design elaborator configured to expand the parsed cycle-based design to an annotated syntax tree; a translator configured to translate the annotated syntax tree to an intermediate form; and a code generator configured to convert the intermediate form to an executable form.
- 42. The compiler of claim 41, wherein the cycle-based design is represented as a hierarchical collection of modules.
- 43. The compiler of claim 42, wherein a plurality of variables at different levels of the hierarchical collection of modules represent a common variable.
- 44. The compiler of claim 41, wherein the cycle-based design is written in a hardware description language.
- 45. The compiler of claim 44, wherein the hardware description language is Verilog.
- 46. The compiler of claim 41, wherein the cycle-based design represents a clocked logic design having at least one periodic clock source.
- 47. The compiler of claim 41, wherein the cycle-based design allows an initialization of a variable.
- 48. The compiler of claim 47, wherein the initialization of the variable is performed by an external simulation control system.
- 49. The compiler of claim 47, wherein a value assigned to the variable automatically propagates to at least one dependent variable.
- 50. The compiler of claim 49, wherein a change to the variable may cause an execution of at least one dependant component.
- 51. The compiler of claim 41, further comprising:
an external symbol table configured to represent the cycle-based design.
- 52. The compiler of claim 51, further comprising:
an external simulation control system configured to be used with the external symbol table.
- 53. The compiler of claim 41, wherein the code generator further comprises:
a control flow converter configured to transform the intermediate form into a straight-line process; a node mapper configured to map at least one node of the intermediate form to an operation of an execution processor; a flow optimizer configured to apply flow optimization to the intermediate form; a scheduler configured to schedule a sequence of a plurality of instructions associated with the intermediate form; an instruction mapper configured to map intermediate form operations of the intermediate form to instructions of the execution processor; and an assembler configured to assemble instructions for the execution processor.
- 54. The compiler of claim 53, further comprising:
a partitioner configured to partition the intermediate form into a plurality of parallel segments.
- 55. The compiler of claim 54, wherein the partitioner uses a multilevel approach comprising a coarsening phase, an initial partitioning phase, and an uncoarsening and refinement phase.
- 56. The compiler of claim 53, further comprising:
message passing instructions configured to be added to the segments.
- 57. The compiler of claim 56, further comprising:
routing instructions configured to be generated for the messages to traverse a multiprocessor system.
- 58. The compiler of claim 53 further comprising:
storage for variables associated with the intermediate form configured to be allocated.
- 59. The compiler of claim 41, wherein the parsed cycle-based design models a logic design as an object-oriented data structure having reference objects and instance objects, the reference objects providing static attributes, the instance objects providing attributes of at least one point of invocation, and wherein a plurality of the instance objects share the attributes of one of the reference objects.
- 60. The compiler of claim 41, wherein the cycle-based design models a design net having multiple driving sources, further comprising:
a phantom gate configured to be inserted, wherein the phantom gate resolves multiple signal logic states.
- 61. The compiler of claim 41, wherein the elaborator comprises:
an examiner configured to examine a plurality of modules; a marker configured to mark at least one child module; a root module configured to be identified, if one of the plurality of modules is unmarked; and a determiner configured to determine a hierarchical depth of a plurality of unmarked modules, if more than one of the plurality of modules is unmarked.
- 62. The compiler of claim 41, wherein the cycle-based design represents a memory.
- 63. The compiler of claim 62, wherein the compiler partitions the memory among a plurality of memory elements in a target system.
- 64. The compiler of claim 41, wherein the cycle-based design has a plurality of bit level operations, and wherein the compiler generates executable code to evaluate the plurality of bit level operations simultaneously.
- 65. A computer system to compile a cycle-based design, comprising:
a processor; a memory; an input means; a display device; and software instructions stored in the memory for enabling the computer system under control of the processor, to perform:
generating a parsed cycle-based design from the cycle-based design; elaborating the parsed cycle-based design to an annotated syntax tree; translating the annotated syntax tree to an intermediate form; and converting the intermediate form to an executable form.
- 66. A computer system to compile a cycle-based design, comprising:
a processor; a memory; an input means; a display device; and software instructions stored in the memory for enabling the computer system under control of the processor, to perform:
generating a parsed annotated syntax tree from the cycle-based design; inferring a logic type from parsed annotated syntax tree for each of a plurality of logic components; elaborating the plurality of logic components to construct a design logic comprising a hierarchical design tree and a flattened design connectivity; levelizing the design logic to schedule execution order of logical components using the flattened design connectivity; translating the parsed annotated syntax tree and levelized flattened design connectivity into an intermediate form operation; assigning each intermediate form operation to an execution processor; ordering of the intermediate form operation within the assigned execution processor; generating routing instructions for a message passing instruction to traverse a multiprocessor system; converting the intermediate form operation into an annotated symbol table; and converting the intermediate operation into executable form.
- 67. A computer system for levelization of a cycle-based design, comprising:
a processor; a memory; an input means; a display device; and software instructions stored in the memory for enabling the computer system under control of the processor, to perform:
collecting a plurality of simulated components by a logic type; identifying a design constraint violation in the cycle-based design; and sorting the plurality of simulated components according to the logic type into a component list; wherein sorting determines an execution order of the plurality of simulated components whereby each of the plurality of simulated components are evaluated only once per simulation clock cycle.
- 68. An apparatus for compiling a cycle-based design comprising:
means for generating a parsed cycle-based design from the cycle-based design; means for elaborating the parsed cycle-based design to an annotated syntax tree; means for translating the annotated syntax tree to an intermediate form; and means for converting the intermediate form to an executable form.
- 69. An apparatus for compiling a cycle-based design comprising:
means for generating a parsed annotated syntax tree from the cycle-based design; means for inferring a logic type from parsed annotated syntax tree for each of a plurality of logic components; means for elaborating the plurality of logic components to construct a design logic comprising a hierarchical design tree and a flattened design connectivity; means for levelizing the design logic to schedule execution order of logical components using the flattened design connectivity; means for translating the parsed annotated syntax tree and levelized flattened design connectivity into an intermediate form operation; means for assigning each intermediate form operation to an execution processor; means for ordering of the intermediate form operation within the assigned execution processor; means for generating routing instructions for a message passing instruction to traverse a multiprocessor system; means for converting the intermediate form operation into an annotated symbol table; and means for converting the intermediate operation into executable form.
- 70. An apparatus for levelization of a cycle-based design, comprising
means for collecting a plurality of simulated components by a logic type; means for identifying a design constraint violation in the cycle-based design; and means for sorting the plurality of simulated components according to the logic type into a component list; wherein sorting determines an execution order of the plurality of simulated components whereby each of the plurality of simulated components are evaluated only once per simulation clock cycle.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims benefit of U.S. Provisional Application Serial No. 60/313,762, filed Aug. 20, 2001, entitled “Phasers-Compiler Related Inventions,” in the names of Liang T. Chen, Jeffrey Broughton, Derek Pappas, William Lam, Thomas M. McWilliams, Ihao Chen, Ankur Narang, Jeffrey Rubin, Earl T. Cohen, Michael Parkin, Ashley Saulsbury, and David R. Emberson.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60313762 |
Aug 2001 |
US |