Forum: FPGA, VHDL & Co. ModelSim -> Timing Simulation (simprim)


von Mike (Gast)


Lesenswert?

Hallo zusammen

Ich bin ein ModelSim Neuling, stecke momentan gerade fest und die 
anderen Forumbeiträge haben mir nicht weitergeholfen =(

Ich möchte mit dem ModelSim nach der Synthese eine TimingSimulation 
machen. Nun habe ich mit ISE die Libaries compiliert.

compxlib -w -s mti_se -f virtex -l vhdl -o 
/products/modelsim/xilinx_libs/5_1

Danach habe ich wie gewünscht alle Simprim und unisim File im Pfad: 
C:\products\modelsim\xilinx_libs\5_1

Meine Frage ist nun, wie binde ich diese Files in ModelSim ein? Über 
Import->Libary geht es nicht. Muss ich dazu das Modesim.ini file 
abändern?

gruäss,
mike

von Duke Scarring (Gast)


Lesenswert?

Warum wollen eigentlich alle Modelsim-Neulinge eine Timingsimulation 
machen? Steht das im Lahrplan an den Unis? Oder lesen alle Neulinge das 
selbe (schlechte?) Buch/Tutorial?

Ich arbeite nicht erst seit gestern mit Modelsim im FPGA-Bereich und 
habe noch nie eine Timingsimulation gebraucht (im Gegensatz zur 
Simulation von Netzlisten, um Synthesefehler aufzuspüren).

> Ich möchte mit dem ModelSim nach der Synthese eine TimingSimulation
> machen. Nun habe ich mit ISE die Libaries compiliert.
Warum compilierst die Libs mit Xilinx, wenn Du sie im Modelsim verwenden 
willst?

vmap und vcom sind da die Mittel der Wahl.

Duke

von Christian R. (supachris)


Lesenswert?

Eine Timing-Simulation nach der Synthese? Was soll das? Wenn dann eine 
nach Place&Route. Und auch das ist nur in ganz seltenen Fällen bei 
wirklich seltsamen Timing-Geschichten nötig. Die meisten lassen sich 
sich durch Constraints erschlagen. Ich nutze die Timing-Simulation ganz 
selten für die Simulation des Zusammenspiels zweier FPGA...

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


Lesenswert?

> Ich arbeite nicht erst seit gestern mit Modelsim im FPGA-Bereich
> und habe noch nie eine Timingsimulation gebraucht...
ACK.

Mit dem Simulator wird die Verhaltensweise des (synchronen) Designs 
kontrolliert. Ob das Timing passt, wird im Zweifelsfall (wenn 
Timingconstraints nicht erfüllt wurden) mit der Statischen Timinganalyse 
der FPGA-Toolchain geklärt.
Ich garantiere: auch mit einer Timing-Simulation werden keine (oder 
bestenfalls zufällig irgendwelche) Fehler des Designs (z.B. an 
Taktdomänenübergängen) erkannt.

von SuperWilly (Gast)


Lesenswert?

> Ich arbeite nicht erst seit gestern mit Modelsim im FPGA-Bereich
> und habe noch nie eine Timingsimulation gebraucht...
NAK

Manchmal kann es trotzdem hilfreich sein, eine Timing-Simulation 
durchzuführen, wenn man bspw. Pin-To-Pin-Delays oder Pin-To-LUT-To-Pin-
Delays nachvollziehen möchte.

Gruß,
SuperWilly

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


Lesenswert?

> wenn man bspw. Pin-To-Pin-Delays oder Pin-To-LUT-To-Pin-
> Delays nachvollziehen möchte.
Wobei das dann leicht in die Irre führen kann, weil es ja "nur" eine 
Worst-Case-Simulation ist. Einige Fehler kommen erst dann zutage, wenn 
das FPGA zu schnell ist. Das Denken bleibt einem durch die 
Timing-Simulation nicht erspart und diese Worst-Case-Delays sind ja auch 
in der statischen Timinganalyse aufgeführt.

von der checker (Gast)


Lesenswert?

Wenn man etwas mit den "sensitivity list" vergeigt hat, dann sind Timing 
Simulationen auch ganz hilfreich =)

@ Mike: - Auf den Reiter Library klicken
        - Rechtsklick, new Library
        - Name und Pfad eintragen
        -> Dann läuft schon alles

@ Rest: Könnt ihr nicht auf eine Frage antworten?

Gruss, der Checker

von SuperWilly (Gast)


Lesenswert?

>Wobei das dann leicht in die Irre führen kann, weil es ja "nur" eine
>Worst-Case-Simulation ist.

Es gibt drei Attribute, die man der Timing-Simulation mit auf den Weg 
geben kann: min, typ, max

Simuliert man also Min UND Max hat man wahrscheinlich eine gute Aussage 
bezüglich des Timings. Außerdem kann man durch die Timing-Simulation 
überprüfen, ob die statische Timingberechnung richtig ist. Manchmal wird 
das
Timing einfach falsch berechnet, sowohl von Timing-Tools als auch von 
Menschenhand. Kann in den besten Familien vorkommen ;O)

Gruß,
SuperWilly

von Klaus F. (kfalser)


Lesenswert?

> Außerdem kann man durch die Timing-Simulation überprüfen, ob die statische > 
Timingberechnung richtig ist. Manchmal wird das
> Timing einfach falsch berechnet ..

