Forum: FPGA, VHDL & Co. Problem mit vital.timing und vital.primitives


von Jens W. (jensw)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich beschäftige mich gerade mit einem einfachen SDRAM Controller.
Als Modell des Speichers für die Testbench verwende ich das angehängte 
Modell.
Die verwendeten Bibliotheken sind:
1
LIBRARY IEEE;   USE IEEE.std_logic_1164.ALL;
2
                USE IEEE.vital_timing.ALL;
3
                USE IEEE.vital_primitives.ALL;
4
                USE STD.textio.ALL;
5
6
LIBRARY FMF;    USE FMF.gen_utils.ALL;
7
                USE FMF.conversions.ALL;

vital.timing und vital.primitives sind nicht standardmäßig in IEEE 
enthalten.
Wie bekomme ich das denn ans Laufen?
Ich verwende ISE14.7 und den eingebauten Simulator.
Hat jemand eine Idee?
Danke euch!

Viele Grüße, Jens

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

eine Simulation mit vital-modellen bezeichnet man auch als 
timing-Simulation, als man simuliert den VHDL-Code nach Synthese 
und/uder Implementierung. Das macht man wegen der hohen Laufzeit eher 
selten. Also vielleicht willst du keine Vital-Simulation sondern 
"beschränkst" Dich auf eine funktionale.

Soweit ich mich erinnere, muss man beim Simulatoraufruf spezielle 
Optionen für Vital verwenden. Natürlich muss der zu simulierende Code 
mit dem Vital-infos "backanotiert" sein, also muss da oft die netzliste 
mit einem speziellen tool konvertiert werden. Und da das timing 
architekturabhängig ist, als je nach verwendeten FPGA-Typ anders 
ausfällt kann es nicht bestandteil einer architekturunabhängigen Library 
wie der 1164 sein.
Vielleicht findet sich da was in simprim, unisim o.ä.

* https://www.rose-hulman.edu/class/cs/csse232/xilinx/plugin_ism.pdf
* 
https://adaptivesupport.amd.com/s/question/0D52E00006iHqcbSAC/giving-message-library-unit-vitaltiming-is-not-available-in-library-ieee?language=en_US

BTW, wenn ich mich recht erinnere hat der Spartan-6 einen 
Hardcore-Memorycontroller, da kann man ihn nur wenig am timing 
optimieren.

* 
https://numato.com/blog/spartan6-and-ddr-sdram-memory-your-first-ddr-interfacing-project/

PS: eventuell musst du weitere Bibliotheken in deine Simulation 
einbinden
bspw. library FMF. https://freemodelfoundry.com/fmf_VHDL_models.php

: Bearbeitet durch User
von Jens W. (jensw)


Lesenswert?

Hallo,

vielen Dank für die Infos.
Das Modell ist von https://freemodelfoundry.com/fmf_VHDL_models.php.
Da gibt es auch keine anderen. Die verwenden alle diese Bibliotheken.
Das sind die originalen Modelle von Micron.

Hat jemand vielleicht ein einfacheres Modell, das ich nutzen kann?
In einen anderen Simulator wollte ich nicht einsteigen. Ich wollte "nur" 
den Speicher ans Laufen bekommen. ;-)

Viele Grüße

von Rick D. (rickdangerus)


Angehängte Dateien:

Lesenswert?

Jens W. schrieb:
> Wie bekomme ich das denn ans Laufen?
Es muß da auch SDRAM-Modelle ohne 'vital' geben.

Das angehängte Modell habe ich aus einer älteren GRLIB:
https://www.gaisler.com/grlib-ip-library

von Jens W. (jensw)


Lesenswert?

Hi Rick,

vielen Dank für das Modell, das werde ich mal testen.
Das sieht gut aus.

Viele Grüße, Jens

von Martin S. (strubi)


Lesenswert?

Mit dem isim/xsim kannst du das knicken. GHDL kommt da besser weg, 
allerdings gibt es auch da Modelle, die Probleme machen.
Die SDRAM und meisten DDR-RAM-Modelle muessten eigentlich damit tun, 
aber kann die alten Simulationen gerade nicht ausgraben.

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

> vital.timing und vital.primitives sind nicht standardmäßig in IEEE
> enthalten.

Dann compiliert man diese modelle eben in die IEEE library oder ändert 
die "use" Anweisung so, das sie auf die library zeigt in die die 
vital-packages kompiliert wurden, bspw. "use work.vital_timing.ALL "

Dem TO sei angeraten, sich mal mit dem library-Konzept von VHDL und dem 
benutzten Simulator auseianderzustzen. Bspw. 
https://www-wjp.cs.uni-saarland.de/lehre/hadeprak/block_ws14/Upload/ISim%20User%20Guide.pdf 
S.139
oder bzgl Vlib, vmap, vcom von modelsim: 
https://www-wjp.cs.uni-saarland.de/lehre/hadeprak/block_ws14/Upload/ISim%20User%20Guide.pdf


