The input for a test generator is a plurality of test templates, each of
which typically aims at covering a specific verification task. Test
templates direct the production of distinct transactions, which are the
atomic functional building blocks of the design-under-verification. Test
templates directed to different hardware functions of the scenario are
dynamically interleaved. In this way several transactions are combined
together in complex statements in order to achieve a complex test
scenario. The transactions are submitted to the test generator, which
generates test cases, in which the different hardware functions of the
scenario are exercised in combinations. Variation among the test cases is
achieved through a large number of random decisions made during the
generation process.