Ich würde behaupten, dass es eher ein Timing Modell falsch ist als dass 
der Timing Analyzer oder die Routing Tools mit falschen Zeiten arbeiten.
Letztere werden nämlich viel häufiger verwendet und es müßte auffallen 
wenn dort ein Fehler ist.

Es gibt möglicherweise wirklich Fälle, wo eine Timing Analyse nützlich 
ist. (ich selbst weiss keinen).
Außerdem :
Was passiert, wenn ein Timing Fehler genau dann auftritt, wenn ein 
Baustein minimale Verzögerung hat, und ein zweiter maximale?

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


Lesenswert?

> Was passiert, wenn ein Timing Fehler genau dann auftritt, wenn ein
> Baustein minimale Verzögerung hat, und ein zweiter maximale?
Da hilft nur:
vorher nachdenken, zwischendurch mitdenken,
zum Schluss alles noch einmal überdenken.   ;-)

von Klaus Falser (Gast)


Lesenswert?

Lothar Miller schrieb:
>> Was passiert, wenn ein Timing Fehler genau dann auftritt, wenn ein
>> Baustein minimale Verzögerung hat, und ein zweiter maximale?
> Da hilft nur:
> vorher nachdenken, zwischendurch mitdenken,
> zum Schluss alles noch einmal überdenken.   ;-)

Ja, aber was ich meinte, ist dass bei der Timing Simulation je nach 
Parameter ALLE Verzögerungen entweder auf den Minimalwert, Maximalwert 
oder auf den typischen Wert gesetzt werden.
Es könnnen möglicherweise aber auch Timingverletzungen nur genau dann 
auftreten, wenn ein Pfad minimale Verzögerung hat und der andere Pfad 
maximale. Meiner Meinung nach ist eben genau deshalb die Timing 
Simulation KEIN Werkzeug, um eventuelle Probleme im Timing aufzuzeigen.
Nur die Timing Analyse betrachtet jeden Pfad im Worst Case und erkennt 
Probleme.

von Daniel (Gast)


Lesenswert?

Hallo,
ich habe ein ähnliches Problem. Ich arbeite mit Altera  Quartus II und 
Modelsim. Habe mir die rtl und gate level Libraries in Altera Quartus II 
erstellt und habe diese auch in Modelsim eingebunden. Jetzt seh ich 
allerdings in der Simulierten Waveform kein Timing. Es wird z.B. bei 
einer Division das Ergebnis genau zur gleichen Zeit angezeigt wie die 
eingangssignale anliegen.
Muss ich um das Timing zu sehen noch eine andere Library in Quartus II 
erstellen?

Danke für eure Antwort

LG Daniel

von Christian R. (supachris)


Lesenswert?

Hast du denn die Delay-Datei auch mit der Simulator übergeben? Dazu muss 
es irgendwo da wo deine vhd Datei für die Post Route Simulation her ist, 
eine .sdf Datei geben. Die kannst du mit -sdfmin (Setup) oder -sdfmax 
(hold) dem vsim mit übergeben. Erst dann weiß der das Timing.

von Daniel (Gast)


Lesenswert?

Danke für den Tipp, leider funktioniert es immer nocht nicht so ganz.
Ich habe eine .sdo Datei, in der die sdf informationen liegen,wenn ich 
diese mit -sdfmin einbinde bekomme ich Fehlermeldungen des Types

# ** Error: (vsim-SDF-3250) ssc_7_1200mv_125c_vhd_slow.sdo(10713): 
Failed to find INSTANCE '\Div0|auto_generated|divider|divider|op_6~32\'.

Allerdings wenn ich ohne den zusatz -sdfmin simuliere, grieg ich im 
simulations-Tab unter meiner UUT genau alle Instances angezeigt, die die 
SDF datei nicht finden kann. Woran kann das liegen?

Danke schonmal für die sehr hilfreiche Antwort.

von Christian R. (supachris)


Lesenswert?

Hm, da musst du einen Altera-Experten fragen. Ich hab nur Erfahrung mit 
Xilinx, da klappt das immer.

von Daniel (Gast)


Lesenswert?

könntest du vielleicht mal ein .do file einstellen, in welcher 
reihenfolge und welche librarys du compilierst und simulierst?

Danke

Daniel

von Christian R. (supachris)


Lesenswert?

Ich muss überhaupt keine Librarys kompilieren, die sind bei ModelSim XE 
schon vorkompiliert dabei.
Lediglich die VHD Datei nach dem Place&Route und dann wie oben 
geschrieben mit sdfmax die Delay-Datei anhängen.
Etwas mehr Syntax hat man, wenn man 2 FPGA-Designs in der 
Timing-Simulation zusammen simulieren will. Aber mit einem einfach nur:

vsim -lib work -sdfmax /uut=Design.sdf -t 1ps Design_TB

von Daniel (Gast)


Lesenswert?

Vielen dank, ich habe den fehler gefunden, ich hatte die sdf datei nicht 
auf das UUT angewand, sondern einfach so ohne den /uut= "parameter"
Und in der Testbench konnte er die Instanzen dann auch nicht finden.

Vielen dank für die Hilfe

von Christian R. (supachris)


Lesenswert?

Achso. Dann ist klar. So lassen sich übrigens bei mehreren Designs, die 
in einer Simulation zusammen gefasst sind, die verschiedenen SDF Dateien 
zuordnen. Da kann man zum Beispiel die Verbindung zwischen 2 FPGAs auch 
im Timing simulieren. Manchmal nützlich.

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.