52
Praktikum VHDL Dekrementer: VHDL Beschreibung sequentieller Schaltungen von Prof. Dr.-Ing. Dirk Rabe Gruppe: Teilnehmer: Vortestat: Testat: Benutzte Geräte:

Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Embed Size (px)

Citation preview

Page 1: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Praktikum VHDL

Dekrementer:VHDL Beschreibung sequentieller Schaltungen

von Prof. Dr.-Ing. Dirk RabeGruppe: Teilnehmer: Vortestat: Testat:

Benutzte Geräte:

Page 2: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe1 1. Einleitung und Überblick

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

1 Einleitung und ÜberblickDieser Versuch gliedert sich in 4 Praktikumstermine. Sie sollen hier folgendes lernen:

• Praktikums-Termin 1: Abschnitt 1 bis 3

- VHDL-Kenntnisse:• Beschreibung sequentieller Prozesse,• Verwendung von arithmetischen Operatoren,• Generische Definition von Schaltungsblöcken (über generics).

- Schaltungstechnik: Synchronisierung von asynchronen Eingangssignalen

• Praktikums-Termin 2 und 3: Abschnitt 4

- Simulation von VHDL-Beschreibungen: • Funktionale Simulation• Timing Simulation

• Praktikums-Termin 4: Abschnitt 5

- Timing-Analyse und timing driven Synthese des Designs.

1.1 Versuchsvorbereitung

Voraussetzung für diesen Versuch sind folgende Kenntnisse, die ggf. in den angegebenenSkripten nachgeschlagen werden sollen:

• Funktionalität und Beschreibung von Flipflops in VHDL: Informationen in den Folien zurVHDL-Vorlesung (Suchbegriff: Speichernde Gatter),

• Setup- und Holdzeiten: Informationen in den Folien zur Digitaltechnik-Vorlesung (Suchbe-griff: Holdzeiten),

• Synchronisierung von asynchronen Eingangssignalen (Suchbegriff: Synchronizer).

Außerdem sollen die Entities der zu implementierende Schaltung beschrieben werden (alsVHDL-Beschreibung) sowie die Funktionalität als Kommentar hinzugefügt werden. Die Parti-tionierung der Schaltung folgt im nächsten Kapitel.

Die Architectures werden dann im Praktikum hinzugefügt.

2 Die in VHDL zu beschreibende SchaltungEs soll ein n-Bit breiter Dekrementer (also ein Zähler, der den aktuellen Zählerstand pro Taktum 1 reduzieren kann) realisiert werden. Die Schaltung soll wie folgt funktionieren:

• Interfaces:- start_num_i: 8-Bit breiter Eingangsvektor, der die höchstwertigsten Bits des Dekrementers

definiert (Verwendung Schalter sw(n-1 downto 0)),- start_i: Taster, der den Neustart des Dekrementers auslöst (Verwendung key(0))- res_i: Taster, der einen asynchronen Reset auslöst (low-active) (Verwendung key(1))- clk_i: auf dem DE2-Board generierter 27-MHz-Takt (Bezeichnung im Pin-Map-File:

CLOCK_27)

Page 3: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe2. Die in VHDL zu beschreibende Schaltung 2

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

- empty_o: wenn der Dekrementer den Wert 0 erreicht soll dieses Signal auf 1 schalten undeine LED zum leuchten bringen (ledr0)

• Verhalten:- Der Reset-Eingang (res_i) soll asynchron einen Reset auslösen, aber synchron wieder

deaktiviert werden (auf 1 gehen) - das erzeugte Signal soll im folgenden res_sync genanntwerden

- Alle weiteren Eingänge werden durch einen Synchronizer synchronisiert (2 in Seriegeschaltete Flipflops):- start_sync: Synchronisierung des Eingangs start_i;

bei res_sync=0 soll start_sync asynchron gesetzt werden- start_num_sync: Synchronisierung des Eingangs start_num_i (8 Bit breites Array);

der Synchronisierer soll hier nicht asynchron zurück gesetzt werden- Der aktuelle Zählerstand des n-Bit-Dekrementers wird in einem n-Bit-Flipflop gespeichert.

- Der nächste Zählerstand ist wie folgt definiert:- wenn start_i ‘1‘ ist, so wird der Dekrementer neu gestartet und die obersten 8 Bits des

über die Schalter eingestellten Startwerts übernommen,- wenn start_i ‘0‘ ist und der aktuelle Zähler >0 ist, so wird der Zähler um eins dekremen-

tiert,- in allen anderen Fällen ändert sich der Zählerwert nicht.

- Der Ausgang empty_o ist dann ‘1‘ wenn der aktuelle Zählerstand =0 ist, sonst ‘0‘.

Abbildung 1: schematische Darstellung der Synchronisierungsschaltungen

D

ENA

QPRE

CLR

D

ENA

QPRE

CLR

D QPRE

ENA

CLR

D QPRE

ENA

CLR

D

ENA

QPRE

CLR

D

ENA

QPRE

CLR1

start_num_sync_1d[7..0] start_num_sync_o[7..0]~reg0

start_sync_1d start_sync_o~reg0

res_i

clk_i

res_sync_o

start_sync_o

start_num_i[7..0] start_num_sync_o[7..0

res_sync_regres_sync_1dstart_i

Page 4: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe3 2. Die in VHDL zu beschreibende Schaltung

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

• Für die Datenbreite ist der generische Parameter counter_width_g in der Entity des Dekre-menters zu spezifizieren. Diese Datenbreite ist zunächst nur der Default-Wert.

Dieser Wert kann bei der Instanziierung überschrieben werden.

Anstelle von Zahlenwerten bei der Definition von Array-Bereichen soll dieser Generic ver-

Abbildung 2: Definition von generischen Parametern in der Entity

Abbildung 3: Überschreibung des generischen Parameters bei der Instanziierung (hier mit32 - hätte aber auch ein anderer Wert wie z.B. 24 sein können)

Page 5: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe2. Die in VHDL zu beschreibende Schaltung 4

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

wendet werden.

• Implementierung:

- Die Schaltung soll wie folgt partitioniert werden (vergleiche Abb. 5):• decrementer_top: strukturelle VHDL-Beschreibung der Verbindung folgender Blöcke:

- input_sync:Synchronisierung der asynchronen Eingänge (siehe Verhaltensbeschreibung).

- decrementer_core:Realisierung des Zählers, der das oben beschriebene Verhalten realisiert.

Abbildung 4: Verwendung des generischen Parameter in der Architecture

Page 6: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe5 3. Versuchsaufgaben VHDL Design:

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

3 Versuchsaufgaben VHDL Design:1) VHDL-Beschreibung erstellen

