Zeitfresser Verifikation Assertions ermöglichen eine deutlich höhere Design-Qualität

Autor / Redakteur: Hanns Windele* / Gerd Kucera

Immer mehr wertvolle Entwicklungszeit verschlingt die notwendige Verifikation der neuen Schaltung. Mittlerweile sind moderne Designs derart komplex, dass traditionelle Verifikationsmethoden versagen. So genannte Assertions können helfen, wiederverwendbare Testbenches zu erstellen und Fehler in einem Gewirr von HDL-Code wesentlich schneller zu erkennen und zu eliminieren als bisher.

Firmen zum Thema

( Archiv: Vogel Business Media )

Funktionale Verifikation ist inzwischen die dominante Aufgabe beim SoC-Design. Der Aufwand hierfür verschlingt nicht selten bis zu 70% des gesamten Zeitbudgets einer Chip-Entwicklung. Natürlich steigen auch die Kosten für die Korrektur eines fehlerhaften Designs, ganz zu schweigen von den schrumpfenden Gewinnmargen, die drohen, wenn das Produkt zu spät auf den Markt kommt. Somit kommt der Festlegung der Verifikationsstrategie bereits vor Beginn eines Designs eine entscheidende Rolle zu.

Klassische funktionale Verifikationsmethoden können jedoch mit der Komplexität von Design nicht Schritt halten, da die Anzahl der zu überprüfenden Parallelprozesse und Interaktionen exponentiell mit der Größe der funktionalen Blöcke auf dem Chip wächst.

Bildergalerie

All dies erhöht die notwendige Anzahl von Tests und verlängert deren Dauer. Auch Testbenches werden immer komplexer. Und wenn die Ergebnisse überhaupt einen Fehler andeuten, ist es erheblich schwieriger die Ursache dafür herauszufinden.

Der Einsatz so genannter Assertions kann die traditionelle Simulation zu einer gründlicheren Verifikation erweitern. Man erhält ein höheres Maß an Vertrauen in die Funktionalität, verbessert die Produktivität beim Debugging, erweitert die Abdeckung der Verifikation mit formalen Methoden und fügt eine strukturelle Verifikationsmetrik ein, welche sicherstellt, dass die Funktionalität tatsächlich verifiziert wurde.

Assertions bereichern die verfügbaren Testabdeckungswerte nicht nur deswegen, weil sie verifizieren, welche der Designblöcke aktiviert wurden, sondern sie bestimmen darüber hinaus auch, ob die beabsichtigte Funktion durch die Aktivierung ausgelöst wurde (Fehlerabdeckung).

ABV als wichtiger neuer Schritt in der Verifikation

Der einzige Weg, einen wesentlichen Schritt über die traditionelle simulationsbasierte Verifikation hinaus zu machen, ist die Einführung von Beobachtungs- und Kontrollmöglichkeiten in das Design während der Verifikationsphase. Man versucht hierbei, ein Maß für die RTL- wie auch die Code-Abdeckungsrate zu erhalten, welches den Abstand vom gewünschten Verifikationsziel aufzeigt.

Nach dem Motto „was man nicht erfassen kann, lässt sich auch nicht managen“ wird bei der Coverage Driven Verification (CDV) über Simulationsreports gemessen, wie weit man von der gewünschten Abdeckungsrate entfernt ist, d.h. wie viele Simulationsläufe mit veränderten Parametern erforderlich sind, um die geplanten Abdeckungsraten zu erzielen. Durch Analyse der Reports lassen sich strategisch günstige Kontrollpunkte in die Schaltung einbauen, um die erforderlichen Verifikationsschritte zu reduzieren. Das Design wird quasi in Iterati-onsschritten auf beste Fehlerabdeckung sowohl auf RTL wie auch auf Code-Level optimiert. Die nächste Produktivitätsstufe in diesem Verifikationsprozess ist dann der Einsatz von Assertions und formaler Verifikationstechniken zusammen in einem Prozess genannt „Assertion Based Verification“ (ABV).

