P. Tafertshofer, A. Ganz, M. Henftling

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen für das Erfüllbarkeitsproblem SAT
Advertisements

(Zweistufige) Logiksynthese
Vorlesung Programmieren II
Polynomial Root Isolation
Graphen Ein Graph ist eine Kollektion von Knoten und Kanten. Knoten sind einfache Objekte. Sie haben Namen und können Träger von Werten, Eigenschaften.
Das LCA – Problem in Suffixbäumen
7. Natürliche Binärbäume
4. Logik – und ihre Bedeutung für WBS
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Planares 3 SAT ist NP-vollständig
Marco Barz Seminar über Algorithmen SoSe2007
Ein Modellansatz zur Beschreibung von Vagheiten
Datentechnik12. Übung THS, 15.November 2006 Testen hochintegrierter Schaltungen Übung 2: SCOAP-Algorithmus Ralph Weper.
Verifizieren versus Berechnen
Algorithmen und Komplexität
1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie Wintersemester.
1 Computergestützte Verifikation SAT-basiertes Model Checking Ansatz: Übersetze das Model Checking Problem in ein aussagenlogisches Erfüllbarkeitsproblem.
1 Computergestützte Verifikation SAT-basiertes Model Checking Ansatz: Übersetze das Model Checking Problem in ein aussagenlogisches Erfüllbarkeitsproblem.
Spielbäume Richard Göbel.
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Baumstrukturen Richard Göbel.
Algorithmentheorie 04 –Hashing
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix –Tree –Konstruktion Ukkonen Algorithmus.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Modelchecker – RED Tool: Region-Encoding Diagram Stefan Neumann.
Minimum Spanning Tree: MST
Beweiser für quantifizierte Boolesche Ausdrücke - QUAFFLE
Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.
Vortrag über Graphen Von Jörg Hendricks.
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Hartmut Klauck Universität Frankfurt WS 06/
Fuzzymengen – Was ist das?
K-SAT: Ein heuristischer Algorithmen- Vergleich Kann man den Brute Force Search Algorithmus schlagen?
3.1 Gates und boolesche Algebra
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Noam CHOMSKY, Sheila GREIBACH
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 3: Potenzreihen und kontextfreie Sprachen (Vgl. Buch von A. Salomaa)
Petrinetze 1. Einführung Informatik : wesentlich Modellierung von
Informatik III Christian Schindelhauer Wintersemester 2006/07
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Algorithmen für das Erfüllbarkeitsproblem SAT
Analyse der Laufzeit von Algorithmen
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken VI Christian Schindelhauer
Technische Informatik I Vorlesung 4: Vereinfachung von Schaltfunktionen Mirco Hilbert Universität Bielefeld Technische Fakultät.
Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 3 / 1 Algebraische Hülle und Homomorphie A = [A, F ] sei  -Algebra. Eine.
Gliederung der Vorlesung
Programmiersprachen II Vorbesprechung Klausur Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 2 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
 Präsentation transkript:

P. Tafertshofer, A. Ganz, M. Henftling SAT-basiertes ATPG im Implikationsgraphen Vortragender: Piet Engelke Dieser Vortag wurde im Rahmen des Seminars “SAT - Engines” im Wintersemester 2000/2001 gehalten. Er basiert auf den Veröffentlichungen [1] und [2].

Inhaltsübersicht I Einführung Testmustergenerierung Motivation II Konstruktion des Implikationsgraphen III Operationen im Implikationsgraphen direkte Implikation indirekte Implikation Justifikation Propagation IV Ergebnisse / Zusammenfassung Im ersten Teil des Vortrages werden die wichtigsten Begriffe aus dem Bereich “Automatic Test Pattern Generation” (ATPG) umrissen. Des weiteren werden zwei verbreitete Ansätze für ATPG vorgestellt, anhand derer sich die wichtigsten Anforderungen an eine Datenstruktur für ATPG erkennen lassen. Der zweite Teil entspricht größtenteils dem Inhalt von [1]. Er erläutert die Erzeugung eines Implikationsgraphen (IG) zu gegebenem Schaltkreis und Gatterbibliothek. Der dritte Teil zeigt auf, wie die für ATPG notwendigen Operationen auf den IG übertragbar sind. Er wurde in weiten Zügen aus [2] übernommen. Im vierten und letzten Teil werden experimentelle Ergebnisse präsentiert, die einen Vergleich des IG-Ansatzes mit anderen ATPG Verfahren erlauben. Diese wurden wiederum aus [2] entnommen.

I Einführung

