Forum: FPGA, VHDL & Co. Quartus II => Modelsim - Library Problem


von Andi (loopy83)


Lesenswert?

Hallo zusammen,
 
ich bin gerade dabei, ein Quartus II Projekt nach Modelsim zu 
überführen, um es dort entsprechend simulieren zu können.
Dabei habe ich Probleme mit einem PLL IP und den Libraries.
 
Ich habe schon folgendes versucht:
1. Ich habe die Quellen solo im Modelsim kompiliert und habe die 
Libraries verlinkt.
1
vlib work
2
vmap /pfad/stratixii
3
vmap /pfad/altera_mf
4
vcom pll.vhd
5
vcom restliche_quellen.vhd
6
vcom testbench.vhd
7

Die Libraries habe ich mit Hilfe des Simulation Library Compilers im 
Quartus erzeugt. Nun erkennt er zwar die PLL.vhd und simuliert auch 
deren Inhalt, aber die dort aufgerufenen Komponenten (altpll), die sich 
in der Lib altera_mf befinden, werden nicht mit berücksichtigt. Dadurch 
habe ich keinen Ausgangstakt und die restliche Logik somit auch nicht. 
Weniger gut, wenn die Inhalte der Libs also scheinbar nicht eingebunden 
werden.
 
2. Danach habe ich mit Hilfe des EDA Netlist Writers im Quartus eine 
Netlist-file erzeugt (.vho), in dem im Prinzip die gleichen Libs 
verwendet werden. Aber auch hier komme ich nicht weiter, da es dann in 
irgendeiner vhd Datei von Altera (stratixii_atoms.vhd) Probleme gibt. 
Das Kernproblem mit den Libs bleibt aber leider das gleiche, weil mir 
die Verschaltung der Quellen nur Quartus abnimmt.
 
Kann mir jemand den korrekten Design Flow erklären, wie ich mein 
Quartus-Projekt korrekt mit allen Libs zum Modelsim übertragen, um dann 
dort eine funktionale und eine timing-Analyse starten kann?
 
Diverse Beiträge auf der Altera Seite sind an den entscheidenden Stellen 
lückenhaft.
z.B. hier: 
http://quartushelp.altera.com/11.1/mergedProjects/eda/simulation/modelsim/eda_pro_msimfull_compile.htm
Informationsgehalt nahe Null.
 
Vielen Dank!
Andreas

von berndl (Gast)


Lesenswert?


von Andi (loopy83)


Lesenswert?

Hallo und vielen Dank,

das tcl script macht ja im Prinzip nichts anderes  als der Library 
Compiler im Quartus. Das kann ich nun zwar komfortabler mit im do-File 
erledigen, aber näher bin ich meiner Lösung immer noch nicht. Die PLL 
will nicht.

Habe jetzt sogar den areset Pin weggelassen, um wirklich alle Fehler 
auszuschließen.

Jetzt gibt es nur noch clk, out und locked und der Clock-Ausgang bleibt 
auf 'Z'. 25MHz clk liegt auch am Eingang an. Also was soll man da falsch 
machen. Bleibt ja fast nur die Library Geschichte...
so sieht aktuell mein do-File aus:
1
quit -sim
2
 
3
cd /pfad
4
 
5
vlib altera_mf
6
vmap altera_mf altera_mf
7
vcom -work altera_mf -2002 -explicit /asic/app/altera/quartusII_10.0_lnx/quartus/eda/sim_lib/altera_mf_components.vhd
8
vcom -work altera_mf -2002 -explicit /asic/app/altera/quartusII_10.0_lnx/quartus/eda/sim_lib/altera_mf.vhd
9
 
10
vlib stratixii
11
vmap stratixii stratixii
12
vcom -work stratixii -2002 -explicit /asic/app/altera/quartusII_10.0_lnx/quartus/eda/sim_lib/stratixii_atoms.vhd
13
vcom -work stratixii -2002 -explicit /asic/app/altera/quartusII_10.0_lnx/quartus/eda/sim_lib/stratixii_components.vhd
14
 
15
vlib lpm
16
vmap lpm lpm
17
vcom -work lpm -2002 -explicit /asic/app/altera/quartusII_10.0_lnx/quartus/eda/sim_lib/220pack.vhd
18
vcom -work lpm -2002 -explicit /asic/app/altera/quartusII_10.0_lnx/quartus/eda/sim_lib/220model.vhd
19
               
20
vlib sgate
21
vmap sgate sgate
22
vcom -work sgate -2002 -explicit /asic/app/altera/quartusII_10.0_lnx/quartus/eda/sim_lib/sgate_pack.vhd
23
vcom -work sgate -2002 -explicit /asic/app/altera/quartusII_10.0_lnx/quartus/eda/sim_lib/sgate.vhd
24
 
25
vlib work
26
 
27
vcom PLL.vhd
28
vcom quellen.vhd
29
vcom testbench.vhd
30
 