2) Betrachtung des Designs im RTL-Viewer (siehe Abbildung 6)!

3) Schaltung auf dem FPGA downloaden und erproben

3.1 Aufgaben für die Versuchsausarbeitung

Der wesentliche Teil der Ausarbeitung ist der „kommentierte“ Quellcode. Durch VHDL-Kom-mentare sind die jeweiligen VHDL-Zeilen ausführlich zu dokumentieren.

Außerdem sind folgende Fragen zu beantworten:

1) Wie beschreibt man das sequentielle Verhalten von Schaltungsteilen in VHDL?Stichworte: process, Senitivity-List, if res_i=0... elsif clk‘event and clk=‘1‘

2) Welche Vorteile bieten generische Parameter in VHDL?Stichworte: Default-Wert, Überschreibung des Defaultwerts...

Abbildung 5: Darstellung der Design-Hierarchieebenen

decrementer_top (struc)

start_num_i(7 downto 0)

res_i

sw(7 downto 0)ledr0

decrementer (struc) - Datei decrementer.vhd (vorgegeben)

ledg0

key(1 downto 0)

start_iempty_o

key(1)

key(0)

clock_27

clk_i

decrementer_top (struc)

input_sync (rtl) decrementer_core (rtl)

Page 7: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe3. Versuchsaufgaben VHDL Design: 6

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

3) Wie instanziiert man eine VHDL-Komponente in VHDL?Stichworte: Component-Declaration, Instanziierung, Signalmapping auf die Ports

4) Was ist die Gefahr wenn man nicht synchronisierte Eingangssignale als Eingangssignalefür synchrone Schaltungen verwendet?Stichworte: Setup-/Holdzeit, Begriff Timing-Pfad (path delay), ungültige Zustände beiTiming-Verletzungen

5) Wodrin besteht der Unterschied der verwendeten Synchronisierer für start_num_i undstart_i?Stichwort: Reset

Abbildung 6: Betrachtung des VHDL Designs im RTL Viewer

Page 8: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe7 3. Versuchsaufgaben VHDL Design:

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

6) Was für eine Hardware ergibt sich aus folgendem VHDL-Code für start_num_sync_1dund start_num_sync_o (Typ jeweils std_ulogic_vector(7 downto 0)) und warum wollenwir diese Hardware so nicht realisieren?Tip: Verhalten während res_sync_reg=‘0‘ von start_num_sync_1dEin Blockschaltbild erleichtert die Erklärung!

7) Wie kann man den Synchronisierer für das Reset-Signal realisieren (ErklärungAbbildung 1)?

8) Warum ist es wichtig das Deaktivieren (low aktives Signale von 0->1) des Resets syn-chron an die Schaltung weiter zu geben und warum ist dies irrelevant für das Aktivierendes Resets (low aktives Signale von 1->0)?

9) Warum sind die mehrfachen Typkonvertierungen bei der Dekrementierung des Zählerwer-tes notwendig?

Abbildung 7: Wie sieht das Syntheseergebnis für start_num_sync_1d und start_num_sync_oaus?

Page 9: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Praktikum VHDL

Dekrementer:Debugging der VHDL Beschreibung -

funktionale Simulation

von Prof. Dr.-Ing. Dirk RabeGruppe: Teilnehmer: Vortestat: Testat:

Benutzte Geräte:

Page 10: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe9 4. Debugging des VHDL Source Codes

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

4 Debugging des VHDL Source CodesSollte die Schaltung sich nicht auf Anhieb richtig verhalten, so sollte man zunächst folgendeSchritte durchführen:

1) Betrachtung des Designs im RTL-Viewer (siehe Aufgaben VHDL Design),

2) Überprüfung der Synthesemeldungen (Warnings).

Der nächste Schritt ist dann die Schaltungssimulation. In der Simulation sind neben den nachaußen sichtbaren Entity-Signalen auch interne Signale verfügbar. Die Simulation der Schal-tung wird vom Designer immer ausgeführt, um die gewünschte Funktionalität - zumindestgrob - zu verifizieren. Die detaillierte Verifikation erfordert die umfassende Berücksichtigungaller möglichen Schaltungszustände und Eingangsmuster. Für die detaillierte Verifikation wer-den typischerweise weitere Werkzeuge der formalen Verifikation und effizienten Verifikations-mustergenerierung verwendet.

Es kann eine funktionale Simulation der VHDL-Beschreibung oder eine Timingsimulation desSynthese-Ergebnisses durchgeführt werden. Für die funktionale Verifikation ist die funktionaleSimulation ausreichend und soll hier zunächst verwendet werden. Die funktionale Simulationbietet folgende Vorteile:

• Zugreifbarkeit aller interner Signale, die durch die Synthese oftmals optimiert werden,

• keine Synthese erforderlich und

• höhere Performance des Simulators (bei größeren Schaltungen von Bedeutung).

In der Quartus II Oberfläche ist ein Simulator eingebunden, der jedoch nicht alle für dasDebugging von Schaltungen notwendigen Funktionalitäten unterstützt. Altera bietet hier auchden Simulator Modelsim vom MentorGraphics kostenlos an. Die Einschränkungen dieserSimulatorversion können der Dokumentation entnommen werden.

Hinweis: Der Simulator kann auf www.altera.com herunter geladen werden. Nach der Installa-tion muss das Lizenzfile hier eingebunden werden. Am einfachsten ist das Lizenzfile überlmtools.exe einstellbar (Verzeichnis modelsim_ae\win32aloem).

4.1 Überblick zu den Aufgaben

In den folgenden Abschnitten finden Sie die Aufgabenstellung kombiniert mit der schrittweiseAnleitung zur Bedienung der Werkzeuge. Die für die Ausarbeitung relevanten Aufgaben sindam Ende jedes Abschnitts kurz zusammen gefasst. Die Versuchsdurchführung gliedert sich infolgende Abschnitte:

• 4.2 VHDL-Testbench,

• 4.3 Funktionale Simulation,

• 4.4 Aufgaben zum Thema funktionale Simulation der Schaltung.

Page 11: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe4. Debugging des VHDL Source Codes 10

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

4.2 VHDL-Testbench

Neben der VHDL-Beschreibung der Schaltung ist für die Simulation eine VHDL-Testbencherforderlich.