Testmustergenerierung . primäre Eingänge Ausgänge Fehlerort Justifikation: finde Belegung an den primären Eingängen die internes Signal auf bestimmten Wert setzt Propagation: Signaländerung an internem Signal zu den primären Ausgängen “transportieren” (Sensibilisierung + Justifikation) Implikation: weise unbestimmten Ein- Ausgängen eines Gatters Werte zu, die sich aus der aktuellen Belegung zwingend ergeben Die Aufgabe der Testmustergenerierung ist es die Aufdeckung von physikalischen Defekten in Schaltkreisen zu ermöglichen (genaueres zur Testmustergenerierung in [3]). Da im Folgenden von einer Betrachtung des Schaltkreises auf Gatterebene (möglich wäre beispielsweise auch eine transistorbezogenen Sichtweise) ausgegangen werden soll, gilt es zuerst ein Fehlermodell zu finden. Dieses bildet den physikalischen Defekt auf die logische Ebene ab (dies ist nicht Gegenstand dieser Ausführungen). Nun beginnt die eigentliche Testmustergenerierung. Es sollen Belegungen für die primären Eingängen (PI) des Schaltkreises gefunden werden, die zu einem Unterschied an den primären Ausgängen (PO) des Schaltkreises führen. Genauer, die Werte an einem oder mehreren POs des Schaltkreises in dem mindestens ein bestimmter Fehler enthalten ist, sollen von den Werten der entsprechenden POs des gleichen aber fehlerfreien Schaltkreises abweichen. Dazu wird zuerst der Fehler in den Schaltkreis “eingebaut”. Sei nun angenommen ein bestimmtes Signal am Ausgang eines Gatters sei von einem physikalischen Defekt betroffen. Diesem Signal weist man ein durch das verwendete Fehlermodell definiertes Verhalten zu. Für die Eingänge des dem Signal vorangehenden Gatters wird nun eine Belegung gewählt, die zu einem Unterschied führt. Mit anderen Worten, die Belegung soll im fehlerfreien Schaltkreis zu einem anderen Wert am Ausgang des Gatters führen, als im fehlerbehafteten Schaltkreis, in dem das durch das Fehlermodell bestimmte Verhalten angenommen wird. Der Fehler ist damit “eingestellt”.

Testmustergenerierung . primäre Eingänge Ausgänge Fehlerort Justifikation: finde Belegung an den primären Eingängen die internes Signal auf bestimmten Wert setzt Propagation: Signaländerung an internem Signal zu den primären Ausgängen “transportieren” (Sensibilisierung + Justifikation) Implikation: weise unbestimmten Ein- Ausgängen eines Gatters Werte zu, die sich aus der aktuellen Belegung zwingend ergeben Nachdem der Fehler eingestellt wurde, gilt es diese Belegung an die PIs zu propagieren . Dieser Vorgang heißt Justifikation. Wurde eine Belegung an den PIs gefunden, die zu den gewünschten Werten an den Eingängen des dem Fehler vorangehenden Gatters gefunden folgt die Propagationsphase. Diese teilt sich in zwei Vorgänge: Sensibilisierung und Justifikation. Sensibiliserung bezeichnet den Suchvorgang nach einem Pfad vom Fehlerort zu den POs. Die an diesen Pfad gestellte Bedingung lautet wie folgt: ein Unterschied darf bei Propagation auf diesem Pfad nicht verloren gehen. Während dieser Suche müssen Wertzuweisungen im Inneren des Schaltkreises vorgenommen werden, die wiederum justifiziert, also durch Belegungen an den PIs gerechtfertigt werden müssen. Waren die Justifikation der Wertebelegung am Fehlerort und die Propagation erfolgreich, so erhält man eine Belegung an den PIs, das sog. Testmuster. Die wichtigste Operation bei Justifikation und Propagation ist die Implikation. Diese ist nur für ein Gatter definiert, die Propgagation der Zuweisungen erfolgt also in einem nachfolgenden Schritt. Nur wenn sich Wertzuweisungen nicht zwingend ergeben, kann ein beliebiger aber eindeutiger Wert angenommen werden.

=> => => Implikation am AND Gatter 1) 2) 3) X 1 X X => 1) 1 X => 2) Es gibt zwei mögliche Implikationsarten [3] (in den Beispielen entspricht ‘X’ einem undefinierten Wert): Vorwärtsimplikation: ausgehend von den Eingängen eines Gatters soll eine Ausgangsbelegung geschlossen werden (Beispiel 1). Rückwärtsimplikation: die Belegung des Gatterausgangs wird auf die Eingänge desselben Gatters fortgesetzt (Beispiel 2). Im dritten Beispiel (Rückwärtsimplikation) ermöglicht die bereits vorgegebene Wertebelegung keine Implikation. Es ergeben sich keine logisch zwingenden Belegungen an den Eingängen des Gatters. X => 3)

Motivation strukturbasiert: Netzliste getrennt von Modulbibliothek komplizierte Algorithmen nicht erweiterbar SAT basiert: Schaltkreis dargestellt als Klauselmenge sehr flexibel und effizient keine topologischen Informationen => Topologie, Effizienz und Flexibilität Zwei Verfahren werden häufig für ATPG eingesetzt, diese unterscheiden sich grundlegend in der Art der verwendeten Datenstruktur. Bei strukturbasierten Verfahren (z.B. PODEM und D-Algorithmus [3]) werden Netzliste und Gatterbibliothek in getrennten Datenstrukturen abgelegt. Dies führt zu komplizierten Algorithmen. Sollen die für ATPG typischen mehrwertigen Logiken eingesetzt werden, sind aufwendige Tabellenzugriffe notwendig. Die topologischer Informationen ermöglichen allerdings sehr effiziente Suchverfahren. Somit können die erstgenannten Nachteile abgemildert werden (siehe PODEM, FAN [3]). Neue Erkenntnisse, beispielsweise über die logischen Zusammenhänge im Schaltkreis (indirekte Implikation s.u.) lassen sich nicht in die Datenstrukturen integrieren. SAT basierte Verfahren stellen die Funktion des Schaltkreises als Formel in konjunktiver Normalform (KNF) dar. Diese Formeln lassen sich sehr effizient lösen und beliebig erweitern. Allerdings können sie die Topologie des Schaltkreises nicht modellieren. Dazu ist wiederum zusätzlicher Aufwand nötig (vgl. CGRASP [4]). Die effizienten Suchverfahren der strukturbasierten Ansätze sind also auf SAT-Verfahren nicht übertragbar, deren Effizienz wird dadurch gemindert. Insgesamt läßt sich sagen: Eine optimale Datenstruktur für ATPG sollte die Topologie des Schaltkreises modellieren, beliebig erweiterbar sein und effizient Lösungsfindung ermöglichen.

