Forum: FPGA, VHDL & Co. Spartan 3e 1600 + DDR - SDRAM + MIG 3.0


von Martin (Gast)


Lesenswert?

Hi,

ich hoffe ihr könnt mir helfen, ich habe ein

MicroBlaze Development
Kit Spartan-3E 1600E

und müsste die DDR - Ansteuerung hinbekommen...

Ich habe mir über den Core Gen von ISE - Webpack den MIG 3.0 generieren 
lassen. Direkt als Referenz Design für das gleiche Board jedoch mit 
Spartan-3E 500E...

Das einbinden der Files in Ise Webpack klappt auch noch hervorragend.
Jedoch bekomme ich beim "Implement Design - Translate" - Schritt 
folgende fehlermeldungen...

ERROR:ConstraintSystem:59 - Constraint <INST 
"main_00/top0/data_path0/data_read_controller0/gen_wr_en[1].fifo_1_wr_en 
_inst"  LOC = SLICE_X1Y77;> [vhdl_bl4cl2.ucf(585)]: INST
   "main_00/top0/data_path0/data_read_controller0/gen_wr_en[1].fifo_1_wr_en 
_inst
   " not found.  Please verify that:
   1. The specified design element actually exists in the original 
design.
   2. The specified object is spelled correctly in the constraint source 
file.

Da es sich ja um ein Referenz Design handelt, sollte ja sowas nicht 
passieren...

Wenn jemand schon erfahrungen damit hat, wäre es nett, wenn ihr mir 
helfen könntet!

Gruß, Martin

von Andreas (Gast)


Lesenswert?

Hallo Martin,

ich glaube bei Dir kommen gleich zwei Sachen zum Tragen. Den Fehler auf 
den Du gerade gestossen bist sowie den auf den Du nach Beheben stossen 
wirst ;)

1.) kontrolliere einmal ob das Constraint auch trifft:
Sprich heisst deine Toplevel Entity wirklich main_00 und befindet sich 
der restliche Pfad exakt so wie das Constraint das beschreibt, meist 
findet sich hier der Fehler.
Ab und an aegert auch die Synthese indem Sie ab und an die Hirachien 
nicht durch "/" sondern durch "_" trennt. Solltest Du also nicht gleich 
fuendig werden, so wuerde ich das Constraint erst einmal 
auskommentieren, die Synthese komplett durchlaufen lassen und mit dem 
FPGA Editor nach der zu constrainenden Instanz suchen...

Du wirst nach Beheben dieses Fehlers aber auf weitere Probleme stossen:

Du schreibst selbst, dass Du Dir den Core hast fuer ein Board mit einem 
anderen (kleineren) Baustein als den auf deinem Board.

der von Dir gemeldete Constrainterror enthaellt den LOC = SLICE_X1Y77 
Constraint. Hiermit wird ein Element an eine Slice Position X1 Y77 
positioniert. Dieses Slice wurde so gewaehlt das der Abstand des Cores 
und der IO-Pins im Bezug auf die Routingdelays moeglichst guenstig 
liegt.
In deinem groesseren Baustein befinden sich aber mehr Slices, so dass 
die Position des Slice Y77 sich zu den IO-Pins aendert (sprich die 
Routing Latence) vergroessert sich. Deine Aufgabe wird also sein die 
Positionen der SLICE LOCs so anzupassen, das diese relativ gesehen zum 
kleineren Baustein wieder uebereinstimmen...

Gruss

Andreas

von Martin (Gast)


Lesenswert?

Hey Andreas,

danke für deine Antwort - ich weiß jetzt zumindest mal wo ich ansetzen 
muss... und probiere mal mein Glück...

Gruß, Martin

von Johann (Gast)


Lesenswert?

Ich denke mal das man den IP-Core für jeden neuen FPGA Baustein neu 
erzeugen muß. Denn wenn Du den IP-Core für einen größeren FPGA erzeugt, 
dann kann es sein das es diesen Slice bei einem kleineren FPGA garn 
nicht gibt.

von Martin (Gast)


Lesenswert?

@ Johann

im Prinzip hast du recht, jedoch lässt sich kein IP - MIG Core für den 
Spartan-3E 1600E erzeugen...

von Christian R. (supachris)


Lesenswert?

Wieso geht das denn nicht? Bei mir zeigt der CoreGen an:


Core type:

MIG
Version:

3.3
Core Summary:

This Memory Interface Generator is a simple menu driven tool to generate 
advanced memory interfaces. This tool generates HDL and pin placement 
constraints that will help you design your application. Spartan-3 family 
supports DDR & DDR2 SDRAM. Spartan-6 supports LPDDR, DDR, DDR2 & DDR3 
SDRAM. Virtex-4 supports DDR & DDR2 SDRAM and QDRII & DDRII SRAM and 
RLDRAM II. Virtex-5 supports DDR & DDR2 SDRAM, QDRII SRAM and DDRII 
SRAM. Virtex-6 supports DDR2 & DDR3 SDRAM, RLDRAM II and QDRII+ SRAM. 
Virtex-6L supports DDR2 & DDR3 SDRAM.

Und ich kann für den S3E1600 auch den MIG auswählen. Allerdings 
verschwindet der manchmal aus der Liste links, da is wohl ein kleiner 
Bug im CoreGenerator (11.4) wenn man auf "Supported Families" drückt, 
den S3E1600 aussucht und dann "Set as current" macht, ist er plötzlich 
wieder da....

von Martin (Gast)


Lesenswert?

@ Christian R

Ja, mann kann für den S3E1600 einen MIG - Core erzeugen... Jedoch muss 
im MIG nochmal der FPGA ausgewählt werden und da lässt sich dann nur der 
S3E500 bzw. der S3E1200 wählen... und dann hat man wieder das Problem 
mit der Slice anordnung...

War vielleicht von mir ein bisschen ungeschickt formuliert...

von Christian R. (supachris)


Angehängte Dateien:

Lesenswert?

Da musst du vielleicht mal ein Update auf MIG 3.3 machen. Bei mir geht 
das. Wenn ich in den "Supported Families" zunächst den S3E1600 auswähle, 
dann den Wizzard starte, kommt dieses Fenster.
Ich kann dann den Wizzard auch bis zum Ende durch klickern....

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.