Die Testmustergenerierung beginnt mit dem Rücksetzen aller Signale auf X (unbekannt) und dem Setzen des Signals am Fehlerort auf D (sa0) bzw. not D (sa1), der so genannten Fehleraktivierung. Nachdem das Fehlersignal gesetzt worden ist, werden alle möglichen logischen Implikationen ausgeführt, d.h. Wertzuweisungen, die sich aus dem Setzen des Fehlersignals eindeutig ergeben. Daraus ergibt sich eine Wertebelegung, die Ausgangspunkt für alle weiteren Schritte der Testmustergenerierung bildet. Bei den im Verlaufe der Testmustergenerierung entstehenden Wertebelegungen interessieren uns stets zwei Mengen von Netzen:
Die D-frontier (D-drive) besteht aus denjenigen Gattern, deren Wert am Ausgang (noch) unbestimmt ist, die aber ein oder mehrere Fehlersignale (D oder not D) an den Eingängen besitzen. Die D-frontier gibt an, wie weit sich fehlerhafte Signale in Richtung der primären Ausgänge ausgebreitet haben.
Die J-frontier besteht aus allen Gattern, deren Ausgänge einen festen logischen Wert besitzen, der sich jedoch (noch) nicht aus den Werten an den Gatter-Eingängen implizieren lässt. Die Ausgänge der J-frontier bezeichnet man oft auch als unjustified lines. Sie stellen Netze dar, an denen sich durch Wertzuweisungen im Inneren der Schaltung feste logische Werte ergeben haben, die aber noch nicht durch geeignete Wahl von Wertzuweisungen an den primären Eingängen eingestellt sind.
Die Aufgabe eines deterministischen Testmustergenerators lässt sich damit auch so beschreiben: Finde eine binäre Wertebelegung für die primären Eingänge der Schaltung, so dass
- die D-frontier einen primären Ausgang erreicht, d.h. wenigstens an einem primären Ausgang ein Fehlersignal anliegt (Beobachtbarkeit) und
- die J-frontier die primären Eingänge erreicht, d.h. im Inneren der Schaltung keine unjustified lines mehr existieren (Einstellbarkeit).
Der vorgestellte Algorithmus zur deterministischen Testmustergenerierung geht dabei so vor, dass er Schritt für Schritt durch geeignete Wertzuweisungen an geschickt ausgewählten Netzen die D-frontier in Richtung der primären Ausgänge und die J-frontier in Richtung der primären Eingänge verschiebt. Der Vorgang der Testmustererzeugung kann als eine Abfolge von optionalen und notwendigen Wertzuweisungen verstanden werden. Wie die notwendigen Wertzuweisungen bestimmt und wie die optionalen Wertzuweisungen geschickt ausgewählt werden, variiert von Algorithmus zu Algorithmus und bestimmt die Leistungsfähigkeit der verschiedenen Tools. Dennoch ist der grundsätzlicher Ablauf bei allen herkömmlichen Verfahren weitgehend gleich.
Führt der Algorithmus zu einem inneren Widerspruch, der sich nicht mehr durch einen Backtrack (also eine optionale Wertzuweisung) auflösen lässt, hat man einen redundanten Fehler gefunden. Dies sollte gar nicht oder nur sehr selten vorkommen, da durch den Algorithmus bewiesen ist, dass es keine Belegung an den Eingängen geben kann, so dass der Fehler am Ausgang sichtbar ist. Solch redundante Fehler werden bei Auftreten oft durch geeignete Redesign-Maßnahmen entfernt.