Random code generation using genetic algorithms
First Claim
1. In a system including a circuit design and a plurality of configuration files, the plurality of configuration files including a plurality of knobs having a plurality of values specifying a plurality of probability distributions of a plurality of circuit input vectors, a method comprising steps of:
- (A) initializing a synthesized configuration file;
(B) selecting a first subset of the plurality of configuration files as a potential parent pool; and
(C) for each knob KP included in at least one of the plurality of configuration files in the potential parent pool, providing a synthesized value for knob KP in the synthesized configuration file based on at least one value of knob KP in the plurality of configuration files in the potential parent pool.
0 Assignments
0 Petitions
Accused Products
Abstract
Techniques are disclosed for automatically generating test instructions for use in testing a microprocessor design. A configuration file includes a plurality of knobs which specify a probability distribution of a plurality of microprocessor instructions. A random code generator takes the configuration file as an input and generates test instructions which are distributed according to the probability distribution specified by the knobs. The test instructions are executed on the microprocessor design. The microprocessor behaviors that are exercised by the test instructions are measured and a fitness value is assigned to the configuration file using a fitness function. The configuration file and its fitness value are added to a pool of configuration files. A configuration file synthesizer uses a genetic algorithm to synthesize a new configuration file from the pool of existing configuration files. This process may be repeated to generate configuration files which increasingly exercise microprocessor behaviors which are of interest.
-
Citations
34 Claims
-
1. In a system including a circuit design and a plurality of configuration files, the plurality of configuration files including a plurality of knobs having a plurality of values specifying a plurality of probability distributions of a plurality of circuit input vectors, a method comprising steps of:
-
(A) initializing a synthesized configuration file;
(B) selecting a first subset of the plurality of configuration files as a potential parent pool; and
(C) for each knob KP included in at least one of the plurality of configuration files in the potential parent pool, providing a synthesized value for knob KP in the synthesized configuration file based on at least one value of knob KP in the plurality of configuration files in the potential parent pool. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A system comprising:
-
a circuit design;
a plurality of configuration files, the plurality of configuration files including a plurality of knobs having a plurality of values specifying a plurality of probability distributions of a plurality of circuit input vectors;
means for initializing a synthesized configuration file;
first selection means for selecting a first subset of the plurality of configuration files as a potential parent pool; and
synthesizing means for providing a synthesized value in the synthesized configuration file for each knob KP included in at least one of the plurality of configuration files in the potential parent pool based on at least one value of knob KP in the plurality of configuration files in the potential parent pool. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. In a system including a circuit design and a plurality of configuration files, the plurality of configuration files including a plurality of knobs having a plurality of values specifying a plurality of probability distributions of a plurality of circuit input vectors, a method comprising steps of:
-
(A) initializing a synthesized configuration file;
(B) selecting a subset of the plurality of configuration files having the highest fitness values as a potential parent pool;
(C) randomly selecting a subset of the potential parent pool as a plurality of direct parents;
(D) for each knob KP included in at least one of the direct parents, providing a synthesized value for knob KP in the synthesized configuration file based on at least one value of knob KP in the plurality of direct parents. - View Dependent Claims (18, 19, 20, 21, 22)
-
-
23. A system comprising:
-
a circuit design;
a plurality of configuration files, the plurality of configuration files including a plurality of knobs having a plurality of values specifying a plurality of probability distributions of a plurality of circuit input vectors;
means for initializing a synthesized configuration file;
means for selecting a subset of the plurality of configuration files having the highest fitness values as a potential parent pool;
means for randomly selecting a subset of the potential parent pool as a plurality of direct parents;
synthesizing means for providing, for each knob KP included in at least one of the direct parents, a synthesized value for knob KP in the synthesized configuration file based on at least one value of knob KP in the plurality of direct parents. - View Dependent Claims (24, 25, 26, 27, 28)
-
-
29. In a system including a circuit design and a plurality of configuration files, the plurality of configuration files including a plurality of knobs having a plurality of values specifying a plurality of probability distributions of a plurality of circuit input vectors, a method comprising steps of:
-
(A) generating a first synthesized configuration file based on the plurality of configuration files, the first synthesized configuration file specifying a first synthesized probability distribution of a first subset of the plurality of circuit input vectors;
(B) using the first synthesized configuration file to generate a first test case comprising the first subset of the plurality of circuit input vectors;
(C) providing the first subset of the plurality of circuit input vectors as inputs to the circuit design;
(D) generating a fitness value based on at least one event counter in the microprocessor design, the at least one event counter comprising a count of at least one occurrence of at least one event in the microprocessor design in response to provision of the first subset of the plurality of circuit input vectors;
(E) generating a graded configuration file including the synthesized configuration file and the fitness value; and
(F) adding the graded configuration file to the plurality of configuration files. - View Dependent Claims (30, 31)
-
-
32. A system comprising:
-
a circuit design;
a plurality of configuration files, the plurality of configuration files including a plurality of knobs having a plurality of values specifying a plurality of probability distributions of a plurality of circuit input vectors;
means for generating a first synthesized configuration file based on the plurality of configuration files, the first synthesized configuration file specifying a first synthesized probability distribution of a first subset of the plurality of circuit input vectors;
means for using the first synthesized configuration file to generate a first test case comprising the first subset of the plurality of circuit input vectors;
means for providing the first subset of the plurality of circuit input vectors as inputs to the circuit design;
means for generating a fitness value based on at least one event counter in the microprocessor design, the at least one event counter comprising a count of at least one occurrence of at least one event in the microprocessor design in response to provision of the first subset of the plurality of circuit input vectors;
means for generating a graded configuration file including the synthesized configuration file and the fitness value; and
means for adding the graded configuration file to the plurality of configuration files. - View Dependent Claims (33, 34)
-
Specification