Hallo Leute
Ich bin schon fast am verzweifeln. Modelsim kann zur Simulation
irgendwelche Librarys nicht finden. Und zwar ist das bei mir die
XP.library! Diese wird immer eingebunden, wenn mit dem IP-Generator ein
Modul geschaffen wird, wie hier ein Dual-Port-Block-RAM
1
libraryIEEE;
2
useIEEE.std_logic_1164.all;
3
-- synopsys translate_off
4
libraryxp;
5
usexp.components.all;
6
-- synopsys translate_on
7
8
entityMEMORYis
9
port(
10
WrAddress:instd_logic_vector(8downto0);
11
RdAddress:instd_logic_vector(8downto0);
12
Data:instd_logic_vector(7downto0);
13
WE:instd_logic;
14
RdClock:instd_logic;
15
RdClockEn:instd_logic;
16
Reset:instd_logic;
17
WrClock:instd_logic;
18
WrClockEn:instd_logic;
19
Q:outstd_logic_vector(7downto0));
20
endMEMORY;
oder hier bei dem PLL
1
libraryIEEE;
2
useIEEE.std_logic_1164.all;
3
-- synopsys translate_off
4
libraryxp;
5
usexp.components.all;
6
-- synopsys translate_on
7
8
entityPLLis
9
port(
10
CLK:instd_logic;
11
RESET:instd_logic;
12
CLKOP:outstd_logic;
13
LOCK:outstd_logic);
14
attributedont_touch:boolean;
15
attributedont_touchofPLL:entityistrue;
16
endPLL;
Ich versuch jetzt schon seit Tagen irgendetwas verständliches für mich
zu finden, wie ich diese Library einbinden kann und vor allem wo ich die
finde?
Bisher war ich leider ERFOLGLOS!!!
Die Synthese funktioniert doch prima. Warum wird einem da die Simulation
so schwer gemacht?.
Ich verwende einen Lattice XP-FPGA.
Programmier-Oberfläche ist ispLEVER Starter
mit ModelSim PE Student
WER KANN MIR DA WETERHELFEN?
Grüße Steffen
>du musst die libraries von Lattice selbst in modelsim compilieren.
Was heißt denn in ModelSim selbst compilieren? Kann man denn in ModelSim
compilieren? Jetzt steh ich total auf dem Schlauch..
Ich dachte man muss da nur eine Library Namens XP. component
einbinden?!
>schaue dazu mal in den installordner von lattice, sollte ein vhdl/src>ordner sein
Ich habe im Lattice Install-Ordner einen der "cad_lib" oder "vlib" heißt
der den Unterordner XP enthält und darin befindet sich auch ein
Unterordner "src". Allerdings gibt es da keine component.vhd!
Ich kann ja heut abend mal die verschiedenen Ordnerstrukturen als Bild
hier anhängen.
Hat vielleicht noch irgend jemand eine Idee ??
Grüße
Steffen
Unter Lattice Diamond zumindest gibt es unter diesem vhdl->source Ordner
etwas fuer ModelSim (mtech?). Darin liegen Batchdateien, mit denen
ModelSim die Lattice Bibliotheken compiliert.
Das sollte es bei deinem ISPLever ja auch so (oder so aehnlich) geben.
Ansonsten hast du ja auf dein ModelSim PE bestimmt auch Support, oder?
Steffen H. schrieb:> Was heißt denn in ModelSim selbst compilieren? Kann man denn in ModelSim> compilieren?
Ja logisch. Wenn man auf das GUI-Geraffel verzichten würde, könnte man
die Zusammenhänge auch besser sehen:
WOW, Danke für eure schnellen Antworten.
@berndel
>Unter Lattice Diamond zumindest gibt es unter diesem vhdl->source Ordner>etwas fuer ModelSim (mtech?). Darin liegen Batchdateien, mit denen>ModelSim die Lattice Bibliotheken compiliert.
Welche Endungen sollten diese Datein denn haben? Ich weiß gar nicht mehr
so recht wonach ich suchen sollte..
@Duke
Ich bin leider kein IT-ler. Deswegen versteh ich auch nichts von batchs
und GUI-Geraffel :)
>Bei Dir müßte es ungefähr so heißen:
1
vlibxp
2
vcom-workxp.../lattice/.../src/.../*.vhd
Soll ich in etwa sowas mit in die Testbench schreiben oder soll das so
ungefähr das sein, was dann bei ModelSim im Message-Window zu sehen sein
sollte?
Irgendwie komm ich mir gerade voll doof vor.. :(
Diese Dateien heissen <irgendwas>.bat (sog. Batch Dateien). Kannst du
dir ja mal mit z.B. Notepad anschauen. Und dort drin stehen dann die
Kommandos 'vlib ...' und 'vcom ...' die Duke erwaehnt hat.
Du kannst diese Teile von Modelsim von einer Command Line ('cmd')
starten, genauso wie du Modelsim an sich auch so starten kannst. Da die
meiste EDA-SW ja urspruenglich aus der Unix Welt stammt, muss man nicht
immer nur auf ein Icon klicken...
Okay, danke Jungs
Werd ich gleich mal versuchen. Meld mich sobald es neue Erkenntnisse
gibt. Habe, glaub ich, gerade ein kleines Licht am Ende des Tunnels
gesehen.
Schau´n wir mal
So, hab jetzt mal ein Screenshot von der Ordnerstruktur des ispLEVER
Starter mit angehangen. Eine ".bat"-Datei hab ich gar nicht gefunden.
Aber in der Synthesis eine "xp.vhd"
Da sind alle BlackBoxes gelistet.
Ist das eventuell meine Lib?
Ich errinnere nochmal: #ERROR .... Library XP not found
Wer kann helfen?
Es will einfach nicht gehen!
# -- Loading package standard
# -- Loading package std_logic_1164
# ** Error: I:/FPGA/Versuche/Test_MEM/MEM_V1/MEMORY.vhd(10): Library xp
not found.
# ** Error: I:/FPGA/Versuche/Test_MEM/MEM_V1/MEMORY.vhd(11): (vcom-1136)
Unknown identifier "xp".
# ** Error: I:/FPGA/Versuche/Test_MEM/MEM_V1/MEMORY.vhd(14): VHDL
Compiler exiting
vcom -reportprogress 300 -work work
I:/FPGA/Versuche/Test_MEM/MEM_V1/MEMORY.vhd
# Model Technology ModelSim PE Student Edition vcom 6.6d Compiler
2010.11 Nov 2 2010
Also ModelSim versucht beim compilien von MEMORY.vhd die Library xp zu
finden.. "xp.vhd" war es nicht!
Wie sieht denn so eine Lib aus? Welche Endung??? xp.lib hab ich schon
gefunden. Die scheint es aber nicht zu sein.
du willst simulieren und suchst im Directory 'synthesis'? Nee, geh mal
eins drueber in 'simulation', da muss es was ala Modelsim, Modeltech,
mtech oder so geben. Und da liegen die Batchdateien drin (.bat, oder
heissen die bei Wintendo mittlerweile .cmd?)
Mal ganz grundlegend zum Verstaendnis: Ein Simulator (z.B. Modelsim)
versteht VHDL. Wenn du jetzt aber IC- oder FPGA-Hersteller bist, dann
hast du auf dem Chip Bloecke, die halt etwas komplizierter als 'a AND b'
sind. Die sind in Silizium gegossen. Ein Hersteller liefert daher eine
VHDL 'Verhaltensbeschreibung' seiner speziellen Hardware mit. Diese
Beschreibung ist i.A. nicht synthetisierbar, sie modelliert nur das
Verhalten der Komponente. Und das ist genau das, was dein Simulator
braucht. Und damit nicht jedesmal die ganze Library mit deinem Design
kompiliert werden muss, kannst du das in einem Extraschritt mit deinem
Simulator machen und danach nur noch 'einbinden'. Und genau darum geht
es hier.
Du musst also mit dem Simulator deiner Wahl den vom FPGA Hersteller
gelieferten Code compilieren (in eine Library), das kann jeder Simulator
(sonst waere er zu nix zu gebrauchen...).
Wenn das ganze dann spaeter in HW synthetisiert werden soll, dann ist
das was ganz anderes. Dein Synthesetool 'kennt' diese Komponenten schon
und verdrahtet das schon richtig. Aber der Simulator weiss davon nix, du
kannst ja schliesslich nicht verlangen, dass die Jungs und Maedels von
Modelsim 'alle' FPGA Spezialbausteine in ihrer SW abbilden koennen. Dazu
gibt's dann die .vhdl Beschreibungen der Hersteller.
Und ja, manchmal ist es tricky, diese Beschreibungen richtig im
Simulator ans laufen zu bekommen (Stichwort Modelsim und Xilinx: 1ps
Aufloesung im Simulator einstellen sonst tut z.B. die PLL nicht)
Gruss,
- berndl
Danke berndl
Ich glaub jetzt komm ich langsam dahinter wie du das meinst ;)
Muss noch ein wenig probieren, meld mich nochmal. Hat dann die Datei
"xp.lib" auch gar nix damit zu tun?
Gruß
Steffen
Steffen H. schrieb:> Hat dann die Datei> "xp.lib" auch gar nix damit zu tun?
Vermutlich nicht. Du musst mit dem Simulator (bei Modelsim irgendwas mit
'vlib' und 'vcom' wie Duke oben schon beschrieben hat) die Lattice .vhd
Files kompilieren, die landen dann in einem Verzeichnis 'xp'. Dann musst
du dem Simulator beim kompilieren deines Designs noch sagen, dass
irgendwo unter 'xp' noch eine Library liegt (bei Modelsim ist das die
Datei 'modelsim.ini', die wird aus dem Modelsim Verzeichnis immer in
dein aktuelles Verzeichnis kopiert).
Aber da muss es doch bei der Lattice oder Modelsim Hilfe oder bei Tante
google was geben...
Bei Xilinx gibt's ein extra Programm dafuer ('compxlib'?), bei Lattice
Diamond habe ich da ein paar Batchdateien gesehen (aber es selbst noch
nicht gemacht, also wenn du's geschafft hast bitte hier posten).
Was liegt denn in dem 'simulation' Verzeichnis bei dir? Da sollte der
Schluessel zum Erfolg drinne liegen...
achso, wegen dem Verzeichnis 'xp': Du verwendest wohl einen Lattice 'XP'
Baustein? Da wuerde er naemlich dann auch saemtliche 'XP' Primitives
(wie z.B. PLL, Multiplier, RAM, ...) erwarten. Daher auch der Name
'xp'...
Steffen H. schrieb:> Hat dann die Datei> "xp.lib" auch gar nix damit zu tun?
Bei der .lib-Datei kann es sich um eine Datei im sog. Liberty-Format
handeln. Diese Dateien werden von sehr vielen Synthese-Tools verwendet.
Inhalt sind Angaben zur Funktion von (Komplex-)Gattern und Primitiven
und deren Energieverbrauch.
Das sind übrigens einfache ASCII Dateien und können mit jedem Editor
bearbeitet werden.
Wie aber erwähnt: es KANN eine solche Datei sein, MUSS aber nicht
:-)
Mathi schrieb:> Steffen H. schrieb:>> Hat dann die Datei>> "xp.lib" auch gar nix damit zu tun?>> Bei der .lib-Datei kann es sich um eine Datei im sog. Liberty-Format> handeln. Diese Dateien werden von sehr vielen Synthese-Tools verwendet.> Inhalt sind Angaben zur Funktion von (Komplex-)Gattern und Primitiven> und deren Energieverbrauch.> Das sind übrigens einfache ASCII Dateien und können mit jedem Editor> bearbeitet werden.>> Wie aber erwähnt: es KANN eine solche Datei sein, MUSS aber nicht> :-)
Ist es.. Hab ich schon geöfnet gehabt.
Hab es jetzt hinbekommen. Danke nochmal an ALLE
So, hier mal ein kleiner Ausschnitt aus der Lib "xp"
Hab eine "Neue Library" in ModelSim angelegt und physisch zu der unter
ispLEVER Starter => Vlib => xp gemapt.
Dann alle Komponenten unter ispLEVER Starter => Vlib => xp => src mit
ModelSim kompiliert. Und siehe da.. Kein Fehler mehr zur fehlenden
Library.
Jippi..
Also danke nochmal an ALLE.
Super Forum hier!
Best regards
Steffen
Oh nein!!!
Jetzt gibt es sogar einen "Fatal Error"!
# ** Fatal: (vsim-3483) Delay in signal assignment is not ascending.
# Time: 105 ns Iteration: 1 Process:
/tb/u1/memory_0_0_0/dp8ka_inst/p108 File:
I:/Lattice/ispLEVER_Starter/Vlib/xp/src/ORCA_MEM.vhd
# Fatal error in Process p108 at
I:/Lattice/ispLEVER_Starter/Vlib/xp/src/ORCA_MEM.vhd line 2394
#
# HDL call sequence:
# Stopped at I:/Lattice/ispLEVER_Starter/Vlib/xp/src/ORCA_MEM.vhd 2394
Process p108
#
Hier ein Ausschnitt von "ORCA_MEM.vhd"
Hab mal mir mal den Fehler genauer anzeigen lassen. Das geht ja mit
"verror + Fehlernummer"
>verror 3483>#># vsim Message # 3483:># Delays in a signal assignment statement must be specified in># increasing order of time.># [DOC: IEEE Std 1076-1993 VHDL LRM - 8.4.1 Updating a projected output >waveform]>#
Frei übersetzt:
Verzögerungen in einem Signalzuweisungsbefehl müssen in der zunehmenden
Ordnung der Zeit angegeben werden
Was hat dies zu bedeuten? Hoffentlich nur eine Sache der Einstellung von
ModelSim.
Steffen H. schrieb:> clkb_valid <= '1', '0' after 0.2 ns; -- <= line 2394
Mir faellt da nur eines ein: Hast du in der Modelsim.ini (in deinem
Design Verzeichnis) die Simulator Aufloesung auf 'ps' stehen (oder wie
der Modelsim PE Default auf 'ns')?
Guck dir die Datei mal mit nem Editor genau an.
>; Simulator resolution>; Set to fs, ps, ns, us, ms, or sec with optional prefix of 1, 10, or 100.
Resolution = ns
oder
>; Set SystemC default time unit.>; Set to fs, ps, ns, us, ms, or sec with optional>; prefix of 1, 10, or 100. The default is 1 ns.>; The ScTimeUnit value is honored if it is coarser than Resolution.>; If ScTimeUnit is finer than Resolution, it is set to the value>; of Resolution. For example, if Resolution is 100ps and ScTimeUnit is ns,>; then the default time unit will be 1 ns. However if Resolution>; is 10 ns and ScTimeUnit is ns, then the default time unit will be 10 ns.
ScTimeUnit = ns
????
Jepp, hab ich. Der Fatal Error kommt aber leider immer noch. Beim
Starten sieht man auch die einstellung von 1ps time resulution.
Also scheint es übernommen worden zu sein.
Ich dachte auch erst, dass es an den "." von 0.2ns liegt. Scheint aber
doch etwas anderes zu sein :(
ModelSim PE Student Edition Performance
- Capacity: 10,000 lines of executable code
- Performance (up to capacity): 30% of PE
- Performance (exceeding capacity): 1% of PE (i.e., 100 times slower
than PE).
Steffen H. schrieb:> Vielleicht liegt es an der Limitierung von den 10000 Code-Zeilen?
Kann eher nicht sein, der Simulator wird dann nur langsamer, aber er
sollte trotzdem arbeiten.
Steffen H. schrieb:> # ** Fatal: (vsim-3483) Delay in signal assignment is not ascending.> # Time: 105 ns Iteration: 1 Process:
Steht da immer noch 105 ns oder steht jetzt 105000 ps?
Klaus Falser schrieb:> Steffen H. schrieb:>> # ** Fatal: (vsim-3483) Delay in signal assignment is not ascending.>> # Time: 105 ns Iteration: 1 Process:>> Steht da immer noch 105 ns oder steht jetzt 105000 ps?
Da hab ich gar nicht drauf geachtet. Das kann ich aber heut abend sagen.
Hab gestern mal noch den PLL getestet. Die funktioniert so wie sie soll.
Und das alles ganz ohne irgendwelche Fehler.
Ich denk schon, dass es an den
was auch noch interessant waere zu wissen: Welches Directory hast du
denn nun verwendet um die Libs zu kompilieren? Sicher, dass es die
richtigen Files fuer ModelSim sind/waren?
berndl schrieb:> was auch noch interessant waere zu wissen: Welches Directory hast du> denn nun verwendet um die Libs zu kompilieren? Sicher, dass es die> richtigen Files fuer ModelSim sind/waren?
Ich habe die Dateien aus dem Pfad "Vlib/xp/src" genommen.
So, endlich Feierabend..
Hab mal das Transcript angehangen. ModelSim sagt tatsächlich Time: 105
ns!
Mal sehen, ob wir das Problem heute lösen können.. Also ran an den Speck
:)
berndl schrieb:> was auch noch interessant waere zu wissen: Welches Directory hast du> denn nun verwendet um die Libs zu kompilieren? Sicher, dass es die> richtigen Files fuer ModelSim sind/waren?
Du hattest wahrscheinlich Recht. Ich hab die XP Library nochmal neu
angelegt und dieses mal alle Dateien unter
"ispLEVER_Starter\cae_library\simulation\vhdl\xp\src" kompiliert.
Tada! Und siehe da, es geht jetzt endlich :)
Ich Danke euch vielmals für die zahlreiche Hilfe und Tips zu diesem
Problem.
Grüße Steffen