II Konstruktion des Implikations- graphen(IG)

Erzeugung des IG benötigt werden: Art und Kodierung der Logik Wahrheitstabellen der verwendeten Gatter Netzliste des Schaltkreises Ablauf: 1a) Kodierung und Optimierung der Wahrheitstabellen 1b) Extraktion der Klauselmenge 1c) Konvertierung in Subgraphen 2a) personalisieren der Subgraphen 2b) Subgraphen zu einem IG verbinden Die obengenannten Daten werden für die Erzeugung des IG benötigt. Die unter 1) genannten Schritte des Umwandlungsprozesses werden einmal pro Schaltkreisbibliothek durchgeführt, die unter 2) aufgelisteten hingegen einmal pro zu konvertierendem Schaltkreis.

Kodierung der Logik verwendete Logik : L3 = {0, 1, X} Î L 3 Kodierung Interpretation c * 1 Signal x = 0 X Konflikt bei Signal x Signal x = 1 Signal x = unbekannt Definition - Konflikt: Eine Wertzuweisung heißt konfliktfrei gdw.: für alle Signalvariablen cx Ù cx Û 0 gilt. Soweit nicht anders angegeben soll für den Rest dieser Ausarbeitung eine dreiwertige Logik angenommen werden. Der Wert ‘X’ steht dabei für einen unbekannten Wert, beispielsweise aufgrund einer unvollständigen Zuweisung. Zur Kodierung von drei Zuständen im dualen System sind zwei binäre Variablen (cx und cx *) notwendig. Sie wurde so gewählt, daß ein Konflikt genau dann vorliegt, wenn beide Kodierungsvariablen gesetzt sind. Anschaulich gesprochen entspricht das einem Fall, bei dem man einem Signal sowohl Eins (cx = 1), also auch Null (cx *= 1) zuzuweisen versucht. *

Kodierung und Optimierung Wahrheitstab. a b c 1 X kodierte Tabelle * - optimierte Tabelle nur konfliktfreie Belegungen gehen bei der Optimierung ein Konflikte müssen von den Algorithmen abgefangen werden => charakteristische Funktion eines AND Gatters als KNF Im Folgenden soll die Erzeugung eines IG für ein AND Gatter erläutert werden. Die obere linke Tabelle entspricht der Wertetabelle dieses Gatters ergänzt um die ‘X’ Werte. Die mittlere Tabelle zeigt die Kodierung der linken Tabelle unter Verwendung des auf der vorangehenden Folie eingeführten Codes. Die im unteren Teil abgesetzten Einträge beschreiben die Kodierung der Konfliktfälle (‘-’ bez. einen Wert aus {0,1}). Die rechte Tabelle schließlich, enthält die optimierten Daten aus der mittleren Auflistung. Dabei sind die Kodierung der Konflikte nicht mit eingeflossen. Aus der rechten Tabelle läßt sich nun die charakteristische Funktion des AND-Gatters ablesen. Diese spezifiziert alle gültigen Ein-Ausgangsbelegungen für dieses Logikgatter. (Øca Ú cc) Ù (Øcb Ú cc) Ù (Øca Ú Øcb Ú cc) Û 1 *

Konvertierung in Subgraphen (1) es gelten folgende Umformungen: x Ø x y Ø y x Ú y Û (Øx ® y) Ù (Øy ® x) Þ Øz z y x Øy Øx Ù x Ú y Ú z Û (Øx Ù Øy ® z) Ù (Øx Ù Øz ® y) Ù (Øy Ù Øz ® x) Þ Die Struktur des IG basiert auf binären und ternären Klauseln. Oben sind die dafür vorgesehenen Umformungen dargestellt. Man kann erkennen, daß der IG nicht auf den Klauseln selbst sondern auf den aus ihnen zu folgernden Implikationen aufbaut. Im rechten Teil ist die graphische Darstellung der Implikationen, so wie sie im IG vorliegt, dargestellt. Möchte man nun die weiter oben eingeführte Kodierung der dreiwertigen Logik im IG verwenden, so ist folgendes zu tun: Man identifiziert x mit cx und Øx mit cx * . Wendet man die oben eingeführte Kodierung an, so entspricht x=1 cx = 1 und cx * =0, bzw. Øx =1 cx = 0 und cx* =1. Ferner nimmt man an, daß eine Belegung einer der Variablen cx bzw. cx* der Markierung des entspreched bezeichneten Knotens im IG entspricht. Nun kann man alle Belgungen der Klauseln auf den ihnen zugehörigen IG übertragen.

Aufteilung von Klauseln Klauseln mit mehr als drei Variablen werden in Systeme aus binären und ternären Klauseln gewandelt führe zusätzliche Variable v ein: (w Ú x Ú y Ú z) Û $ (w Ú x Ú v) Ù (y Ú z Ú Øv) v Î {0,1} es gilt (sei x eine Variablenbelegung): $ [f(x) Ù $ g(x, z)] Û $ f(x) Ù g(x, z) x z x, z Für den Fall, daß bei der Umwandlung der Gatter in den IG nicht nur binäre und ternäre Klauseln entstehen, findet das oben angedeutete Verfahren Anwendung. Wichtig dabei ist, daß die Einführung des Existenzquantors keinerlei Auswirkungen auf den IG hat. Der Grund dafür ist leicht ersichtlich: Die Aufgabe, die es mit dem IG zu lösen gilt, ist der Nachweis der Existenz einer erfüllenden Belegung für eine Formel in KNF, diese Belegung soll als Ergebnis geliefern werden. Erweitert man die gesuchte Belegung nun um eine weitere Variable so kompliziert sich zwar das Problem, qualitativ gesehen aber, bleibt die Aufgabenstellung unverändert. => der Existenzquantor kann ignoriert werden

