Claims
- 1. A computer program product comprising a computer usable medium having an iterative looping construct that performs the actions of:
beginning loop processing; and performing independent parallel iterations of activities for the loop processing.
- 2. The computer program product of claim 1 in which the iterative looping construct captures all variables that are declared outside the loop and assigned within the loop.
- 3. The computer program product of claim 2 in which a scalar captured by the loop corresponds to an original value when the loop is entered, and wherein the scalar is reset to the original value on every iteration unless acted upon by an incremental assignment operator.
- 4. The computer program product of claim 3 in which the scalar corresponds to scalar variables from a simulation control language.
- 5. The computer program product of claim 3 in which the scalar corresponds to circuit parameters or simulator options.
- 6. The computer program product of claim 2 in which a scalar captured by the loop corresponds to an original value when the loop is entered, and wherein scalars captured by an incremental assignment operator are not returned to the original value upon exiting the loop.
- 7. The computer program product of claim 6 in which incremental assignment operators correspond to +=, −=, *=, or /=.
- 8. The computer program product of claim 6 in which a final value for the scalars captured by the incremental assignment operator is the results if all of the incremental operations were performed upon exit from the loop.
- 9. The computer program product of claim 2 in which a vector captured by the loop is resized to contain the same number of elements as iterates in the loop.
- 10. The computer program product of claim 9 in which each of the elements of the captured vector corresponds to an iterate.
- 11. The computer program product of claim 9 in which an iterate cannot access any element in the vector except the one that to which it corresponds.
- 12. The computer program product of claim 2 in which an array captured by the loop is visible as having one lower dimension within the loop than outside the loop.
- 13. The computer program product of claim 12 in which the one lower dimension within the loop is resized to have the same number of elements as iterates in the loop.
- 14. The computer program product of claim 13 in which a one-dimensional vector captured by the loop is visible as a scalar inside the loop.
- 15. The computer program product of claim 1 in which the iterative looping construct iterates over corner sets.
- 16. The computer program product of claim 1 in which the iterative looping construct, on each iteration, attaches a value of the loop variable for that iterate to the element associated with that iterate for each vector captured by the loop.
- 17. The computer program product of claim 1 in which the iterative looping construct attaches an iterate index and a total iteration count to the loop variable as attributes.
- 18. The computer program product of claim 1 in which the iterative looping construct knits the datasets generated within the loop into a family of datasets.
- 19. The computer program product of claim 1 in which the iterative looping construct runs each iterate in parallel without interference between the iterates.
- 20. The computer program product of claim 1 in which data values from parallel iterates are combined together.
- 21. The computer program product of claim 1 in which the iterative looping construct corresponds to a Foreach loop.
- 22. The computer program product of claim 21 in which an ouput is an array of data over a range of the loop variable.
- 23. The computer program product of claim 21 in which the Foreach loop comprises the following formats:
- 24. The computer program product of claim 21 in which the Foreach loop comprises the following format:
- 25. The computer program product of claim 21 in which the Foreach loop comprises the following format:
- 26. The computer program product of claim 1 in which the iterative looping construct comprises a search loop.
- 27. The computer program product of claim 26 in which the search loop comprises the following form:
- 28. The computer program product of claim 27 in which the first member is a target value of the iterate and the list is given as a vector of values, wherein the search begins at the first element of the list and continues towards the end of the list until it finds the first member that results in the condition being true.
- 29. The computer program product of claim 26 in which the search loop comprises the following form:
- 30. The computer program product of claim 26 in which members of the search list are determined dynamically during a search based on the progress of the search.
- 31. The computer program product of claim 26 in which a binary search is performed.
- 32. The computer program product of claim 1 in which the iterative looping construct performs Monte Carlo analysis.
- 33. The computer program product of claim 32 in which a number of trials in the Monte Carlo analysis is determined dynamically based on the results of the Monte Carlo analysis.
- 34. The computer program product of claim 33 in which the trials are determined dynamically.
- 35. The computer program product of claim 1 further comprising re-dimensioning one or more arrays associated with the loop processing.
- 36. The computer program product of claim 1 in which each of the parallel iterations are completely independent from other iterations.
- 37. The computer program product of claim 36 in which any particular iterate cannot access results computed by another iterate.
- 38. The computer program product of claim 1 in which the parallel iterations of the activities comprise simulation activities.
- 39. The computer program product of claim 1 in which the iterative looping construct is executed in a scripting language.
- 40. The computer program product of claim 1 further comprising restoring scalar values for the loop processing.
- 41. A method for executing a measurement in parallel, comprising:
receiving a statement to run measurement; determining whether multiple measurements are to be executed; identifying whether conditions are specified; determining whether previous values are to be used; executing one or more measurements; and generating results.
- 42. The method of claim 41 in which the parallel executions are independent from each other.
- 43. The method of claim 41 in which the method is executed from a scripting language.
- 44. The method of claim 41 in which multiple measurements are run in parallel;
- 45. The method of claim 41 further comprising determining whether to execute a single measurement in parallel iterative blocks.
- 46. A method for implementing parallel execution of an independent parameterized measurement block, comprising:
configuring a test fixture; specifying stimuli for the test fixture; performing simulation upon the test fixture in parallel; analyzing results to compute a desired performance metric; and generating results from analyzing the results.
- 47. The method of claim 46 in which the independent parameterized measurement block does not interfere with other independent parameterized measurement block.
- 48. The method of claim 46 in which direct access to a circuit design topology and components from within independent parameterized measurement block is prevented.
- 49. The method of claim 48 in which direct access to nodes, instances, models, or specific circuit parameters are prevented.
- 50. The method of claim 48 in which nodes, instances, models, or specific circuit parameters are accessed using pointers or references to the objects passed into the measurement through parameters.
- 51. The method of claim 48 in which access is permitted to generic circuit parameters.
- 52. The method of claim 51 in which the generic circuit parameter comprises temperature.
- 53. The method of claim 46 in which the measurement contains calls to other measurements.
- 54. The method of claim 46 in which circuit design topology and components are accessed using pointers or references to the topology and components passed into the measurement through parameters.
- 55. The method of claim 54 in which in which the independent parameterized measurement block uses indirect access to circuit elements through parameters in a manner that is independent of the specific circuit is being measured.
- 56. The method of claim 54 in which the indirect access is to implement configuring of test benches, setting of stimuli, configuring of circuit under test, or probing of signals.
- 57. The method of claim 46 in which an input to the independent parameterized measurement block is independent.
- 58. The method of claim 46 in which the input comprises a global variable.
- 59. The method of claim 46 in which the global variable is copied to a local variable.
- 60. The method of claim 46 in which an output for the independent parameterized measurement block is independent.
- 61. The method of claim 46 in which the output is stored in a storage location that is separate from outputs for other independent parameterized measurement blocks.
- 62. A computer program product comprising a computer usable medium having executable code to execute a process for implementing parallel execution of an independent parameterized measurement block, the process comprising:
configuring a test fixture; specifying stimuli for the test fixture; performing simulation upon the test fixture in parallel; analyzing results to compute a desired performance metric; and generating results from analyzing the results.
- 63. A system for implementing parallel execution of an independent parameterized measurement block, comprising:
means for configuring a test fixture; means for specifying stimuli for the test fixture; means for performing simulation upon the test fixture in parallel; means for analyzing results to compute a desired performance metric; and means for generating results from analyzing the results.
- 64. A system for executing a measurement in parallel, comprising:
means for receiving a statement to run measurement; means for determining whether multiple measurements are to be executed; means for identifying whether conditions are specified; means for determining whether previous values are to be used; means for executing one or more measurements; and generating results.
- 65. A computer program product comprising a computer usable medium having executable code to execute a process for executing a measurement in parallel, the process comprising:
receiving a statement to run measurement; determining whether multiple measurements are to be executed; identifying whether conditions are specified; determining whether previous values are to be used; executing one or more measurements; and generating results.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] The present application claims priority to U.S. Provisional Application Serial No. 60/434,295, filed on Dec. 17, 2002, which is hereby incorporated by reference in its entirety.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60434295 |
Dec 2002 |
US |