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


von Simon D. (simon86)


Angehängte Dateien:

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??

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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.

von Simon D. (simon86)


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....

von Duke Scarring (Gast)


Angehängte Dateien:

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

von Simon D. (simon86)


Angehängte Dateien:

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?

von Harald F. (hfl)


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.

von Duke Scarring (Gast)


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?

von Simon D. (simon86)


Angehängte Dateien:

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?

von Duke Scarring (Gast)


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

von Simon D. (simon86)


Angehängte Dateien:

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...

von Johann (Gast)


Lesenswert?

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

von Johann (Gast)


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.

von Simon D. (simon86)


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...

von Duke Scarring (Gast)


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

von Christian R. (supachris)


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.

von Simon D. (simon86)


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...

von Duke Scarring (Gast)


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

von Simon D. (simon86)


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...

von Duke Scarring (Gast)


Angehängte Dateien:

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

von Simon D. (simon86)


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???

von Duke Scarring (Gast)


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

von Simon D. (simon86)


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....

von Christian R. (supachris)


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:
1
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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.