Konvertierung in Subgraphen (2) (Øca Ú cc) Ù (Øcb Ú cc) Ù (Øca Ú Øcb Ú cc) Û 1 * * mit Øcx Þ cx und Øcx Þ cx cc cb ca * b f o Ù a c b Die oben dargestellte charakteristische Funktion des AND Gatters kann (unter Zuhilfenahme der Regeln zur Konvertierung von Klauseln) in den abgebildeten Subgraphen überführt werden. Negative Literale werden entsprechend der beiden hier angegebenen Umformungen in positive Literale gewandelt. Diese Umformungen sind erlaubt, da Konflikte von den auf dem Graphen operierenden Algorithmen abgefangen werden. Anhand der Kantenbezeichner (‘f’, ‘b’, ‘o’) kann der jeweilige gerichtete azyklische Graph identifiziert werden. Dabei muß dieser nicht aus dem Graphen extrahiert werden, führt damit also nicht zur Erzeugung einer weiteren Instanz des Implikationsgraphen. strukturelle Informationen f = Vorwärtskante: Kante vom Ein- zum Ausgang des Gatters b = Rückwärtskante: Kante vom Aus- zum Eingang des Gatters o = sonstige Kante

IG formal Implikationsgraph: GI = (VI, EI) Menge der Knoten VI = VIS È VIÙ VIS die Signalknoten VIÙ die Ù - Knoten Menge der Kanten EI = Ef È EbÈ Eo Ef Vorwärtskanten Eb Rückwärtskanten Eo sonstige Kanten GB = (VI, Ef) Graph der Rückwärtskanten GF = (VI, Eb) Graph der Vorwärtskanten

Beispiel für einen IG => cf * cd ce ca cb cc b f a b d f e c => Dieses Beispiel zeigt den Ablauf der Erzeugung eines IG. Ein Schaltkreis wird in eine Menge von Klauseln umgewandelt. Das Ergebnis der sich daran anschließenden Konvertierung in einen IG ist im rechten Teil der Folie zu erkennen. (Øcd Ú cf) Ù (Øce Ú cf) Ù (Øcd Ú Øce Ú cf) Ù | f = AND(d, e) * (Øca Ú cd) Ù (Øcb Ú cd) Ù (Øca Ú Øcb Ú cd) Ù | d = OR(a, b) * (Øcb Ú ce) Ù (Øcc Ú ce) Ù (Øcb Ú Øcc Ú ce) Û 1 | e = OR(b, c) *

III Operationen im Implikations- graphen

direkte Implikation - Regel Ausgehend von einer Menge VI Í VS von markierten Knoten werden alle Nachfolger vj markiert wenn: 1) Knoten vj ein Ù - Knoten ist und all seine Vorgänger markiert sind 2) Knoten vj ein Signalknoten ist und mindestens einer seiner Vorgänger markiert ist So lange fortfahren bis keine Markierungen mehr möglich sind. Alle durch diese Regel markierten Knoten zusammen, repräsentieren die Belegung die aus VI impliziert werden kann. Eine Implikation ist nur dann möglich, wenn sie keine Konflikte hervorruft. Die direkte Implikation ist eine Erweiterung der Implikation derart, daß die aufgrund der Implikation an einem Gatter durchgeführten Wertzuweisungen im Schaltkreis propagiert werden. Sind nun an anderen Gattern wiederum Implikationen möglich, so werden auch diese ausgeführt. Die direkte Implikation stoppt, wenn keine Implikationen und keine Propagationen mehr möglich sind. Treten bei Anwendung der oben angegebenen Regel Konflikte auf (cx und cx* zugleich markiert (x ist bel. Signal)), so ist die Ausgangsbelegung des Schaltkreises VI ungültig.

Die direkte Implikation cf * cd ce ca cb cc b f a = X b = 1 d = X f = X e = X c = X Die Ausgangsbelegung des Schalkreises ist b=1 => cb ist markiert Der Knoten hat nur zwei ausgehende Kanten, die beide die Anwendung der Regel 1 erlauben. es gelte b = 1 propagiere alle Implikationen der aktuellen Belegung durch den Schaltkreis

Beispiel zur direkten Implikation cf * cd ce ca cb cc b f a = X b = 1 d = 1 f = X e = 1 c = X Nach Anwendung der Regel 1 wurden cd und ce markiert => d=e=1 konnte impliziert werden. Nun kann die Regel 2 angewendet werden, da alle Nachfolger von cd und ce Ù-Knoten sind. Nachfolger eines Ù - Knotens markieren, wenn beide Vorgänger passiert wurden

Beispiel zur direkten Implikation cf * cd ce ca cb cc b f a = X b = 1 d = 1 f =1 e = 1 c = X Nur cf konnte noch markiert werden => f =1. Alle anderen Ù-Knoten haben nur einen ihrer beiden Vorgänger markiert, d.h. die Implikation stoppt an dieser Stelle. direkte Implikation: cb ® cf die Implikation stoppt, wenn keine Markierungen mehr möglich sind

