mikrocontroller.net

Forum: FPGA, VHDL & Co. Grundlagen Post Route Simulation mit ISE Web Pack und ISim


Autor: Simon D. (simon86)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo! Habe schon vieles durchgelesen aber leider nichts gefunden...

Ich habe im Anhang als Beispielprojekt einen 4 Bit Zähler. Das Verhalten 
dieses Zählers, kann ich auch mit eine Verilog Testbench simulieren und 
das Ergebnis in ISim anzeigen lassen -> Test Bench ist auch im Projekt 
enthalten.

Jetzt möchte ich aber gerne ein Post Route Simulation machen... und da 
beginnt das Problem.

Wenn ich die Simulation von Behavioral auf Post-Route umstelle 
erscheinen die Test Benches wie in der Beh. Simulation - die Module die 
getestet werden erscheinen mit einem Fragezeichen (siehe Bild)...

Ich habe auch schon gelesen, dass es bei der PR Simulation nur noch eine 
Datei gibt - ich glaube in meinem Fall die glbl(main_timesim.v) - die 
Simuliert werden kann. Wenn ich diese auswähle kommt auch direkt ein 
Fehler (Static elaboration of top level Verilog design unit(s) in 
library work failed)

FRAGE:

Wer kann mir Schritt für Schritt erklären, wie ich eine PR Simulation 
mit ISim für diesen Zähler machen kann (benutze ISE WebPack 11.4)??

Später würde ich gerne ein größeres Design mit mehreren Einzelmodulen 
simulieren und dann eine PR Simulation für die einzelene Module 
machen... geht das??

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon D. schrieb:
> wie ich eine PR Simulation mit ISim für diesen Zähler machen kann
Wozu brauchst du sowas?
Vor der Implementierung werden die Timingwünsche mit entsprechenden 
Timing Constraints angegeben. Und nach der Implementierung wird das 
Timing (von synchronen Designs) mit der Statischen Timinganalyse 
analysiert.

Autor: Simon D. (simon86)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Wozu brauchst du sowas?

Weil ich in meiner Master Thesis extrem schnelle Netzwerke realisieren 
muss (zwei 250 MSPS ADC einlesen und dazu noch ein Anregungssignal 
erzeugen) und ich wissen muss, warum meine Timing Constraints nicht 
eingehalten werden...

ich bin so langsam am verzweifeln... jeder spricht von PR Simulation 
aber mir scheint es als ob keiner weiß wie man die macht....

