Claims
- 1. A method for budgeting timing used in producing an integrated circuit design, said circuit design having register cells and combinational logic cells, said circuit design having a representation that is hierarchically decomposed into a top-level and a plurality of blocks, at least some of the plurality of said blocks being capable of being further hierarchically decomposed, said register cells and combinational logic cells having at least one cell pin, said blocks having boundaries, said block boundaries represented by at least one block pin, said method comprising:
optimizing at least one path, said path through a block pin, said optimization resulting in assigned gains for all said cells along said at least one path; performing timing analysis on said at least one path, said timing analysis using said assigned gains in order to generate arrival times for signals at said block pins; and deriving a timing budget by examining said generated arrival times at said block pins.
- 2. A method according to claim 1 further comprising:
buffering long nets between blocks.
- 3. A method according to claim 1 further comprising:
partitioning of said blocks into clusters.
- 4. A method according to claim 3 further comprising:
placing of said clusters.
- 5. A method according to claim 4 further comprising:
placing of cells contained in said top-level and in said blocks.
- 6. A method according to claim 5 further comprising:
routing among said cells, if said cells are placed.
- 7. A method according to claim 1 wherein said optimizing includes:
zero-slack trimming to apportion slack along said at least one path.
- 8. A method according claim 7 wherein said zero-slack trimming comprises:
setting said assigned gains to nominal values; and obtaining slack values on each cell based on those assigned gains.
- 9. A method according to claim 8 further comprising:
adjusting said assigned gains on cells having slack values that diverge beyond a certain tolerance about a zero value; and repeating obtaining and adjusting until all cells have slack values within said certain tolerance about zero or until the assigned gains on cells have reached their limits.
- 10. A method according to claim 9 wherein adjusting includes:
reducing assigned gains on cells whose obtained slack value is negative; and increasing assigned gains on cells whose obtained slack value is positive.
- 11. A method according to claim 10 wherein the amount by which assigned gains are adjusted is proportional to the magnitude of the obtained slack value.
- 12. A method according to claim 11 wherein the amount by which assigned gains are adjusted is further related to the length of a critical path through the cell.
- 13. A method according to claim 7 wherein said trimming includes consideration of the effects of wire delays.
- 14. A method according to claim 7 wherein said trimming is preceded by at least one of step of structural optimization including remapping, architecture selection and speedup restructuring.
- 15. A method according to claim 1 wherein said timing budget at said block pins is derived by preserving from said timing analysis arrival times at block inputs and required times at block outputs.
- 16. A method according to claim IS wherein said input arrival times and output required times are considered by including definitions of reference clocks in said timing budget.
- 17. A method according to claim 1 wherein said timing budget includes at least one of user-specified constants, derived constants, and constraints representing limits and margins.
- 18. A method according to claim 1 wherein said timing budget also includes path exceptions.
- 19. A method according to claim 18 wherein path exceptions includes false paths, multi-cycle paths and paths constrained to have specified delay limits.
- 20. A method according to claim 19 wherein path exceptions that refer to pins outside said blocks are modified to refer to marks that uniquely correspond to external pins or groups of pins.
- 21. A method according to claim 20 wherein separate arrival times are specified at each block boundary for each possible combination of marks that can correspond to pins in the fan-in set of the block input.
- 22. A method according to claim 20 wherein separate required times are specified at each block output for each possible combinations of marks that can correspond to pins in the fan-in set of the block output.
- 23. A method according to claim 1 further comprising:
reading in a set of inputs related to the design.
- 24. A method according to claim 23 wherein optimizing includes:
optionally making an abstraction of said blocks; and processing said set of inputs to create supercells.
- 25. A method according to claim 23 wherein said set of inputs includes at least one of an initial netlist, a description of a cell library, a description of process technology to be employed, and timing constraints for the top-level netlist.
- 26. An article comprising a computer readable medium having instructions stored thereon to implement A method for budgeting timing used in producing an integrated circuit design, said circuit design having register cells and combinational logic cells, said circuit design having a representation that is hierarchically decomposed into a top-level and a plurality of blocks, at least some of the plurality of said blocks being capable of being further hierarchically decomposed, said register cells and combinational logic cells having at least one cell pin, said blocks having boundaries, said block boundaries represented by at least one block pin, said instructions when executed causing:
optimizing at least one path, said path through a block pin, said optimization resulting in assigned gains for all said dells along said at least one path; performing timing analysis on said at least one path, said timing analysis using said assigned gains in order to generate arrival times for signals at said block pins; and deriving a timing budget by examining said arrival times at said block pins.
- 27. The article according to claim 26 further causing:
buffering long nets between blocks.
- 28. The article according to claim 26 further causing:
partitioning of said blocks into clusters.
- 29. The article according to claim 28 further causing:
placing of said clusters if any.
- 30. The article according to claim 29 further causing:
placing of cells contained in said top-level and said blocks.
- 31. The article according to claim 30 further causing:
routing among said cells, if said cells are placed.
- 32. The article according to claim 26 wherein said optimizing includes:
zero-slack trimming to apportion slack along said at least one path.
- 33. The article according claim 32 wherein said zero-slack trimming comprises:
setting said assigned gains to nominal values; and obtaining slack values on each cell based on those assigned gains.
- 34. The article according to claim 33 further causing:
adjusting said assigned gains on cells having slack values that diverge beyond a certain tolerance about a zero value; and repeating obtaining and adjusting until all cells have slack values within said certain tolerance about zero or until the assigned gains on cells have reached their limits.
- 35. The article according to claim 34 wherein adjusting includes:
reducing assigned gains on cells whose obtained slack value is negative; and increasing assigned gains on cells whose obtained slack value is positive.
- 36. The article according to claim 35 wherein the amount by which gains are adjusted is proportional to the magnitude of the obtained slack value.
- 37. The article according to claim 36 wherein the amount by which assigned gains are adjusted is further related to the length of a critical path through the cell.
- 38. The article according to claim 32 wherein said trimming includes the effects of wire delays.
- 39. The article according to claim 32 wherein said trimming is preceded by at least one of step of structural optimization including remapping, architecture selection and speedup restructuring.
- 40. The article according to claim 1 wherein said timing budget at said block pins is derived by preserving from said timing analysis arrival times at block inputs and required times at block outputs.
- 41. The article according to claim 40 wherein said input arrival times and output required times are considered by including definitions of reference clocks in said timing budget.
- 42. The article according to claim 26 wherein said timing budget includes at least one of user-specified constants, derived constants, and constraints representing limits and margins.
- 43. The article according to claim 26 wherein said timing budget also includes path exceptions.
- 44. The article according to claim 43 wherein path exceptions includes false paths, multi-cycle paths and paths constrained to have specified delay limits.
- 45. The article according to claim 44 wherein path exceptions that refer to pins outside the module are modified to refer to marks that uniquely correspond to external pins or groups of pins.
- 46. The article according to claim 45 wherein separate arrival times are specified at each module input for each possible combination of marks that can correspond to pins in the fan-in set of the module input.
- 47. The article according to claim 45 wherein separate required times are specified at each module output for each possible combinations of marks that can correspond to pins in the fan-in set of the module output.
- 48. The article according to claim 26 further comprising:
reading in a set of inputs related to the design.
- 49. The article according to claim 26 wherein optimizing includes:
optionally making an abstraction of said blocks; and processing said set of inputs to create supercells.
- 50. The article according to claim 49 wherein said set of inputs includes at least one of an initial netlist, a description of a cell library, a description of process technology to be employed, and timing constraints for the top-level netlist.
- 51. The method according to claim 1 wherein said blocks can be represented by one or more abstractions.
- 52. The article according to claim 26 wherein said blocks can be represented by one or more abstractions.
- 53. The method according to claim 1 wherein said optimizing is performed in a concurrent fashion among all paths that cross block boundaries.
- 54. The article according to claim 26 wherein said optimizing is performed in a concurrent fashion among all paths that cross block boundaries.
CROSS-REFERENCE TO RELATED APPLICATION(S)
[0001] This application claims priority from a provisional patent application entitled “Method for Generating Design Constraints for Modules in a Hierarchical Integrated Circuit Design System”, filed on Jun. 8, 2001, and bearing Ser. No. 60/296,792.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60296792 |
Jun 2001 |
US |