Many verification strategies have been proposed to identify unexpected behaviours in system-level implementations. However, when one of such behaviours is found, the verification engineer still has to understand its cause to fix the originating error. This requires a tedious and long process, generally based on manual inspection of the execution traces of the design under verification. Nevertheless, usually only a few instructions in the execution traces are relevant to understand the cause of the unexpected behaviour. To help the verification engineers identifying and focusing on such instructions, we present a tool that automatically removes the irrelevant ones. It works by combining dynamic program slicing with a clustering procedure on the execution traces corresponding to unexpected behaviours. Firstly, program slicing is applied to remove instructions not belonging to the cone of influence of the unexpected behaviour. Then, clusters of instructions based on store operations at the LLVM intermediate representation are created to guide the heuristic in removing further irrelevant instructions.
File in questo prodotto:
Non ci sono file associati a questo prodotto.