Assertions haben die Kenntnis darüber, wie ein Design funktionieren sollte, sie stellen sozusagen „eingefügtes IP“ dar, das die verschiedenen erwünschten internen Zustände eines Designs kennt. Sowohl korrektes als auch falsches Verhalten einer Schaltungsstruktur werden spezifiziert. Sind die Assertions in ein Design integriert, erfassen sie Probleme lokal bereits lange bevor die Fehler an einem der Ausgangsports sichtbar werden.

Formale Verifikationstechniken analysieren die RTL-Struktur des Designs üblicherweise auf Blockebene. Es werden mathematische Techniken eingesetzt, die beweisen, dass bestimmte Assertions wahr und andere falsch sind. Hierzu sind nicht unbedingt Simulationsstimuli erforderlich.Während der Simulation wird sofort eine Abweichung vom beabsichtigten Verhaltensmuster aufgezeigt. Dies reduziert einige Stunden Arbeit, die das Rückverfolgen eines Fehlers und das Auffinden der Problemursache kosten.

Prinzipiell sind Assertions nicht neu, VHDL und Verilog boten schon immer Möglichkeiten hierfür, allerdings limitiert auf das Beobachten einfacher binärer Zustände.

Alle neuen Assertion-Sprachen wie PSL (Property Specification Language) und SystemVerilog basieren auf Sprachen, die Ereignisse in Abhängigkeit der Zeit beschreiben. Moderne Verifikationsumgebungen, z.B. die von Mentor Graphics, erlauben den parallelen Einsatz jeder dieser Sprachen in ein und demselben Design. Dies erleichtert den Entwicklerteams wesentlich den Einstieg in die neue Verifikationsmethode.

Die von Standardisierungsgremien freigegebene Open Verification Library (OVL) beinhaltet 33 parametrisierbare Elemente, welche direkt (auch ohne Kenntnisse der zu Grunde liegenden Assertion-Sprache) in das eigene

Design eingebunden werden können. So können Verifikations- und Entwicklungsteams schneller die zusätzlichen Möglichkeiten erkennen, die ihnen diese neuen Sprachen erlauben. Selbstverständlich lassen sich diese Grundelemente selbst erweitern und somit als Grundstock für eigene Assertion-IP dienen.

Kooperation von Design- und Test-Abteilungen

Ein wichtiger, aber auf den ersten Blick unsichtbarer Aspekt soll hier noch erwähnt werden: Die Entwickler werden durch den Einsatz von Assertions im Design dazu veranlasst, wesentlich genauer darüber nachzudenken, was sie eigentlich implementieren wollen und wie dies später getestet werden soll. Die traditionelle Arbeitsaufteilung, dass nämlich das Testteam „hinter einer Wand“ auf das fertige Design wartet und dann bearbeitet, ist damit hinfällig. Beide Teams müssen von Entwicklungsbeginn an verstärkt miteinander arbeiten. Damit bekommt das Stichwort Design-for-Testibility einen neuen Ansatz.

Factum ist, dass in Zukunft Methoden wie ABV zum Standart-Repertoire von Entwicklungsteams zählen werden, wenn eine umfassende und zeitlich akzeptable Verifikation von Designs sicherzustellen ist.

Was meint Assertion Based Verification?

So genannte Assertions sind quasi in ein Design integrierte Soft-IPs, die genau wissen, wie ein Design funktionieren soll. Sie kennen die diversen (erwünschten!) internen Zustände einer Schaltung ganz genau, denn sowohl korrektes als auch falsches Verhalten einer Schaltungsstruktur ist in ihnen spezifiziert. Diese Assertions erfassen nun im Design alle lokalen Probleme, schon lange bevor diese als Fehler überhaupt an einem der Ausgänge erkennbar werden. Interessanter Nebeneffekt der Assertions: Entwickler werden dazu angehalten, wesentlich genauer darüber nachzudenken, was sie letztlich implementieren wollen und wie diese Funktionalität später auch getestet werden kann. Das bedeutet schließlich auch, dass der Entwickler diese Assertions nicht unbedingt wieder entfernen muss. Er kann sie etwa für ein späteres Real Chip Testing oder Chip Debugging in seinem Entwurf belassen.

*Hanns Windele ist Vice President Europe bei Mentor Graphics Europe.

(ID:215670)