Die indirekte Implikation im IG Identifikation durch direkte Implikation und anschließender Kontraposition: ca ® cb Û (cb* ® ca*) * ca cb cx Ù ca cb Ù Indirekte Implikation sind feste logische Zusammenhänge zwischen zwei Signalen, die anders als bei (direkten) Implikation nicht unmittelbar aus dem Schaltkreisaufbau ersichtlich sind. Das liegt daran, daß die beiden Signale der indirekten Implikation über eine Folge von Signalen miteinander verbunden sind, die nicht durch eine durchgängige Kette von Implikationen zusammenhängen. An diesen Signale sind Entscheidungen bei der Wertzuweisung möglich. Diese beeinflussen aber nicht die Gültigkeit der indirekten Implikation. Die Möglichkeit indirekte Implikationen als zusätzliche Kante dem Graphen hinzuzufügen ist ein eindeutiger Vorteil des IG gegenüber den strukturbasierten Ansätzen. Die einfachste Möglichkeit indirekte Implikationen im IG zu identifizieren ist oben angegeben. Sie erfolgt durch Kontraposition einer direkten Implikation, ist aber nur möglich, wenn die oben links dargestellte Form einer direkten Implikation vorliegt (siehe auch nächste Folie). Aus der Konstruktionsvorschrift für den IG folgt, daß dann die rechts dargestellte Struktur im Graphen existieren muß. Genaueres dazu auf der nächsten Folie. werden in der Preprocessing - Phase entdeckt und dem Graphen als Kante hinzugefügt

indirekte Implikation - Regel Sei cx der ursprünglich markierte Knoten. Aus einer rekonvergenten Struktur (cx, cy) im IG folgt nur dann eine indirekte Implikation, wenn: cx ein Fanoutknoten im IG ist cy über einen Ù - Knoten markiert wurde dessen Vorgänger beide nach Implikation über disjunkte Pfade markiert worden sind Die obige Regel definiert genau wie eine direkte Implikation auszusehen hat, aus der eine indirekte Implikation geschlossen werden kann. Warum die auf der vorangehenden Folie rechts dargestellte Struktur im IG existieren muß, ist leicht ein zusehen: 1.) Zu jedem ca ® cu (ca ® cv) muß es ein cu* ® ca* (cv* ® ca*) geben. 2) Existiert ein Konstrukt der Form (cu Ù cv ® cb) so gibt es auch die folgenden beiden Konstrukte : (cb* Ù cv ® cu* ) bzw. (cb* Ù cu ® cv* ). Unabhängig von den Zuweisungen an u und v gilt immer: Øb ® Øa. Damit lassen sich indirekte Implikationen durch eine relativ leichte Rekonvergenzanalyse aus den direkten Implikationen ermitteln. Für den IG wurden noch weitere Verfahren zur Identifikation der indirekten Implikationen vorgeschlagen[1], die auf einer verbesserten Rekonvergenzanalyse basieren.

Beispiel zur indirekten Implikation cf * cd ce ca cb cc b f direkte Implikation: cb ® cf indirekte Implikation: cf* ® cb* Ausgehend von der im vorigen Beispiel erläuterten direkten Implikation, kann man hier nun die daraus zu folgernde indirekte Implikation (gepunktete Elemente) erkennen. Die gestrichelte Linie stellt die zusätzliche Kante dar, die dem IG hinzugefügt wird.

Justifikation im IG (1) Wert an internen Signalen soll durch Zuweisungen an primären Eingängen eingestellt werden Objective: Werteinstellungsziel für eine internes Signal Ablauf des Verfahrens: 1. Wahl des Objectives 2. Backtracing: versuche Belegung an den primären Eingängen zu finden, die das Objective einstellen 3. Implikation: prüfe ob die gewählte Belegung das Objective wirklich erfüllt Das im IG angewandte Justifikationsverfahren entspricht weitestgehend der aus PODEM [3] bekannten Vorgehensweise. Deren Vorteil ist es, daß Wertzuweisungen nur an den PIs erfolgen (Backtracingphase); damit wird der bei der Suche nach einem Testmuster abgearbeitete Wertebereich deutlich eingeschränkt, ohne dabei mögliche Lösungen von vornherein auszugrenzen. Der Begriff des Obejectives wurde von PODEM übernommen. Er bezeichnet ein Signal, dessen Wert noch nicht durch die Eingangsbelegung des ihm vorangehenden Gatters bestimmt wird. Dies entspricht den unjustifizierten Klauseln im IG.

Justifikation im IG (2) Definition - unjustifizierte Klauseln: Eine Klausel C = c1 Ú c2 Ú ... Ú cn heißt unjustifiziert, gdw. alle Literale c1, c2,..., cn nicht erfüllt sind und mindestens ein Komplement ci* eines Literales ci Eins ist. Definition - Justifikation einer Klausel: Seien c1, c2,..., cm unspezifizierte Literale in einer unjustifizierten Klausel C = c1 Ú c2 Ú ... Ú cm und seien V1, V2,..., Vm Wertzuweisungen. Dann wird die Menge konfliktfreier Zuweisungen J = {c1= V1, c2= V2, ... cm= Vm} eine Justifikation der Klausel C genannt, wenn die Wertzuweisungen in J die Klausel C erfüllen. Die oben angegebene Definition bezieht sich allgemein auf unjustifizierte Klauseln.

