1. Hardwarebeschreibungssprachen

1.1 Aufgaben einer Hardwarebeschreibungssprache

Entwurf komplexer Systeme / Synthese

Die Entwicklung auf dem Gebiet der elektronischen Systeme wird im wesentlichen durch steigende Komplexität und höhere Integrationsdichten gekennzeichnet.

Der Entwurf immer komplexer werdender Systeme kann nicht länger mit herkömmlichen Methoden (z.B. manueller Entwurf und Schematic Entry auf Gatterebene) beherrscht werden. Ebenso ist eine Verifikation durch Simulation auf Logikebene mit vertretbarem Zeitaufwand nicht mehr durchführbar. Strukturiertes Top-Down-Design unter Einsatz von Synthese ist we-sentliches Hilfsmittel, das anstehende Komplexitätsproblem zu lösen. Dazu ist es erforderlich, das zu entwerfende System bereits auf einer abstrakten Ebene mit Hilfe einer Hardwarebe-schreibungssprache zu beschreiben.

Simulation komplexer Systeme

Um Entwurfsfehler so früh wie möglich zu entdecken, sollte die erwähnte abstrakte Beschreibung auch simulierbar sein. Das Modell ersetzt somit teilweise die Datenblätter einer Spezifi-kation, d.h. man erhält ein sog "simulierbares Modell" anstelle vieler Seiten Papier.

Wiederverwendung / Dokumentation

Der Aspekt der Wiederverwendung tritt bei steigendem Konkurrenzdruck und kürzeren Innova-tionszyklen immer stärker in den Vordergrund. Existierende Designs oder Module müssen dazu in einer noch technologieunabhängigen Form abgelegt werden, damit zu einem späteren Zeitpunkt erforderliche Änderungen durchgeführt werden können und evtl. eine andere Technologie gewählt werden kann.

Auch für die Wartung eines elektronischen Systems sind umfangreiche Informationen über dessen Funktion, seinen Aufbau und die Eigenschaften erforderlich. Erschwert wird diese Problematik dadurch, daß die Lebensdauer eines Systems oft länger als die Verfügbarkeit des Entwicklers ist. Die klare und verständliche Dokumentation eines Entwurfs spielt dadurch eine wesentliche Rolle. Sie sollte nicht nur von CAD-Werkzeugen interpretierbar, sondern möglichst auch menschenlesbar sein.

Datenaustausch

Designs werden i.d.R. nicht mehr von einzelnen Personen oder kleinen Gruppen durchgeführt. Vielmehr wird die Aufgabe partitioniert und an mehrere Teams verteilt. Um eine fehlerfreie Kommunikation zwischen den Gruppen sicherzustellen, muß eine einheitliches Datenaustausch-format oder eine Sprache definiert werden. Eine solche Sprache dient auch zum Datenaustausch zwischen den verschiedenen Entwurfswerkzeugen (möglicherweise auf verschiedenen Entwurfsebenen, auf verschiedenen Rechnersystemen und von verschiedenen Herstellern).

Datenaustausch ist weiterhin ein wichtiger Aspekt zwischen Auftraggeber und dem Entwickler als Auftragnehmer (Lasten- und Pflichtenheft) sowie zwischen Entwickler und Hersteller von integrierten Schaltungen.

Vorteile einer Normierung der Beschreibungssprache

Moderne und leistungsfähige Hardwarebeschreibungssprachen wie VHDL dienen für all diese Zwecke, d.h. elektronische Systeme werden auf verschiedenen Abstraktionsebenen beschrieben und diese Modelle können dann auf den verschiedenen Ebenen auch simuliert werden.

Wird eine Hardwarebeschreibungssprache normiert, so ist eine Unterstützung durch viele Entwurfswerkzeuge und viele Hardwarehersteller gesichert. Dies hat weiterhin den Vorteil, daß man zwischen verschiedenen Herstellern wählen kann, und somit nicht mehr von vorneherein auf einen Prozeß festgelegt ist.

Man kann zwischen den Programmen verschiedener Hersteller wählen und muß keine Kompromisse hinsichtlich der Leistungsfähigkeit schließen, nur weil ein besseres Werkzeug ein anderes Format verwendet.

Das Ziel muß also eine standardisierte und weitverbreitete Hardwarebeschreibungssprache sein, die all diese Aufgaben erfüllen kann. Damit wird nicht nur die Übersicht und Einarbeitung, sondern auch die Produktivität wesentlich verbessert.

VHDL ist eine solche Hardwarebeschreibungssprache.

1.2 Sichtweisen der Beschreibung und Abstraktionsebenen

