# Coverage Fulfillment Automation in Hardware Functional Verification Using Genetic Algorithms
## 4 Results
### Coverage Collection for ALUI Operating as an Accumulator
\begin{table}
\begin{tabular}{c c} \hline \hline
**Version of GA** & **Characteristics of Genetic Algorithms-Based Approach** \\ \hline \multirow{6}{*}{**Version 2** (compared with v1)} & \multirow{6}{*}{the data contained by each individual are stored in this order: the first value of operand A, the first value of operand B, the second value of operand B, \(\ldots\)., the 20 th value of operand B, the first code of operator, the second code of operator, \(\ldots\). The 20 th code of operator. \\  & \multirow{2}{*}{the best 20\% of parents are copied as children, then these parents are not recombined anymore} \\  & & the crossover is done using two breaking points: one breaking point is set to split the values of operands B into two datasets, and one breaking point is set to split the values of the operators into two datasets, as can be seen in Figure 7. Thus, many children are generated by combining these datasets. \\ \hline
**Version 2.1** (compared with v2) & \multirow{2}{*}{the individuals copied from one generation to another are combined and generate children} \\ \hline
**Version 3** (compared with v2.1) & \multirow{2}{*}{this version is identical with v2.1; the code was not changed in functionality, only modified for better control using parameters} \\ \hline
**Version 3.05** (compared with v3) & \multirow{2}{*}{the best parents are not copied as children; instead, the children are obtained only by crossover, and can be modified by mutation.} \\ \hline
**Version 3.1** (compared with v3) & \multirow{2}{*}{now. the parents are combined in random order (until now, parent 1 was combined with parent 2, parent 2 was combined with parent 3, etc.)} \\  & \multirow{2}{*}{the children who are identical with one of their parents are ignored; therefore, two parents can have no children; if after all crossover processes the minimum number of children (the size of population) is less than n\(\_\)pop, new random individuals are generated} \\ \hline
**Version 3.3** (compared with v3) & \multirow{2}{*}{mutation coefficient is not 2% anymore; rather, it increases proportionally with iterations from 0 to 1} \\ \hline \hline \end{tabular}
\end{table} 
Table 1: _Cont._  
Figure 7: Breaking points (sometimes called crossover points) in the structure of individuals from v2. * Index of the first individual (first set of stimuli) to obtain the maximum coverage value
* Index of the generation (iteration) when at least 50% of parents obtained the maximum coverage value
* Index of the generation when all individuals obtained the maximum coverage value; as in all cases it is possible that multiple identical parents exist, the percentage of identical parents was diminished in approach v3.2  
Situations that were not reachable under the corresponding approach are marked in tables with n/a. When the values range of the result was split into ten parts, the coverage target was reached easily using constrained verification (random generations), as well. The advantage of a genetic algorithm can be considered as the convergence reached by v2 and v2.1 to the global maximum (100% coverage fulfillment for all individuals after 3 or 7 generations). However, these program versions allow multiple identical parents to be generated, and only a few unique stimuli sequences may have been obtained.