31
vsim -gui sim_dut
32
 
33
add wave *
Hat jemand dazu noch Hinweise?

Vielen Dank!
Andreas

von Duke Scarring (Gast)


Lesenswert?

Andreas B. schrieb:
> vmap /pfad/stratixii
> vmap /pfad/altera_mf
Will vmap nicht zwei Argumente haben?
1
$ vmap -h
2
Usage: vmap [-help] [-modelsimini <ini_filepath>] 
3
[-c] [-del] [<logical_name>] [<path>]

Wie lautet die genaue Fehlermeldung?

Duke

von Andi (loopy83)


Lesenswert?

Hallo,

ja dort hatte ich Ausversehen das work mit weggeschnitten. In dem 
do-File meines letzten Posts sollte alles wieder stimmen.

Ich bekomme gar keine Fehlermeldung. Lediglich eine Warnung beim 
kompilieren der Stratixii_atoms.vhd.

Die PLL spuckt einfach nur keinen Takt aus... hätte nicht gedacht, dass 
sowas so lange aufhalten kann :-/

Vielen Dank!
Andreas

von dl4mea (Gast)


Lesenswert?

Hi,

warum nicht einfach die Takte, die aus der PLL rauskommen, manuell in 
der Testbench erzeugen?

Probier mal die PLL-Komponenten mit dem Wizard einer älteren 
Quartus-Version zu erzeugen. Ich hab sowas ähnliches beim ALTSHIFT_TAPS 
als Schieberegister, wenn ich das mit dem Quartus 11.1-Wizard erzeuge, 
dann kommt an den Taps nichts raus, das gleiche nur mit dem Wizard von 
10.0 geladen und wieder gespeichert funktioniert. Habe aber die Sourcen 
noch nicht verglichen.

Ciao, Günter (dl4mea)

von berndl (Gast)


Lesenswert?

dl4mea schrieb:
> warum nicht einfach die Takte, die aus der PLL rauskommen, manuell in
> der Testbench erzeugen?

noe, keine gute Idee weil du dann deinen Design jedesmal aendern musst. 
Ich hatte/habe hier mit GHDL auch ein Problem mit einer DLL vom Xilinx 
Spartan3. Ich habe dann einen Wrapper drum gebaut und schalte fuer die 
Simulation eine 'hand-made' PLL/DLL zu (ist nur jeweils eine Zeile 
auskommentieren). Damit kann ich dann leben. Aber mit diesem Drama lebe 
ich jetzt schon seit ca. 3 Jahren recht gut... Ist halt nur eine Zeile 
die sich zwischen Implementierung und Simulation unterscheidet, das 
krieg' ich noch gebacken...

von Duke Scarring (Gast)


Lesenswert?

Andreas B. schrieb:
> Lediglich eine Warnung beim
> kompilieren der Stratixii_atoms.vhd.
Wie lautet die?
Ansonsten sieht Dein .do-File ganz gut aus.

Achte auf die "not bound"-Warnungen. In meiner modelsim.ini hab ich die 
zum Fehler hochgestuft:
1
[msg_system]
2
; Component instance $$$ : $$$" is not bound.
3
error=3473


berndl schrieb:
> Ich habe dann einen Wrapper drum gebaut und schalte fuer die
> Simulation eine 'hand-made' PLL/DLL zu (ist nur jeweils eine Zeile
> auskommentieren).
Dafür kann man auch einen generic von der Testbench aus durchreichen...

Duke

von berndl (Gast)


Lesenswert?

Duke Scarring schrieb:
> Dafür kann man auch einen generic von der Testbench aus durchreichen...

Jepp, das ist dann auch mittlerweile meine Version 2 :o)

von Andi (loopy83)


Lesenswert?

Hallo zusammen,
 
Vielen Dank für die Hinweise.
 
Die stratixii_atoms.vhd meldet folgenden Fehler, ist also auf jeden Fall 
verbunden.
1
# ** Warning: [6] /asic/app/altera/quartusII_10.0_lnx/quartus/eda/sim_lib/stratixii_atoms.vhd(14686): (vcom-1288) VITAL timing generic "tpd_datainglitch_dataout" port specification "datainglitch" does not denote a port.
 
Ich habe gerade die PLL nochmal in einer anderen Version erstellen 
lassen und nochmal alles durchlaufen.
Bisher habe ich mit der 10.0 gearbeitet und habe es nun mit der 11.1 
wiederholt. Genau das gleiche Verhalten.
Takt liegt an, Libs sind scheinbar alle ordentlich da, Taktausgang 
bleibt auf ‚X‘ und locked bleibt beharrlich auf 0.
 
Den PLL-Ausgang einfach im Testbench mit simulieren halte ich für keine 
gute Idee. Immerhin wollte ich nach der functional-Simulation auch noch 
das Timing untersuchen. Wollte schon gerne den Code, wie ich ihn 
simuliere, 1zu1 auch implementieren.
 
