Hilfe! MODELSIM: error: Library not found

OP #1984202
Lesenswert?

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
library IEEE;
2
use IEEE.std_logic_1164.all;
3
-- synopsys translate_off
4
library xp;
5
use xp.components.all;
6
-- synopsys translate_on
7

8
entity MEMORY is
9
    port (
10
        WrAddress: in  std_logic_vector(8 downto 0); 
11
        RdAddress: in  std_logic_vector(8 downto 0); 
12
        Data: in  std_logic_vector(7 downto 0); 
13
        WE: in  std_logic; 
14
        RdClock: in  std_logic; 
15
        RdClockEn: in  std_logic; 
16
        Reset: in  std_logic; 
17
        WrClock: in  std_logic; 
18
        WrClockEn: in  std_logic; 
19
        Q: out  std_logic_vector(7 downto 0));
20
end MEMORY;

oder hier bei dem PLL

1
library IEEE;
2
use IEEE.std_logic_1164.all;
3
-- synopsys translate_off
4
library xp;
5
use xp.components.all;
6
-- synopsys translate_on
7

8
entity PLL is
9
    port (
10
        CLK: in std_logic; 
11
        RESET: in std_logic; 
12
        CLKOP: out std_logic; 
13
        LOCK: out std_logic);
14
 attribute dont_touch : boolean;
15
 attribute dont_touch of PLL : entity is true;
16
end PLL;

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
Angehängte Dateien:
OP #1984899
Lesenswert?

>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
Gast #1984938
Lesenswert?

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?
Gast #1984939
Lesenswert?

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:
1
--
2
-- vcom testbench.vhd
3
-- vsim testbench
4
-- add wave *
5
-- run 50 ns
6
------------------------------------------------------------
7

8
library ieee;
9
use ieee.std_logic_1164.all;
10

11
entity testbench is
12
end entity testbench;
13
...

Bei Dir müßte es ungefähr so heißen:
1
vlib xp
2
vcom -work xp .../lattice/.../src/.../*.vhd

Duke
OP #1985054
Lesenswert?

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
vlib xp
2
vcom -work xp .../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.. :(
Gast #1985205
Lesenswert?

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...
OP #1985369
Lesenswert?

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?
Angehängte Dateien:
OP #1985417
Lesenswert?

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.
OP #1985430
Lesenswert?

Ach ja, hier nochmal der Anfangs-Code aus "MEMORY.vhd"
1
(07) library IEEE;
2
(08) use IEEE.std_logic_1164.all;
3
(09) -- synopsys translate_off
4
(10) library xp;
5
(11) use xp.components.all;
6
(12) -- synopsys translate_on
7
(13)
8
(14) entity MEMORY is
9
(15)    port (
10
(16)        WrAddress: in  std_logic_vector(8 downto 0); 
11
(17)        RdAddress: in  std_logic_vector(8 downto 0); 
12
(18)        Data: in  std_logic_vector(7 downto 0); 
13
(19)        WE: in  std_logic; 
14
(20)        RdClock: in  std_logic; 
15
(21)        RdClockEn: in  std_logic; 
16
(22)        Reset: in  std_logic; 
17
(23)        WrClock: in  std_logic; 
18
(24)        WrClockEn: in  std_logic; 
19
(25)        Q: out  std_logic_vector(7 downto 0));
20
(26) end MEMORY;

Frag mich auch wo ModelSim die Library erwartet?
Gast #1985465
Lesenswert?

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
Gast #1985508
Lesenswert?

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...
Gast #1985514
Lesenswert?

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'...
Gast #1985521
Lesenswert?

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 
:-)
OP #1985572
Lesenswert?

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
OP #1985588
Lesenswert?

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
Angehängte Dateien:
OP #1985601
Lesenswert?

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"
1
  P108 : PROCESS(clkb_ipd)
2
  BEGIN
3
     IF (clkb_ipd'event and clkb_ipd = '1' and clkb_ipd'last_value = '0') THEN
4
        IF ((g_reset = '0') or (rstb_ipd = '1')) THEN
5
           clkb_valid <= '0';
6
        ELSE
7
           IF (ceb_ipd = '1') THEN
8
              IF (csb_en = '1') THEN 
9
                 clkb_valid <= '1', '0' after 0.2 ns; -- <= line 2394
10
              ELSE
11
                 clkb_valid <= '0';
12
              END IF;
13
           ELSE
14
              clkb_valid <= '0';
15
           END IF;
16
        END IF;
17
     END IF;
18
  END PROCESS;

Was kann denn das nun wieder sein?
OP #1985606
Lesenswert?

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.
Gast #1985607
Lesenswert?

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.
OP #1985630
Lesenswert?

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


????
OP #1986076
Lesenswert?

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
1
clkb_valid <= '1', '0' after 0.2 ns; -- <= line 2394
liegt.
OP #1986851
Lesenswert?

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

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