Justifikation im IG (3) Objective entspricht unjustifizierter Klausel nur ternäre Klauseln können unjustifiziert sein Ù cz * cy cx x Ú y Ú z Û (Øx Ù Øy ® z) Ù (Øx Ù Øz ® y) Ù (Øy Ù Øz ® x) Binäre Klauseln entsprechen im IG zwei unmittelbaren Zuweisungsvorschriften, die nicht unerfüllt sein können. Klauseln mit mehr als drei Literalen existieren im IG per Definition nicht. Unerfüllte ternäre Klauseln lassen sich im IG leicht finden. Sie bestehen aus zwei Ù -Knoten, die einen Knoten als direkten Vorgänger ´gemeinsam haben. Dieser ist als einziger ihrer dirketen Vorgänger markiert. Die Justifikation (wie auf dieser Folie definiert) solcher ternären Klauseln, enthält die beiden Nachfolger der Ù -Knoten. => Justifikation besteht aus genau zwei Elementen J = {{cx= 1}, {cz= 1}}

Backtracing - Regel Das Objective oi sei bereits zum Konten vi Î V vorangetrieben worden. sucs(vi) Í Vs und sucÙ(vi) Í VÙ bezeichnen die nachfolgenden Signal bzw. Ù - Knoten in GB. Dann wird das Objective oi zu den folgenden Knoten getrieben: allen Signalknoten vj Î sucs(vi). einem Ù - Knoten vj Î sucÙ(vi) der entsprechen eines Kontrollierbarkeitsmaßes gewählt wird. Knoten vj, die einen Signalknoten cx als Nachfolger haben, dessen zugehöriger Komplementknoten cx* markiert ist, werden nicht gewählt. Diese Regel wird solange angewandt, bis keine Propagation von Objectives mehr möglich ist, d.h. alle Objectives einen PI erreicht haben. Die Backtracingphase der Justifikation verläuft nach oben angegebener Regel. Es ist entscheidend, daß nur solche Knoten gewählt werden können, die über Kanten in GB (gerichteter azyklischer Graph der Rückwärtskanten) erreichbar sind. Die Backtracingphase wird also von den Rückwärtskanten gesteuert. Sie muß deshalb zwangsläufig an den PIs stoppen, da diese keine weiteren ausgehenden Rückwärtskanten mehr haben können. Das Backtracing verläuft nach der “depth-first” - Strategie [5], es wird also ein möglichst direkter Weg zu den PIs gesucht.

Beispiel zur Justifikation cf * cd ce ca cb cc a1 a2 g2 g3 b3 b2 f = 0 soll justifiziert werden es gelte bereits e = 1 a = X b = X d = X f = 0 e = 1 c = X ! Auf obiger Folie sind die Rückwärtskanten gepunktet dargestellt. nur die Rückwärtskanten werden verwendet Backtracing mit “depth - first” Strategie

Beispiel zur Justifikation cf * cd ce ca cb cc a1 a2 g2 g3 b3 b2 a = X b = X (d = 0) f = 0 e = 1 c = X ! Der Knoten cd* Knoten muß hier zwangsläufig gewählt werden, da der Komplementknoten von ce* bereits markiert ist. Wahl eines Ù - Knotens nach vorberechnetem Testbarkeitsmaß

Beispiel zur Justifikation cf * cd ce ca cb cc a1 a2 g2 g3 b3 b2 (a = 0) (b = 0) (d = 0) f = 0 e = 1 c = X ! Die Knoten ca* und cb* haben keine ausgehenden Kanten die zu GB gehören. Deshalb ist die Backtracingpahse nun beendet. Es wurde eine Belegung der PIs gefunden, welche das Objective möglicherweise einstellt. Ob dies wirklich geschieht, muß nun durch direkte Implikation gezeigt werden. über direkte Übergänge erreichte Nachfolger werden immer gewählt Backtracing stoppt, da die primären Eingänge erreicht wurden

Beispiel zur Justifikation cf * cd ce ca cb cc a1 a2 g2 g3 b3 b2 a = 0 b = 0 d = 0 f = 0 e = 1 c = X Die Implikation hat ergeben, daß das Objective durch die in der Backtracingphase gewählte Belegung eingestellt wird. Das bedeutet die unjustifizierte Klausel wurde erfolgreich justifiziert. Wäre bei der Implikation ein Konflikt eingetreten, so hätte die Eingabebelegung invertiert werden müssen. Daraufhin wäre wieder eine Implikation gestartet worden. Falls alle Belegungen an den PIs (auch nach dem Invertieren) zu einem Konflikt bei der Implikation führen, so ist die Einstellung des Objectives nicht möglich. Führt die Implikation zwar nicht zu einem Konflikt, aber auch nicht zur Einstellung des Objectives, so muß das Backtracing erneut gestartet werden. Dabei dürfen die an den Ù-Knoten getroffene Entscheidungen nicht alle denen beim ersten Backtracelauf gemachten entsprechen. cf* erfolgreich justifiziert Implikation der Eingangsbelegung die Justifikation wird für alle Objectives durchgeführt

