Vergleichende Untersuchungen zur effizienten VHDL-Simulation

Slides:



Advertisements
Ähnliche Präsentationen
Phasen und ihre Workflows
Advertisements

Prüfungspläne Bachelor-Thesis
Das Studium der Informatik
Invariante und Algorithmenentwurf
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Rechnernetze und verteilte Systeme (BSRvS II)
Informatik 12 | DAES Compilerbau Wintersemester 2010 / 2011 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung.
Frame-Logik Eine Einführung Andreas Glausch.
Einführung in die Programmierung Zusammenfassung
SOP - Standardarbeitsanweisung Rettungsdienstbereiche Rheinhessen & Bad Kreuznach Version SOP‘s Standard Operating Procedures Standardarbeitsanweisungen.
Grundstudiumspraktikum “Maschinelle Übersetzung”
TECHNISCHE UNIVERSITÄT DARMSTADT Naive Bayes for Ranking
Arbeitsbereich Technische Aspekte Multimodaler Systeme Universität Hamburg Fachbereich Informatik Oberseminar TAMS Grundlagen omnidirektionaler Sichtsysteme.
Einführung Künstliche Intelligenz Steuerungs- und Regelungstechnik
Fakultät für informatik informatik 12 technische universität dortmund Lehrstuhl Informatik 12 Technische Informatik/Eingebettete Systeme Arbeitsbereich.
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Objektorientierte Konzepte und Notation in UML
Seminar Software-Engineering für softwareintensive Systeme
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken IX Christian Schindelhauer
Forschungsstrategien Johannes Gutenberg Universität Mainz
„Erfolgsfaktoren für Bildungsmanagement und Wissensmanagement“
On a Buzzword: Hierachical Structure David Parnas.
Erfahrungen aus Tests komplexer Systeme
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Sortierverfahren Richard Göbel.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (11-3 –Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung.
Fachbereich Informatik Lehrgebiet Datenverwaltungssysteme Aufgabe GBIS (TPCW-Benchmark) Boris.
Vorl. 6: Single- und Multitasking Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Vorlesung 2 Rechnerarchitektur Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Vorlesung 9.2: Specification Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Vorlesung 9.1: Erinnerung Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Vorlesung 9.1: Erinnerung Universität Bielefeld Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin Wintersemester.
Institut für Angewandte Mikroelektronik und Datentechnik Fachbereich Elektrotechnik und Informationstechnik, Universität Rostock Spezielle Anwendungen.
Institut für Angewandte Mikroelektronik und Datentechnik Fachbereich Elektrotechnik und Informationstechnik, Universität Rostock Spezielle Anwendungen.
Christian Schindelhauer
Mambrey, P.; Pipek, V.Konzepte, Methoden und Werkzeuge zur sozialen und demokratischen Nutzung des Internets Konzepte, Methoden und Werkzeuge zur sozialen.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
1 25 Jahre Informatik in Koblenz Veranstaltungen am Nachmittag Studiengänge Laborpräsentationen.
Mensch-Computer-Interaktion
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Von den Curricularen Vorgaben zum Rahmenlehrplan Informatik.
Institut Nachrichtentechnik HTWK Leipzig Nachrichten- und Kommunikationstechnik 1.
Simulation komplexer technischer Anlagen
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Systementwurf Überblick: Entwicklung der globalen Problemlösungsstrategie.
Vorgehensmodelle: Schwergewichtige Modelle
Spezifikation von Anforderungen
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
© 2005, informations-broker.netinformations-broker.net© 2005, informations-broker.netinformations-broker.net Folie-Nr Basel II: Rating verbessern.
Abschlussvortrag zur Studienarbeit
Adaptive Systeme-2 Grundlagen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
© &.com Part Average Analysis PAA Rev. 2.0 / Grundlage der Methodik P AA.
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken III Christian Schindelhauer
GIS Design: A Hermeneutic View (Michael D. Gould)
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken VIII Christian Schindelhauer
1 Prof. Dr. Andreas SchmietendorfWS06/07 Übung 3 Test der Möglichkeiten des JDBC-Interfaces.
AB TAMS Technische Aspekte Multimodaler Systeme Dipl. Inform. Bernd Rössler Universität Hamburg Fachbereich Informatik.
Institut für Informationssysteme Technische Universität Braunschweig Institut für Informationssysteme Technische Universität Braunschweig Verdrängung von.
Universität Dortmund Lehrstuhl Informatik IV Projektgruppe 462 Optimierungsalgorithmen für Simulationsmodelle RSM Analysen Bartosz Fabianowski.
Fachrichtung Theoretische Informatik
 Präsentation transkript:

Vergleichende Untersuchungen zur effizienten VHDL-Simulation Oberseminar TAMS Vergleichende Untersuchungen zur effizienten VHDL-Simulation

Inhalt Motivation Entwurfsablauf Ziele der Simulation VHDL-Simulation Simulationszyklus Algorithmen Durchführung der Simulation Methoden & Benchmarks Werkzeuge Programme Ergebnisse Algorithmen Parameter Skalierung Codierung

Top-down Entwurf

Ziele der Simulation Detektion von Entwurfsfehlern ⇒ Nachweis der Funktionalität Erarbeitung/Ergänzung der Spezifikation Untersuchung von Alternativen Dynamisches Systemverhalten Simulation mit richtigen Anwendungsdaten als Stimuli Timing-Analyse Power-Analyse Schaltverhalten aus der Simulation statt geschätzter Umschalthäufigkeiten

Ziele der Simulation Konsistenzsicherung Correctness by Construction, beim Übergang von einer simulierten Eingabe der Synthese zu der Netzliste, gilt nicht! Unzureichende Simulation auf höheren Ebenen Bedienungsfehler Design-Flow z.B.: als Wechselwirkung zwischen Syntheseprogramm und Bibliotheken Programmfehler

VHDL Simulation Menge konkurrent aktiver Codefragmente Prozesse begrenzen sequenziell abzuarbeitenden VHDL-Code Konkurrente Anweisungen Prozesse mit nur einer Anweisung Hierarchien Ersetzung der Instanzen führt zu deren konkurrentem Code Signale verbinden diese Codeteile (Prozesse) Signaltreiber Signalaktivität ⇨ ⇨

Signaltreiber Zuweisung an ein Signal durch eine konkurrente Zuweisung / einen Prozess Mehrere Zuweisungen innerhalb eines Prozesses bilden einen Signaltreiber Sortierte Liste: Wert-Zeit Paare Aktualisierung durch den Simulationslauf als Ergebnis von Signalzuweisungen

Signaltreiber Verzögerungsmodelle: Transport Inertial Transport S <= transport I after 2 ns; S <= reject 0 ns inertial I after 2 ns; Inertial S <= I after 2 ns; S <= inertial I after 2 ns; S <= reject 2 ns inertial I after 2 ns; Delta-Delay: Zuweisung ohne Signalverzögerung S <= I;

Signaltreiber Ein Treiber, eine Signalzuweisung Aktualisierung der Treiberliste für Zeiten > Verzögerungszeit Ersetzung bei -Delay S <= 2; Ein Treiber, mehrere Zuweisungen (in einem Prozess) sequenzielle Aktualisierung der Treiberliste Mehrere Treiber ⇒ Busstruktur Erfordert spezielle Datentypen und Auflösungsfunktion, die aus allen Treibern einen effektiven Wert des Signals berechnet

Signalaktivität Der simulierte Zeitpukt now ändert sich Eine Signalzuweisung der Treiberliste wird wirksam Bei Signalauflösung (mehrere Treiber) wird ein neuer effektiver Wert berechnet VHDL-Attribute: 'active Signalaktivität 'event + der Wert ändert sich ⇨

VHDL Simulation Ablauf der Simulation durch Ereignisse gesteuert Simulationsereignis: Werteänderung eines Signals EreignisSignal = (Zeitpunkt, Signal, Wert) (Re-) Aktivierung eines Prozesses nach wait for EreignisProzess = (Zeitpunkt, Prozess, Einsprungstelle) Prozessaktivierung: Direkt EreignisProzess Triggerfunktion sensitivity-Liste, wait on, wait until TriggerProzess(EreignisSignal)  EreignisProzess ⇨

VHDL Simulationszyklus Initialisierung t0.zeit tc = now := 0 ns; t0.signalexplizit effektive Werte explizit deklarierter Signale t0.signalimplizit implizite Signale (durch Attribute) initialisieren t0.prozessnormal alle Prozesse bis wait / Prozessende, ausführen t0.prozesspostponed postponed Prozesse (letzter -Zyklus) abarbeiten t0.zeitschritt nächster Zeitschritt niedrigster Wert des Schedule tn = min(time'high, EreignisSignal.Zeitpunkt, EreignisProzess.Zeitpunkt)

VHDL Simulationszyklus Zeitschritt: effektiv oder -Zyklus tc.zeit tc = now := tn; time'high markiert das Ende der Simulation tc.signalexplizit die Treiber aktiver Signale werden aktualisiert tc.signalimplizit und erzeugen: EreignisSignal tc.prozessaktivierung alle zu aktivierenden Prozesse werden bestimmt: EreignisProzess ∪ TriggerProzess(EreignisSignal) postponed-Prozesse bilden eine eigene Menge tc.prozessnormal aktivierte Prozesse (nicht postponed) bis wait, bzw. Prozessende, ausführen

VHDL Simulationszyklus tc.zeitschritt nächster Zeitschritt niedrigster Wert des Schedule tn = min(time'high, EreignisSignal.Zeitpunkt, EreignisProzess.Zeitpunkt) tc = tn ⇒ es folgt der nächste -Zyklus: tc.zeit tc ≠ tn ⇒ dies ist der letzte -Zyklus: tc.prozesspostponed tc.prozesspostponed die postponed Prozesse abarbeiten, dabei werden keine weiteren -Zyklen erzeugt tc.zeitschrittpost nächster Zeitschritt niedrigster Wert des Schedule tn = min(time'high, EreignisSignal.Zeitpunkt, EreignisProzess.Zeitpunkt)

Simulationsalgorithmen Ereignisorientiert, interpretierend Folgt direkt dem Algorithmus Dynamische Verwaltung der Ereignisliste(n) (Signaltreiber) Vorteile: Konformität Debugging Nachteile: langsam

Simulationsalgorithmen Ereignisorientiert, compilierend Umsetzung von VHDL in Hochsprachencode (C, C++) Simulatorkern Verwaltung der Ereignisliste Schnittstellen zu Datenstrukturen Signalwerte, Aktivierung... Compiler erzeugt Maschinencode Der Simulator wird zusammengelinkt Vorteile: Simulationsgeschwindigkeit Nachteile: Debugging teilweise eingeschränkt Compileroptimierung ↔ Geschwindigkeit

Simulationsalgorithmen Zyklenbasiert, compilierend Simulationszyklus statt dynamischer Verwaltung von Ereignissen: diskretes Zeitraster Takt bei Register-Transfer Code In jedem Zyklus werden alle Beschreibungen simuliert Optimierungen möglich Erfordert Sequenzialisierung der konkurrenten Prozesse, dem Datenfluss entsprechend Vorteile: Simulationsgeschwindigkeit Codeabhängig: unnötige Berechnung ↔ dynamische Ereignisverwaltung

Simulationsalgorithmen Nachteile: Debugmöglichkeiten teilweise eingeschränkt Einschränkungen im Sprachstandard: Zuweisungen mit Verzögerungszeit wait-Anweisungen Sonderbehandlung von Testumgebungen einheitliches Taktschema (disjunkte Takte?)

Durchführung der Simulation Codeanalyse syntaktische Analyse erzeugt Elemente in einer VHDL-Bibliothek simulatoreigene Binärformate native Objektdateien (compilierend) Elaboration Hierarchie auflösen Executable des Simulators zusammenbauen (compilierend) Datenstrukturen aufbauen (in Verbindung mit Simulation) Simulation

Simulation – weitergehende Konzepte Mehrere Algorithmen nur VHDL Kopplung ereignisorientierter und zyklenbasierter Simulation Teile der Hierarchie erhalten ihren Simulatorkern Mixed-mode Simulation + analog = VHDL-AMS analoge Komponenten Systemumgebung MEMS Schnittstellenproblematik Wert diskret ↔ kontinuierlich Zeit diskret / (Takt-) Zyklen Wirkung Richtung der Ports

Simulation – weitergehende Konzepte Simulatorkopplungen + digital (Verilog) Gatterbibliotheken IP-Modelle die nur in einer HDL vorliegen Timing-Checks in Verilog enthalten ⇒ besser optimiert (VITAL-Standard in VHDL) Realisierungskonzepte Master-Slave getrennte Codeanalyse bei compilierenden Simulatoren „golden Simulation“ VHDL- Systemumgebung + Verilog-Netzliste + SDF-Timing

Simulation – weitergehende Konzepte Hardwarebeschleuniger FPGA- Boards Hardwareemulation von Gatternetzlisten (Quickturn, IKOS ...) z.B. Nvidia: 160Mio.$ tools, 40Mio.$ Emulatoren, >8000CPUs Vorteile: Geschwindigkeit macht viele Systemsimulationen erst möglich Nachteile: Kosten eingeschränktes Timing Programmiersprachen-Schnittstellen (VHPI, Verilog-PLI) Externe Modelle IP-Komponenten, System Benutzerschnittstellen Ein-/Ausgabe, Sound, Grafik... ⇨

Ziel der Arbeit Zeitbedarf von Simulationen ist ein entscheidender Faktor für Entwurfsdauer Welche Faktoren beeinflussen die Simulationsgeschwindigkeit? Der Simulator, bzw. dessen Algorithmus Die Parametrisierung und Handhabung der Programme Die Gatterbibliotheken Die Art der VHDL-Codierung Die Schaltungsgröße Für VHDL-Simulation gibt es keine Benchmarks!

Benchmarks Operationswerk 16-bit Prozessor RISC-Befehlssatz: Laden, Speichern, 2- und 3-Adress ALU

Benchmarks Funk-Wecker Kleines ASIC Interner Taktteiler Autonome Automaten

Benchmarks Hardware-Multiplizierer Radix-4 Booth-Multiplizierer „von Hand“ codiert: Booth-Encoding statt Operator: * Wallace-Tree CSA CPA-Addition Parametrisierbar: m × n-bit Beispiele 8 × 8, 16, 24, 32 16 × 16, 24, 32 24 × 24, 32 32 × 32 Ampelschaltung ⇨

Simulationsprogramme EDA-Anbieter HDLs Platformen Zellbibliotheken Prozesse Modell e

Simulationsläufe VHDL-Testumgebung keine Benutzereingaben nötig Prüfsummen zeigen korrektes Verhalten der Schaltung 62 Parametersätze für die Simulatoren Debug-Simulation, Voreinstellung, Performance Codeanalyse, Elaboration, Simulation 10 Parametersätze für die 2 Zellbibliotheken Skriptgesteuert Zeitmessung durch Betriebssystem, z.T. Simulatorintern Mittel aus mehreren Läufen

Ergebnisse – allgemein Algorithmus ereignisorientiert, interpretierend ereignisorientiert, compilierend Zyklenbasiert, compilierend Parametervariationen Benutzerschnittstelle Abstraktion Register-Transfer Code Gatternetzliste OPW Clock VSS NCSim OPW Clock

Ergebnisse – Skalierung Simulatoren skalieren linear mit der Schaltungsgröße Profiling Information aus Elaboration Beispiel: Gatternetzliste des Multiplizierers Maßeinheit der Komplexität: Anzahl skalarer Signale Unabhängig von der Abstraktion Netzlisten ≙ Anzahl Prozesse Verhalten ≙ Aktivität der Prozesse Maß gilt für alle Simulationsalgorithmen Ereignissteuerung Eingangssensitivität + Wirkungseffektivität Zyklenbasiert Anzahl der Prozesse + Komplexität ⇨ ⇨

Ergebnisse – Codierung Simulation: möglichst wenig, möglichst große Prozesse kurze Sensitivity-Liste Ereignissteuerung ⇒ weniger Events Zyklenbasiert ⇒ mehr Compileroptimierung ⇒ weniger Prozesse anzuordnen Design + Trennung funktionaler Einheiten, beispielsweise Synthese: ein Prozess pro Register einfache Prozesse, wenig Variablen: übersichtlicherer Code, weniger Fehler Tradeoff: Simulation ↔ Design Ampelschaltung

Ergebnisse – Netzlistensimulation Simulationsmodelle Verschiedene Zellmodelle ⇒ VITAL als „Standard“ Parameter bei Bibliotheksgenerierung Zielbibliothek Timing-Modellierung Mixed-mode Simulation VHDL + Verilog Verilog Simulation OPW Clock OPW Clock OPW Clock

Ergebnisse – Programm Parametrisierung der Programme Auswahl des Simulators Starker Konkurrenzkampf – Produkte gleichwertig Unterschiede durch die Konzepte Neue Versionen EDA-Tools auf PCs sind konkurrenzfähig Sun: Ultra60 2 × 360 MHz 1280MB PC: AMD K6III 400 MHz 160MB Multiplizierer OPW OPW Clock

Ergebnisse – Fehler Timing-Fehler ⇒ undefinierte Werte Bibliotheksmodelle ⇒ undefinierte Werte ⇒ falsche Werte kritisch! Programmfehler ⇒ Generic-Auswertung ⇒ Programmabbrüche Verschiedene Simulationsalgorithmen Verschiedene Hardwarebeschreibungssprachen

Zusammenfassung Simulation ist von zentraler Bedeutung im VLSI-Entwurf und macht einen erheblichen Teil der Entwurfszeit aus Zeitaufwand abhängig von Algorithmus: Compiliert ereignisorientiert ↔ zyklenbasiert Benutzung: Parameter Debug-Option VHDL-Codierung: Partitionierung im Code Testumgebung Schaltungsgröße Gemischte Ansätze VHDL-Testumgebung + Verilog- Netzliste

mainP: process (clk, rst) type stateTy is (Gr, Yr, Rr, Rg, RYr); variable timer : integer range 0 to maxWalkC; variable state : stateTy; variable request : boolean; begin if rst = '0' then -- async. reset lightCar <= "001"; lightWalk <= "10"; state := Gr; timer := 0; request := false; elsif rising_edge(clk) then -- clock case state is when Gr => -- Green + red if (reqWalk = '1') then request := true; -- store reqest end if; if (timer > 0) then timer := timer – 1; -- no timeout elsif request then state := Yr; -- timeout and req. when Yr => -- Yellow + red lightCar <= "010"; timer := maxWalkC-1; -- init. timer ...

Selektive Signalzuweisung process (A, B, OP) begin with OP select case OP is RES <= A + B when ADD_I, ADD_I => RES <= A + B; A - B when SUB_I, SUB_I => RES <= A - B; A + 1 when INC_I, INC_I => RES <= A + 1; ... ... A or B when OR_I, OR_I => RES <= A or B; A and B when AND_I; AND_I => RES <= A and B; end case; end process; Bedingte Signalzuweisung process (A, B) begin SIGN <= 1 when (A > B) else if (A > B) then SIGN <= 1; 0 when (A = B) else elsif (A = B) then SIGN <= 0; -1; else SIGN <= -1; end if; end process;

-- stimuli generator for user interface stiP: process procedure pushBut( pushT, runT : in time; signal button : out std_logic) is begin button <= '1'; wait for pushT; button <= '0'; wait for runT-pushT; end procedure pushBut; -- send pattern: Mo. 24.12.01 22:54-- FSM sec wait for 1 sec; -- 1 -- set alarm2: Mo. 22:54 pushBut(300 ms, 1 sec, butMod); -- alarm1 2 pushBut(300 ms, 1 sec, butMod); -- alarm2 3 pushBut(300 ms, 1 sec, butMin); -- minute 4 pushBut( 3 sec, 4 sec, butMinus); -- minute -6 8 pushBut(300 ms, 1 sec, butHour); -- hour 9 pushBut( 1 sec, 2 sec, butMinus); -- hour -2 11 ... pushBut( 1 sec, 2 sec, butSleep); -- sleep 64 wait; end process stiP;

VSS +Spektrum +Scope

VSS +Display

Multiplizierer Flächen- und Zeitbedarf

OPW RT-Code

Clock RT-Code

VSS

NCSim

OPW ⇨

OPW ⇨

Clock ⇨

Clock ⇨

Schaltungsgröße

Multiplizierer

Multiplizierer

Ampelschaltung RT-Code

Ampelschaltung RT-Code

OPW Netzliste

Clock Netzliste

OPW Netzliste

Clock Netzliste

Multiplizierer

Multiplizierer

OPW RT-Code

OPW RT-Code

Clock RT-Code