Die Ausg¨ange der Schaltung stellen die Funktionswertedar, wobei jeder Ausgang einzeln als eigene Boolesche Funktion dargestellt wird.Das Zeitverhalten, etwa die Verz¨ogerungszeiten der
Trang 1Beispiel 5.4.13 Gegeben sei der markierte Graph in Abb 5.34 Die
Verz¨ogerungs-zeit der Aktoren seiδmax(a0) = ··· =δmax(a4) := 2 Der Graph besitzt zwei Zyklen
(a0 ,a1,a2,a0) und (a1,a2,a3,a1) Die Iterationsintervallschranke P minergibt sich zu:
Aufz¨ahlende und strukturelle Verfahren zur Verifikation von Petri-Netzen werden
z B in [87] und [189] vorgestellt In [189] sind auch nen und eine Erweiterung auf Modellpr¨ufung f¨ur Petri-Netze ausf¨uhrlich diskutiert.Dabei werden Verfahren unterschieden, die auf der Auswahl von Referenzschalt-folgen basieren sowie auf entfaltungsbasierten Verfahren Verfahren zur Auswahlvon Referenzschaltfolgen sind u a die Stubborn-Set- und Sleep-Set-Methoden DieStubborn-Set-Methode wurde von Valmari vorgeschlagen [446, 447, 448] Die Sleep-Set-Methode wird ausf¨uhrlich in [194] diskutiert Weitere Arbeiten zur Partialord-nungsreduktion durch Auswahl von Referenzschaltfolgen sind in [196, 252, 197,
Partialordnungsreduktio-357, 358] zu finden Andere Verfahren zur Partialordnungsreduktion basierend aufder Entfaltung des Petri-Netzes sind in [155, 317, 318, 265] beschrieben
Trang 2Modellpr¨ufung f¨ur temporale Logiken sind in [107, 39] ausf¨uhrlich beschrieben.CTL-Modellpr¨ufung wurde unabh¨angig von Clarke und Emerson [97] und Queilleund Sifakis [369] entwickelt Der von Clarke und Emerson vorgeschlagene Algo-rithmus besitzt eine polynomielle Zeitkomplexit¨at in Formell¨ange und Modellgr¨oße.Einen verbesserten Algorithmus mit linearer Zeitkomplexit¨at stellten Clarke, Emer-son und Sistla in [98] vor Einen ersten Algorithmus zur LTL-Modellpr¨ufung stelltenLichtenstein und Pnueli 1985 in [304] vor Ein alternativer Ansatz, der auf B¨uchi-Automaten und Sprachinklusion basiert, wurde von Vardi und Wolper vorgestellt[449, 183].
Zusicherungsbasierte Eigenschaftspr¨ufung ist ausf¨uhrlich in [168, 111]
beschrie-ben F¨ur die simulative Verifikation m¨ussen die Zusicherungen zun¨achst in
Monito-re oder GeneratoMonito-ren ¨ubersetzt werden Die fr¨uhesten Arbeiten zur ¨Ubersetzung vonregul¨aren Ausdr¨ucken in Automaten sind [323, 437] Die ¨Ubersetzung von LTL-
Formel mittels Tableau-Technik wurde erstmals in [467] pr¨asentiert Aufgrund der
Wichtigkeit von LTL-Formeln f¨ur die formale und simulative Verifikation wurdediese Methode st¨andig verbessert [127, 405, 181, 188, 436] Nach der Standardi-sierung von PSL wurden auch spezielle Verfahren entwickelt, die PSL-Formeln inAutomaten ¨ubersetzen [203, 95, 187, 77]
Symbolische CTL-Modellpr¨ufung ist ausf¨uhrlich in [107, 272] diskutiert Diegrundlegenden Arbeiten f¨ur die BDD-basierte Repr¨asentation von Zustandsmengen
in der Modellpr¨ufung finden sich in [74, 72, 316, 73] Die SAT-basierte pr¨ufung wurde 1999 von Biere et al [49] vorgestellt Ihre technische Anwendung ist
Modell-in [48] beschrieben
Eine Vielzahl an Verifikationsaufgaben f¨ur zeitliche Anforderungen k¨onnen alsModellpr¨ufungsproblem f¨ur zeitbehaftete Modelle formuliert werden Viele Metho-den hierzu wurden im Umfeld von zeitbehafteten Automaten entwickelt [8] DieRepr¨asentation und Manipulation der Zeitzonen f¨ur die Erreichbarkeitsanalyse bei
zeitbehafteten Automaten kann effizient auf sog engl difference bound matrices
durchgef¨uhrt werden [132] Eine einfachere Klasse an Modelle kann direkt durchzeitbehaftete temporale Strukturen definiert werden F¨ur diese Modelle ist die TCTL-Modellpr¨ufung in polynomieller Zeitkomplexit¨at m¨oglich Ein erster Algorithmuszur TCTL-Modellpr¨ufung ist in [151] gegeben Erweiterungen sind in [152] und[288] diskutiert Die Zeitanalyse von TSDF-Graphen ist ausf¨uhrlich in [184] be-schrieben Die hier pr¨asentierten Ergebnisse wurden erstmals in [185] und [186]vorgestellt Dort verwenden Ghamarian et al bei ihrer Analyse eine Ausf¨uhrungs-semantik f¨ur SDF-Graphen, die ein mehrfaches, gleichzeitiges Feuern von Aktorenzul¨asst Dies ist eine offensichtliche Semantik, sofern man jegliche Ressourcenbe-schr¨ankungen vernachl¨assigt Um die in diesem Buch vorgestellte Analyse konsis-tent zu dem eingef¨uhrten zeitbehafteten Petri-Netzen zu halten, wurde diese Seman-tik hier nicht ¨ubernommen Die Bestimmung des maximalen Durchsatzes basierendauf der Spektralanalyse ist ebenfalls in [185] vorgestellt Erste Ans¨atze dieser Metho-
de gehen allerdings auf [375] zur¨uck und wurden sp¨ater mit dem Eigenwert-Problemder Max-Plus-Algebra [22] verbunden
Trang 3Abb 6.1 Hardware-Verifikation
In diesem Kapitel werden wichtige Methoden zur Verifikation von Hardware gestellt Diese Methoden sind notwendige Hilfsmittel zur Verifikation auf verschie-denen Abstraktionsebenen In Abb 6.1 sind die hier betrachteten Abstraktionsebenenhervorgehoben Zun¨achst werden Methoden zur ¨Aquivalenzpr¨ufung von kombinato-rischen und sequentiellen Schaltungen beschrieben, die ¨uberwiegend auf der Logi-kebene eingesetzt werden Anschließend werden Methoden zur ¨Aquivalenzpr¨ufungvon arithmetischen Schaltungen pr¨asentiert, mit denen sich Schaltungen auf Archi-tekturebene vergleichen lassen Ein Spezialfall stellt dabei die Prozessorverifikationdar Im Anschluss werden Methoden zur Modellpr¨ufung von Hardware auf Logik-und Architekturebene beschrieben Schließlich folgen Verfahren zur Verifikation desZeitverhaltens auf Logik- und Architekturebene
vor-C Haubelt, J Teich, Digitale Hardware/Software-Systeme, eXamen.press,
DOI 10.1007/978-3-642-05356-6 6, c Springer-Verlag Berlin Heidelberg 2010
Trang 46.1 ¨ Aquivalenzpr ¨ufung kombinatorischer und sequentieller Schaltungen
¨
Aquivalenzpr¨ufung von Hardware wird sowohl auf der Logik- als auch auf der
Architekturebene durchgef¨uhrt Hierbei unterscheidet man verschiedene Arten derPr¨ufung Zum einen k¨onnen zwei Implementierungen auf der selben Abstraktions-ebene verglichen werden, zum anderen ist es oft notwendig, die ¨Aquivalenz des Ver-haltensmodells einer Spezifikation und des Strukturmodells der zugeh¨origen Imple-mentierung zu zeigen Dar¨uber hinaus ist es aber oft w¨unschenswert, ebenfalls die
6.1.1 Implizite ¨ Aquivalenzpr ¨ufung auf der Logikebene
Auf der Logikebene (siehe Abb 6.1) ist das Verhaltensmodell der Spezifikationh¨aufig ein endlicher Zustandsautomat Die Zustands¨ubergangsfunktion bzw Aus-gabefunktion kann dann mit Hilfe von Booleschen Funktionen beschrieben werden
Das Strukturmodell der Implementierung ist entweder eine kombinatorische tung, auch Schaltnetz genannt, bzw ein Schaltwerk Im Gegensatz zu Schaltwerken
Schal-enthalten Schaltnetze keine Speicherelemente Sowohl Schaltnetze als auch werke lassen sich in Form von Booleschen Funktionen repr¨asentieren Somit l¨asstsich das grundlegende Problem bei der ¨Aquivalenzpr¨ufung auf Logikebene immerauf die ¨Aquivalenzpr¨ufung von Booleschen Funktionen reduzieren
Schalt-¨
Aquivalenzpr ¨ufung zweier Implementierungen
Kombinatorische Schaltungen bezeichnen das strukturelle Modell einer Implementierung auf der Logikebene ohne Speicher (Flip-Flops, Register etc.) Hier-bei handelt es sich um eine Netzliste bestehend aus Logikgattern, wobei R¨uckkopp-lung nicht zul¨assig sind Die Aufgabe der ¨Aquivalenzpr¨ufung auf Logikebene ist
Hardware-es, zu zeigen, dass zwei gegebene Schaltungen f¨ur die selben Eingaben die selbenAusgaben erzeugen Dann implementieren sie die selbe Funktion In diesem Fall
bezeichnet man beide Schaltungen als ¨aquivalent, andernfalls als nicht ¨aquivalent.
Eine M¨oglichkeit, diesen Vergleich zweier kombinatorischer Schaltungen formaldurchzuf¨uhren, besteht darin, beide Schaltungen durch eine kanonische Repr¨asen-
tation darzustellen und die Repr¨asentanten zu vergleichen Dies wird als
implizi-te ¨ Aquivalenzpr¨ufung bezeichnet Da es sich um eine formale Verifikationsmethode
handelt, ist sie auch f¨ur einen Beweis der ¨Aquivalenz einsetzbar
Das Verhalten kombinatorischer Schaltungen l¨asst sich mit Hilfe von BooleschenFunktionen beschreiben Hierbei werden die Eing¨ange der Schaltung als Argumente
Trang 5der Funktion interpretiert Die Ausg¨ange der Schaltung stellen die Funktionswertedar, wobei jeder Ausgang einzeln als eigene Boolesche Funktion dargestellt wird.Das Zeitverhalten, etwa die Verz¨ogerungszeiten der Gatter oder Leitungen, wird beidieser Abstraktion vernachl¨assigt.
Die Konstruktion der durch eine kombinatorische Schaltung implementierten
Booleschen Funktionen wird auch als symbolische Simulation bezeichnet piell existieren hierzu zwei Verfahren, die Vorw¨artskonstruktion und die R¨uckw¨arts- konstruktion Bei der Vorw¨artskonstruktion bestimmt man Gatterausg¨ange als Funk-
Prinzi-tionen der Eing¨ange, beginnend mit den Schaltungseing¨angen Bei der konstruktion stellt man jeden Schaltungsausgang als Funktion des letzten Gatters darund bestimmt f¨ur dieses die Eing¨ange aus den direkt davor liegenden Gattern usw
R¨uckw¨arts-Im Folgenden werden Schaltungen mit nur einem Ausgang betrachtet Das folgendeBeispiel stammt aus [272]
Beispiel 6.1.1 Gegeben ist die kombinatorische Schaltung in Abb 6.2 Durch w¨artskonstruktion ergibt sich die Funktion f1 zu: f1(x1,x2) := x1∧ x2 Das zwei-
Vor-te GatVor-ter ist ein OR-GatVor-ter Somit ist f2(x1,x2,x3) := f1(x1,x2) ∨ x2∨ x3= (x1 ∧
x2) ∨ x2∨ x3 Das dritter Gatter ist ein XOR-Gatter und somit f (x1 ,x2,x3,x4) :=
f2(x1,x2,x3) ⊕ x4= ((x1 ∧ x2) ∨ x2∨ x3) ⊕ x4
Die R¨uckw¨artskonstruktion liefert hier das selbe Ergebnis, baut die Boolesche
Funktion allerdings von dem Ausgang her auf, d h f ( f2 ,x4) := f2⊕ x4 Durch
Substitution der Variablen f2 mit f2:= f1 ∨ x2∨ x3 erh¨alt man f ( f1 ,x2,x3,x4) =
( f1 ∨ x2∨ x3) ⊕ x4 Zuletzt wird noch f1mit f1:= x1 ∧ x2substituiert, was zu dem
Abb 6.2 Kombinatorische Schaltung [272]
F¨ur eine implizite ¨Aquivalenzpr¨ufung werden die beiden Booleschen tionen, welche die zwei zu vergleichenden kombinatorischen Schaltungen imple-mentieren, mit Hilfe einer kanonischen Repr¨asentation dargestellt Kanonische Re-
Funk-pr¨asentationen besitzen die Eigenschaft, dass diese vollst¨andig und eindeutig sind,
d h es existiert f¨ur jede Boolesche Funktion genau ein Repr¨asentant Sind die zweiresultierenden Repr¨asentanten identisch, so implementieren die beiden kombina-
torischen Schaltungen die selbe Boolesche Funktion Reduzierte geordnete bin¨are Entscheidungsdiagramme (engl Reduced Ordered Binary Decision Diagrams, RO- BDDs) und reduzierte geordnete Kronecker funktionale Entscheidungsdiagramme (engl Reduced Ordered Kronecker Functional Decision Diagrams, ROKFDDs) sind
Trang 6solche kanonischen Repr¨asentationen Boolescher Funktionen (siehe Anhang B.2 undB.3).
Beispiel 6.1.2 Abbildung 6.3 zeigt zwei kombinatorische Schaltungen Beide
Schal-tungen unterscheiden sich lediglich in einem Gatter: W¨ahrend die erste Schaltung in
Abb 6.3a) die Eing¨ange x5und x6mit Hilfe eines NAND-Gatters verkn¨upft, wird
in der zweiten Schaltung (Abb 6.3b)) x6 negiert Die Frage, ob beide Schaltungen
¨aquivalent sind, l¨asst sich formal durch die Konstruktion je eines ROBDD mit derselben Variablenordnung und deren Vergleich beantworten
Abb 6.3 Zwei kombinatorische Schaltungen [275]
F¨ur die kombinatorische Schaltung in Abb 6.3a) wird mit Hilfe der konstruktion und des ITE-Operators (siehe Anhang B.2) ein ROBDD konstruiert
Vorw¨arts-Die Variablenordnung ist x1< x4< x3< x5< x7< x6< x2
1 Im ersten Schritt werden die ROBDDs f¨ur die Funktionen der Variablen z1und
z2bestimmt Zur Konstruktion des ROBDD der Funktion des Ausgangs z1(das
OR-Gatter mit den Eing¨angen x2und x5) wird die Operation ITE(x2 ,T,x5)
ver-wendet Wegen der Variablenordnung (x5 steht vor x2) muss diese Funktion
zun¨achst nach x5entwickelt werden
z = ITE(x2 ,T,x5) = ITE(x5,T,x2)
Trang 7Zur Konstruktion des ROBDD der Funktion des Ausgangs z2(das NAND-Gatter
mit den Eing¨angen x5 und x6) wird die Operation ITE(x5 ,¬x6,T) verwendet.
Dies ist bereits die richtige Variablenordnung
Trang 82 Im zweiten Schritt werden die Funktionen der Variablen z3 und z4bestimmt.
Der Ausdruck f¨ur z3ergibt sich aus der Definition des ITE-Operators f¨ur Gatter
AND-z3= ITE(x3 ,z1,F)
Da x3in der Variablenordnung vor x5und x2steht, ist keine weitere Umformung
n¨otig Das resultierende ROBDD ist in Abb 6.4c) zu sehen Die Funktion f¨ur z4ergibt sich zu ITE(z1 ,x4,F) Aufgrund der gegebenen Variablenordnung muss
zun¨achst nach x4entwickelt werden Da z1unabh¨angig von der Variablen x4ist,bleibt dieser Term unver¨andert erhalten
z4= ITE(z1 ,x4,F)
= ITE(x4 ,ITE(z1,T,F),ITE(z1,F,F))
= ITE(x4 ,z1,F)
Das resultierende ROBDD f¨ur z4ist in Abb 6.4d) dargestellt
3 Im dritten Schritt erfolgt die Repr¨asentation der Variablen z5, z6 und z7 als
ROBDD Die Konstruktion des ROBDD f¨ur die z5ergibt:
z5= ITE(x1 ,z3,F)
Ausgangspunkt ist wiederum die Definition des ITE-Operators f¨ur AND-Gatter
Da das ROBDD f¨ur die Funktion der Variablen z3lediglich die Variablen x3, x5
und x2enth¨alt (siehe Abb 6.4c)) und x1in der Variablenordnung an erster Stelle
steht, ist keine weitere Umformung n¨otig Das ROBDD f¨ur z5ist in Abb 6.4e)
dargestellt Die Konstruktion des ROBDD f¨ur z6ergibt:
z6= ITE(z3 ,T,z4)
= ITE(x4 ,ITE(z3,T,z1),ITE(z3,T,F))
= ITE(x4 ,ITE(x3,ITE(z1,T,z1),ITE(F,T,z1)),z3)
= ITE(x4 ,z1,z3)Ausgangspunkt ist die Definition des ITE-Operators f¨ur OR-Gatter Die h¨ochste
Variable in der Variablenordnung, die in den beiden ROBDDs z3 und z4
ent-halten ist, ist x4 Deshalb wird zun¨achst nach x4 entwickelt Der f¨ur den Fall
x4= T verbleibende Term enth¨alt x3als h¨ochste Variable in der
Variablenord-nung Durch Umformungen k¨onnen die Ausdr¨ucke auf z1und z3reduziert
wer-den Das ROBDD f¨ur z6ist in Abb 6.4f) zu sehen Die Konstruktion des ROBDD
f¨ur z7ergibt:
z7= ITE(z4 ,x7,F)
= ITE(x4 ,ITE(z1,x7,F),ITE(F,x7,F))
= ITE(x4 ,ITE(x5,ITE(T,x7,F),ITE(x2,x7,F)),F)
= ITE(x4 ,ITE(x ,x ,ITE(x ,x ,F)),F)
Trang 9Ausgehend von der Definition des ITE-Operators f¨ur AND-Gatter werden die
ROBDDs f¨ur z4 und x7 verkn¨upft Dieser Ausdruck wird f¨ur die Variable x4
und der f¨ur x4= T entstehende Ausdruck nach x5(entsprechend der
Variablen-ordnung) entwickelt Zur endg¨ultigen Konstruktion des ROBDD f¨ur z7 wirddann die Kommutativit¨at der UND-Verkn¨upfung ausgenutzt (ITE(x2 ,x7,F) =
ITE(x7 ,x2,F)) Das resultierende ROBDD f¨ur z7ist in Abb 6.4g) dargestellt
4 Im vierten Schritt wird das ROBDD f¨ur die Variable z8konstruiert
z8= ITE(z6 ,¬z3,T)
= ITE(x4 ,ITE(z1,¬z2,T),ITE(z3,¬z2,T))
= ITE(x4 ,ITE(x5,ITE(T,x6,T),ITE(x2,F,T)),
ITE(x3 ,ITE(z1,¬z2,T),ITE(F,¬z2,T)))
= ITE(x4 ,ITE(x5,x6,¬x2),ITE(x3,ITE(x5,ITE(T,x6,T),ITE(x2,F,T)),T))
= ITE(x4 ,ITE(x5,x6,¬x2),ITE(x3,ITE(x5,x6,¬x2),T))
Ausgehend von der Definition des ITE-Operators f¨ur NAND-Gatter erfolgt dieEntwicklung entsprechend der Variablenordnung Das Ergebnis ist in Abb 6.4h)
zu sehen
5 Im letzte Schritt wird das ROBDD f¨ur den Ausgang y1 durch eine
ODER-Verkn¨upfung konstruiert Der resultierende ROBDD f¨ur y1ist in Abb 6.5 stellt
darge-Neben der Vorw¨artskonstruktion ist es ebenfalls m¨oglich, das ROBDD vom gang her zu konstruieren Aufgrund der Konstruktionsregeln sind die Ergebnisse derVorw¨arts- und der R¨uckw¨artskonstruktion identisch
Aus-Beispiel 6.1.3 F¨ur die Schaltung aus Abb 6.3b) soll das ROBDD durch konstruktion f¨ur die Variablenordnung x1< x4< x3< x5< x7< x6< x2erstellt wer-den Es handelt sich hierbei um die selbe Variablenordnung wie in Beispiel 6.1.2
R¨uckw¨arts-1 Im ersten Schritt wird das ROBDD f¨ur das OR-Gatter am Ausgang y2als
Funk-tion y2= z5 ∨ x2∨ z8∨ z7erstellt
2 Im zweiten Schritt werden die Variablen z5, z7und z8durch die ROBDDs derentsprechenden Gatter (zweimal AND-Gatter, einmal NAND-Gatter) substitu-
iert Der entsprechende ITE-Operator ist definiert zu f (x,g(x)) = ITE(g(x),
f (x,T), f (x,F)) Das resultierende ROBDD ist in Abb 6.6a) zu sehen.
3 Im dritten Schritt werden die Variablen z2 und z6 durch die ROBDDs f¨ur die
Booleschen Funktionen z2= ¬x6 und z6= z3 ∨ z4= ¬(z3 ∧ z4) substituiert Dasresultierende ROBDD ist in Abb 6.6b) dargestellt
4 Im vierten Schritt werden die Variablen z3und z4durch die ROBDDs der
Funk-tionen z3= x3 ∧z1und z4= z1 ∧x4substituiert Das resultierende ROBDD ist inAbb 6.6c) dargestellt
5 Im letzten Schritt wird z1durch x2∨ x5substituiert Hiermit ist die konstruktion vollst¨andig Das Ergebnis ist identisch mit der Vorw¨artskonstruk-tion f¨ur die Schaltung aus Abb 6.3a) wie in Abb 6.5 dargestellt Da beide
Trang 10Abb 6.5 ROBDD f¨ur die Ausg¨ange y1und y2f¨ur die Schaltungen aus Abb 6.3
Schaltungen bei gleicher Variablenordnung durch das selbe ROBDD tiert werden, sind beide Schaltungen ¨aquivalent
repr¨asen-An den vorangegangenen beiden Beispielen kann man sehen, dass die ROBDDs
in den Zwischenschritten bei der Vorw¨arts- und R¨uckw¨artskonstruktion lich groß sein k¨onnen Deshalb kann es n¨utzlich sein, beide Verfahren zu kombi-nieren, um Spitzen im Speicherbedarf w¨ahrend der Konstruktion von ROBDDs zuverhindern [245]
unterschied-¨
Aquivalenzpr ¨ufung zwischen Spezifikation und Implementierung
Neben der ¨Aquivalenzpr¨ufung zweier Implementierungen wird oftmals auch die
¨
Aquivalenz zwischen dem Verhaltensmodell der Spezifikation und dem dell der Implementierung gepr¨uft W¨ahrend Strukturmodelle auf Logikebene durch
Strukturmo-kombinatorische Schaltungen bzw Schaltwerke dargestellt werden, ist das
Verhal-tensmodell der Spezifikation durch Boolesche Funktionen beschrieben Da natorische Schaltungen Boolesche Funktionen implementieren, kann man die Schal-tungen auch direkt in eine Boolesche Funktion ¨ubersetzen und auf ¨Aquivalenz mit
kombi-der Spezifikation pr¨ufen Dies kann wiekombi-derum implizit durch kanonische
Trang 11z4 z4 z3
x2
x7 x7
Abb 6.6 R¨uckw¨artskonstruktion des ROBDD f¨ur die Schaltungen aus Abb 6.3b)
tationen erfolgen Es handelt sich somit ebenfalls um eine formale thode
Verifikationsme-Beispiel 6.1.4 Gegeben ist die Boolesche Funktion f = x2 ∨¬x5∨x6∨x5∧((x1∧ x3)
∨(x4∧ x7) ∨ (¬x3∧ ¬x4)) Diese dient als Verhaltensmodell der Spezifikation f¨ur diekombinatorischen Schaltungen in Abb 6.3 Um die ¨Aquivalenz der Spezifikation
und der Implementierungen zu zeigen, wird ein reduziertes geordnetes Kronecker funktionales Entscheidungsdiagramm (engl Reduced Ordered Kronecker Functional Decision Diagram, ROKFDD, siehe Anhang B.3) mit der Variablenordnung x2<
x6< x5< x3< x4< x1< x7erstellt F¨ur die Variable x3wird dabei die positive, f¨ur die Variable x4die negative Davio-Zerlegung angewendet F¨ur alle anderen Variablen wird die Shannon-Zerlegung verwendet.
1 Im ersten Schritt wird die Boolesche Funktion f mit Hilfe der legung nach der Variable x2 entwickelt Dabei ergibt sich f |x2: =T = T und
Shannon-Zer-f |x: =F= ¬x5 ∨ x6∨ x5∧ ((x1∧ x3) ∨ (x4∧ x7) ∨ (¬x3∧ ¬x4)).
Trang 122 Im zweiten Schritt erfolgt die Entwicklung nach x6 mit Hilfe der
Shannon-Zerlegung Da der positive Kofaktor von x2 aus der vorherigen Zerlegungkonstant T ist, muss dieser nicht weiter entwickelt werden Es ergibt sich
f |x2: =F,x6 : =T= T und f | x2,x6 : =F= ¬x5 ∨x5∧((x1∧ x3) ∨ (x4∧ x7) ∨ (¬x3∧ ¬x4)).
3 Im dritten Schritt erfolgt die Entwicklung des negativen Kofaktors aus Schritt
2 bez¨uglich der Variablen x5 mit Hilfe der Shannon-Zerlegung Der
positi-ve Kofaktor von x6 ist eine konstante Funktion und muss deshalb nicht
zer-legt werden Die Zerlegung der Funktion f |x2,x6 : =F ergibt f |x2,x5,x6 : =F= T und
f |x2,x6 : =F,x5 : =T= (x1 ∧ x3) ∨ (x4∧ x7) ∨ (¬x3∧ ¬x4).
4 Wieder bleibt aus dem vorherigen Schritt nur eine nicht konstante Funktion
¨ubrig, der positive Kofaktor f |x2,x6 : =F,x5 : =T Dieser wird nun bzgl x3 mit derpositiven Davio-Zerlegung entwickelt Dabei ergibt sich:
f |x2,x3,x6 : =F,x5 : =T= ¬x4 ∨ x7sowie
Um die ¨Aquivalenz der Funktion f aus Beispiel 6.1.4 und den kombinatorischen
Schaltungen aus Abb 6.3 zu zeigen, muss ein ROKFDD mit der selben ordnung wie in Beispiel 6.1.4 f¨ur eine der Schaltungen aufgestellt werden, und diesesmit dem ROKFDD aus Abb 6.7 isomorph sein Es ist ausreichend, das ROKFDD f¨ureine der beiden Schaltungen aufzustellen, da die ¨Aquivalenz der beiden Schaltungen
Trang 13f |x2: =F= x1 ∧ x3∧ x5∨ ¬(((x3∧ x5) ∨ (x4∧ x5)) ∧ ¬x6) ∨ x4∧ x5∧ x7
2 Der positive Kofaktor f |x2: =Tist konstant T, weshalb keine weitere
Entwick-lung f¨ur diesen notwendig ist F¨ur den negativen Kofaktor f |x2: =F erfolgt dieEntwicklung entsprechend der Variablenordnung per Shannon-Zerlegung nach
Variable x6 Der resultierende positive Kofaktor ist wieder konstantT Der gative Kofaktor ergibt sich zu:
Trang 14ne-f |x2,x6 : =F= x1 ∧ x3∧ x5∨ ¬((x3∧ x5) ∨ (x4∧ x5)) ∨ x4∧ x5∧ x7
3 Im folgenden Schritt wird der negative Kofaktor f |x2,x6 : =F nach Variable x5mit
Hilfe der Shannon-Zerlegung entwickelt Der negative Kofaktor f |x2,x5,x6 : =F gibt konstantT Der positive Kofaktor ist:
er-f |x2,x6 : =F,x5 : =T= (x1 ∧ x3) ∨ ¬(x3∨ x4) ∨ (x4∧ x7)
= (x1 ∧ x3) ∨ (x4∧ x7) ∨ (¬x3∧ ¬x4)Dies ist die selbe aussagenlogische Formel wie in Schritt 3 der obigen RO-KFDD-Entwicklung aus Beispiel 6.1.4 Da die Variablenordnung und die Zerle-gungen hier die selben sind, verl¨auft auch die weitere Konstruktion des ROKFDDidentisch Als Ergebnis entsteht bei der Entwicklung des ROKFDD f¨ur die kom-binatorische Schaltung in Abb 6.3b) auch das in Abb 6.7 gezeigte ROKFDD.Dies bedeutet, dass die Implementierung (kombinatorische Schaltung) ¨aquiva-
lent zur Spezifikation (Boolesche Funktion f ) ist.
6.1.2 Explizite ¨ Aquivalenzpr ¨ufung auf der Logikebene
Neben der impliziten ¨Aquivalenzpr¨ufung von kombinatorischen Schaltungen mittels
kanonischer Funktionsrepr¨asentationen, gibt es effiziente Verfahren zur expliziten
¨
Aquivalenzpr¨ufung auf der Logikebene Hierzu k¨onnen entweder Verfahren zur
for-malen Erf¨ullbarkeitspr¨ufung mittels SAT-Solver oder Verfahren zur automatischen
Testfallgenerierung (auch Testmustergenerierung engl Automatic Test Pattern neration, ATPG) zum Einsatz kommen Beiden Verfahren liegt eine gemeinsame Datenstruktur zugrunde, die als engl Miter bezeichnet wird [58].
Ge-Die Idee bei der Konstruktion einer Miter-Schaltung besteht darin, dass die
bei-den Ausg¨ange von zwei kombinatorischen Schaltungen f1und f2mit einem Gatter verglichen werden Gleichzeitig werden die Eing¨ange beider Schaltungenmiteinander verbunden, so dass diese stets die selben Eingaben verarbeiten DerBeweis der ¨Aquivalenz von f1 und f2 erfolgt, indem gezeigt wird, dass der Aus-gang des XOR-Gatters niemals den WertT annehmen kann Bei der Falsifikationist die Aufgabe, eine Testfalleingabe zu finden, so dass der Ausgang des XOR-GattersT wird Besitzen die beiden kombinatorischen Schaltungen mehr als einenAusgang, so werden die Ausg¨ange paarweise mit XOR-Gattern verglichen und derAusgang der Miter-Schaltung mit einem OR-Gatter berechnet, welches als Eing¨angedie Ausg¨ange der XOR-Gatter erh¨alt Dies ist in Abb 6.8 dargestellt
XOR-Vor diesem Hintergrund sind die folgenden drei Aussagen ¨aquivalent [329]:
1 f1und f2sind funktional nicht ¨aquivalent
2 Der Ausgang der Miter-Schaltung aus f1und f2ist erf¨ullbar, d h es existierteine Eingabe, so dass der Ausgang der Miter-Schaltung zuT evaluiert
3 Der Ausgang der Miter-Schaltung ist auf sog Haftfehler (engl stuck-at faults)
pr¨ufbar (siehe auch [1])
Trang 15SAT-basierte ¨ Aquivalenzpr ¨ufung
Um eine explizite ¨Aquivalenzpr¨ufung zweier kombinatorischer Schaltungen mitSAT-Solvern durchzuf¨uhren, wird die entsprechende Miter-Schaltung zun¨achst in
eine aussagenlogische Formel in konjunktiver Normalform (KNF) ¨ubersetzt [289] Eine aussagenlogische Formel in KNF besteht aus der Konjunktion von sog Klau- seln Jede Klausel besteht wiederum aus der Disjunktion von Literalen, wobei ein
Literal eine Variable oder deren Negation ist Um eine aussagenlogische Formel inKNF zu erf¨ullen, muss jede Klausel und somit mindestens ein Literal in jeder Klauselden WertT zugewiesen bekommen
Klauseln k¨onnen als Menge von Literalen interpretiert werden Die Anzahl derLiterale in einer Klausel wird als|c| geschrieben Die leere Klausel repr¨asentiert den
konstanten WertF Formeln in KNF k¨onnen als MengeΦ von Klauseln tiert werden In diesem Fall beschreibt die leere Menge∅ die konstante Boolesche
repr¨asen-FunktionT
Die Konstruktion der Formel in KNF aus einer kombinatorischen Schaltung folgt anhand des Booleschen NetzwerkesN (siehe auch Definition A.2.1 auf Sei-
er-te 525), welches die Mier-ter-Schaltung repr¨asentiert Jeder Knoer-ten v ∈ V im
Boole-schen NetzwerkN wird mit einer Formel in KNF annotiert, welche die
implemen-tierte Funktion des assoziierten Gatters beschreibt Im Folgenden werden lediglich
Gatter (Knoten) mit zwei Eing¨angen x1und x2und einem Ausgang z betrachtet Der Typ des Knoten v sei gegeben durch die Funktion type (v) Die Evaluierung eines
Knotens wird als konsistent bezeichnet, wenn gilt:
z = type(v)(x1 ,x2)Dies kann auch wie folgt geschrieben werden [329]:
(type(v)(x1 ,x2) ⇒ z) ∧ (z ⇒ type(v)(x1,x2))Mit anderen Worten: Es muss die mit den beiden Eing¨angen berechnete Funktion amAusgang zu sehen sein und weiterhin das am Ausgang ausgegebene Ergebnis mit derberechneten Funktion ¨ubereinstimmen In KNF kann dieser Zusammenhang auch als
(¬type(v)(x1 ,x2) ∨ z) ∧ (¬z ∨ type(v)(x1,x2))