Problem mit vital.timing und vital.primitives

OP #7957429
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

Angehängte Dateien:
(Firma: Starfleet) #7957499
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.ä.

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

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

: Bearbeitet durch User
OP #7957506
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

(Firma: Starfleet) #7958099
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
#7959468
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.

Persönliche Seite #7959699
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 :-)

(Firma: Starfleet) #7961190
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).

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren