Wenn man FPGAs erstellt, stellt jede Implementierung eine Dateninsel dar. Um dem aus dem Wege zu gehen, sollten FPGA die gleichen Sourcen benutzen. Gleiche Sourcen sorgen für gesteigerte Qualität, weil Lerneffekte aus verschiedenen Quellen zusammenfliesen. Aus diesem Grund wurde ein Framework erstellt, um Sourcen zeitgerecht zu pflegen. Bei Einsatz des FPGA-Framework können Varianten und Release mit massiver Zeitersparnis erstellt werden.
Vorteile des Frameworks
Integration von svn
Durch die Übereinanderlegung von Sourcen ist es einfach, die Quellen fachgerecht einzuordnen. Jedes Top-Entity enthält sein eigenes Verzeichnis. Die Build-Dateien wie pinning und constraints werden zu den Implementierungen zugeordnet. So ergibt sich ein sauberes Verzeichnisbild.
Automatische Erstellung vom Projektfile
FPGAs die aus vielen Sourcen bestehen sind schwer zu klonen. Die Sourcen liegen in verschiedenen Verzeichnissen und sind schwer zu fassen. Die Abhängigkeiten zwischen ihnen können nur manuell durch Trial-und-Error bestimmt werden. Das Framework bindet alle erforderlichen Quellen einer Technologie automatisch ein und bildet ein Projekt-File. So dass Lattice Diamond sie einfach öffnen kann.

Einfache Erstellung von Varianten
Oft werden Varianten von FPGAs erstellt, manchmal ist es ein veränderter Zuschnitt der Leiterplatte, manchmal ein Redesign der Leiterkarte oder eine Teilbestückung. Mittels einfacher Variablen lässt sich der FPGA mit einfachen Mitteln konfigurieren. In XML-Dateien stehen leserlich Beschreibungen der Konfiguration. Somit können Sie in den FPGA top in die testbench sowie in die Beschreibung fehlerlos einfliessen. Dadurch dass die Konfiguration nur an einer Stelle steht erhält man die Qualität eines Single-Source-Designs.
Alle erforderlichen Aufrufe über einfache Kommandozeilenbefehle
Es gibt unterschiedliche Aufgaben während der Entwicklung eines FPGA. Der wohl wichtigste Schritt ist die Synthese. Davor kommt die Simulation und die Dokumentation. Der Ablauf ist der folgende, man legt eine Variante fest. Dann ruft man den erforderlichen Schritt auf. Die Entwicklungsumgebung Diamond, Active-HDL, die Synthesewerkzeuge werden automatisch aufgerufen. Der letzte Schritt ist das Release. Hierbei können alle gewünschten Daten automatisch an die erforderlichen Stellen kopiert werden. Das Tool erstellt auch die Programmierdateien an unterschiedlichen Dateiorten.
Automatische Erstellung
der Dokumentation
Während bei der konventionellen Entwicklung die Dokumentation parallel erstellt werden muss, erstellt sie das Framework zeitgleich. Dabei fliessen Konfiguration ein, Build-Reports. Die Struktur des FPGA kann durch Beschreibung in der Dokumentensprache DITA nachvollzogen werden, so dass ein hierarchisch gegliedertes HTML-Dokument entsteht, dass die Hierarchie des Designs entspricht. Zeitgleich entsteht auch ein PDF zum schnellen Nachschlagen für die Programmierer.
Aufbau des Frameworks
Grundstruktur im Dateisystem

Das System ist wie folgt gegliedert: In src/ liegen Ihre Entwicklungsdateien. Darin enthalten sind commons/: Das sind allgemeine Dateien, die in mehreren Dateien verwendet werden. In functions/ können funktionorientiert strukturierte Sourcen liegen, das hat den Vorteil, dass man eine bessere Übersicht über implementierte Funktionen bekommen. In specifics/ liegen alle spezifischen Dateien für ein Design wie das top und das testbench.
In cmd/ liegen alle Dateien die das Framework betreffen. Diese Dateien werden geliefert und bedienen das Framework.
In beds/ sind alle Implementierungen nach Artikelnummer der Leiterplatte geordnet. In beds/ bekommt jedes Design sein eigenes Verzeichnis. Dort laufen die Synthese- und Simulationsprogramme ab. Die Endausgabedateien und die Dokumentation wird hierin abgelegt sein.
Andere Verzeichnisse werden nur auf Wunsch im Release-Schritt beschrieben.
Auszeichnungsdateien in XML
Die Magie des Frameworks ist auf die XML-Technolgie zurückzuführen. Durch XML-Dateien wird die Struktur der Sourcen beschrieben. Es kann zu jeder Source bzw. zu jeder Funktion eine eigene Datei erstellt werden. In dieser Datei ist folgendes beschrieben:
- Name der Source und der evtl. vorhandenen Testbench
- Konfigurationskonstanten. Diese Konstanten werden im HDL eingebunden und sind auch in der Dokumentation beschrieben.
- Es können Register beschrieben werden. Z.B. bei RAM Architekturen. Für jedes Register können Adressen und Daten beschrieben werden. Die Daten können 8-64 Bit breit sein. Es können Bitserien und einfache Bits beschrieben werden. Im HDL werden diese Einzelheiten mit vielerlei Konstanten zugänglich gemacht.
register.xml – Beschreibungsdatei für den kollaborativen Framework für FPGA
Aufruf des Frameworks
Im Verzeichnis cmd/ liegt eine Verknüpfung zu einer DOS-Kommandozeile. Dort wählt man als erstes die zu erstellende Variante aus. Dies funktioniert mit einem einfachen set Befehl. Als nächstes startet man die Arbeit mit einem chore Befehle. Z.B. chore compile synth release. Die Befehle lassen sich nacheinander ausführen, damit zeit-intensive Schritte automatisch nacheinander ausgeführt werden.
Integration des Frameworks
Das Framework ist durchweg dokomentiert. Es ist einfach es zu implementieren. Man beginnt mit dem Erstellen des Dateisystems. Die verwendeten Sourcen müssen alle in src/ eingepflegt werden. Es empfiehlt sich die src nach obigen Schema ordnerorientiert abzulegen. Es gibt funktionsorientierte Sourcen und systemorientierte.
Als nächstes wird eine XML-Struktur eingepflegt, hier werden die Sourcen erfasst und es werden Namen festgelegt, mit denen man sie instanzieren kann.
In specifics/ kommt eine Sonderrolle zu tragen. Jedes top instanziert seine Subfunktionen. Des Weiteren werden hier Dateinamen, Spezialverzeichnisse und sonstige Designspezifische Daten eingetragen.
Bei Fragen zum Framework können Sie sich jederzeit im Kontaktformular eintragen. Ich berate Sie dann gerne individuell und lasse Ihnen ein maßgeschneidertes Angebot zu kommen.