Kann doch aber nicht wahr sein, dass ich mich an einer PLL tagelang 
aufhalten muss… das ist echt sehr ärgerlich.
 
Vielen Dank!
Andreas

von Duke Scarring (Gast)


Lesenswert?

Andreas B. schrieb:
> Takt liegt an, Libs sind scheinbar alle ordentlich da, Taktausgang
> bleibt auf ‚X‘ und locked bleibt beharrlich auf 0.
Vielleicht hilft Dir das weiter:
http://www.altera.co.uk/support/kdb/solutions/rd04112011_852.html

Duke

von Andi (loopy83)


Lesenswert?

Ich habe gerade nochmal den Versuch mit dem EDA Netlist Writer 
unternommen.
Meine do-Datei sieht wie folgt aus:
1
quit -sim
2
cd /pfad/
3
 
4
vlib altera
5
vmap altera altera
6
vcom -work altera -2002 -explicit /asic/app/altera/quartusII_11.1_lnx/quartus/eda/sim_lib/altera_primitives_components.vhd
7
vcom -work altera -2002 -explicit /asic/app/altera/quartusII_11.1_lnx/quartus/eda/sim_lib/altera_primitives.vhd
8
vlib altera_mf
9
vmap altera_mf altera_mf
10
vcom -work altera_mf -2002 -explicit /asic/app/altera/quartusII_11.1_lnx/quartus/eda/sim_lib/altera_mf_components.vhd
11
vcom -work altera_mf -2002 -explicit /asic/app/altera/quartusII_11.1_lnx/quartus/eda/sim_lib/altera_mf.vhd
12
vlib stratixii
13
vmap stratixii stratixii
14
vcom -work stratixii -2002 -explicit /asic/app/altera/quartusII_11.1_lnx/quartus/eda/sim_lib/stratixii_atoms.vhd
15
vcom -work stratixii -2002 -explicit /asic/app/altera/quartusII_11.1_lnx/quartus/eda/sim_lib/stratixii_components.vhd
16
vlib lpm
17
vmap lpm lpm
18
vcom -work lpm -2002 -explicit /asic/app/altera/quartusII_11.1_lnx/quartus/eda/sim_lib/220pack.vhd
19
vcom -work lpm -2002 -explicit /asic/app/altera/quartusII_11.1_lnx/quartus/eda/sim_lib/220model.vhd
20
vlib sgate
21
vmap sgate sgate
22
vcom -work sgate -2002 -explicit /asic/app/altera/quartusII_11.1_lnx/quartus/eda/sim_lib/sgate_pack.vhd
23
vcom -work sgate -2002 -explicit /asic/app/altera/quartusII_11.1_lnx/quartus/eda/sim_lib/sgate.vhd
24
 
25
vlib work
26
vcom  netlist.vho
27
vcom testbench.vhd
28
vsim -gui sim_dut
29
add wave *
 
Nach dem kompilieren der Libs und dem run –all Befehl, kommt dann nach 
60ns diese Fehlermeldung.
1
# ** Note: StratixII PLL is enabled
2
#    Time: 0 ns  Iteration: 1  Instance: /sim_dut/DUT/\I0_pll333|altpll_component|pll\
3
# ** Fatal: (SIGFPE) Floating point exception.
4
#    Time: 60 ns  Iteration: 8  Process: /sim_dut/DUT/\I0_pll333|altpll_component|pll\/SCHEDULE File: /asic/app/altera/quartusII_10.0_lnx/quartus/eda/sim_lib/stratixii_atoms.vhd
5
# Fatal error in Process SCHEDULE at /app/altera/quartusII_10.0_lnx/quartus/eda/sim_lib/stratixii_atoms.vhd line 7494
6
#
Leider weiss ich damit nichts so recht anzufangen. Nur wieder betrifft 
es die stratixii_atoms.vhd, aber an anderer Stelle als die Warnung.
 
Kann mir jemand sagen, wie ich diese Meldungen zu interpretieren habe?
 
Vielen Dank!
Andreas

von Andi (loopy83)


Lesenswert?

Ich habe die Lösung gefunden.
Scheinbar muss man bei der Simulation einer PLL den Maßstab auf ps 
stellen.

Bei vsim -t ns kommt er zu keinem Ergebnis bzw. bringt eine 
Fehlermeldung.
Bei vsim -t ps läuft alles.

Und da soll noch jemand sofort drauf kommen :-(

von D. I. (Gast)


Lesenswert?

Andreas B. schrieb:
> Bei vsim -t ns kommt er zu keinem Ergebnis bzw. bringt eine
> Fehlermeldung.
> Bei vsim -t ps läuft alles.
>
> Und da soll noch jemand sofort drauf kommen :-(

Oh ja das sind bei manchen Cores beliebte Fehler. Die muss man einmal 
erfahren haben und sich notieren, dass so etwas bei einer Simulation die 
Fehlerquelle sein könnte

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.