Autor: Duke Scarring (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Die fehlenden X_BUF und X_INC etc. findest Du in den Xilinx-Bibliotheken 
(simprim). Ich weiß aber nicht wie man mit Verilog und Bibliotheken 
simuliert.

Deine Netzliste hast Du Dir schon erstellt? (siehe Anhang)

Duke

Autor: Simon D. (simon86)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Duke Scarring schrieb:
> Deine Netzliste hast Du Dir schon erstellt? (siehe Anhang)

ja (siehe Anhang).

Duke Scarring schrieb:
> X_BUF und X_INC

sind das Elemente die in den Schaltplan eingefügt werden und dann später 
die Testbench drauf zugreift?


wie gehts weiter?

Autor: Harald Flügel (hfl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
----(snip)----
ich bin so langsam am verzweifeln... jeder spricht von PR Simulation
aber mir scheint es als ob keiner weiß wie man die macht....
----(snap)----

Mach' ich nahezu täglich, aber halt mit Quartus und ModeSim, kann also 
leider nicht helfen.

----(snip)----
Weil ich in meiner Master Thesis extrem schnelle Netzwerke realisieren
muss (zwei 250 MSPS ADC einlesen und dazu noch ein Anregungssignal
erzeugen) und ich wissen muss, warum meine Timing Constraints nicht
eingehalten werden...
----(snap)----

Wenn DAS allerdings dein Begehr ist, dann möchte ich Zweifel anmelden, 
dass Du das mit einer gate level-Simulation herausfinden wirst. Wenn 
Timing Constraints nicht eingehalten werden, dann solltest Du deinen 
Fokus auf die Timing Analyse richten.

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon D. schrieb:
>> X_BUF und X_INC
>
> sind das Elemente die in den Schaltplan eingefügt werden und dann später
> die Testbench drauf zugreift?
Nein. Dein Schaltplan wurde in "FPGA"-Elemente umgewandelt. Die 
Testbench greift ganz normal nur über die oberste Ebene auf Dein Modul 
zu.

> wie gehts weiter?
Vielleicht die Simulation starten?

Aber prinzipiell muß ich Harald recht geben, die Timing-Simulation wird 
Dir nicht wirklich helfen den Fehler zu beheben.

Duke

P.S.: Hast Du schon den Ordner 
......\Xilinx\12.2\ISE_DS\ISE\verilog\src\simprims gefunden?

Autor: Simon D. (simon86)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Duke Scarring schrieb:
> P.S.: Hast Du schon den Ordner
> ......\Xilinx\12.2\ISE_DS\ISE\verilog\src\simprims gefunden?

ja, unter C:\Xilinx\11.1\ISE\verilog\src\simprims. Da sind z.B. drin 
X_AND2.v, X_BUF.v, ...

Harald Flügel schrieb:
> dann solltest Du deinen
> Fokus auf die Timing Analyse richten.

ja da hast du bzw. ihr schon recht. Ich habe jetzt sehr wahrscheinlich 
die Lösung von TI bekommen, wie ich den ADC Wandler betreiben muss (hat 
250 MSPS und DDR-Daten Interface).

Schaut euch das Schaubild an: Die DDR-LVDS-ADC-Daten und der 
ADC-DDR-Clock werden alle über den Eingangsbuffer geführt (mit 100 Ohm 
terminiert) und dann kommt anscheinend die Lösung, sie werden zuerst auf 
IDELAYs geführt und dann erst auf die IDDRs.

Ich habe den Fehler gemacht und keine IDELAYs eingebaut und dann kommt 
eine Timing Constraint Fehlermeldung wie im Anhang zu sehen ist.

Ich muss also simulieren können, wie schnell die Daten an den IDELAYs 
anstehen und dann diese entsprechend parametrieren... Deshalb würde ich 
u. a. auch gerne eine Post Route Analyse machen...

Duke Scarring schrieb:
>> wie gehts weiter?
> Vielleicht die Simulation starten?

Wenn das ginge würde ich eucht nicht fragen :-)

Also wie lauten die Schritte bis zum Simulationsergebnis?

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon D. schrieb:
>>> wie gehts weiter?
>> Vielleicht die Simulation starten?

Ist denn Dein ISE Projektexplorer immer noch mit den vielen Fragezeichen 
versehen? Falls ja, füge doch mal die ganzen Verilog-Dateien zum Projekt 
hinzu.

Und eine Fehlermeldung oder konkrete Beschreibung, was Du wo 
geklickt/eingegeben/gemacht hast um die Simulation zu starten, wäre - 
zumindest für mich - ganz hilfreich.

Duke

Autor: Simon D. (simon86)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Duke Scarring schrieb:
> füge doch mal die ganzen Verilog-Dateien zum Projekt

Hallo! Also ich habe ein komplettes Projekt erstellt: Den Zähler in 
Verilog beschrieben, daraus ein Schaltplansymbol gemacht und dieses in 
den main Schaltplan eingefügt und auch das Constraint File geschrieben.

Um euch zu zeigen, dass die "Behavioral Simulation" funktioniert, habe 
ich das Projekt auf "Simulation" "Behavioral" umgestellt und eine 
Testbench hinzugefügt. Das Verilog Modul "Counter" wurde auch 
ordnungsgemäß als Unterprogramm der Testbench angeordnet. Dann habe ich 
auf die Testbench geklickt und "ISim Simulator" -> "Simulate Behavioral 
Model" gewählt, dann hat sich ModSim geöffnet und das 
Simulationsergebnis war zu sehen...

Dann habe ich die Simulation auf "Post Route" umgestellt und nun 
erscheinen diese Fragezeichen überall...

Was ist der Fehler???

Wie wäre die normale funktionierende Vorgehensweise???

Ich habe euch das Mini-Projekt mal als Anhang hinzugefügt...

Autor: Johann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich es richtig in Erinnerung habe, dann werden die IDEALY Elemente 
automatisch hinzugefügt, wenn man Timing-Constraints verwendet.

Autor: Johann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst auch IP-Core Logikanalysator implementieren. Ich weiß nicht 
welchen FPGA Du verwendest. Es gibt auf der Xilinx Seite Videos, wie man 
sehr schnell eine Analyse durchführen kann.

Autor: Simon D. (simon86)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johann schrieb:
> dann werden die IDEALY Elemente
> automatisch hinzugefügt, wenn man Timing-Constraints verwendet

ja, das habe ich mir auch schon gedacht - bräuchte aber eine 
100prozentige  Bestätigung, dass das so ist...

Johann schrieb:
> Du kannst auch IP-Core Logikanalysator implementieren. Ich weiß nicht
> welchen FPGA Du verwendest. Es gibt auf der Xilinx Seite Videos, wie man
> sehr schnell eine Analyse durchführen kann.

ich benutze einen Virtex 4 FPGA - die Implementierung eines 
Logikanalysators ist mir zu aufwendig und meines Wissens auch nicht im 
Web Pack enthalten...

Ich möchte "nur" eine ganz normale PR-Simulation machen. Das muss doch 
irgendwie möglich sein...

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon D. schrieb:
> Dann habe ich die Simulation auf "Post Route" umgestellt und nun
> erscheinen diese Fragezeichen überall...
>
> Was ist der Fehler???

Du mußt noch die Dateien aus dem ISE/Verilog-Ordner zum Projekt 
hinzufügen.

Duke

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Frage ist noch, was du hoffst, aus der Timing-Simulation zu 
erkennen. Ich hab sowas auch ab und an mit Modelsim gemacht, aber mehr 
als Timing-Verletzungen an verschiedenen Registern konnte der dann auch 
nicht sagen. Versuche eher das Design so zu machen, dass alle 
Constraints eingehalten werden. Wenn nötig halt mit den IDELAY. Ob die 
automatisch hinzugefügt werden, weiß ich auch immer nicht so. Auf jeden 
Fall kann man die manuell für jeden Input einstellen, hat aber insgesamt 
nur eine begrenzte Anzahl IDELAY Control Elemente. Und die benötigen 
außerdem einen 200MHz Referenz-Takt. Beim Spartan 3e hab ich hier, dass 
ISE je nach Constraints schon mal selber dann ein IOB-Delay in der IOB 
Liste anzeigt (0/3 beispielsweise), beim Virtex 4 hab ich diese 
Automatik noch nicht beobachtet.

Autor: Simon D. (simon86)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Duke Scarring schrieb:
> Du mußt noch die Dateien aus dem ISE/Verilog-Ordner zum Projekt
> hinzufügen.
>
> Duke

könntest du das etwas genauer spezifizieren?? Die Daten sind doch 
vorhanden gewesen, warum sollte ich sie jetzt wieder hinzufügen?? Ich 
glaube mittlerweile, dass man die einzelnen Module gar nicht alleine 
simulieren kann sondern nur das komplette Top Level Modul..??

Christian R. schrieb:
> Die Frage ist noch, was du hoffst, aus der Timing-Simulation zu
> erkennen.

Ich werde neben dem DDR Interface noch andere Signale generieren müssen 
für die ich eine PR-Simulation brauchen werde! Deswegen bitte nicht mehr 
die Frage warum  wieso  weshalb ...

Christian R. schrieb:
> Ich hab sowas auch ab und an mit Modelsim gemacht,

Könntest du es dann bitte mal Schritt für Schritt kurz und bündig 
erklären, ausgehend davon, dass das Projekt schonmal komplett compiliert 
wurde und Behavioral Simulations Testbench besteht und auch 
funktioniert...

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon D. schrieb:
> Die Daten sind doch
> vorhanden gewesen, warum sollte ich sie jetzt wieder hinzufügen?

Nein. XST wandelt Dein Modul um. Du kannst ja gern mal in die erzeugte 
Netzlisten-Datei reingucken. Die Netzliste wiederum bezieht sich auf 
einzelne Primitivs und die hast Du vorher sicher nicht verwendet.

> komplette Top Level Modul
Davon bin ich eigentlich ausgegangen...
Oder hast Du zu jedem Untermodul eine einzelne Testbench?


Duke

Autor: Simon D. (simon86)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Duke Scarring schrieb:
> Nein. XST wandelt Dein Modul um. Du kannst ja gern mal in die erzeugte
> Netzlisten-Datei reingucken. Die Netzliste wiederum bezieht sich auf
> einzelne Primitivs und die hast Du vorher sicher nicht verwendet.

verstehe ich leider nicht... Er hat doch schon alles geroutet - folglich 
müsste auch alles in der Netzliste drin sein.


Duke Scarring schrieb:
> Oder hast Du zu jedem Untermodul eine einzelne Testbench?

Ich habe ja nur ein Untermodul und zwar der Zähler. Für den Zähler habe 
ich auch eine Testbench (für Beh. Sim.)...

Jetzt würde ich gerne mit dieser Testbench eine Post Route Sim. 
machen... oder für das gesamte Design... auf jeden Fall mal einen 
Schritt nach vorne, bis jetzt ging gar nichts...

Könntest du dir das Design mal anschauen (siehe ca. 10 Anwort : 
Counter.zip) und mir sagen wie ich das machen soll...

Danke...

Autor: Duke Scarring (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das Netzlistenmodul hat einen neuen Namen bekommen (main).
Außerdem fehlen dann im Projekt noch die ganzen simprim-Primitives 
(X_*).

Danach startet zumindest ISIM, auch wenn Dein generierter Takt nicht zu 
laufen scheint.

Duke

Autor: Simon D. (simon86)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Duke Scarring schrieb:
> Das Netzlistenmodul hat einen neuen Namen bekommen (main).
> Außerdem fehlen dann im Projekt noch die ganzen simprim-Primitives
> (X_*).

ich sehe, dass bei dir schonmal etwas funktioniert, was bei mir nicht 
klappt...

Wenn du mir jetzt erklären könntest, wie du da hin gekommen bist, wäre 
ich sehr dankbar...

Benötige ich die simprim - Primitives (X_) um zu definieren, welche 
Signale ich simulieren und erfassen möchte???

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon D. schrieb:
> Benötige ich die simprim - Primitives (X_) um zu definieren, welche
> Signale ich simulieren und erfassen möchte???

Irgendwie sagt mir Deine Frage, das da noch ein 
Mißverständnis/Verständnisproblem vorliegt...

Antwort: Nein, nicht dafür.

Solange wie Du nicht dokumentierst, an welcher Stelle es hängt, kann ich 
Dir auch nicht wirklich weiterhelfen.

Duke

Autor: Simon D. (simon86)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ein letzter Versuch bevor das Wochenende naht...

Ich beschreibe mal beispielhaft wie ich ein Behavioral Simulation mache:

1. Im Modus "Implementation" legt man ein neues Verilog Modul an z.B. 
Counter und speichert es ab (es ist nun in der Design Hierarchy zu 
sehen)

2. Man wechselt in den Modus "Simulation" und wählt dort "Behavioral"

3. Man lege ein neues "Verilog Test Fixture" File an, wählt dort das zu 
testende File und schreibt die Testbench und speichert diese ab

4. Im Design Hierarchy ist diese Testbench nun zu sehen - untergeordnet 
muss das zu testende Verilog Modul sein.

5. Man wählt "Simulate Behavioral Model"

6. Modsim startet automatisch und zeigt die Simulationsergebnisse....


In solchen Schritten hätte ich gerne erklärt wie man die Post Route 
Simulation macht - denn wenn ich "Post Route" auswähle erscheinen in 
allen Modulen Fragezeichen und ich habe keine Ahnung weshalb... die 
Antwort, er findet die Verilog Files nicht, reicht mir nicht aus

Also wie wird von Grund auf an eine Post Route Sim. gemacht??

Ist die Ähnlich wie die Beh. Sim (also mit der gleichen Test Bench) oder 
ist der Weg ein ganz anderer??

Ich möchte einfach das Verilog Modul Counter simulieren können....

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon D. schrieb:

> Könntest du es dann bitte mal Schritt für Schritt kurz und bündig
> erklären, ausgehend davon, dass das Projekt schonmal komplett compiliert
> wurde und Behavioral Simulations Testbench besteht und auch
> funktioniert...

ISE legt bei "Generate Post Place & Route Simulation Model" (Bei 
Implement) einen Ordner im Projektverzeichnis an: netgen/par darin ist 
eine _timesim.vhd und eine _timesim.sdf. Die VHD ist die Netzliste und 
die SDF ist das Delay-File. Beide brauchst du für die Simulation. Die 
Testbench kannst du von der Behavioral Simulation nehmen. In Modelsim 
dann ein Projekt erstellen, dass die _timesim.vhd und deine Testbench 
enthält.
Die Simulation startet man dann mit:
vsim -lib work -sdfmax /Instance_Name=/xxx/netgen/par/xxx_timesim.sdf -t 1ps xxx_TB_vhd

Wobei Instance_Name der Name der Instanz deines UUT in der Testbench 
ist. Man kann ja auch mehrere Designs gleichzeitig in der 
Timing-Simulation betrachten, dann muss man für jede Instanz das SDF 
File angeben. Mit dem -sdfmax erhältst du eine Timing-Simulation, die 
die Setup-Zeiten akkurat simuliert, mit -sdfmin die Hold-Zeiten. Bei 
Verlig müsste es genauso sein, von der Endung der Dateien abgesehn.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.