Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
323,11 KB
Nội dung
20 1 Einleitung Dabei ist das Zeitverhalten der Hardware stark durch die gew ¨ ahlte Technologie be- einflusst: Die Gatterlaufzeiten bestimmen den kritischen Pfad in einem System und somit die Taktrate bzw. die Tiefe der Pipeline. Diese Effekte sind nicht auf die Logi- kebene beschr ¨ ankt, sondern sind auch auf Architekturebene und sogar Systemebene zu ber ¨ ucksichtigen. Im Bereich der Software-Verifikation trifft man auf ¨ ahnliche Aufgaben wie in der Hardware-Verifikation. Auf Blockebene liegt die Implementierung in Form eines Assemblerprogramms f ¨ ur den gew ¨ ahlten Prozessor vor. Die Spezifikation ist in ei- ner Hochsprache verfasst, h ¨ aufig in eingebetteten Systemen C/C++. Auch auf dieser Ebene kann es wichtig sein, die ¨ Aquivalenz von Programmen zu zeigen, da gerade eingebettete Software stark optimiert wird, um den Speicher- und Geschwindigkeits- anforderungen zu gen ¨ ugen. Da eingebettete Systeme und deren Software auch h ¨ aufig in sicherheitskritischen Bereichen eingesetzt werden, ergibt sich aber auch als wei- tere Verifikationsaufgabe zu zeigen, ob ein Programm gewisse funktionale Eigen- schaften besitzt. So sollte eine Steuerungs-Software nicht verklemmen und korrekt auf Anfragen reagieren. Daneben hat die Mikroarchitektur des Prozessors einen großen Einfluss auf die Abarbeitungsgeschwindigkeit von Instruktionen, d. h. unterschiedliche Mikroarchi- tekturen k ¨ onnen die selbe Instruktionssatzarchitektur implementieren, aber ein un- terschiedliches zeitliches Verhalten besitzen. Dies hat Einfluss auf die Ausf ¨ uhrungs- zeiten nicht nur einzelner Instruktionen, sondern auf ganze Programme. Die ¨ Uber- pr ¨ ufung der Einhaltung der Zeitanforderung ist somit eine Verifikationsaufgabe so- wohl auf Block- als auch auf Modulebene. Auf Systemebene ist die ¨ Uberpr ¨ ufung von Eigenschaften der Implementierung noch vordergr ¨ undiger. Aufgrund der Komplexit ¨ at von Spezifikation und Implemen- tierung ist eine vollst ¨ andige Pr ¨ ufung nicht mehr praktikabel. Das Verhalten auf Sys- temebene wird oftmals durch ein Modell kommunizierender Prozesse beschrieben. Das in der Implementierung verwendete Strukturmodell ist h ¨ aufig eine Netzliste aus Prozessoren, Speichern, Bussen und Hardware-Beschleunigern. Bei der Verifikation wird dabei eine Fokussierung auf die Interaktion der Komponenten untereinander durch Transaktionen vorgenommen. Neben der ¨ Uberpr ¨ ufung des Verhaltens ist aber auch das Einhalten von Zeiteigenschaften von großer Bedeutung. Das X-Diagramm der Verifikation Analog zu dem X-Diagramm f ¨ ur den Entwurf (Abb. 1.12) wird nun ein X-Diagramm f ¨ ur die Verifikation entwickelt. Dieses ist in Abb. 1.14 zu sehen. Es dient zur Formu- lierung der grundlegenden Verifikationsaufgaben bei der Entwicklung eingebetteter Systeme. In Abb. 1.14a) sieht man graphisch dargestellt, dass die Verifikation die Imple- mentierung gegen ihre Spezifikation pr ¨ uft. Die gleiche Verfeinerung wie im Entwurf in Abb. 1.12b) ist f ¨ ur die Verifikation vorgenommen worden (Abb. 1.14b)). Eine Spe- zifikation besteht aus einem Verhaltensmodell und Anforderungen. Eine Implemen- tierung besteht aus einer Strukturbeschreibung und den Qualit ¨ atsmerkmalen, die f ¨ ur die Implementierung ermittelbar sind. Die Verifikation besteht aus zwei Schritten: 1.2 Der Verifikationsprozess 21 b) Struktur Qualit ¨ ats- merkmale Verhalten Anforderungen a) Spezifikation Implementierung Abstraktion & Pr ¨ ufung Verifikation Abb. 1.14. X-Diagramm der Verifikation Abstraktion und Pr ¨ ufung. Die Abstraktion kann notwendig sein, da im Entwurfspro- zess gegen ¨ uber dem Verhaltensmodell Verfeinerungsinformationen im Strukturmo- dell aufgenommen worden sind. Die Pr ¨ ufung h ¨ angt von der Verifikationsaufgabe ab. Aus dem X-Diagramm lassen sich im Wesentlichen drei grundlegende Verifikations- aufgaben ableiten, die im Folgenden unterschieden werden. Diese sind unabh ¨ angig von der Abstraktionsebene definiert: 1. ¨ Aquivalenzpr ¨ ufung: Bei der ¨ Aquivalenzpr ¨ ufung wird das Strukturmodell mit dem Verhaltensmodell auf ¨ Aquivalenz ¨ uberpr ¨ uft, d. h. es wird versucht, die Fra- ge zu beantworten, ob unter allen Umst ¨ anden das Strukturmodell das selbe Ver- halten wie das Verhaltensmodell der Spezifikation aufweist (siehe Abb. 1.15a)). 2. Pr ¨ ufung funktionaler Eigenschaften: In der funktionalen Eigenschaftspr ¨ ufung wird das Strukturmodell der Implementierung dahingehend ¨ uberpr ¨ uft, ob es die funktionalen Eigenschaften in den Anforderungen erf ¨ ullt (siehe Abb. 1.15b)). Dies k ¨ onnen z. B. Gefahrlosigkeitseigenschaften oder Lebendigkeitseigenschaf- ten sein. 3. Pr ¨ ufung nichtfunktionaler Eigenschaften: In der nichtfunktionalen Eigenschafts- pr ¨ ufung werden die Anforderungen an die Qualit ¨ atsmerkmale der Implementie- rung ¨ uberpr ¨ uft. Es wird also gepr ¨ uft, ob die Merkmale den Anforderungen der Spezifikation gen ¨ ugen (siehe Abb. 1.15c)). Die Schwierigkeit besteht darin, dass die Qualit ¨ atsmerkmale auf niedrigen Abstraktionsebenen ermittelt werden und durch geeignete Kompositionen von Absch ¨ atzungen auf h ¨ oheren Ebenen durch- gef ¨ uhrt werden m ¨ ussen, wo die Anforderungen spezifiziert sind. Funktionale und nichtfunktionale Eigenschaften sind typischerweise nicht unab- h ¨ angig voneinander. So kann beispielsweise die Verletzung einer Zeitanforderung eine Gefahrensituation ausl ¨ osen, oder anders herum. Die grundlegenden Verifikationsaufgaben sind noch einmal in Abb. 1.15 gra- phisch dargestellt. Jede der drei Aufgaben kann auf jeder Abstraktionsebene zum Einsatz kommen. Allerdings bekommen die Eigenschaftspr ¨ ufungen auf hohen Ab- 22 1 Einleitung straktionsebenen eine gr ¨ oßere Bedeutung, w ¨ ahrend die ¨ Aquivalenzpr ¨ ufung im We- sentlichen auf tieferen Abstraktionsebenen eingesetzt wird. a) Verhalten Anforderungen b) c) pr ¨ ufung Eigenschafts- funktionale Abstraktion & ¨ Aquivalenz- pr ¨ ufung Abstraktion & Struktur Struktur Qualit ¨ ats- merkmale Anforderungen Abstraktion & pr ¨ ufung Eigenschafts- funktionale nicht- Abb. 1.15. Drei Arten der Pr ¨ ufung in der Verifikation 1.3 Eine kurze Geschichte der Verifikation Zur Verifikation wird neben der Spezifikation und der Implementierung auch eine leistungsf ¨ ahige Verifikationsmethode ben ¨ otigt. Grob lassen sich Verifikationsmetho- den in formale und simulative Methoden klassifizieren. Die Entwicklung von Verifi- kationsmethoden hat eine lange Geschichte. Insbesondere formale Methoden basie- ren auf mathematischen Beweisverfahren, die teilweise Jahrhunderte vor der Erfin- dung des Computer entwickelt wurden. Im Gegensatz dazu wurden viele simulative Verfahren erst mit dem Vorhandensein von leistungsf ¨ ahigen Computern erm ¨ oglicht. In diesem Abschnitt wird eine kurze geschichtliche ¨ Ubersicht zu der Entwicklung von Verifikationsmethoden gegeben. Eine ausf ¨ uhrliche Darstellung findet man in [390]. Ein ¨ Uberblick ¨ uber die Geschichte der Logik kann [413] entnommen werden. Der Begriff Verifikation leitet sich vom lateinischen Wort veritas, die Wahrheit, ab. Verifikation ist der Nachweis bzw. der Prozess des Nachweisens, dass ein ver- muteter oder behaupteter Sachverhalt wahr ist. Zentral f ¨ ur die Verifikation ist der Begriff der Logik. Bereits Aristoteles (384 v. Chr. – 322 v. Chr.) entwickelte eine ers- te formale Logik mit dem Ziel, Gesetze des menschlichen Denkens zu finden. Dabei entwickelte er Schemata zur Repr ¨ asentation g ¨ ultiger Schl ¨ usse, sog. Syllogismen.Ein g ¨ ultiger Schluss ist eine Konfiguration der Form [413]: Pr ¨ amissen Folgerung 1.3 Eine kurze Geschichte der Verifikation 23 Hierbei wird ausgehend von einer endlichen Anzahl an Pr ¨ amissen eine Folgerung geschlossen. Als Beispiel diene die Folgerung: Alle P sind Q, a ist P a ist Q Unabh ¨ angig von der konkreten Interpretation von P und Q ist die Folgerung richtig. Man kann z. B. f ¨ ur P das Pr ¨ adikat Mensch,f ¨ ur Q das Pr ¨ adikat sterblich und f ¨ ur a das Individuum Sokrates w ¨ ahlen. Hierdurch entsteht eine ber ¨ uhmte Instanz der obigen Folgerung: Alle Menschen sind sterblich, Sokrates ist ein Mensch Sokrates ist sterblich Die Richtigkeit dieser Folgerung ist bereits bewiesen. 2000 Jahre sp ¨ ater, im Jahr 1686, entwickelte Gottfried Wilhelm Leibniz in sei- nem Werk Generales Inquisitiones de Analysi Notionum et Veritatum (Allgemeine Untersuchungen ¨ uber die Zerlegung der Begriffe und Wahrheiten) eine erste moder- ne Logik, aufgebaut in einer mathematischen Sprache, der Kalk ¨ ulform. Nahezu zwei Jahrhunderte sp ¨ ater ver ¨ offentlicht George Boole 1847 in The Mathematical Analysis of Logic: Being an Essay towards a Calculus of Deductive Reasoning das erste al- gebraische Logikkalk ¨ ul und begr ¨ undet darin die heutige Aussagenlogik. In der Aus- sagenlogik werden ausgehend von atomaren Aussagen A, B,C, , welche die Werte wahr (T) oder nicht wahr (F) annehmen k ¨ onnen, mit Hilfe der Junktoren ¬ (nicht), ∨ (oder), ∧ (und) und ⇒ (impliziert) neue Aussagen gebildet. Ein Kalk ¨ ul der Aus- sagenlogik basiert auf einer endlichen Anzahl an Axiomen, mit deren Hilfe g ¨ ultige Aussagen unabh ¨ angig vom Wahrheitsgehalt der atomaren Aussagen gefolgert wer- den k ¨ onnen. Beispiele hierf ¨ ur sind [413]: A ∨¬A T A,A ⇒ B B Die Pr ¨ adikatenlogik erster Ordnung wird erstmals von Gottlob Frege in sei- nem Buch Begriffsschrift – Eine der arithmetischen nachgebildete Formelsprache des reinen Denkens im Jahr 1879 beschrieben. Die Pr ¨ adikatenlogik erster Ordnung erweitert die Aussagenlogik um Funktionen, Pr ¨ adikate und Quantoren. Mit Hilfe mehrstelliger Pr ¨ adikate oder Relationen werden atomare Aussagen gebildet. Diese k ¨ onnen wie in der Aussagenlogik durch Junktoren zu neuen Aussagen zusammen- gesetzt werden. Zus ¨ atzlich kann durch die Existenz- (∃) bzw. Allquantifizierung (∀) gepr ¨ uft werden, ob eine Aussage auf mindestens eine bzw. auf alle Variablen zutrifft. Neue Axiome der Pr ¨ adikatenlogik, die ¨ uber die Axiome der Aussagenlogik hinaus- gehen, sind beispielsweise [413]: A(y) ⇒∃x : A(x,y) T A(x) ∀x : A(x) 1929 beweist Kurt G ¨ odel die Vollst ¨ andigkeit der Pr ¨ adikatenlogik erster Ordnung, d. h. alle logisch g ¨ ultigen Aussagen sind herleitbar im System der Pr ¨ adikatenlogik 24 1 Einleitung erster Ordnung. Zwei Jahre sp ¨ ater, 1931, ver ¨ offentlichte Kurt G ¨ odel in [198] den G ¨ odelschen Unvollst ¨ andigkeitssatz, der Grenzen f ¨ ur formale Systeme aufzeigt. Er besagt beispielsweise, dass in der Arithmetik nicht alle Aussagen formal bewiesen oder widerlegt werden k ¨ onnen. Die zentrale Aussage des Satzes lautet: ” Jedes hin- reichend m ¨ achtige formale System ist entweder widerspr ¨ uchlich oder unvollst ¨ andig“. Obwohl die Aussage des Unvollst ¨ andigkeitssatzes eine negative ist, ist sie eine der zentralen Erkenntnisse des vergangenen Jahrhunderts und hat nachhaltig die Frage- stellungen der Forschung in eine neue und fruchtbare Richtung bewegt. Im Jahr 1937 ver ¨ offentlichte Alan Turing eine grundlegende Arbeit [444], in der er die Ergebnisse Kurt G ¨ odels neu formulierte. Dabei ersetzte er die forma- len Systeme G ¨ odels durch eine einfache Maschine, die nach ihm benannte Turing- Maschine. Eine Turing-Maschine ist eine hypothetische ” Rechenmaschine“. Sie be- steht aus einem Band, welches unendlich lang ist. Dieses ist in einzelne Felder un- terteilt. In einem Feld k ¨ onnen Symbole aus einem endlichen Alphabet stehen. Ein Lese-/Schreibkopf steht zu jedem Zeitpunkt genau auf einem Feld. Neben dem Spei- cher auf dem Band besitzt eine Turing-Maschine noch interne Zust ¨ ande. In einem Rechenschritt liest die Turing-Maschine das Symbol auf dem Band, ¨ andert seinen internen Zustand, schreibt an die selbe Position auf dem Band ein neues (evtl. identi- sches) Symbol und bewegt den Lese-/Schreibkopf um eine Position nach links oder rechts, oder bleibt gleich. Die Eingaben zur Berechnung m ¨ ussen vorher auf das Band geschrieben werden. Ist die Berechnung abgeschlossen, so befindet sich die Turing- Maschine in einem ausgezeichneten Haltezustand und das Ergebnis der Berechnung steht auf dem Band. Turing konnte beweisen, dass eine Turing-Maschine in der Lage ist, ” jedes vor- stellbare mathematische Problem zu l ¨ osen, sofern dieses auch durch einen Algorith- mus gel ¨ ost werden kann“. Hiermit bewies Turing, dass das Halteproblem mit Hilfe der Turing-Maschine nicht entscheidbar ist. Die Unentscheidbarkeit des Haltepro- blems kann wie folgt formuliert werden: Es gibt keinen Algorithmus A 1 , der f ¨ ur einen beliebigen Algorithmus A 2 und beliebige Eingabe E entscheidet, ob A 2 mit der Eingabe E terminiert. Turings Werk ist zentral f ¨ ur die Theoretische Informatik und wird manchmal so- gar als Geburtsstunde der gesamten Informatik bezeichnet. Dies liegt nicht zuletzt daran, dass Turings Ideen einen wesentlichen Einfluss auf den Bau digitaler Com- puter aus ¨ ubte. Die Bedeutung von Turings (und somit G ¨ odels) Arbeiten kann man fassen, wenn man sich vor Augen f ¨ uhrt, dass sie die Grenzen der Verifikation aufzei- gen. Mit anderen Worten: Es gibt Verifikationsprobleme, die sich nicht beantworten lassen, da das zugrundeliegende Problem nicht entscheidbar ist. Somit haben diese Arbeiten Auswirkungen, die in diesem Buch ber ¨ ucksichtigt werden m ¨ ussen. Neben der Aussagenlogik und Pr ¨ adikatenlogik erster Ordnung gibt es viele wei- tere f ¨ ur die Verifikation wichtige Logiken. Ein Beispiel f ¨ ur eine ganze Klasse sol- cher weiteren Logiken sind die sog. Modallogiken. Modallogiken erweitern die bis- her vorgestellten Logiken um die Konzepte ” notwendig“ und ” m ¨ oglich “. Die Ide- en gehen wiederum auf Aristoteles zur ¨ uck. Ende der 1950er Jahre ver ¨ offentlichte Saul Kripke aufsehenerregende Arbeiten zur Modallogik [268]. Die Bedeutung der Modallogik und der Arbeiten von Kripke wird klar, wenn man sich ihr Anwendungs- 1.3 Eine kurze Geschichte der Verifikation 25 feld, die ¨ Uberpr ¨ ufung funktionaler Eigenschaften von digitalen Systemen, vor Augen f ¨ uhrt. Dies wird an dem folgenden Beispiel aus [413] verdeutlicht: Gegeben sei das folgende Programm, welches die Sequenz der Primzahlen aus- druckt: 1a:=2 2 print(a) 3a:=a+1 4b:=2 5 if ((b * b) > a) then goto 2 6 if ((a mod b) == 0) then goto 3 7b:=b+1 8 goto 5 Die m ¨ oglichen Zust ¨ ande bei der Ausf ¨ uhrung des Programms k ¨ onnen nun durch das Tripel (l,y 1 ,y 2 ) angegeben werden, wobei l die momentane Zeilennummern und y 1 und y 2 die Belegungen der Variablen a bzw. b nach der Berechnung in dieser Zeile darstellen. Somit beschreibt (8,3,3) einen m ¨ oglichen Zustand. Mit Hilfe der Modallogik k ¨ onnen nun Aussagen wie ” Es ist notwendig, dass im Zustand (2,y 1 ,y 2 ) gilt, dass y 1 prim ist“ formuliert werden. 1977 schl ¨ agt Pnueli eine Erweiterung von Modallogiken um temporale Opera- toren vor, s o dass auch die zeitliche Ordnung beim Auftreten von Eigenschaften ber ¨ ucksichtigt werden kann [364]. Dabei werden Operatoren verwendet, um anzu- zeigen, ob beispielsweise eine Eigenschaft irgendwann oder immer in der Zukunft gilt. Neben der Entscheidbarkeit von Problemen stellt sich die Frage nach der Effi- zienz, mit der Verifikationsprobleme l ¨ osbar sind. Diese Frage untersuchte Stephen Cook in seinem 1971 ver ¨ offentlichten Werk [116]. Auf seinen ¨ Uberlegungen basiert die sog. Komplexit ¨ atstheorie. Es stellte sich heraus, dass einige Probleme in Polyno- mialzeit l ¨ osbar sind, d. h. die Laufzeit des Algorithmus zur L ¨ osung kann als Polynom mit Abh ¨ angigkeit von den Eingabedaten des Problems abgesch ¨ atzt werden. Proble- me, die diese Eigenschaft besitzen, geh ¨ oren zur Komplexit ¨ atsklasse P. Daneben gibt es viele Probleme, f ¨ ur die ein solcher Zusammenhang nicht gefunden werden kann, sondern bei denen die Laufzeit vielmehr exponentiell in der Gr ¨ oße der Eingabedaten w ¨ achst. F ¨ ur viele praktische Probleme jedoch gilt, dass, wenn erst mal eine L ¨ osung gefunden ist, diese in polynomieller Zeit auf ihre G ¨ ultigkeit ¨ uberpr ¨ uft werden kann. Solche Probleme, werden als NP-vollst ¨ andige Probleme (nichtdeterministisch poly- nomial) bezeichnet. Cook beweist, dass das Boolesche Erf ¨ ullbarkeitsproblem (engl. Satisfiability, SAT) NP-vollst ¨ andig ist. Das Boolesche Erf ¨ ullbarkeitsproblem kann wie folgt formuliert werden: Gegeben sei eine aussagenlogische Formel. Finde ei- ne Zuweisung der Werte T und F an die atomaren Aussagen, so dass die Formel zu wahr evaluiert. Dabei wirft er die bis heute unbeantwortete Frage auf, ob die Kom- plexit ¨ atsklassen P und NP ¨ aquivalent sind (siehe Anhang C). Nachdem die ersten Computer verf ¨ ugbar waren, entwickelte sich schnell die neue Forschungsrichtung des automatischen Theorembeweisens. Der erste automa- tische Beweis durch eine Maschine gelang im Jahr 1954, wobei bewiesen wurde, dass die Summe zweier gerader Zahlen wieder gerade ist. Im Laufe der Zeit wur- 26 1 Einleitung den die Implementierungen der automatischen Beweistechniken immer weiter ver- bessert. Im Jahr 1962 publizierten Davis et al. [128] eine neue Beweisprozedur zur L ¨ osung des Booleschen Erf ¨ ullbarkeitsproblems. Es handelt sich hierbei um den DPLL-Algorithmus (nach deren Entwicklern Martin Davis, Hilary Putnam, George Logemann und Donald W. Loveland), der im Grunde noch heute in nahezu allen Programmen zum L ¨ osen des Booleschen Erf ¨ ullbarkeitsproblems, sog. SAT-Solvern, implementiert wird. Mitte der 1990er Jahre gab es große Fortschritte in der Implementierung von SAT-Solvern. Daneben wurden diese Programme auch immer h ¨ aufiger erfolgreich mit anderen Theoriel ¨ osern kombiniert [392], mit dem Ziel, entscheidbare Varianten der Pr ¨ adikatenlogik erster Ordnung auf Erf ¨ ullbarkeit zu pr ¨ ufen. Dabei wird eine For- mel nicht hinsichtlich aller m ¨ oglichen Interpretationen auf Erf ¨ ullbarkeit ¨ uberpr ¨ uft, sondern lediglich bez ¨ uglich einer sog. Hintergrundtheorie. Deshalb spricht man auch h ¨ aufig von Erf ¨ ullbarkeit modulo Theorien (engl. Satisfiability Modulo Theories, SMT). Untersuchte Theorien sind u. a. ¨ Aquivalenz und uninterpretierte Funktionen, Lineare Arithmetik ¨ uber reelle und ganze Zahlen, Divergenzlogik, Bitvektor-Theorie und Array-Theorie. Ein großes Interesse an der Anwendung des Theorembeweisens lag schon fr ¨ uh in der Programmverifikation.Diefr ¨ uhesten Arbeiten gehen auf Floyd [166] und Hoare [221] zur ¨ uck. Das zentrale Element des Hoare-Kalk ¨ uls ist das sog. Hoare-Tripel, das beschreibt, wie ein Programmteil P den Zustand einer Berechnung ver ¨ andert. Sei Φ eine Vorbedingung und Ψ eine Nachbedingung. Das Hoare-Tripel { Φ }P { Ψ } besagt, dass wenn die Vorbedingung Φ gilt, dann das Programm P gestartet wird und terminiert, so ist die Nachbedingung Ψ erf ¨ ullt. Besonders interessant in diesem Zusammenhang ist die folgende Regel f ¨ ur while-Schleifen Φ ⇒ Φ I ,{ Φ I ∧C}P { Φ I }, Φ I ∧¬C ⇒ Ψ { Φ }while C do P end { Ψ } Hierbei stellt P den Schleifenrumpf und ¬C die Abbruchbedingung f ¨ ur die Schleife dar. Φ I ist die Schleifeninvariante, da diese vor der Ausf ¨ uhrung der Schleife als auch nach deren Ausf ¨ uhrung gilt. Ein großes Problem ist allerdings, dass die Bestimmung der Schleifeninvarianten oftmals nicht einfach m ¨ oglich ist. Eine M ¨ oglichkeit hierzu bilden Fixpunktalgorithmen. Fixpunktalgorithmen spielen auch bei den Beweisverfahren f ¨ ur temporale Aus- sagenlogiken eine entscheidende Rolle. Dabei wird die geforderte funktionale Eigen- schaft eines Systems mit Hilfe einer temporallogischen Formel ausgedr ¨ uckt. F ¨ ur das System selbst wird ein Modell ben ¨ otigt. Aus diesem Grund werden die entsprechen- den Beweisverfahren auch als Modellpr ¨ ufung bezeichnet. Erste Modellpr ¨ ufungs- ans ¨ atze sind in den fr ¨ uhen 1980er Jahren entstanden [369, 97, 304, 449]. Diese Modellpr ¨ ufungsverfahren basierten auf einer expliziten Aufz ¨ ahlung der er- reichbaren Zust ¨ ande. F ¨ ur Systeme mit kleiner Anzahl an Zust ¨ anden, stellt dies kein Problem dar. Allerdings f ¨ ur Systeme, wie sie in der Praxis vorkommen, sind diese 1.3 Eine kurze Geschichte der Verifikation 27 Ans ¨ atze meist nicht praktikabel. 1987 erkannte McMillan [74, 316], dass durch eine symbolische Repr ¨ asentation des Zustandsraums sehr viel gr ¨ oßere Systeme automa- tisch verifiziert werden k ¨ onnen. Die symbolische Repr ¨ asentation basierte dabei auf sog. bin ¨ aren Entscheidungsdiagrammen (engl. Binary Decision Diagrams, BDDs) [62]. Bin ¨ are Entscheidungsdiagramme sind Repr ¨ asentationen von Booleschen Funk- tionen und oftmals kompakter als andere Repr ¨ asentationen, etwa Funktionstabellen. Weiterhin existieren effiziente Algorithmen zu deren Manipulation. Mit der symbo- lischen Modellpr ¨ ufung wurde es m ¨ oglich, Systeme mit mehr als 10 120 Zust ¨ anden zu verifizieren [72, 73]. Basierend auf den Ergebnissen der symbolischen Modell- pr ¨ ufung entwickelten sich auch schnell neue Verfahren zur formalen ¨ Aquivalenz- pr ¨ ufung von Hardware [58]. All den formalen Ans ¨ atzen gemein ist allerdings, dass diese f ¨ ur reale Systeme sehr viel Speicher ben ¨ otigen. Gl ¨ ucklicherweise zeigten die 1990er Jahre, wie oben beschrieben, enorme Fortschritte im Entwurf von SAT-Solvern. 1999 stellten Biere et al. eine symbolische Modellpr ¨ ufung vor, die anstelle von BDDs SAT-Solver verwen- det [48, 49]. Die SAT-basierte Modellpr ¨ ufung f ¨ uhrt dabei zun ¨ achst keine vollst ¨ andi- ge Verifikation durch, sondern betrachtet das Systeme lediglich ¨ uber k Zeitschritte. Hierdurch ist es nicht mehr direkt m ¨ oglich, zu zeigen, dass das System eine gefor- derte Eigenschaft erf ¨ ullt. Statt dessen wird ein ” Fehlerfall“ gefunden, in dem die Eigenschaft nicht erf ¨ ullt wird. Mit der Verf ¨ ugbarkeit von Computern hat sich noch eine weitere Richtung von Verifikationsverfahren entwickelt. Diese Verfahren basieren auf der Simulation des Systems. Wie bei der SAT-basierten Modellpr ¨ ufung kann hierbei lediglich die Anwe- senheit von Fehlern gezeigt werden, sofern ein Fehlerfall gefunden wird. Um einen simulativen Beweis f ¨ ur Korrektheit zu f ¨ uhren, w ¨ are es notwendig, das System mit allen m ¨ oglichen Testfalleingaben zu stimulieren und die Systemantwort zu bewer- ten. Dies ist bei heutigen Systemen kein realistischer Ansatz. Dennoch haben sich simulative Verifikationsans ¨ atze, insbesondere im industriellen Einsatz, etabliert. Ein Grund hierf ¨ ur liegt in der im Gegensatz zu formalen Methoden einfacheren Handha- bung. F ¨ ur simulative Verifikationsverfahren werden die zu pr ¨ ufenden Eigenschaften direkt im Quelltext des Programms formuliert. In der Praxis hat sich gezeigt, dass das Einf ¨ ugen von Zusicherungen (engl. assertions) direkt in den Quelltext w ¨ ahrend des Programmierens sehr effizient und effektiv ist, um Fehler fr ¨ uhzeitig zu finden. Bereits eine der ersten Hochsprachen, die Sprache C [257], welche in den fr ¨ uhen 1970er Jahren entwickelt wurde, verf ¨ ugt daf ¨ ur ¨ uber spezielle assert-Befehle. Auch die in den 1980er entwickelte Hardware-Beschreibungssprache VHDL [20, 233] hat bereits das Konzept von Zusicherungen aufgegriffen. Allerdings waren die in den sequenziellen Programmiersprachen entwickelten Zusicherungen nicht ausreichend, um zeitliche Zusammenh ¨ ange zwischen Annah- men und Zusicherungen zu formulieren. Erst Anfang der 2000er Jahre wurden die Prinzipien temporaler Logiken adaptiert und in Simulationsbibliotheken zur Verf ¨ ugung gestellt [234, 235]. Als Ergebnis etablierte sich im industriellen Um- feld eine simulative Modellpr ¨ ufung. Durch die formale Spezifikation der funktio- nalen Eigenschaften kann die simulative Modellpr ¨ ufung aber auch durch formale 28 1 Einleitung Modellpr ¨ ufungsverfahren unterst ¨ utzt werden. Dies wird als zusicherungsbasierte Ei- genschaftspr ¨ ufung (engl. Assertion-Based Verification, ABV) bezeichnet. Zur selben Zeit entstanden auch neue Programmiersprachen, welche die Objek- torientierung von sequentiellen Programmiersprachen und die Nebenl ¨ aufigkeit aus Hardware-Beschreibungssprachen kombinierten. Das Ergebnis sind sog. Systembe- schreibungssprachen,etwaSystemC [207, 236] oder SpecC [172]. Insbesondere Sys- temC hat sich mittlerweile zu einem Defacto-Standard in der ausf ¨ uhrbaren Spezifika- tion von Hardware/Software-Systemen entwickelt. Simulative Verifikationsans ¨ atze f ¨ ur SystemC werden im Rahmen der SCV (engl. SystemC Verification Library) un- terst ¨ utzt [424]. Dar ¨ uber hinaus definiert SystemC-TLM einen Standard zur Beschrei- bung von sog. Transaktionsebenenmodellen [352], welche zunehmend als Struktur- modelle auf Systemebene Verwendung finden. Große Verbreitung hat SystemC-TLM im Bereich der simulativen Verifikation des Zeitverhaltens. Aufgrund der hohen Abstraktionsebene ist die Simulation deut- lich schneller als auf niedrigeren Abstraktionsebenen. Da in SystemC aber die Mo- dellierung von Ressourcenbeschr ¨ ankungen m ¨ oglich ist, k ¨ onnen die simulierten Zei- ten dennoch recht exakt sein. Simulative Ans ¨ atze im Bereich der Zeitanalyse ha- ben allerdings das selbe Problem wie simulative Ans ¨ atze zur funktionalen Eigen- schaftspr ¨ ufung: Sie k ¨ onnen nicht die Abwesenheit von Fehler beweisen. In der Ve- rifikation des Zeitverhaltens bedeutet dies, dass das beste oder schlechteste Zeit- verhalten des Systems per Simulation nicht mit Sicherheit bestimmbar ist. In den vergangenen zehn Jahren wurden aus diesem Grund neue formale Ans ¨ atze zur Veri- fikation des Zeitverhaltens entwickelt, die ganze Systeme, bestehend aus mehreren Prozessoren, ber ¨ ucksichtigen k ¨ onnen. Eine Zusammenfassung der wichtigen geschichtlichen Ereignisse im Bereich der Verifikation des vergangenen und dieses Jahrhunderts findet sich in Abb. 1.16. 1930 1940 1950 1960 1970 1980 1990 2000 2010 Modellpr ¨ ufung SAT-basierte Modellpr ¨ ufung formale ¨ Aquivalenzpr ¨ ufung Turing-Maschine Unvolls ¨ andigkeitssatz temporale Logiken Komplexit ¨ atstheorie Hoare-Kalk ¨ ul Programmiersprache C modale Logiken SAT-Solver SMT-Solver symbolische Modellpr ¨ ufung Modellpr ¨ ufung Hardware-Beschreibungssprachen zusicherungsbasierte Systembeschreibungssprachen Abb. 1.16. Geschichte der Verifikation 1.4 Beispiele 29 1.4 Beispiele Zum Abschluss dieses Kapitels werden einige Beispiele zu ¨ Aquivalenzpr ¨ ufung so- wie funktionaler und nichtfunktionaler Eigenschaftspr ¨ ufung auf unterschiedlichen Abstraktionsebenen pr ¨ asentiert. Hardware- ¨ Aquivalenzpr ¨ ufung Die ¨ Aquivalenzpr ¨ ufung f ¨ ur Hardware wird anhand eines Addierers skizziert. Hard- ware-Addierer lassen sich aus sog. Volladdierern entwickeln. Das Blockschaltbild eines Volladdierer ist in Abb. 1.17a) zu sehen. Der Volladdierer hat drei Eing ¨ ange c in , a, b und zwei Ausg ¨ ange s und c out , wobei alle diese Signale einzelne Bits sind, d. h. c in ,a,b,s,c out ∈{F,T}. F F T T F T F T F T F T F T F T F T F T F F T T F T F T T T F F F T F T F T F T b a c in s c out VA a) b) sc out abc in Abb. 1.17. a) Volladdierer und b) Funktionstabelle Die Ausg ¨ ange lassen sich als Boolesche Funktionen der Eing ¨ ange beschreiben: s(c in ,a,b) := a ⊕b ⊕c in (1.1) und c out (c in ,a,b) :=(a ∧b) ∨(a ∧ c in ) ∨(b ∧c in ) (1.2) wobei ∨ das logisch Oder, ∧ das logische Und und ⊕ das logische Exklusiv-Oder darstellen. Die Gleichungen (1.1) und (1.2) sind Verhaltensmodelle auf der Logikebene. Ob das Strukturmodell der Implementierung (abstrahiert durch das Blockschaltbild in Abb. 1.17a)) die selben Funktionen implementiert, kann durch Simulation ge- zeigt werden. Die drei Eing ¨ ange c in , a und b k ¨ onnen je einen der Werte F oder T annehmen. Dies bedeutet, es gibt acht m ¨ ogliche Belegungen f ¨ ur die Eing ¨ ange des Volladdierers. Legt man jede der m ¨ oglichen acht Belegungen nacheinander an die Eing ¨ ange des Volladdierers an, so erh ¨ alt man an den Ausg ¨ angen die Werte, die in der Funktionstabelle in Abb. 1.17b) zu sehen sind. Um zu zeigen, dass die Ausgaben in Abb. 1.17b) ¨ aquivalent zu der Verhaltensspe- zifikation in Gleichung (1.1) und (1.2) ist, m ¨ ussen entweder die Verhaltensmodelle [...]... , p1 , p2 , p3 } T = {t0 ,t1 ,t2 } F = { f0 , f1 , f2 , f3 , f4 , f5 , f 6 , f7 , f8 , f9 } f 0 = (p0 ,t0 ), f1 = (t0 , p1 ), f2 = (p0 ,t2 ), f3 = (t0 , p2 ), f4 = (p1 ,t1 ), f5 = (t1 , p1 ), f6 = (p2 ,t1 ), f7 = (t2 , p2 ), f8 = (t1 , p3 ), f9 = (p3 ,t2 ) M0 (p0 ) = 2, M0 (p1 ) = 0, M0 (p2 ) = 0, M0 (p3 ) = 1 p1 t1 t0 p0 p3 p2 •t0 = { p0 } •t1 = { p1 , p2 } •t2 = { p0 , p3 } t2 t0 • = { p1 , p2 } t1... Entwurfsmethodik [171] umgesetzt Der a Bewertungsaspekt wurde erstmals durch Kienhuis et al in [258] als Y-Diagramm pr¨ sentiert a 2 Spezifikation digitaler Systeme Dieses Kapitel stellt wichtige Ans¨ tze zur formalen und ausf¨ hrbaren Spezifikation a u digitaler Hardware/Software-Systeme vor 2.1 Wie spezifiziert man ein System? Im Doppeldachmodell in Abb 1.10 und 1.13 auf Seite 14 bzw 19 beschreibt das obere... Spezifikation umgesetzt Vielmehr beginnen die meisten Entwicklungen mit einer informalen Spezifikation Diese kann in C Haubelt, J Teich, Digitale Hardware/Software-Systeme, eXamen.press, DOI 10.1007/978-3-642-05356-6 2, c Springer-Verlag Berlin Heidelberg 2010 38 2 Spezifikation digitaler Systeme Form von nat¨ rlicher Sprache, Skizzen oder anderen unvollst¨ ndigen Beschreibunu a gen mit informaler Semantik... funktionalen und nichtfunktionalen Anforderuna gen im Bereich eingebetteter Hardware/Software-Systeme vorgestellt 2.2 Formale Verhaltensmodelle Eine M¨ glichkeit, das gew¨ nschte Systemverhalten pr¨ zise zu beschreiben, besteht o u a in der Erstellung eines formalen Verhaltensmodells Geeignete Modelle zur Verhaltensmodellierung von digitalen Hardware/Software-Systemen wurden bereits in [426] vorgestellt Hier... Verwendung statischer a a o a Priorit¨ ten l¨ uft Dabei hat Prozess p1 eine h¨ here Priorit¨ t als der Prozess p2 Die a a maximale Auslastung der CPU ergibt sich f¨ r den Fall, dass Prozess p2 bei der Beu arbeitung stets die l¨ ngste Ausf¨ hrungszeit ben¨ tigt, d h dWC a u o a) Sensor CPU p1 Speicher p2 I/O p3 Bus Input p4 DSP p5 Speicher p6 b) Buslast dBC dWC t Abb 1.19 Interferenz zweier Anwendungen auf... ,t1 und t2 und drei Stellen p0 , p1 und p2 Die Zeitschranken 2.2 Formale Verhaltensmodelle 47 der Transitionen sind an den Transitionen als Intervall annotiert Die Anfangsmarkierung M0 lautet M0 (p0 ) = M0 (p2 ) = 1 und M0 (p1 ) = 0 Die Zeitstruktur ergibt sich zu T (t0 ) = [0, 4], T (t1 ) = [∞, ∞) und T (t2 ) = [4, 6] p0 B (t0 ) = [0, 4] p1 B (t1 ) = [3, 4] t0 p2 B (t2 ) = [4, 6] t1 t2 Abb 2.3 Zeitbehaftetes... Come, First Served-Arbitrierung verwendet wird Unter dieser Annahme sieht man, dass die Da¨ ten¨ bertragung von Prozess p2 zu Prozess p3 mit der Ubertragung der Daten zwiu schen Prozess p4 und p5 interferiert Interessant hierbei ist der Aspekt, dass eine u Ausf¨ hrung des Prozesses p2 mit der schnellsten Ausf¨ hrungszeit dBC zu einer hou hen Buslast, eine Ausf¨ hrung mit der langsamsten Ausf¨ hrungszeit... unabh¨ ngigen Anwendungen voneinander abh¨ ngig a a geworden 1.5 Ausblick Basierend auf den in diesem Kapitel eingef¨ hrten Verifikationsaufgaben werden im u Folgenden Ans¨ tze zur Verifikation von digitalen Hardware/Software-Systemen vora gestellt Zun¨ chst werden modellbasierte Ans¨ tze beschrieben Die zugrundeliegena a den Modelle sind dabei Teil der Spezifikation, weshalb in Kapitel 2 M¨ glichkeiten... Systemverifikation (Kapitel 8) vorgestellt Anhang A bis C enth¨ lt a grundlegende Definitionen, Datenstrukturen und Algorithmen 1.6 Literaturhinweise Das Doppeldachmodell sowie der Entwurfsprozess f¨ r digitale Hardware/Softwareu Systeme ist ausf¨ hrlich in [426] beschrieben Neben dem Doppeldachmodell gibt es u weitere Modelle, die den Entwurf von eingebetteten Systemen beschreiben So kann 1.6 Literaturhinweise... der auf der CPU ausgef¨ hrt wird, ist daf¨ r verantwortlich, die Sensordaten in den lokalen Speicher zu speichern u ¨ Ein zweiter Prozess p2 verarbeitet diese Daten und versendet sie uber den gemeinsamen Bus an eine I/O-Einheit Die Ausf¨ hrungszeit des Prozesses p2 variiert zwiu schen der schnellsten Ausf¨ hrungszeit dBC und langsamsten Ausf¨ hrungszeit dWC u u Auf der I/O-Einheit nimmt Prozess p3 . Y-Diagramm pr ¨ asentiert. 2 Spezifikation digitaler Systeme Dieses Kapitel stellt wichtige Ans ¨ atze zur formalen und ausf ¨ uhrbaren Spezifikation digitaler Hardware/Software-Systeme vor. 2.1 Wie. in C. Haubelt, J. Teich, Digitale Hardware/Software-Systeme, eXamen.press, DOI 10.1007/978-3-642-05356-6 2, c Springer-Verlag Berlin Heidelberg 2010 38 2 Spezifikation digitaler Systeme Form von. Kapitel eingef ¨ uhrten Verifikationsaufgaben werden im Folgenden Ans ¨ atze zur Verifikation von digitalen Hardware/Software-Systemen vor- gestellt. Zun ¨ achst werden modellbasierte Ans ¨ atze beschrieben.