Hallo zusammen,
ich habe einen Divider Core (vom Xilinx CORE Generator erzeugt) in
meiner IP eingebunden. Soweit so gut.
Jetzt würde ich meine IP gerne mit dem Modelsim PE simulieren.
Prinzipiell funktioniert das auch, nur dass von dem Divider Core immer 0
ausgegeben wird.
Ich habe bereits eine Support-Anfrage an Mentor gestellt.
Antwort:
Die Netzliste habe ich mir auch erzeugt und mit folgenden Befel in das
do-File des Modelsim eingefügt:
1
vcom-explicit-93"ipcore_dir/division_netlist.vhd"
--> Das Ergebnis ist auch auch kein anderes. Mir gehen die Ideen aus -
ich muss/will aber "ordentlich" simulieren :-(
Hat jemand eine Idee, wie das gehen kann?
Viele Grüße,
Andreas
Andreas N. schrieb:> -- 1. XilinxCoreLib behavioral model
Das ist es doch, was du brauchst, denn du willst (hoffentlich) eine
Verhaltenssimulation machen (ich würde das auf jeden Fall tun)...
Man benötigt also wohl diese _synth-Datei.
Ich habe mal die automatisch generierte tb_division.vhd angehängt.
Vielleicht hat jemand eine Idee, wie man diese Information nutzen
könnte.
Viele Grüße,
Andreas
Mein Xilinx jammert seit Kurzem genau bezüglich dieser *.Synth -
Dateien. ISE beklagt einerseits, dass eine "duplicate design unit"
vorläge, lösche ich diese Dateien weg, fehlen sie im Projektmanager. In
beiden Fällen funktioniert die Synthese.
Sind die *.synth nur für die Simulation?
Ich arbeite ja nun schon eine Weile mit ModelSIM und ISIM, aber den
Fehler hatte ich noch nicht und *.synth - Dateien nie (explicit)
eingebunden / verwendet.
VHDLler schrieb:> Mein Xilinx jammert seit Kurzem genau bezüglich dieser *.Synth -> Dateien. ISE beklagt einerseits, dass eine "duplicate design unit"> vorläge, lösche ich diese Dateien weg, fehlen sie im Projektmanager. In> beiden Fällen funktioniert die Synthese.>> Sind die *.synth nur für die Simulation?
Soweit ich das verstehe, sind die *_synth.vhdl und _tb.vhdl Dateien
ausschliesslich für die Simulation.
> Ich arbeite ja nun schon eine Weile mit ModelSIM und ISIM, aber den> Fehler hatte ich noch nicht und *.synth - Dateien nie (explicit)> eingebunden / verwendet.
Nun, wenn du z.B. für ein FIFO (aus dem core generator) eine Testbench
vom ISE erzeugen lässt (für Modelsim), dann wird in der *.do Datei
automatisch die *core*_synth.vhdl und core.vhdl mit einem vcom-Befehl
eingebunden.
Das sieht z.B. für mein Blockram so aus:
...
vcom -explicit -93 "ipcore_dir/dualport_blockram_synth.vhd"
vcom -explicit -93 "ipcore_dir/dualport_blockram.vhd"
...
Wegen dem Divider:
Mir ist das ganze auf den Keks gegangen.
Deshalb habe ich eine (leider etwas weniger Performante aber
FUNKTIONIERENDE!!!) Lösung:
Ich habe den Vorschlag von Lotha Miller aufgegriffen und in mein Projekt
übernommen.
http://www.lothar-miller.de/s9y/archives/29-Division-in-VHDL.html
Das dauert zwar einige Takte, bis das Ergebnis zur Verfügung steht, aber
in meinem konkreten Fall ist das (noch) akzeptabel.
Und vor allem kann ich jetzt endlich wieder ordentlich simulieren!
Viele Grüße,
Andreas
Entweder hat sich da was Gravierendes verändert, oder es ist ein anderes
Problem im Busch:
Ich habe schon ISE mit Divider Core eingesetzt, simuliert und getestet.
Ging problemlos.
Gerald Hellinghaus schrieb:> Entweder hat sich da was Gravierendes verändert, oder es ist ein anderes> Problem im Busch:>> Ich habe schon ISE mit Divider Core eingesetzt, simuliert und getestet.> Ging problemlos.
Hallo Gerald,
ich glauber eher zweiteres...
Wenn ich es "alleine" nicht hinbekommen hätte, dann würde ich es noch
verstehen.
Aber auch mit dem Mentor-Support hat es (im ersten Anlauf) nicht
funktioniert.
Die haben es dann hinbekommen, allerdings erst, wenn die Simulation
mindestens 5-10ms läuft. Und wenn man "magische" Setup und Hold Zeiten
einhält, welche aus dem Datenblatt nicht ersichtlich sind.
Ich habe ja die Version erzeugt, für die bei JEDEM Clock eine DIVISION
durchführt werden soll. Im Datenblatt stehen aber keine "magischen"
Zeiten, die gewartet werden müssten. Und der Ready-Ausgang ist für die
1-Clock-Version immer HIGH.
Verstehen muss ich das nicht. Ich werde es einfach so tun, wie es in
vielen anderen Forenbeiträgen beschrieben ist:
"schreibe den divider selbst"
ABER:
Wenn Du, Gerald, einen funktionierenden Divider am Laufen hast, dann
würde mich schon eine kleine Testbench (Modelsim) interessieren.
Kannst Du eine posten?
Welche Versionen (ISE, Modelsim, Divider, Anzahl Clocks für Divider)
hattest Du im Einsatz?
Viele Grüße,
Andreas
Hallo frimark,
danke für Deine Antwort.
Den Core habe ich nicht zum Laufen bekommen...
Ich habe es mit reinem VHDL-Code gelöst.
Deine Lösung würde mich aber trotzdem (zur Info) interessieren - vor
allem die Testbench dazu.
Viele Grüße,
Andreas
Andreas N. schrieb:> Hallo frimark,> danke für Deine Antwort.> Den Core habe ich nicht zum Laufen bekommen...
Was genau ging den daran nicht? Welchen Divider hast Du genommen?
Hallo Jürgen,
es ist schon einige Zeit her (und ich habe das Problem verdrängt :-)).
Problem war:
Wenn ich den Divider mit dem Modelsim (oder auch dem ISim) mit Daten
geladen habe, dann kam als Ergebnis immer 0 raus.
Egal was ich gemacht/verändert habe.
Den Divider Core habe ich mit dem "Divider Generator 3.0" unter ISE 13.3
erzeugt.
Wie oben schon geschrieben, bin ich mit der getakteten Version zur Zeit
(noch) zufrieden.
Interessieren würde mich natürlich schon, ob sich der Core bei Euch
simulieren lässt... Und wenn ja: was mache ich falsch...
Wenn ich mich recht erinnere, dann hat der Core im realen FPGA
funktioniert. Aber ohne Simulation wollte/konnte ich ihn trotzdem nicht
einsetzen.
Viele Grüße,
Andreas
Bei dem divider braucht man eigentlich nicht viel zu tun. Einfach beide
Werte anlegen und die Latenz an Takten warten. Im ModelSim sieht man da
irgendwann die Änderung des Ausgangwertes.
Juergen S. schrieb:> Bei dem divider braucht man eigentlich nicht viel zu tun. Einfach beide> Werte anlegen und die Latenz an Takten warten. Im ModelSim sieht man da> irgendwann die Änderung des Ausgangwertes.
Hallo Jürgen,
genau hier liegt das Problem.
Ich habe die Werte (damals) angelegt - und seeeeehr laaaange gewartet -
trotzdem blieb der Ausgang des dividers "0".
Ich hatte damals auch Kontakt zum Xilinx Support - ohne ein
befriedigendes Ergebnis.
Viele Grüße,
Andreas