Claims
- 1. A method for a data-driven decomposition based synthesis of VLSI systems, comprising:
converting an input circuit program into an intermediate Dynamic Single Assignment (DSA) form; performing a projection process to decompose said intermediate DSA into smaller concurrent process modules; and clustering said concurrent process modules whereby small concurrent process modules are optimally grouped to produce a final decomposition.
- 2. The method of claim 1 wherein said converting further comprises:
removing initial actions from said input program whereby initial actions are rewritten into the main loop of said input program; and removing state variables from said input program whereby new buffers are created to replace state variables in said input program.
- 3. The method of claim 1 wherein said converting further comprises:
extracting arrays in said input program into separate processes.
- 4. The method of claim 1 wherein said converting further comprises:
handling multiple assignments to variables in said input program, whereby multiple assignments to a variable are converted to assignments to a series of new variables.
- 5. The method of claim 5 wherein said series of new variables are index-numbered according to order of appearance in said input program.
- 6. The method of claim 1 wherein said converting further comprises:
handling straightline programs in said input program, whereby multiple assignments in a straight line series in said input program are rewritten into assignments to a series of new variables; and handling selection statements in said input program, whereby multiple assignments in the guarded commands in said input program are rewritten into assignments to a series of new variables.
- 7. The method of claim 1 wherein said performing a projection process further comprises:
constructing a plurality of dependence sets, wherein a dependence set is created for each variable assignment in said intermediate DSA.; adding a plurality of copy variables and intermediate channels to said input program; adding said copy variables and intermediate channels to a plurality of projection sets, wherein said projection sets are based on said dependence sets; using said projection sets to decompose code in said program into separate process modules.
- 8. The method of claim 1 wherein said converting further comprises:
creating conditional communications in said input program.
- 9. The method of claim 1 wherein said converting further comprises:
encoding guards in said input program.
- 10. The method of claim 1 wherein said clustering comprises:
repeatedly clustering said modules along the critical path of the system of said program in series until said modules are too large to be implemented as a single pre-charge half-buffer (PCHB) stages; running a global optimization algorithm to both cluster said modules in parallel and add slack-matching buffers.
- 11. The method of claim 10 wherein said repeatedly clustering comprises:
using a plurality criteria to determine the upper limit of the number of modules clustered.
- 12. The method of claim 10 wherein said repeatedly clustering comprises:
clustering modules in sequence.
- 13. The method of claim 10 wherein said repeatedly clustering comprises:
clustering modules in parallel.
- 14. A computer program product comprising:
a computer usable medium having computer readable program code embodied therein configured to perform data-driven decomposition for the synthesis of VLSI systems, said computer program product comprising: computer readable code configured to cause a computer to convert an input circuit program into an intermediate Dynamic Single Assignment (DSA) form; computer readable code configured to cause a computer to perform a projection process to decompose said intermediate DSA into smaller concurrent process modules; and computer readable code configured to cause a computer to cluster said concurrent process modules whereby small concurrent process modules are optimally grouped to produce a final decomposition.
- 15. The computer program product of claim 14 wherein said computer readable code configured to cause a computer to convert further comprises:
computer readable code configured to cause a computer to remove initial actions from said input program whereby initial actions are rewritten into the main loop of said input program; and computer readable code configured to cause a computer to remove state variables from said input program whereby new buffers are created to replace state variables in said input program.
- 16. The computer program product of claim 14 wherein said computer readable code configured to cause a computer to convert further comprises:
computer readable code configured to cause a computer to extract arrays in said input program into separate processes.
- 17. The computer program product of claim 14 wherein said computer readable code configured to cause a computer to convert further comprises:
computer readable code configured to cause a computer to handle multiple assignments to variables in said input program, whereby multiple assignments to a variable are converted to assignments to a series of new variables.
- 18. The computer program product of claim 17 wherein said series of new variables are index-numbered according to order of appearance in said input program.
- 19. The computer program product of claim 14 wherein said computer readable code configured to cause a computer to convert further comprises:
computer readable code configured to cause a computer to handle straightline programs in said input program, whereby multiple assignments in a straight line series in said input program are rewritten into assignments to a series of new variables; and computer readable code configured to cause a computer to handle selection statements in said input program, whereby multiple assignments in the guarded commands in said input program are rewritten into assignments to a series of new variables.
- 20. The computer program product of claim 14 wherein said computer readable code configured to cause a computer to perform a projection process further comprises:
computer readable code configured to cause a computer to construct a plurality of dependence sets, wherein a dependence set is created for each variable assignment in said intermediate DSA.; computer readable code configured to cause a computer to add a plurality of copy variables and intermediate channels to said input program; computer readable code configured to cause a computer to add said copy variables and intermediate channels to a plurality of projection sets, wherein said projection sets are based on said dependence sets; computer readable code configured to cause a computer to use said projection sets to decompose code in said program into separate process modules.
- 21. The computer program product of claim 14 wherein said computer readable code configured to cause a computer to convert further comprises:
computer readable code configured to cause a computer to create conditional communications in said input program.
- 22. The computer program product of claim 14 wherein said computer readable code configured to cause a computer to convert further comprises:
computer readable code configured to cause a computer to encode guards in said input program.
- 23. The computer program product of claim 14 wherein said computer readable code configured to cause a computer to cluster further comprises:
computer readable code configured to cause a computer to repeatedly cluster said modules along the critical path of the system of said program in series until said modules are too large to be implemented as a single pre-charge half-buffer (PCHB) stages; computer readable code configured to cause a computer to run a global optimization algorithm to both cluster said modules in parallel and add slack-matching buffers.
- 24. The computer program product of claim 23 wherein said computer readable code configured to cause a computer to repeatedly cluster further comprises:
computer readable code configured to cause a computer to use a plurality criteria to determine the upper limit of the number of modules clustered.
- 25. The computer program product of claim 23 wherein said computer readable code configured to cause a computer to repeatedly cluster further comprises:
computer readable code configured to cause a computer to cluster modules in sequence.
- 26. The computer program product of claim 23 wherein said computer readable code configured to cause a computer to repeatedly cluster further comprises:
computer readable code configured to cause a computer to cluster modules in parallel.
- 27. An apparatus for a data-driven decomposition for the synthesis of VLSI systems, comprising:
a converter component for converting an input circuit program into an intermediate Dynamic Single Assignment (DSA) form; a projection component for decomposing said intermediate DSA into smaller concurrent process modules; and a clustering component for clustering said concurrent process modules whereby small concurrent process modules are optimally grouped to produce a final decomposition.
- 28. The apparatus of claim 27 wherein said converter component further comprises:
an analytical component for removing initial actions from said input program whereby initial actions are rewritten into the main loop of said input program and removing state variables from said input program whereby new buffers are created to replace state variables in said input program.
- 29. The apparatus of claim 27 wherein said converter component further comprises:
an analytical component for extracting arrays in said input program into separate processes.
- 30. The apparatus of claim 27 wherein said converter component further comprises:
an analytical component for handling multiple assignments to variables in said input program, whereby multiple assignments to a variable are converted to assignments to a series of new variables.
- 31. The apparatus of claim 30 wherein said series of new variables are index-numbered according to order of appearance in said input program.
- 32. The apparatus of claim 27 wherein said converter component further comprises:
an analytical component for handling straightline programs in said input program, whereby multiple assignments in a straight line series in said input program are rewritten into assignments to a series of new variables and for handling selection statements in said input program, whereby multiple assignments in the guarded commands in said input program are rewritten into assignments to a series of new variables.
- 33. The apparatus of claim 27 wherein said projection component further comprises:
a construction unit for constructing a plurality of dependence sets, wherein a dependence set is created for each variable assignment in said intermediate DSA.; a first adding unit for adding a plurality of copy variables and intermediate channels to said input program; a second adding unit for adding said copy variables and intermediate channels to a plurality of projection sets, wherein said projection sets are based on said dependence sets; a decomposition unit for using said projection sets to decompose code in said program into separate process modules.
- 34. The apparatus of claim 27 wherein said converter component further comprises:
an analytical component for creating conditional communications in said input program.
- 35. The apparatus of claim 27 wherein said converter component further comprises:
an analytical component for encoding guards in said input program.
- 36. The apparatus of claim 27 wherein said clustering component further comprises:
a clustering tool for repeatedly clustering said modules along the critical path of the system of said program in series until said modules are too large to be implemented as a single pre-charge half-buffer (PCHB) stages; an analytical component for running a global optimization algorithm to both cluster said modules in parallel and add slack-matching buffers.
- 37. The apparatus of claim 36 wherein said clustering tool uses a plurality criteria to determine the upper limit of the number of modules clustered.
- 38. The apparatus of claim 36 wherein said clustering tool clusters modules in sequence.
- 39. The apparatus of claim 36 wherein wherein said clustering tool clusters modules in parallel.
Parent Case Info
[0001] This application claims the benefit of United States Provisional Patent Application No. 60/435,502, filed on Dec. 19, 2002, the disclosure of which is hereby incorporated by reference.
Government Interests
[0002] The invention was made by an agency of the United States Government or under a contract with an agency of the United States Government. The name of the U.S. Government agency is DARPA and the Government contract number F29601-00K-0184.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60435502 |
Dec 2002 |
US |