1) Erstellung einer VHDL-Testbench:Im File decrementer_tb.vhd sind einige Hinweise für die Testbench vorhanden. Wie beijeder VHDL-Beschreibung ist hier eine Entity und eine Architecture erforderlich. Dadiese Testbench nicht synthetisiert werden muss, darf hier der volle VHDL-Sprachumfangverwendet werden.

1.1) Die Entity decrementer_tb: Diese Entity ist leer, da sie keine Ports beinhaltet (die Ein-gangssignale der eigentlichen Schaltung werden in der Testbench-Architectureerzeugt).

1.2) Die Architecture tb: Hier werden die Eingangssignale der Schaltung stimuliert und ggf.die korrekten Antworten der Schaltung kontrolliert. Außerdem wird hier die zu simu-lierende Schaltung instanziiert. Im einzelnen müssen Sie hier die folgenden Schritteausführen:

1.2.a) Instanziierung der Schaltung decrementer (Component declaration und Componentinstantiation) und Definition der entsprechenden Signale:Dies läßt sich am besten mit dem EMACS-Editor über die VHDL-Port-Menüsbewerkstelligen.

1.2.b) Beschreibung des clock_27 Signals:Ergänzen Sie hierfür einen Prozess ohne sensitivity-List. Die Halbperiode des Taktsergibt sich aus 50% der Periodendauer des 27 MHz Takts (1/2 * 1/27E06). DurchVerwendung des wait-Statements können Sie die erforderlichen Wartezeiten zwi-schen 2 Signalzuweisungen definieren. Der Prozess wird automatisch wieder neugestartet sobald sämtliche Kommandos des Prozesses abgearbeitet sind.

1.2.c) Beschreibung der restlichen Eingangssignale:Die restlichen Eingangssignale können in einem oder mehreren Prozessen definiertwerden. Da sämtliche Eingangssignale hier in einem kausalen Zusammenhang sti-muliert werden sollen, sollten die Signale auch in einem Prozess beschrieben wer-den. Zwischen den jeweiligen Signalzuweisungen werden entsprechende wait-Statements eingefügt, um entweder die Anzahl der Clocks zu zählen oder fixe Warte-zeiten einzufügen. Damit der Prozess nach Abarbeitung aller Signale nicht automa-tisch wieder neu angestartet wird, sollte ein Wait-Statement ohne Argument am Endedes Prozesses eingefügt werden.Vektor key:key(0): Dies ist das invertierte Startsignal zum synchronen Neustart des Dekrem.key(1): Dies ist das asynchrone Reset-Signal (Low-Aktiv)Auch dieser Vektor sollte in einem Prozess generiert werden.Generieren Sie hier einen Reset von beliebiger Länge (selbst 1 ns ist ausreichend).Das invertierte Start-Signal sollte zunächst auf 1 gesetzt werden und später wiegewünscht stimuliert werden. Hierfür kann ggf. auch ein Ausgangssignal der Schal-tung verwendet werden (ledg oder ledr).

Page 12: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe11 4. Debugging des VHDL Source Codes

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

Vektor sw:Hierüber wird der Initialwert des Counters beim Start eingestellt. Hier bietet sich„00001111“ als Startwert an.

1.3) Für die Überprüfung der Simulationsergebnisse gibt es 2 Möglichkeiten:a. manuelle Überprüfung der Signalverläufe im Waveform-Fenster des Simulations-werkzeugs,b. Vergleich der simulierten Schaltungsantworten gegen die erwarteten Antwortendurch sogenannte VHDL-Assertions.Im Rahmen des Praktikums sollen Sie beide Methoden kennen lernen. Bei der Erstel-lung der Testbench sollten die Assertions sofort mit beschrieben werden:

1.3.a) Innerhalb eines Prozesses (hier z.B. in dem Prozess in dem der key-Vektor generiertwird) können Sie über folgende VHDL-Konstrukte die Anzahl von Clock-Zyklenzählen (2**9 -> 29):

1.3.b) Über VHDL-Assertions können Sie überprüfen, ob Signale den erwarteten Wert zumentsprechenden Zeitpunkt haben. Die genaue Syntax liefert Ihnen der emacs-Editorwenn Sie das Key-Wort assert eingeben.

1.3.c) Ergänzen Sie die Überprüfung, dass die rote LED nicht zu früh leuchtet und die grü-ne LED nicht zu früh erlischt!

1.3.d) Ergänzen Sie die Überprüfung, dass die rote LED genau im erwarteten Takt leuchtetund die grüne LED erlischt!

In die Ausarbeitung ist die kommentierte VHDL-Testbench mit einzubinden. Bitte beachtenSie, dass Sie in den folgenden Abschnitten sicherlich noch Ihre Testbench verfeinern werden.Die Assertions sind entsprechend hervorzuheben!

4.3 Funktionale Simulation

2) Funktionale Simulation der VHDL-Beschreibung mit der Testbench:Der Modelsim-Simulator soll im ersten Schritt gestartet werden (z.B. über den Desktop).

2.1) Erstellen eines Projekts: siehe Abbildung 9

2.2) Die VHDL-Files decrementer.vhd, decrementer_tb.vhd und decrementer_top.vhd demProjekt hinzufügen über „Add Existing File“ (siehe Abbildung 10):

2.3) Compile der VHDL-Sourcen (siehe Abbildung 11)

Abbildung 8: For-Loop in einer Testbench zum Zählen von 29 Clock-Zyklen

Page 13: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe4. Debugging des VHDL Source Codes 12

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

Abbildung 9: Erstellen eines neuen Projekts im Simulator

Abbildung 10: VHDL-Files dem Projekt hinzufügen - „Add Existing File“

Page 14: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe13 4. Debugging des VHDL Source Codes

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

2.4) Start der Simulation (siehe Abbildung 12)

2.5) Auswahl der zu simulierenden Testbench aus der Library Work - siehe Abbildung 13

2.6) Angabe der aufzuzeichnenden Signale:

