Validierung (Chipentwurf)
Die Validierung des Designs ist eine wichtige Phase beim Chipentwurf. Hierbei wird sowohl die logische Funktion als auch das Zeitverhalten des Design mit einer vorgegebenen Spezifikation verglichen.
Validierung der logischen Funktion
Die Beschreibung der logischen Funktion eines Designs erfolgt in der Regel mit einer Hardwarebeschreibungssprache (ähnlich einer Programmiersprache). Damit können komplexe Funktionen (z. B. Addition, Multiplikation) eingegeben werden und die Funktion kann mit Hilfe eines speziellen Compilers auch simuliert werden. Die logische Funktion kann also sowohl durch Simulation als auch mittels formaler Verifikation überprüft werden.
Das Ziel der Validierung ist es, alle möglichen internen Zustände des Designs zu erreichen und alle möglichen Übergänge zu einem der möglichen Nachfolgezustände zu überprüfen. Die Zahl der internen Zustände steigt mit der Zahl der zu speichernden Elemente in einem Design. Diese Zahl ist bei heutigen Designs astronomisch hoch.
Simulation
Bei der Simulation werden möglichst viele Testvektoren erzeugt, die an den Eingängen des Designs appliziert werden. Parallel dazu werden die Ausgänge des Designs angeschaut. Um festzustellen, ob das Design korrekt funktioniert, ist es nötig, Vergleichsdaten zu haben. Hierzu dient ein Referenzmodell des Designs. Das Referenzmodell wird unabhängig vom Design nach der gleichen Spezifikation erstellt. Im Gegensatz zum Design versucht man aber, das Referenzmodell auf einem möglichst abstrakten Level zu kodieren. Dies ermöglicht zum einen die Erstellung in kürzerer Zeit, und zum anderen reduziert dies die Zahl der Fehler. Indem man die Testvektoren auch gegen das Referenzmodell ausführt, bekommt man Datenvektoren an den Ausgängen. Jeder Unterschied zwischen den Ausgangsvektoren muss untersucht und verstanden werden, wobei ein Teil der Unterschiede nicht auf einem Designfehler, sondern ein fehlerhaftes Referenzmodell zurückzuführen sind.
Formale Verifikation
Da die Simulation – wie erwähnt – nie alle Zustände überprüfen kann, versucht man, mit Hilfe von mathematischen Algorithmen zu beweisen, dass ein Design korrekt ist. Die Testvektoren werden durch logische Regeln ersetzt. Auch diese Methode hat Nachteile. Zum einen werden nur die aufgestellten Regeln überprüft, und es bleibt unklar, wie viele Regeln nicht aufgestellt wurden. Zum anderen haben die Programme, die die Regeln beweisen, einen sehr hohen Speicher- und Rechenzeitbedarf, der exponentiell abhängig von der Größe des Designs ist. Somit beschränkt sich der Einsatz dieser Werkzeuge in der Praxis nur auf Teile des gesamten Designs.
Validierung des Zeitverhaltens
Spezielle Softwarewerkzeuge berechnen auf Basis der einzelnen Gatterlaufzeiten die Signal-Laufzeiten aller möglichen Pfade durch das Design. Die maximale Signal-Laufzeit muss dabei kleiner sein als die in der Spezifikation vorgegebene Zeit.