www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Xilinx: LOC Constraint für BRAMs


Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab hier ein Problem mit der Benutzung von BRAMs. Ich möchte für die
RAMs ein LOC-Constraint im UCF-File angeben. Lauf V2_user_guide ist es
möglich mit "LOC = RAMB16_X#Y#M".
Nun habe ich also folgende Zeile in mein ucf-File eingefügt:
INST "fifo_ram"   LOC = RAMB16_X1Y1M;

NGDBUILD meckert nun aber bei der Impl., dass er die Instanz nicht
finden würde:
ERROR:NgdBuild:752 - Line 55 in
'../../../../layout/bmt_v2.ucf': Could not find
   instance(s) 'fifo_ram' in the design.  To suppress this error,
specify the
   correct instance name or remove the constraint.  The 'Allow
Unmatched LOC
   Constraints' ISE property can also be set ( -aul switch for command
line
   users ).

Ich hab aber die Komponente unter dem Instanznamen eingefügt:
  fifo_ram : v2_dpram64x8
    PORT MAP (
      addra => wr_ptr_i,
      addrb => rd_ptr_i,
      clka  => clk,
      clkb  => clk,
      dina  => fifo_din_i,
      dinb  => logic_0_bus,
      douta => OPEN,
      doutb => fifo_dout_o,
      wea   => fifo_we_i,
      web   => logic_0_i
    );

Hat schonmal jemand ein loc-Constraint für den BRAM gesetzt und dabei
vielleicht ähnliche Erfahrungen gemacht?

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube ich weiss, warum das nicht geht. Das liegt wohl (mal wieder)
am Xilinx Modular Design Flow. Die BlockRams liegen in einem
Untermodul, und das wird natürlich am Anfang gar nicht analysiert. Da
findet er natürlich auch keien Bram Instanz, da im Top-Level keine
ist...

Wiedermal eine Frage für den Xilinx Support :-/

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also meckert man nicht ständig auf Xilinx ...

Hoffentlich ist es kein problem aus der Kiste "dhynamische
rekonfiguration", ansonsten liegt das problem im unvollständigen
Instanzenpfad.

ngdbuild findet sehr wohl Instanzen in Untermodulen, da in dieser Phase
alle Netzlisten zusammengebunden werden. Falls du hier eine Netzliste
vergisst liegt die schuld nicht bei ngdbuild.

Dein problem ist der fehlenden Pfad, es genügt nicht den Namen der
Instanz des Submodules zu nennen, Du musst auch den Namen der Instanz
des Modules nennnen. Oder man hilft sich mit wildcards, siehe Beispiel:


 INST "*multiply_rggb_1" LOC=MULT18X18_X1Y1;

Der "*" spart mir den Namen der Instanz des Modules. Instanzenpfade
findet man ganz gut im FPGAEditor. Dort den BRAM anklicken und Du hast
einen fürs ucf passenden Namen.

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"...Hoffentlich ist es kein problem aus der Kiste "dhynamische
rekonfiguration"..."
Du hast es erfasst :-D

Und da wird in der ersten Phase nur das Top level analysiert,
synthetisiert und implementiert. Da wird natürlich das ganze ucf
eingelesen...aber der BRAM ist in dem 2. Modul. Das wird erst später im
2. Schritt erledigt...

Aber das mit dem Pfad probier ich trotzdem mal...du meinst mit Pfad
denke ich mal, die Entitynamen bis runter in das Modul, wo der BRAM is,
oder?

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#Aber das mit dem Pfad probier ich trotzdem mal...du meinst mit Pfad
#denke ich mal, die Entitynamen bis runter in das Modul, wo der BRAM
is,
#oder?

Dhynamische Konfiguration, ahnte ich es doch, damit ist der T.M gerade
schwer am schaffen...


Hm vollständiger Pfad eben, das ist immer wieder überraschend wie die
entitynamen zusammengafasst werden. das ist nicht immer vorhersehbar.
Oft sagt einem der FPGA-Editor wie dar Pfad im design heisst. Aber auch
dieser stimmt nicht immer.
dann tippe ich oft auf Unterschiede in der groß/Klein schreibung. Oder
einanderer Pfadsepeartor ("/" statt "_" oder andersrum) Die
Wildcards helfen oft ("*" vorn und hinten im Pfad) aber manchmal ist
ein Wildcrad zuviel. (Es scheint das bei Xilinx "*" nicht für eine
leere zeichenkette zu stehen). Falls der FPGA Editor nicht hilft
generiere dir eine EDIF Liste aus dem *.ncd ( netgen ist das Xilinx
tool dafür).

Wenn das nicht hilft, verbaue die anderen BRAM's die xilinx nicht
verwenden soll.
Also Instanziere die nicht gewollten BRAMs in der Top entity (da sollte
der instanzpfad einfecher sein) mit einem dummy design (z.B. im reset
eine 3 an adresse 4 schreiben) und verpasse diese ein Area constraint.
dann bleibt für den kritsichen BRAM nur einer übrig ....

Für den FPGA Editor brauchst du natürlich den ouput des mappers.
Vielleicht kannst du erstmal ein design ohne dhynamischen Hokuspokus
bauen und an diesem die Instanznamen extrahieren.

Oder du allokierst deinen BRAM in der typ entity (einfacher
Instanzpfad) und schleifst die Signale in das submodule runter.

Versuche das BRAM_interface (datenbusbreite etc) für alle
Konfigurationen gleich zu halten. dann könnte man es auch aus eine
konfigurierbaren bereich rausschieben.

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was is eigentlich mit deiner FPGAKueche passiert? Ist gar nicht mehr
erreichbar...

Das Problem bei der dyn. Rekonf, die nur mit dem Modular Design Flow
funzt (XMDF), ist, dass im Top Level nur die Module und etweige
benötigte Clockressourcen (DCM, Buffer) vorhanden sein dürfen.

Ich hab nun das Problem, dass am Ende beim Final Assembly (Verbinden
der Einzel-Bitstreams zu einem gesamten) ein paar Signale nicht
geroutet werden können. Und da hab ich mir gedacht, dass man vielleicht
auch den RAM genau platzieren sollte, weil man das bei anderen
Primitiven auch machen sollte.

Aber vielleicht erledigt sich das sowieso in den nächsten Tagen, es
gibt da von Xilinx ein Update für die ISE extra für die partielle dyn.
Rekonf, das spielen wir die Woche drauf.

Das Problem mit den "SplitRoutableLoadPins" liegt nämlich auch noch
in der Luft, da warten wir auch erstmal auf das Update, bevor wir den
Support "belästigen" ;-)

UPDATE: mit dem kompletten Pfad für die RAMs scheint das Constraint zu
funzen :-)

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
<Was is eigentlich mit deiner FPGAKueche passiert? Ist gar nicht mehr
<erreichbar...

Hm, meinst Du?

 http://wikihost.org/wikis/fpgakueche/

die ist immer noch online, wenn auch seit Februar nicht mehr aufgeräumt
...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.