Forum: FPGA, VHDL & Co. Simulations Problem Modelsim bei 2 Designs


von Christian R. (supachris)


Lesenswert?

Ich hab da ein kleines Problem mit Modelsim XE 6.3c, und zwar:
Ich möchte 2 FPGA Designs gleichzeitig simulieren. Ein Virtex 4 ist über 
einen bidirektionalen DDR-Bus mit einem Spartan 3e verbunden. Die 
Simulation beider FPGA für sich alleine klappt natürlich einwandfrei. 
Ach die Hardware funktioniert. Ich möchte nun mal beide Designs im 
ModelSim koppeln. Dazu hab ich mir ein neues ModelSim Projekt erstellt 
und alle VHD Dateien aus beiden Projekten hinzugefügt. Eine Testbench 
erstellt, die beide Top-Level Designs als Components enthält mit den 
entsprechenden Verbindungen. Kompiliert wird alles ohne Warnungen, aber 
vsim zickt rum. Und zwar ist er der Meinung, dass an den ODDR2 des 
Spartan 3e kein Reset Port in der Entity wäre. Der ist natürlich dran 
und einzelm simulieren geht ja auch.
1
# ** Error: (vsim-3732) D:/***/***/***/ODDR_16.vhd(57): No default binding for component at 'inst_oddr2'.
2
#  (Port 'r' is not on the entity.)

Woran könnte das liegen? Die ODDR des Virtex 4 meckert er nicht an. Hab 
ich da irgendwie eine falscher Herangehensweise?

von Der Besucher (Gast)


Lesenswert?

Der Port "r" scheint in der Entity zu fehlen. Du sagst zwar, dass er 
vorhanden ist...
Vielleicht hast du dich nur vertippt und es soll eigentlich nicht "r" 
heissen?
Ohne Sourcen kann man da sonst wenig zu sagen.

Der Besucher

von Kest (Gast)


Lesenswert?

mal ins Blaue geschossen:

bei einzelnen Projekten sind die inst_oddr2 - Instanzen nicht gleich 
(entsprechend auch die Components), vielleicht ist bei einer Komponente 
r vorhanden, bei anderen dagegen nicht (also Virtex und Spartan 3e 
Designs). Wenn Du dann alles zusammenführst, wird nur eine (falsche) 
Komponente hinzugefügt (ohne "r"), deshalb läuft es auch nicht.

Ich würde einfach die Entitys kontrollieren (auch, ob sie nur ein Mal im 
work-Verzeihnis vorhanden sind) und dann die Components-Deklaration, ab 
besten doppelt ;-) Manchmal sind es halt Kleinigkeiten.

Grüße,
Kest

von Klaus F. (kfalser)


Lesenswert?

Du solltest die beiden Designs in getrennte Libraries compilieren.
Noch besser, du kannst die Libraries, die Du für die Verifikation der 
einzelnen FPGA's verwendet hast, wiederverwenden.

Mit Hilfe einer Configuration kannst Du dann festlegen, aus welcher 
Library das Spartat DUT kommen soll und aus welcher das Virtex-DUT.

von Christian R. (supachris)


Lesenswert?

Also die Quellcodes sind natürlich definitiv richtig, abgesehen davon 
gibts auf dem Spartan 3e nur den ODDR2, auf dem Virtex ist das die ODDR 
Primitive. Ich habs jetzt lösen können, indem ich im Modelsim einfach 
mal die Quellfiles in verschiedene Ordner getan hab, die ich über Add to 
Project angelegt hab. Da klappts auf einmal, ist aber nicht 
nachvollziehbar wieso. Quellcodes kann ich natürlich keine online 
stellen, sind von der Firma.
Nun klappt zumindest die Behavioral Simulation, wenn einer Tipps hat, 
wie man die Timing-Simulation zweier FPGAs hinbekommt, immer her damit 
:)

von Duke Scarring (Gast)


Lesenswert?

@Christian R.:
> Timing-Simulation zweier FPGAs hinbekommt
Du kannst Dir mit Xilinx-ISE simulierbare Netzlisten generieren lassen 
(generate post-synthesis simulation model, generate post-translate 
simulation model, etc.).
Und Du brauchst eine Testbench, die Deine Leiterplatte mit den beiden 
FPGAs enthält. Dort kannst Du auch gleich die Verzögerung durch die 
Leitungslänge mit berücksichtigen (transport after ...)

> Modelsim XE
Da wird es sicher eng werden mit den Netzlisten... PE bzw. SE machen 
sich da besser.

Duke

von Christian R. (supachris)


Lesenswert?

Duke Scarring schrieb:
> @Christian R.:
>> Timing-Simulation zweier FPGAs hinbekommt
> Du kannst Dir mit Xilinx-ISE simulierbare Netzlisten generieren lassen
> (generate post-synthesis simulation model, generate post-translate
> simulation model, etc.).
> Und Du brauchst eine Testbench, die Deine Leiterplatte mit den beiden
> FPGAs enthält. Dort kannst Du auch gleich die Verzögerung durch die
> Leitungslänge mit berücksichtigen (transport after ...)
>
>> Modelsim XE
> Da wird es sicher eng werden mit den Netzlisten... PE bzw. SE machen
> sich da besser.
>
> Duke

Danke für die Antwort. Ich habs inzwischen sogar hinbekommen. Timing-Sim 
der einzelnen Designs hatte ja schon immer geklappt. Nun hab ich bissl 
zeit, da wollte ich die mal zusammen klemmen. Ist ein bissl Gefrickel 
mit den SDF-Files auch noch, und in verschiedene Libs kompilieren (das 
war der entscheidende Tipp). Aber es klappt auch mit dem XE, und ich bin 
noch nicht über das 50.000 Statements Limit. Die vorkompilierten Xilinx 
Libs machens möglich.
ModelSim PE hab ich dieses Jahr nicht durch den Invest bekommen. Mal 
sehen, ob´s nächstes Jahr klappt.

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.