Propagation Kodierung von Unterschieden macht Übergang von L3 zu L9 notwendig split-circuit Modell => Verdopplung des L3 Graphen (= zwei disjunkte, isomorphe Graphen) im Fehlergraphen werden alle Knoten mit einem ‘^’ kenntlich gemacht Konflikt liegt vor, wenn gilt: Bei der Propagation soll ein Unterschied vom Fehlerort zu den POs des Schaltkreises “transportiert” werden. Bis jetzt ist die Kodierung von Unterschieden im IG nicht möglich, da dies von der verwendeten dreiwertigen Logik nicht unterstützt wird. Deshalb wird der Übergang zu einer höherweritgen Logik notwendig. Hierfür werden in [2] neun Werte vorgeschlagen (siehe Tabelle, D=1/0, /D=0/1, G0=0/X, G1=1/X, F0=X/0, F1=X/1). Zusätzlich soll das sog. “split-ciruit” Modell zum Einsatz kommen. Das bedeutet, daß ein Duplikat der Schaltkreisstruktur erzeugt wird. Im Original werden die Werte der fehlerfreien Schaltung simuliert, in der Kopie hingegen die des fehlerbehafteten Schaltkreises. Die Duplizierung der Schaltkreisstruktur kann für den IG leicht durchgeführt werden; man verdoppelt einfach den Graphen des Schalkreises. So erhält man zwei Graphen, Gg =(Vg , Eg) für den fehlerfreien Fall und Gf =(Vf , Ef) für den fehlerbehafteten Schaltkreis. Diese werden zu einem Graphen G =(Vg È Vg , Eg È Eg) vereinigt. Dadurch ist eine Kodierung der neunwertigen Logik mit vier Knoten pro Signal (cx, cx*, ´c`x, ´c`x*,) möglich. (cx Ù cx) = 1 oder (cx Ù cx) = 1 * ^

