Bei Diskussionen über die Entwicklungsmethodik von programmierbaren Logikbausteinen (PLD) mit den R&D-Abteilungen im Bereich Elektronik herrschen aktuell unterschiedliche Philosophien. Die Sichtweisen der Entwicklungsleiter gehen von: „FPGAs werden programmiert und die Firmwareentwicklung gehört zur Softwareentwicklung, da wir es mit VHDL und nicht mit C zu tun haben“ bis zu „Digitale Logik ist Hardwaredesign und daher gehört das FPGA-Design zur PCB-Entwicklung“. Daneben gibt es auch reine FPGA-Entwicklungsbereiche, die aber oft nur in größeren Unternehmen auftreten. Bild 1 zeigt als Beispiel für ein komplexes System ein Videointerface mit einem FPGA.

Bild 1: Videointerface mit einem FPGA für die Bereitstellung von standardkonformen Videodaten.

Bild 1: Videointerface mit einem FPGA für die Bereitstellung von standardkonformen Videodaten. Evision Systems

Bei der Entwicklung von programmierbarer Logik ist es in der Regel unmöglich, sich nicht mit den beiden Hardwarebeschreibungssprachen VHDL (VHSIC Hardware Description Language) und Verilog zu befassen. Auch wenn es immer wieder Ansätze gibt, FPGA-Beschreibungen automatisch aus anderen Abstraktionsebenen zu generieren, wie beispielsweise aus mathematischen Tools oder aus Softwaremodellen, erfolgt die FPGA-Entwicklung doch am häufigsten in VHDL oder Verilog. Besonders in Europa ist in vielen Firmen VHDL verbreitet. Die Sprache geht auf die VHSIC-Initiative (Very High Speed Integrated Circuit) der US-Regierung zurück, die 1987 zur Standardisierung von VHDL geführt hat. Idee dahinter war es, eine einheitliche, ausführbare und simulierbare Beschreibung hochkomplexer, digitaler Bausteine zu ermöglichen. Der Fokus lag auf der Modellierung von Hardware. Genau diese beiden Begriffe verursachen viele Diskussionen im Bereich der Entwicklungsmethodik.

PLD-Modellierung

Spätestens seit der Einführung von Synthese-Tools durch die EDA-Hersteller (Elektronic Design Automation) sind HDL-Beschreibungen nicht nur reine ausführbare Spezifikationen, sondern auch Modelle für die Implementierung. Die automatische Implementierung hat aber andere Anforderungen an die Beschreibung als die reine Simulation. Dadurch haben sich die Anforderungen an die Beschreibung geändert. Bis heute kann es daher passieren, dass bei ungünstig geschriebenem Code das Verhalten eines VHDL-Files in der Simulation von dem des synthetisierten Designs abweicht.

Hardware

Eck-Daten

Obwohl PLD-Designs in den letzten beiden Jahrzehnten immer komplexer geworden sind, lassen sich Entwicklungsprojekte heute in der Regel schneller umsetzen. Grund dafür sind unter anderem effizientere Werkzeuge und neue Methoden. Für Entwicklungsleiter stellt sich zunächst die Frage nach der passenden Sprache, den Tools und den notwendigen Schulungen für die Entwickler. Zu beachten ist jedoch auch, welche Organisation der Entwicklungsabteilung überhaupt sinnvoll ist. Der Beitrag zeigt außerdem, wie sich Verifikationswerkzeuge effizient einsetzen und welche Methoden für die Überprüfung der Implementierung in Frage kommen.

Ursprünglich bestanden PLD-Bausteine wie FPGAs nur aus Logikzellen. Für die meisten Firmen folgte daraus, dass die Entwicklung dieser Bausteine ein Bestandteil der Hardwareentwicklung war. Für diesen Anwendungsfall waren auch die HDL-Sprachen konzipiert. Inzwischen befinden sich aber immer häufiger Softcores oder sogar Hardcores von Prozessoren auf einem FPGA. Die Anwendungen, die auf diesen CPUs laufen, sind dann wiederum Software.

Entwickler, die PLDs für sicherheitskritische Anwendungen entwickeln, sehen sich oft mit widersprüchlichen Anforderungen konfrontiert. Einige Standards behandeln VHDL mehr oder weniger wie Software, andere Standards unterscheiden klar zwischen Software- und Hardware-Anforderungen (zum Beispiel die Aerospace-Normen DO-254 für PLDs und die DO-178 für Software).

Für ein systematisches Vorgehen bei der Verifikation solch komplexer Bausteine wird es daher immer wichtiger, sich bei der Projektplanung Gedanken darüber zu machen, welche Anforderungen an die Methodik des jeweiligen Projekts bestehen, welche Expertise das Entwicklungsteam dafür benötigt und welche Werkzeuge zum Einsatz kommen sollen. Im Gegensatz zur Softwareentwicklung müssen bei der Verifikation komplexer FPGAs auch Verifikationsschritte auf sehr niedrigen Abstraktionsebenen durchgeführt werden. Dazu gehören neben der Analyse der Signallaufzeit auf dem Chip und der Abschätzung des Leistungsverbrauchs des Bausteins auch die richtige Verteilung gleichzeitig schaltender I/O-Leitungen auf den verschiedenen I/O-Bänken.

Während die Toolkette für die Softwareentwicklung meist recht übersichtlich ist, findet sich in aktuellen Entwicklungswerkzeugen komplexer FPGAs eine oftmals unübersichtliche Anzahl von speziellen Programmen. Dies liegt an der beschriebenen Vielfalt der Verifikationsaufgaben. Die Aufteilung dieser Aufgaben auf unterschiedliche Verifikationsdomänen ist eine einfache Möglichkeit, die Verifikation zu strukturieren. Hieraus ergibt sich oft auch, welche Methoden, Werkzeuge und Fertigkeiten beziehungsweise welches Wissen erforderlich ist, um die Aufgaben durchzuführen.

 

Wie sich die Code-Qualität überprüfen und die Funktionalität auf RTL-Ebene testen lässt, zeigt der Beitrag im Folgenden.

Seite 1 von 3123