Zur Veranschaulichung der verschiedenen Abstraktionsebenen und Beschreibungssichtweisen wird oft das Y-Diagramm nach Gajski-Walker verwendet (Bild 2). Man unterscheidet nach verschiedenen Abstraktionsebenen (Kreise mit unterschiedlichen Radien) und verschiedene Sichten durch die drei Äste des Diagrammes (Verhalten, Struktur, Geometrie).

Ziel des Top-Down-Designs ist es, von einer abstrakten Beschreibung des Verhaltens über eine detailliertere Beschreibung der Struktur (z.B. Gatternetzliste) auf eine geometrische Beschreibung (Layout) für die Fertigung zu gelangen. Dies kann im Y-Diagramm als eine Reihe von Transformationen (Wechsel der Sichtweise) und Verfeinerungsschritten (Wechsel zu einer detaillierteren Beschreibungsebene) interpretiert werden.

Ein reines, "ideales" Top-Down-Design wird dabei nicht immer möglich sein. Verifikationsschritte zeigen Entwurfsfehler auf und gegebenenfalls sind ein oder mehrere Entwurfsschritte zu wiederholen. Es entstehen Optimierungsschritte und Zyklen. Man spricht daher auch oft von "JoJo-Design".

Die einzelnen Entwurfsschritte werden i.d.R. von spezialisierten Werkzeugen unterstützt. Während man bei den "späteren" Entwurfsschritten (Place & Route, Layouterzeugung) schon seit längerem mit Rechnerunterstützung arbeitet, werden die "frühen" Entwurfsphasen erst seit relativ kurzer Zeit teilweise mit Rechnerhilfe durchgeführt. Den wichtigsten Beitrag zur Verkürzung der Entwicklungszeit leisten dabei sogenannte Synthesewerkzeuge. Als Synthese bezeichnet man die Umsetzung einer Verhaltensbeschreibung in eine Strukturbeschreibung. Weitverbreitet sind Synthesewerkzeuge, die eine Verhaltensbeschreibung auf Register-Transfer-Ebene in eine Netzliste auf Gatterebene umsetzen. Die sog. "High-Level-Synthese" wird im allgemeinen als Synthese bezeichnet.

Systemebene

Auf Systemebene werden die grundlegenden Charakteristika eines elektronischen Systems durch semiautonome Module beschrieben, z.B. Prozessoren, Interfaceeinheiten, Speicher usw. Diese Module werden charakterisiert durch Funktionalität (im Falle eines Prozessors durch dessen Befehlssatz), durch Protokolle oder durch stochastische Prozesse. Die typischen Sprachelemente dieser Ebene sind objektorientiert.

Algorithmische Ebene

Module auf der algorithmischen Ebene werden durch nebenläufige (quasi-parallele) Algorithmen beschrieben, wobei allerdings noch keine Rücksicht auf eine eventuelle Struktur genommen wird. Typische Sprachelemente auf dieser Ebene sind Funktionen, Prozeduren, Prozesse und Kontrollstrukturen.

In der strukturalen Sicht verwendet man dazu allgemeine Blöcke, während in der Verhaltenssichtweise algorithmische Darstellungen mit Variablen und Operatoren Verwendung finden.

Register-Transfer-Ebene

Diese Beschreibungsebene zeichnet sich durch eine bereits hardwarenähere Sicht aus. Die Beschreibung erfolgt durch Operationen (z.B. Addition) und durch den Transfer der verarbeiteten Daten zwischen Registern. Typischerweise werden in der RT-Ebene auch zeitliche Eigenschaften (u.a. durch die Einführung von Takt- und Rücksetzsignalen) näher beschrieben.

Struktural erfolgt dies durch Blöcke wie Register, Multiplexer oder Zähler, in der Verhaltenssicht verwendet man z.B. endliche Automaten, "guarded commands", Signalzuweisungen etc.

Logikebene

Auf Logikebene erfolgt die Beschreibung eines Systems durch logische Verknüpfungen und deren Verzögerungszeiten. In der Verhaltenssicht erfolgt dies durch Boolesche Gleichungen. Dazu werden Sprachelemente wie Resolved Signals, Signalzuweisungen mit Verzögerungszeiten und Konstrukte zur Backannotation (Übernahme von Informationen aus dem Layout) verwendet.

In der strukturalen Sicht durch eine Zusammenschaltung (Netzliste) von logischen Gattern.

Schaltkreisebene

Während auf den bisher beschriebenen Ebenen wert- (und meist auch zeit-)diskrete ("digitale") Signale verwendet wurden, werden auf der Schaltkreisebene wert- und zeitkontinuierliche Größen eingesetzt.

In der Verhaltenssicht wird das System durch Differentialgleichungen beschrieben, in der strukturalen Sicht durch die Zusammenschaltung von Transistoren, Widerständen, Kondensatoren usw. Die geometrische Sicht schließlich besteht aus Polygonzügen, die z.B. die Dotierungsschichten in einem Halbleiter darstellen.