Patent ID: 7729891

Claim:
A method for testing a design, comprising the steps of: in a verification system comprising a task coverage repository, a database, a test generator engine, an execution engine, and a validation engine; using the task coverage repository for: enumerating coverage tasks for testing the design; using a database for: storing a behavioral model of the design suitable for automated processing by a test generator engine; and storing a plurality of instances of tests and test parameters associated with the design, said test parameters associated with the coverage tasks; using the test generator engine for: receiving as input a first set of test parameters from the database; defining a testing strategy by developing the behavioral model according to the test parameters using coverage-directed test generation; accumulating coverage data by running a set of tests on the design, using a first set of the test parameters, said set of tests being candidates for inclusion in an optimized regression suite; and receiving a second set of test parameters from the database, said second set different from the first set of test parameters; determining probabilities of covering respective ones of the coverage tasks, said determining step comprising: computing probabilities for each of the coverage tasks with the second set of test parameters, wherein each probability is a probability of covering the coverage tasks in a simulation that uses the second set of test parameters; wherein for each simulation there is determined a probability distribution for the probability that the tasks are covered; and constructing an optimization problem based on the computed probabilities and the distribution; and using the execution engine for: automatically selecting a first subset of the sets of tests in the task-coverage repository to define an optimized regression suite, the step of automatically selecting comprising: selecting the first subset, resulting in a set of simulations which is a regression suite; and executing the first subset responsively to the optimization problem, using a validation engine for: determining whether a solution to the optimization problem was obtained given a set of constraints; resetting conditions for the optimization problem by selecting a second subset of the set of tests to allow at least one of the constraints to be violated if no solution was obtained; and imposing a penalty for each constraint violation; and using the test generator for re-computing the optimization problem by running the second subset of the tests on the design.