Machine learning applied to GPU test generation
Abstract
Denne oppgaven har undersøkt hvordan finne effektiv tester og stimuli for simulerings basert verifikasjons av digital kretser. Nåværende metoder er baseres på avgrenset tilfeldig simulering og menneskelig involvering. Dette resultere in tidkrevende og arbeids krevende prosess for å forsikre seg om at hele kretsen er testet. Det mangler vel etablerte metoder for å optimalisere denne prosessen med maskinlæring.
Denne oppgaven foreslår en ny metode for å optimalisere avgrenset tilfeldig simulering. Dette systemet er bygget på Bayesiansk optimalisering som skal optimalisere vekter inne i testbenken. På grunn av de nåværende begrensingen til Bayesiansk optimalisering har vi også laget en måte å skalere antall vekter systemet kan kontrollere. Systemet har blitt testet på to ulike enheter for ulike scenarier.
Resultatene viser at metoden ikke hadde noen store forbedringer over tilfeldig testing på de to enhetene når den er brukt fritt stående. Når brukt sammen med et menneske viste systemet en betydelig forbedring over tilfeldig stimuli og var også bedre en avgrenset tilfeldig simulering. Når ingen metode for skalering av antall vekter var brukt viste systemet at det ikke økte kjøretiden sammenlignet med tilfeldig stimuli.
Testingen viser at maskinlæring systemet basert på Bayesiansk optimalisering kan gi en forbedring over tilfeldig verifikasjon. Det finnes imidlertid ulemper slik som at det ikke gir noe forbedring over tilfeldig verifikasjon uten ekstra menneskelig hjelp. Resultater ved bruke av skalerings metoder viser at disse ikke fungere og gir like resultat med tilfeldig verifikasjon. Testingen på de to enheten viser at forbedringer kan varier fra enhet til enhet avhengig av funksjonaliteten til enheten. Uten videre utvikling av systemet kan det bare brukes som et hjelpe middel for en verifikasjon ingeniør. This thesis has investigated how to produce and find efficient stimuli for simulation-based verification of digital circuits. The current state-of-the-art verification still relies heavily on random constrained verification and human involvement in the verification process. This results in tedious work or the need to simulate many tests to ensure good design coverage; this process is time-consuming and costly. Currently, very few methods exist, allowing this process to be optimized with machine learning.
This thesis proposes and implements a complete system for optimizing random-constrained verification. It utilizes Bayesian optimization to optimize the weights assigned inside the testbench. Because of the current limitations of Bayesian optimization, we have also implemented a way to scale the maximum number of weights the system can control. The system is tested on two devices to verify its capabilities. Both absolute coverage numbers and compute costs have been measured during testing for different scenarios and configurations.
Results show that the method generally performed as well as random verification on our test devices. However, it can be used with human input and produce a considerable increase over random while also doing slightly better than constrained random. It is just as efficient as random verification when not using any form of scaling to allow the system to control more weights.
The key finding of this thesis is that a machine learning system based on Bayesian optimization can improve over random verification. However, some downsides remain, such as not performing better than random without additional input or when used with the proposed scaling solution to allow for control of additional weights functions badly. The limited testing on two devices shows that improvement can be device-specific, depending on functionality. It can aid the verification process, yielding a slight coverage increase in its current form.