Manchnal gibt es manche Bibliotheken nur vor-kompiliert oder 
verschlüsselt. Dann muss man sich das Ganze runterladen oder kann die 
Original-Modelle der Hersteller garnicht nutzen. Dann schreibt man sich 
halt sein eigenes Modell oder adaptiert ein vorhandenes mit den Werten 
das den Datenblatt. So ein Speicher-Modell ist doch keine Hexerei, die 
im thread gezeigten sind auch gut struktiert so das man die timings an 
einer Stelle findet und anpassen kann.

Was die timings bedeuten, bspw. Zeit für RAS (RowAddressSelect) und CAS 
(ColumnAddressSelect) steht auch im Datenblatt. Oder wurde in der 
Ausbildung/Studium erwähnt.

Und IMHO sollte man schon wissen, wie der Speicher funktioniert, wenn 
man eine Ansteuerung für diesen bauen will. Ausser man vervendet einen 
fertigen memorycontroller, (dem man aber auch die Paramter für den 
konkreten Speicher wie Größe, Organistation, Speed, ... mitgeben muß).

Problematisch ist nach meiner Erfahrung lediglich die 
Simulationsgeschwindigkeit insbesonders wenn man besonders viel Speicher 
simulieren will. Wobei es völlig ausreicht kleinen Speicher und Eckwerte 
(Corner Stones)  anzutesten. Für "the real thing" testet man ohnehin am 
target resp. Eval-board als DUT im real life.

: Bearbeitet durch User
von Rick D. (rickdangerus)


Lesenswert?

Bradward B. schrieb:
> Dann compiliert man diese modelle eben in die IEEE library oder ändert
> die "use" Anweisung so,
Prinzipiell gebe ich Dir recht, aber ich vermute im Falle ISIM mit 
vital-Bibliotheken wird man nicht glücklich werden.

von M. N. (bmbl2)


Lesenswert?

Rick D. schrieb:
>> Dann compiliert man diese modelle eben in die IEEE library oder ändert
>> die "use" Anweisung so,
> Prinzipiell gebe ich Dir recht, aber ich vermute im Falle ISIM mit
> vital-Bibliotheken wird man nicht glücklich werden.

Kann ich so bestätigen. Generell sind die VITAL Sachen schon cool. Aber 
auch bei uns in der Halbleiterindustrie ist das alles komplett nutzlos. 
Die ganzen Tools fressen das Zeug nicht richtig bis gar nicht. Wenn 
Timing, dann gehen in der Regel nur SDF annotierte Verilognetzlisten.

Ich würde auch auf ein "funktional" modelliertes VHDL-Modul setzen.

von J. S. (engineer) Benutzerseite


Lesenswert?

Bradward B. schrieb:
> eine Simulation mit vital-modellen bezeichnet man auch als
> timing-Simulation, als man simuliert den VHDL-Code nach Synthese
> und/uder Implementierung. Das macht man wegen der hohen Laufzeit eher
> selten.

Naja, ausgangs vom DDR-Controller zum RAM ist das durchaus sinnvoll, 
braucht halt auch noch die wire Modelle für die Leitungen.

Wenn man nur funktioniell simuliert unterstellt man ja das 90% dessen, 
was am DDR-Design in die Hose gehen kann, geht :-)

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

>> eine Simulation mit vital-modellen bezeichnet man auch als
>> timing-Simulation, als man simuliert den VHDL-Code nach Synthese
>> und/uder Implementierung. Das macht man wegen der hohen Laufzeit eher
>> selten.
>
> Naja, ausgangs vom DDR-Controller zum RAM ist das durchaus sinnvoll,
> braucht halt auch noch die wire Modelle für die Leitungen.

Die Leitungen zwischen FPGA und DDR[2|3|4] mit ihren speziellen 
Problemen und die Techniken diese zu mindern wie DCI und homogen es 
Dielektrikum des PCB's modelliert man eher nicht in VHDL. Mit VHDL ist 
bei Skew-Problemen IMHO Schluss.

PCB-Probleme muss man halt am Prototypen ausmessen (Eye-Diagramm, BER 
bestimmen bei verschiedenen Parametersetzen).

von Martin S. (strubi)


Lesenswert?

Bradward B. schrieb:
> Die Leitungen zwischen FPGA und DDR[2|3|4] mit ihren speziellen
> Problemen und die Techniken diese zu mindern wie DCI und homogen es
> Dielektrikum des PCB's modelliert man eher nicht in VHDL. Mit VHDL ist
> bei Skew-Problemen IMHO Schluss.

Wieso soll da Schluss sein?
Das Modellieren ist halt muehsam, man sollte tunlichst die HDL 
generieren.
Fuer Lane-Skew-Simulation bei HDMI hat es bei mir gute Dienste getan. 
Aber auch hier wieder: Haende weg von isim.

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.