Modellierung
Je nach Fortschritt der ASIC-Entwicklung (Spezifikation, Verifikation, Evaluation) oder der Art der zu kodierenden Schaltung (ein kompletter Chip, ein einzelner Funktionsblock, ein eigenständiges wiederverwendbares
Macro oder eine mehr oder wenige komplexe Systemumgebung der zu entwickelnden Schaltung), wendet man unterschiedliche Modellierungen des VHDL oder Verilog Codes an.
RTL-Modellierung Bei der RTL-Modellierung (Register Transfer Level) hat man das unmittelbare Ziel, diesen Code nach der Fertigstellung zu synthetisieren, d.h. aus ihm eine
Netzliste (Gate Level Model) zu erzeugen. Diese soll sich dann später als die spezifizierte Gesamtschaltung oder als eine Teilschaltung auf dem Chip befinden. Die RTL-Modellierung eignet sich wie auch die
Behaviour-Modellierung für die Simulation. Für die RTL-Modellierung darf jedoch nicht jedes Sprachelement aus VHDL oder Verilog verwendet werden (s.u.). Ebenso muß die Codestruktur gewissen Anforderungen genügen, damit diese
synthetisierbar ist.
Behaviour-Modellierung Bei der Behaviour-Modellierung hat man gegenüber der RTL-Beschreibung andere Ziele. Dieser Code
ist nicht synthetisierbar, kann aber andererseits sehr schnell erzeugt werden und ist u.U. leichter lesbar. Der Abstraktionsgrad ist gegenüber RTL wesentlich höher und erlaubt z.B. über einen Simulator einen
Dateizugriff (lesen und schreiben), eine Stringverarbeitung von Texten, er kann auf Tastatureingaben warten, komplexe Variablen- und Konstantenstrukturen anlegen, und, und und ... Diese aufgeführten
Funktionen wird natürlich eine Schaltung so ohne weiteres nicht bewerkstelligen können. Mit einer Verhaltensbeschreibung kann z.B. schnell und einfach verschiedene Algorithmen implementiert
und miteinander verglichen werden, ohne zuvor die Schaltungsstrukturen bis ins letzte Detail spezifiziert zu haben. Die Simulationsaufwand (=Simulationszeit) ist hier sehr gering, da der Detailierungsgrad der
Schaltung sehr gering ist. Typische Behaviour-Sprachelemente sind:
wait for time_value; (VHDL)
sig <= value after time_value; (VHDL)
komplexe mathematische Funktionen (Sinus, Cosinus, ...)
allgemeine Filezugriffe (lesen, schreiben)
allgemeine Text- und Stringoperationen
allgemeine Eingabeoperationen (Tastatur)
In dem aufgeführten Beispiel sind beide Modellierungen vorhanden. Der Zähler ist entsprechend RTL codiert, während die Testbench Behaviour-Strukturen und Bestandteile enthält.
|
|