A self-checking test generator program creates a self-checking test
program that can test a device under test (DUT). The self-checking test
generator selects instructions for a test. Selected instructions are
executed on a software DUT model to generate results that can be
self-checked by other instructions such as compare and branch
instructions. The software DUT model has fuzzy models and unknown models
for blocks in the DUT. Fuzzy models generate expected outputs for a block
of the DUT. Fuzzy models may propagate unknown data from their inputs to
their outputs. Unknown models do not predict expected outputs. Instead,
unknown models always output unknown (X). Over time, as more of the DUT
logic is modeled, unknown models may be replaced with fuzzy models.