Propagation - Regel (1) Das Ausgangssignal sI sei beobachtbar an Signal si, d.h. (si = D) Ú (si = /D), bzw. (ci Ù ci*) Ú (ci* Ù ´c`i) Û 1. sucs(vi) Í Vs g und sucÙ (vi) Í VÙ g bezeichnen alle nachfolgenden Signal bzw. Ù - Knoten eines Knotens vi in GF g =(V g , EF g). Signal sI wird an einem nachfolgenden Signal sj beobachtbar gemacht, durch: Wahl eines Knotens vj Î sucs(ci) È sucÙ (ci) entsprechend eines vor- berechneten Beobachtbarkeitsmaßes. Knoten vj = cj Î sucs(ci), deren zugehöriger Komplementknoten cj* markiert ist und Knoten vj Î sucÙ(ci) , die einen Signalknoten cx zum Nachfolger haben, dessen zugehöriger Komplementknoten cx* markiert ist, werden nicht gewählt. wenn vj Î sucs(ci), d.h. vj bezeichnet einen Signalknoten cj, so markiere seinen zugehörigen Komplementknoten ´cj`* in G f. wenn vj Î sucÙ (ci), so markiere seinen nachfolgenden Signalknoten ck und dessen zugehörigen Komplementknoten ´ck`* in G f. Die Propagation wird - ähnlich der Justifikation - durch einen gerichteten azyklischen Teilgraphen des IG gesteuert. Anders allerdings als bei der Justifikation ist dies GF g =(V g , EF g), also der gerichtete azyklische Graph der Vorwärtskanten des IG für den fehlerfreien Schaltkreis. Wie die Propagation abläuft, ist in der oben angegebenen Regel definiert. Diese sorgt für eine Traversierung des GF g mit “depth-first” Strategie[5] und versucht damit einen direkten Weg zu den POs zu finden. Diese sind genau dann erreicht, wenn die zuletzt gewählten Knoten keine ausgehenden Kanten in GF g mehr haben.

Propagation - Regel (2) (Fortsetzung) Implikation ausgehend von allen markierten Knoten in G, wodurch die sensibilisierenden Zuweisungen eingefügt werden. Wenn die Implikationen zu einem Konflikt führen, werden alle Zuweisungen rückgängig gemacht und ein anderer Knoten vj Î sucs(ci) È sucÙ (ci) wird gewählt. Führen alle Knoten vj zu einem Konflikt so erfolgt ein Backtracking zur letzten Entscheidung. Diese Regel wird solange angewendet, bis ein PO erreicht wurde oder alle aus vj Î sucs(ci) È sucÙ (ci) gewählten Knoten zu einem Konflikt führen. Der Vorteil dieses Propagationsverfahrens ist, daß es keinen Unterschied zwischen verschiedenen Propagationspfaden im Schaltkreis und unterschiedlichen Propagationsmöglichkeiten eines Gatters macht. Dies ist ein Ergebnis des einfachen Aufbaus des Graphen, der eine solche Unterscheidung bewusst nicht vorsieht.

Beispiel zur Propagation gut a = 1 b = D d = 1 f = X e = X c = X fehlerhaft cf * cd ce ca cb cc ca ^ cf * cd ce cb cc a3 g1 b1 Der linke obere Graph repräsentiert den fehlerfreien Schaltkreis, der rechte den fehlebehafteten. Die gepunkteteten Linien verdeutlichen (nur auf dieser Folie) den Graphen GF g. Vor Beginn der Propagagtion muß er Untererschied im Graphen gesetzt werden, unter Verwendung der L9 Kodierung (s.o.) führt dies zu einer Markierung von cb und ´c`b*. Da zusätzlich a=1 bereits gestzt ist, wurden ca und ´c`a markiert. propagiere Unterschied b = D, es gelte a = 1 die Vorwärtskanten leiten die Propagation (depth first - Strategie)

Beispiel zur Propagation gut a = 1 b = D d = 1 f = X e = X/0 c = X fehlerhaft cf * cd ce ca cb cc ca ^ cf * cd ce cb cc Im vorliegenden Fall konnte es keine andere Wahl als ce geben, da das Beobachtbarkeitsmaß dafür Sorge zu tragen hat, daß ein Pfad von noch undefinierten Signalen (entsprechend nicht markierten Knoten) gewählt wird. wähle Knoten ce nach vorberechnetem Beobachtbarkeitsmaß => Komplementknoten im Fehlergraphen wird markiert

Beispiel zur Propagation gut a = 1 b = D d = 1 f = D e = F0 c = X fehlerhaft cf * cd ce ca cb cc ca ^ cf * cd ce cb cc Der Knoten ce hat keine ausgehenden Vorwärtskanten mehr, der Propagationslauf stoppt also. Der Unterschied D, konnte bis zu den POs getrieben werden, damit ist eine Sensibilisierung erreicht worden. Die dafür notwendigen Wertzuweisungen müssen nun noch justifiziert werden. Dies geschieht in der Implikationsphase. wähle und markiere Knoten cf (nach Beobachtbarkeitsmaß) => Komplementknoten im Fehlergraphen wird markiert ein “primärer” Ausgang wurde erreicht

Beispiel zur Propagation gut a = 1 b = D d = 1 f = D e = D c = 0 fehlerhaft cf * cd ce ca cb cc ca ^ cf * cd ce cb cc Der Einfachheit halber wurden im obigen Beispiel alle Implikationen nach der Propagationsphase durchgeführt. Neben den einfachen direkten Implikationen innerhalb eines Graphen, wie sie bereits beschrieben wurden, gibt es nun auch Implikationen, die zu Wechselwirkungen zwischen den beiden Graphen führen. Belegungen werden zwischen den beiden IGs ausgetauscht, wenn sie im jeweils anderen IG nicht zu einem Konflikt führen. Wenn bei allen Implikationen und beim Austausch aller Markierungen Konflikte auftreten, so muß in einem Backtrackingschritt eine der Entscheidungen aus der Propagationsphase rückgängig gemacht werden. Aus diesem Grunde ist es normalerweise auch nicht sinnvoll, die Implikation von der Propagation zu trennen.Die Implikation erfolgt deshalb laut Propagationsregel nach jedem Propagationsschritt. führe Implikation durch konfliktfreie Belegungen werden zwischen den Graphen ausgetauscht

IV Ergebnisse

Experimentelle Ergebnisse Die obige Tabelle ist Ausschnitt aus den in [2] präsentierten experimentellen Ergebnissen. Sie setzt das ATPG - Programm TIP, welches den IG einsetzt, in Vergleich zu TEGUS und CGRASP. Letztere sind SAT - basierte ATPG Programme. TEGUS arbeitet ähnlich wie der PODEM Algorithmus [3], indem er die Klauseln so anordnet, daß optionale Zuweisungen zuerst an den PIs gemacht werden [2]. CGRASP ergänzt das reine SAT Verfahren durch eine Schicht, die die Modellierung der Schaltkreistopologie ermöglicht [2]. Das Verfahren ist auf kombinatorische Schaltungen beschränkt. Die Beduetung der einzelnen Spalten: ‘KNF’ : Zeit für die Extraktion der Klauselmenge ‘SAT’ : bezeichnet die zur Lösung des SAT-Problems benötigte Zeit ‘IG’ : die Zeiten für den Aufbau des Implikationsgraphen. ‘ATPG’ : Zeit für Propagation, Justifikation und Implikation im Implikationsgraphen Es zeigt sich, sich daß der IG basierte Ansatz insgesamt deutlich schneller ist, als die beiden rein SAT - basierten Verfahren. Dabei ist ein wichtiger Faktor, daß die Zeit zum Aufbau des IG deutlich geringer ist, als jene die zur Extraktion der Klauselmenge benötigt wird. Dies liegt sicherlich auch daran, daß die Subgraphen für die in der Schaltkreisen verwendeten Gatter in einer Preprocessingphase erzeugt wurden und somit bei Erzeugung des Implikationsgraphen schon zur Verfügung stehen. stuck-at ATPG ohne Fehlersimulation TEGUS : P.Stephan, R.K. Brayton und A.L. SangiovanniVincentelli ; 1996. CGRASP : L.G. e Silva, L.M. Silveira und J. Marques-Silva; 1999.

Zusammenfassung KNF mit der Toplogie in einer Datenstruktur vereint einfach aufgebauter, flexibler Graph Der Graph besteht aus nur zwei Knotentypen und erlaubt die Aufnahme zusätzlicher Kanten (indirekte Implikationen). kompakte Darstellung des Schaltkreises Die Größe des Graphen ist linear in der Anzahl der Schaltkreismodule. effizient Alle vorgestellten Operationen sind als Graphenalgorithmen implementiert. strukturbasierte Algorithmen und Heuristiken sind übertragbar (vgl. beispielsweise Backtracing)

Literaturverzeichnis [1] P. Tafertshofer, A. Ganz und M. Henftling : “A SAT - Based Implication Engine“, Tech. Rep. TUM-LRE-97-2, Technical University of Munich, April 1997. [2] P. Tafertshofer und A. Ganz : ”SAT Based ATPG Using Fast Justifcation and Propagation in the Implication Graph”, ICCAD 1999. [3] M. Abramovici, M.A. Breuer und A.D. Friedman : “Digital Systems Testing and Testable Design”, Computer Science Press, 1990. [4] L.G. e Silva, L.M. Silveira und J. Marques-Silva : “Algorithms for solving boolean satisfiability in combinational circuits”, in Design Automation Conference and Test in Europe (DATE), S. 526-530, 1999. [5] S. Russell, P. Norvig : “Artificial Intelligence - A Modern Approach”, Prentice Hall Int’l Editions, S. 77f, 1995.