2.6.a) In kleinen Designs können alle Signale aufgezeichnet werden:im vsim-Fenster folgendes eingeben: log -r /*Nach Abschluss der Simulation stehen dann alle Signale zur Darstellung im Wave-form-Fenster zur Verfügung.

Abbildung 11: Compile der VHDL-Sourcen

Abbildung 12: Start der Simulation

Page 15: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe4. Debugging des VHDL Source Codes 14

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

2.6.b) Über das Menü View->Debug Windows folgende Debug-Fenster darstellen(Abbildung 14):- Objects (Signale, Variablen... - meistens schon geöffnet),- Wave (Signaldiagramm - hier können alle Objekte dargestellt werden).

Abbildung 13: Auswahl der zu simulierenden Testbench

Abbildung 14: Auswahl der Debugging-Fenster

Page 16: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe15 4. Debugging des VHDL Source Codes

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

2.6.c) Über das Objektfenster können die interessanten Signale direkt in das Waveform-Fenster verschoben werden.(siehe Abbildung 15)

2.7) Die eigentliche Simulation wird über folgendes Kommando im vsim-Fenster gestartet:run <time><time> steht für eine Simulationszeit - z.B. 500 ns

2.8) Soll die Simulation neu gestartet werden - um z.B. neu kompilierten VHDL-Code zusimulieren, so kann dies überrestart -fgetan werden.

2.9) Die Anordnung der Signale im Waveform-Fenster kann über File-Save / File-Loadgespeichert bzw. geladen werden.

2.10) Debugging über Breakpoints:

2.10.a) Durch Doppelklick auf die Design-Unit im Workspace-Fenster wird der VHDL-Code eingeblendet.

2.10.b) In diesem VHDL-Code kann man über die rechte Maustaste auf eine Zeile einenBreakpoint setzen.

2.10.c) Durch Auswahl eines Signals im Objekt-Fenster kann man über die rechte Maustasteeinen Breakpoint auf das Signal definieren

Abbildung 15: Auswahl der zu simulierenden Signale per Drag&Drop

Page 17: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe4. Debugging des VHDL Source Codes 16

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

2.10.d) Über das Menü kann man alle Breakpoints darstellen und bearbeiten (siehe Abbil-dung 17)

Zu diesem Abschnitt müssen keine Punkte in der Ausarbeitung beschrieben werden - es han-delt sich primär um eine Anleitung, damit Sie die Aufgaben in den folgenden Abschnittenbearbeiten können.

4.4 Aufgaben zum Thema funktionale Simulation der Schaltung

Die folgenden Aufgaben sind durch entsprechende Waveform-Ausdrucke zu dokumentieren.

3) Überprüfen Sie zunächst das gewünschte Verhalten nach dem Reset:

3.a) Geht der synchronisierte Reset wie gewünscht um 1-2 Takte verzögert auf 1?

Abbildung 16: Abspeichern von darzustellenden Signalen - können später über Load wiederdargestellt werden

Abbildung 17: Übersicht Breakpoints

Page 18: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe17 4. Debugging des VHDL Source Codes

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

3.b) Ist das synchronisierte Start-Signal noch mindestens 2 Takte danach auf 1?

3.c) Wird die Schalterstellung nach dem Reset übernommen?

3.d) Setzen Sie start_sync_o und das Ausgangssignal des vorgeschalteten Flipflops wäh-rend des Resets auf 0 (Änderung VHDL-Code) und beobachten Sie das geänderte Ver-halten!

3.e) Erklären Sie diese Charakteristiken anhand des VHDL Codes!

4) Überprüfen Sie das gewünschte Verhalten des Dekrementers (Erweiterung der Test-bench):

4.a) Betätigung des Start-Signals während des Zählvorgangs

4.b) Anhalten des Zählers wenn der Zähler 0 erreicht:Tips: ggf. die counter_width_g reduzieren (z.B. auf 9 Bits) und die Simulationsendzeitanpassen

4.c) Neustart des Zählvorgangs nach Anhalten des Zählers

5) Weitere VHDL-Charakteristiken beobachten:

5.1) Abarbeitung von Signal- und Variablen-Zuweisungen in einem Prozess:

5.1.a) Überprüfen Sie den Einfluss der Reihenfolge der Zuweisung der Signale in einembeliebigen Synchronisierungsprozess (keine Waveforms für die Ausarbeitung erfor-derlich - verbale Begründung ausreichend)

5.1.b) Ersetzen Sie das Zwischensignal bzw. die Zwischensignale durch Variablen! Ver-wenden Sie jeweils unterschiedliche Zuweisungsreihenfolgen! (2 Waveforms für dieAusarbeitung einfügen und begründen)

Page 19: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe4. Debugging des VHDL Source Codes 18

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

5.2) Diskutieren Sie die Änderung des Simulationsergebnisses wenn die Synchronisierungso wie in Abbildung 18 dargestellt realisiert wird (für die Ausarbeitung sind hier keineWaveforms erforderlich).

5.2.1) Ändern Sie die VHDL-Implementierung wie oben dargestellt ab.

5.2.2) Simulieren Sie bis res_sync_reg auf ‘1‘ geht! Setzen Sie dann je einen Breakpointauf die Zeilen der Signalzuweisung von start_sync_1d, clk_n und start_sync_o!

5.2.3) Setzen Sie die Simulation fort und überprüfen Sie, ob die Signale sich wie erwartetändern! Betrachten Sie dafür die Delta-Zyklen im Simulationsfenster und den Wertder entsprechenden Signale!

5.3) Ändern Sie die Assertions der Testbench so, dass Sie nicht dem Verhalten der Hard-ware entsprechen.

5.3.1) Wie reagiert der Simulator darauf?

5.3.2) Inwiefern können Sie das Verhalten des Simulators über die Runtime-Options beein-flussen (siehe Abbildung 19)?

Abbildung 18: Änderungen im VHDL-Code bezüglich Aufgabe 5.2

Page 20: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe19 4. Debugging des VHDL Source Codes

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

Aus diesem Abschnitt sind alle Punkte zu dokumentieren.Abbildung 19: Runtime-Options -> Assertions

Page 21: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Praktikum VHDL

Dekrementer:Timing Simulation

von Prof. Dr.-Ing. Dirk RabeGruppe: Teilnehmer: Vortestat: Testat:

Benutzte Geräte:

Page 22: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe21 .

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

4.5 Timing-Simulation

In diesem Abschnitt soll das Zeitverhalten auf der Hardware überprüft werden. In diesemSchritt können wir zum einen die zu erwartenden Verzögerungszeiten analysieren und zumanderen überprüfen, ob die funktionale Simulation mit dem tatsächlichen Verhalten überein-stimmt (dies wäre z.B. bei Deltazeitproblemen nicht der Fall ...).

Für die Timing-Simulation benötigen Sie zum einen eine Netzliste der synthetisierten Schal-tung und zum anderen das Standard-Delay-File (SDF), in dem die Verzögerungszeiten spezifi-ziert sind.

6) Anleitung zur Durchführung der Timing-Analyse:

6.1) Rausschreiben der Netzliste unter der Quartus II-Oberfläche:

6.1.a) Stellen Sie sicher, dass in Ihrem Projekt der Dekrementer erfolgreich kompiliertwurde!

6.1.b) Öffnen Sie das Projekt-Setup-Fenster (siehe Abbildung 20)!

Abbildung 20: Öffnen des Projekt-Setup-Fensters (über Assignments->EDA Tool Settings)

Page 23: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe. 22

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

6.1.c) Stellen Sie die Projekteinstellungen für die EDA-Werkzeuge zur Simulation entspre-chend der Abbildung 21 ein!

6.1.d) Rausschreiben der Netzliste und des Standard-Delay-Files- siehe Abbildung 22!Standardmäßig wird hier für das FPGA die Slow-Corner (Worst-Case) Timing rausgeschrieben. Über „Processing->Start->Start Classic timing Analyzer (Fast timingModel)“ kann man die Schaltung auch für die Fast-Corner analysieren. Anschlie-ßend muss man noch das SDF-File wie oben dargestellt rausschreiben. Dies muss imRahmen des Praktikums jedoch nicht gemacht werden.

6.1.e) Zusätzlich zur Netzliste benötigen wir noch eine VHDL-Testbench. Hierfür kopierenwir die Testbench in das Unterverzeichnis simulation/modelim. Die erzeugte Netz-liste im vorherigen Schritt verwendet nur std_logic-Signale, so dass die Testbenchentsprechend angepasst werden muss.

Abbildung 21: Einstellung für ein EDA-Simulationswerkzeug

Page 24: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe23 .

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

Abbildung 22: Schreiben der VHDL-Netzliste aus der synthetisierten und verdrahteten Netz-liste

Page 25: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe. 24

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

6.2) Durchführung der Timing-Simulation:

6.2.a) Anlegen eines neuen Projekts in Modelsim unter simulation/modelsim (sieheAbbildung 23):

6.2.b) Compile des Designs und der Testbench: Compile->All

6.2.c) Start Simulation:Simulate->Start Simulation auswählenIm Start Simulation Fenster das SDF Menü wählen: -> Add klicken

6.2.d) Auswahl des SDF und Angabe des Instanznamens für das Design in der Testbench(siehe Abbildung 25)

Abbildung 23: Anlegen eines neuen Modelsim-Projekts für die Timing-Simulation und Ladender VHDL-Netzlisten sowie Testbench

Abbildung 24: Start der Simulation - Schritt 1

Page 26: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe25 .

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

6.2.e) Auswahl der Testbench aus der Library work (siehe Abbildung 25)

6.2.f) Einstellen der Auflösung (resolution): ps (damit wird sichergestellt, dass Verzöge-rungszeiten von unter einer ns auch korrekt modelliert werden)

6.2.g) Nach Wahl des OK Knopfes darauf achten, dass das SDF fehlerfrei eingelesen wird

6.2.h) Durchführung der Simulation analog zur funktionalen Simulation (es geht hier nurdarum, zu erreichen, dass die Assertions in der Testbench keine Fehler melden)

6.3) Auswertung der Timing-Simulation:

6.3.a) Stellen Sie die Toplevel-Entity-Signale im Waveform dar!

6.3.b) Ergänzen Sie die Counter-Werte (im Objects-Fenster den Filter counter im Feld„Contains“ eingeben)

6.3.c) Suchen Sie sich die D-Eingänge der Counter-Flipflops aus den Einzelsignalenzusammen (können über Tools->Combine Signals zu einem Vektor zusammenge-fasst werden)

6.3.d) Wie groß sind die Verzögerungszeiten bis die Register den neuen Counterwert über-nehmen und bis der Addierer den neuen Wert an die D-Eingänge der Flipflops gelegthat (jeweils von der steigenden Clock Flanke betrachtet)?

6.3.e) Enthält der Dekrementer die selben Zählerwerte wie in der funktionalen Simulation?

In der Ausarbeitung sind die Schritte unter 6.3 zu dokumentieren. Hier sollte in jedem Fall einWaveform mit geliefert werden!

Abbildung 25: Auswahl des SDF und Festlegen des Instanz-Pfades auf den sich das SDFbezieht (ausgehend von der Testbench) - anschließend Auswahl Testbench unterStart Simulation->Design und Eingabe der Resolution (ps)

Page 27: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Praktikum VHDL

Dekrementer:STA und timing driven Synthese

von Prof. Dr.-Ing. Dirk RabeGruppe: Teilnehmer: Vortestat: Testat:

Benutzte Geräte:

Page 28: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe27 5. Durchführung statische Timing-Analyse und timing driven Synthese

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

5 Durchführung statische Timing-Analyse und timing driven Synthese

In der statischen Timing-Analyse werden alle Delay-Pfade bezüglich Setup- und Hold-Viola-tions überprüft. Wie dies funktioniert soll in Abschnitt 5.1 erklärt werden. In Abschnitt 5.2werden die für die Timing-Analyse und timing-driven Synthese notwendigen Constraints defi-niert und in einer Timing-Analyse für die initiale Synthese bewertet. Im Abschnitt 5.3 werdendiese Constraints zunächst für eine Timing-Analyse und anschließend für eine timing-drivenResynthese verwendet.

5.1 Prinzip der Überprüfung von Setup- und Hold-Zeiten

Durch die tatsächlichen physikalischen Verdrahtungen und durch Gatterlaufzeiten ergeben sichVerzögerungszeiten auf den Daten- und Clockpfaden (siehe Abbildung 26 und 27). Auf dem inAbbildung 26 dargestellten Schaltungsausschnitt finden sich auf dem Pfad zwischen REG1und REG2 typischerweise weitere kombinatorische Gatter. Es werden 2 Verzögerungszeitenunterschieden:

Abbildung 26: Berechnung der Ankunftszeit eines Signals ausgehend vom zentralen Clock

Page 29: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe5. Durchführung statische Timing-Analyse und timing driven Synthese 28

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

• Datenankunftszeit (Data Arrival Time: typischerweise am D-Eingang von speichernden Gat-tern - siehe Abbildung 26): beginnend beim zentralen Clock über den Clock-Eingang einesvorhergehenden Flipflops (REG1), über dessen Ausgang (Q) bis zum D-Eingang desbetrachteten Gatters (REG2).Sowohl Leitungen als auch Gattern können hier Verzögerungszeiten zugeordnet sein. Außer-dem können unterschiedlich lange Pfade existieren. Bei der Bewertung der Setup-Zeit ist derzeitlich längste Pfad und bei der Bewertung der Hold-Zeit der zeitlich kürzeste Pfad interes-sant.

• Clockankunftszeit (Clock Arrival Time - typischerweise am CLK-Eingang von speicherndenGattern - siehe Abbildung 27): beginnend beim zentralen Clock bis zum Clock-Eingang desbetrachteten Gatters (REG2).

Die Differenz aus der Datenankunftszeit und der Clockankunftszeit muss den Setup- undHoldzeiten des Flipflops genügen:

• Setupzeit = Clock-Periode - (Datenankunftszeit - Clockankunftszeit): Die so ermittelteteSetupzeit muss größer als die minimale Setupzeit des Gatters sein - das Datensignal mussalso rechtzeitig vor der Clockflanke stabil anliegen (maximale Datenankunftszeit von Inter-esse)

• Holdzeit = Datenankunftszeit - Clockankunftszeit: Die so ermittelte Holdzeit muss größer alsdie minimale Holdzeit des Gatters sein - das Datensignal muss also noch ausreichend langenach der Clockflanke stabil anliegen (minimale Datenankunftszeit von Interesse).

Die Differenz aus der tatsächlichen Setupzeit und der maximal erlaubten Setupzeit wird alsSetup-Slack bezeichnet. Anders ausgedrückt ist dies die Differenz aus der maximal zulässigenDatenankunftszeit (Clock-Periode + Clockankunftszeit - Gatter-Setupzeit) und der tatsäch-lichen Datenankunftszeit.Entsprechend ist der Hold-Slack die Differenz aus der tatsächlichen Holdzeit und der maximal

Abbildung 27: Clock-Ankunftszeit ausgehend von einem zentralen Clock

Page 30: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe29 5. Durchführung statische Timing-Analyse und timing driven Synthese

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

erlaubten Holdzeit. Anders ausgedrückt ist dies die Differenz aus der tatsächlichen Datenan-kunftszeit und der minimal zulässigen Datenankunftszeit (Clockankunftszeit + Gatterholdzeit).Setup- und Hold-Slack können also auch folgendermaßen zusammen gefasst werden:

• setup slack = setup required time - data arrival time

• hold slack = data-arrival time - hold required time

Als Problem ist also nur ein negativer Slack zu bewerten.

5.2 Definition von Timing Constraints

Timing Constraints werden typischerweise in sogenannten sdc-Files definiert. sdc steht hierbeifür Standard Delay Constraint File. Dieses sdc-File wurde vom Marktführer Synopsys für des-sen Synthese- und STA†-Werkzeuge eingeführt und hat sich als Quasi-Standard durchgesetzt.Die Erstellung des sdc-Files wird im TimingAnalyzer der Quartus-Software unterstützt undsoll im folgenden schrittweise erklärt werden.

An dieser Stelle ist noch anzumerken, dass wir bereits ohne irgendwelche Definition derTiming-Requirements eine Synthese durchgeführt haben. In den Compile-Warnings wurde unsbereits gemeldet, dass das der Clock-Pin clock_27 nicht als Clock spezifiziert wurde - aberdennoch als solcher interpretiert wird (siehe Abbildung 28). Die bei der Synthese und dem Fit-

† STA - Static Timing Analysis

Abbildung 28: Warning, dass keine clock_27 nicht als Clock definiert wurde - aber als Clock-Pin erkannt wurde

Page 31: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe5. Durchführung statische Timing-Analyse und timing driven Synthese 30

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

ting erzielte maximale Performance können wir bereits jetzt grob betrachten (Voraussetzungdas Classic Timing Model ist unter Assignments->Timing Analysis Settings ausgewählt). Wiein Abbildung 29 dargestellt können wir mit dieser Schaltung eine Clockfrequenz von 372MHzerreichen (Report verfügbar unter Compilation Report->Timing Analyzer).

Nun folgt aber die Anleitung zur Erstellung des sdc-Files:

7) Generieren einer initialen Timing-Netzliste:

7.1) Öffnen des decrementer-Projekts in Quartus II

Abbildung 29: Timings des Design mit dem Classical Model

Abbildung 30: Projekt öffnen

Page 32: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe31 5. Durchführung statische Timing-Analyse und timing driven Synthese

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

7.2) Definition, dass der Timequest Analyzer während der Compilation benutzt werden soll(siehe Abbildung 31 und 32),

Abbildung 31: Öffnen der Timing Analysis Settings

Abbildung 32: Definition, dass der TimeQuest Timing Analyzer verwendet werden soll

Page 33: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe5. Durchführung statische Timing-Analyse und timing driven Synthese 32

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

7.3) Definition der Lastkapazitäten an den externen Ausgangspads ledg0 und ledr0 imAssignment Editor auf beispielsweise 20pF (Assignments->Assignment-Editor - sieheAbbildung 33) (hier gab es bei jeder Compilation eine Warning, dass diese nicht defi-niert waren)

7.4) erneute Compilation

Abbildung 33: Definition von angenommenen externen Lastkapazitäten

Page 34: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe33 5. Durchführung statische Timing-Analyse und timing driven Synthese

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

7.5) Bereits jetzt können wir sehen, dass der Timing-Report anders strukturiert ist. Es wirdeine maximale Frequenz von 366MHz im Slow-Model festgestellt(sieheAbbildung 34). Außerdem weisen einige Punkte Violations auf (rot eingefärbt), weil

z.B. noch nicht einmal die Clock von uns definiert wurde. Da während der Synthesekeine Clock definiert war, wurde eine Default Clock-Periode von 1 ns (1GHz) ange-

Abbildung 34: Timings des Design mit dem Timequest Timing Analyzer

Page 35: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe5. Durchführung statische Timing-Analyse und timing driven Synthese 34

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

setzt (siehe Abbildung 35). Die Timings wurden nicht erreicht. Dies ist z.B. in bei den

Setup-Timings ersichtlich (siehe Abbildung 36). Der Worst-Case Violator hat eine Vio-lation von 1,725ns und die Summe aller negativer Slacks (TNS - Total Negative Slack)beträgt 15.718ns (siehe z.B. Violations in Setup Summary).

Abbildung 35: Compilation-Informationen

Abbildung 36: Setup-Violations

Page 36: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe35 5. Durchführung statische Timing-Analyse und timing driven Synthese

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

7.6) Nach der Compilation kann nun der TimeQuest Timing Analyzer zur Hilfe bei derErstellung des sdc-Files gestartet werden.

7.7) Als erstes soll nun eine Timing-Netzliste generiert werden, die Informationen über alleTiming-Pfade enthält. Zusätzlich werden dort Informationen aus unserem sdc-Fileabgelegt werden. Da wir erst einmal nur an der Festlegung der Timing-Constraintsinteressiert sind und wir dieses sdc-File später auch bei der Compilation verwendenwollen, reicht es aus eine post-map-Netzliste zu erzeugen (also direkt auf Basis der

Abbildung 37: Öffnen des TimeQuest Timing Analyzers

Page 37: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe5. Durchführung statische Timing-Analyse und timing driven Synthese 36

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

Synthese-Ergebnisse ohne Platzierung und Verdrahtung - Fitting). Zunächst wollen wirdie Slow-Corner betrachten (primär für Setup-Zeiten von Interesse). Die Angabe vonZero IC delays bezieht sich darauf, dass die Netze erst mal als ideal angesetzt werden.

7.8) Im Timing-Analyzer Fenster wird nun zunächst einmal die Clock-Waveform definiert.

Hierfür wird eine Periode von 37ns definiert (1/27MHz). Der Clock-Knoten muss überden Nodefinder in das „Targets“-Feld eingetragen werden (siehe Abbildung 40).

7.9) Im nächsten Schritt sollen nun Input- und Output-Delays der Decrementer Ports defni-iert werden.

Abbildung 38: zunächst postmap (nach Synthese) und zero IC delays (keine Verzögerungs-zeiten auf Netzen)

Abbildung 39: Aufruf von Create Clock zur Definition der Clock-Waveform

Page 38: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe37 5. Durchführung statische Timing-Analyse und timing driven Synthese

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

7.9.1) Input-Delays: Die Input-Ports sind in unserem Design komplett asynchron zum27MHz-Clock. Hier wurden deshalb im Design auch Synchronizer vorgesehen.Im allgemeinen werden hier typischerweise die PCB†-spezifischen Timings bezüg-lich der synchronen Clock festgelegt. Hierbei können jeweils getrennte Minimum-

Abbildung 40: Definition einer 27MHz-Clock

† PCB - Printed Circuit Board - also die Leiterkarte

Page 39: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe5. Durchführung statische Timing-Analyse und timing driven Synthese 38

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

und Maximum-Timing-Constraints spezifiziert werden. Die Minimum-Timings wer-den für die Berechnung der Hold-Slacks und die Maximum-Timings für die Berech-nung der Setup-Slacks verwendet. Aber da unsere Eingänge asynchron sindspezifizieren wir hier keine Input Delays.

7.9.2) Output-Delay-Constraints: Mit den Input-Delays werden die Startpunkte für dieTiming-Analyse spezifiziert. Im Gegensatz dazu werden mit den Output-Delay-Constraints die tatsächlichen Endpunkte spezifiziert. Hier geht es also darum, wanndarf das Ausgangssignal sich hier frühestens nach der Clock-Flanke ändern (Hold-zeit) bzw. wie lange muss das Signal vor der Clock-Flanke bereits stabil sein (Setup-Zeit). Diese Output-Delays sollen für die beiden LED-Ausgänge nun spezifiziertwerden:- maximal 5ns nach der Clock-Flanke,- minimal 1ns nach der Clock-Flanke.Diese Werte sind rein fiktiv und hätten natürlich auch relaxter gewählt werden kön-nen. Die Eingabe erfolgt über Constraints->Setup Output Delay (sieheAbbildung 42). Bei der Eingabe können die Knoten mit dem Node-Finder überprüftwerden, müssen aber nicht ausgewählt werden, weil das sdc-Kommando Wildcards

Abbildung 41: Spezifikation von Input-Delays

Page 40: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe39 5. Durchführung statische Timing-Analyse und timing driven Synthese

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

erlaubt.

Das sdc-Kommando finden wir auch in der Konsole wieder. Dort können wir es nundurch die Pfeiltaste-Nach-Oben erneut auswählen und als Vorlage für das Maxi-

Abbildung 42: Spezifikation der Output Delay Constraints

Page 41: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe5. Durchführung statische Timing-Analyse und timing driven Synthese 40

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

mum-Constraint verwenden (siehe Abbildung 43).

Abbildung 43: Eingabe eines Output-Delay-Constraints über die Console

Page 42: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe41 5. Durchführung statische Timing-Analyse und timing driven Synthese

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

7.9.3) Im nächsten Schritt sollen nun die Delay-Pfade, die bei den asynchronen Eingängenstarten als false-Paths deklariert werden (siehe Abbildung 44).

Die false-Path Definition für die Eingänge sw* können wir wieder in der Consolevornehmen.

Abbildung 44: Definition eines False Paths

Page 43: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe5. Durchführung statische Timing-Analyse und timing driven Synthese 42

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

7.9.4) Update der Timing Netzliste mit den neuen Delay Constraints

Abbildung 45: Update Timing Netlist im Tasks-Fenster (Doppelklick)

Page 44: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe43 5. Durchführung statische Timing-Analyse und timing driven Synthese

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

7.9.5) Als Abschluss sollten wir die Constraints nun zunächst einmal abspeichern (über dasTask-Fenster - siehe Abbildung 46)

7.9.6) Nun sollten wir das SDC-File nochmal in einem Texteditor kontrollieren. Bei denOutput-Delay-Definitionen wird oft unbeabsichtigt die Option „-add_delay“ wirdbeim erneuten Einlesen des SDC-Files dazu führen, dass die Output-Delays nichtüberschrieben sondern nur um die entsprechende Zeit erhöht werden.

5.3 Timing-driven Synthese

Nachdem wir nun ein SDC File generiert haben wollen wir hiermit die Synthese erneut starten.Die Constraints sind gegenüber den Default-Constraints (z.B. Clock-Frequenz von 1GHz)relaxed.

Abbildung 46: Schreiben des SDC-Files

#**************************************************************# Set Output Delay#**************************************************************

set_output_delay -add_delay -max -clock [get_clocks {clock_27}] 5.000 [get_ports {ledg0}]set_output_delay -add_delay -min -clock [get_clocks {clock_27}] 1.000 [get_ports {ledg0}]set_output_delay -add_delay -max -clock [get_clocks {clock_27}] 5.000 [get_ports {ledr0}]set_output_delay -add_delay -min -clock [get_clocks {clock_27}] 1.000 [get_ports {ledr0}]

Abbildung 47: Output-Delay-Definiton im SDC-File: Option -add_delay entfernen

Page 45: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe5. Durchführung statische Timing-Analyse und timing driven Synthese 44

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

8) Im Quartus-Fenster sollten wir nun zunächst einmal das SDC-File bekannt machen:Assignments-Timing Analysis Settings (siehe Abbildung 48)

8.1) Im nächsten Schritt kann nun die Compilation erneut gestartet werden.

Abbildung 48: Assignments-Timing Analysis Settings (SDC-File bekannt machen)

Page 46: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe45 5. Durchführung statische Timing-Analyse und timing driven Synthese

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

8.2) Überprüfen Sie, dass keine Violations mehr vorliegen (keine rot markierten Reports -siehe Abbildung 49)

8.3) Erhöhen Sie die Clockfrequenz über die aktuell erzielte Frequenz (hier z.B. 100MHz)im SDC File und synthetisieren Sie erneut. Beim Bearbeiten der Clock-Definition imSDC-File (Texteditor) müssen Sie darauf achten, dass Sie nicht nur die Clock-Periodeanpassen sondern auch die „waveform“-Definition.Wird die Zielfrequenz erreicht? (in diesem Beispiel nicht - siehe Abbildung 50)

8.4) Hier haben Sie nun 2 Möglichkeiten darauf zu reagieren:1. Erhöhung der Synthese-Anstrengungen2. Analyse des kritischten Pfades und ggf. Behebung der Probleme in den Constraintsoder im Design

Abbildung 49: TimeQuest Timing Analyzer Ergebnisse

Abbildung 50: Zielfrequenz wird nicht erreicht

Page 47: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe5. Durchführung statische Timing-Analyse und timing driven Synthese 46

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

8.4.1) Die Synthese-Anstrengungen können Sie über Assignments->Settings->Fitter Set-tings einstellen (siehe Abbildung 51). Leider führt diese Methode nicht immer zumZiel.

8.4.2) Nähere Informationen über die Violations erhält man in der Timing-Analyse.

5.4 Timing-Analyse

9) Durchführen der Timing-Analyse:

9.1) Öffnen Sie zunächst wieder den TimeQuest Timing Analyzer.

Abbildung 51: Fitter Effort einstellen

Page 48: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe47 5. Durchführung statische Timing-Analyse und timing driven Synthese

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

9.2) Zunächst werden alle Timing-Reports generiert (siehe Abbildung 52).

9.3) Überprüfen, dass für alle Pfade Constraints definiert wurden:Tasks-Fenster->Reports->Individual Reports->Report Unconstrained Paths

9.4) Überprüfen der Setup- und Hold-Slacks im Reports-Fenster (siehe Abbildung 53)

Abbildung 52: Report All Summaries: Über Tasks-Fenster

Page 49: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe5. Durchführung statische Timing-Analyse und timing driven Synthese 48

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

9.5) Anzeigen eines Setup-Slack-Histogramms (siehe Abbildung 54)

9.6) Betrachten Individueller Timing-Pfade (siehe Abbildung 55 - durch Angabe desDetail-Levels „Full Path“ erhält man den kompletten Timing-Pfad)

9.7) Welches sind hier die für die maximale Gesamtfrequenz verantwortlichen Pfade?Wie groß ist die Clock Arrival Time?Wie groß ist die Data Arrival Time?

Abbildung 53: Summary (Setup und Hold anschauen)

Abbildung 54: Erstellen eines Setup-Slack Histogram

Page 50: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe49 5. Durchführung statische Timing-Analyse und timing driven Synthese

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

Abbildung 55: Individuelle Timing-Pfade darstellen

Page 51: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe5. Durchführung statische Timing-Analyse und timing driven Synthese 50

Design sequentieller Schaltungen mit VHDL, Simulation und Synthese V 3.1 / 2008-11-26

9.8) Hinweis: Sie können den Pfad im Netlist-Fenster betrachten (siehe Abbildung 56).

9.9) Wenn ein Timing-Constraint für die Violation erforderlich ist, reduzieren Sie das ent-sprechende Timing, so dass die kritischten Pfade unkritisch werden! Überprüfen Siedas Slack-Histogramm!

9.10) Wie hoch ist die nun zu erwartende maximale Frequenz fmax? Überprüfen Sie dieseFrequenz mit Report Fmax Summary!

9.11) Wiederholen Sie mit die Synthese mit den nun modifzierten SDC-File und überprüfenSie, dass keine Violations mehr auftreten (Hinweis: die Violations können direkt imQuartus-Fenster überprüft werden - nur für das Debugging benötigen Sie den Time-Quest-Analyzer)!

5.5 Hinweise und besondere Aufgaben für die Ausarbeitung

10) Aufgaben für die Ausarbeitung zur statischen Timing-Analyse (STA) und Timing drivenReCompilation:

10.1) Versuchen Sie in Ihren eigenen Worten die Schritte der statischen Timing-Analyse undder Timing Driven Synthese zusammen zu fassen!

Abbildung 56: Technology Map Viewer

Abbildung 57: Report Fmax Summary (auch im Task-Fenster verfügbar)

Page 52: Dekrementer: VHDL Beschreibung sequentieller …rabe/Downloads/vhdl/praktikum/fpga_decre… · Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe 2. Die in VHDL zu beschreibende

Versuchsanleitung Praktikum VHDL - Prof. Dr.-Ing. Dirk Rabe51 5. Durchführung statische Timing-Analyse und timing driven Synthese

V 3.1 / 2008-11-26 Design sequentieller Schaltungen mit VHDL, Simulation und Synthese

10.2) Input- und Output-Delays:Was versteht man jeweils unter den Minimum- und Maximum-Delays und wofür sinddiese wichtig (4 Antworten! - Start- und Endpunkte bei der STA?)?

10.3) Nur welche Delay-Pfade sollte man als False-Path definieren und warum?

10.4) Ergebnisse mit Violations: Punkt 9.5) Anzeigen eines Setup-Slack-Histogramms (sieheAbbildung 54)

10.5) Punkt 9.7) Welches sind hier die für die maximale Gesamtfrequenz verantwortlichenPfade? Wie groß ist die Clock Arrival Time? Wie groß ist die Data Arrival Time?

10.6) Punkt 9.8) Hinweis: Sie können den Pfad im Netlist-Fenster betrachten (sieheAbbildung 56).

10.7) Punkt 9.9) Wenn ein Timing-Constraint für die Violation erforderlich ist, reduzierenSie das entsprechende Timing, so dass die kritischten Pfade unkritisch werden! Über-prüfen Sie das Slack-Histogramm!

10.8) Kommentieren Sie Ihr SDC-File!