mikrocontroller.net

Forum: FPGA, VHDL & Co. asynchroner FIFO und Timing Report Spartan3aDSP


Autor: Hochpass (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,

ich habe gerade ein Problem mit einem asynchronen Fifo (übergang clock 
domain) in einem Spartan3a DSP

Schreibtakt 150 Mhz (6,666 ns)
Lesetakt 200 Mhz (5 ns)

Jetzt schmeißt mir der Timing Report Fehler raus, dass innerhalb des 
Fifos das Timing nicht hinhaut. Er möchte in 1,666 ns (6,6666ns-5ns) 
erwas fertig haben) was aber von der Technologie schon nicht klappt. 600 
Mhz schafft der FPGA nie im Leben.

Hat wer eine Idee? Ignorieren scheint mir die falsch Methode.

Danke

Gruß Hochpas

Autor: Stefan R. (stefripp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal bei der Konfiguration nach. Bei Altera kannst du z.B. 
unerschiedliche Clocks für schreiben und lesen einfügen.

Autor: Hochpass (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan R. schrieb:
> Schau mal bei der Konfiguration nach. Bei Altera kannst du z.B.
> unerschiedliche Clocks für schreiben und lesen einfügen.

Klar, hab doch unterschiedliche Clocks für Lesen und Schreiben. Das 
haben doch alle asynchronen Fifos.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die beiden Takte aus der selben Quelle kommen, DCM beispielsweise 
gibts solche Warnungen. Da musst du mal im FIFO Core User Guide hinten 
schauen, gibts ein Kapitel, wie man die deaktiviert. Offenbar findet der 
Analyzer dann einen Weg durch die FIFOs. Kann man ignorieren oder per 
Constraint abstellen.

Autor: Hochpass (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian R. schrieb:
> Wenn die beiden Takte aus der selben Quelle kommen, DCM beispielsweise
> gibts solche Warnungen. Da musst du mal im FIFO Core User Guide hinten
> schauen, gibts ein Kapitel, wie man die deaktiviert. Offenbar findet der
> Analyzer dann einen Weg durch die FIFOs. Kann man ignorieren oder per
> Constraint abstellen.

Stimmt, kommen aus einer DCM. Einmal CLKFX und CLK2X. Guter Tipp
Na denn zieh ich mir mal das pdf rein...

Autor: Hochpass (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So falls noch wer das Problem hat der Vollständigkeit halber die 
Auflösung mit der Hilfe von Christian. Danke!!
Auszug aus dem Datenblatt:


Setup and Hold Time Violations
When generating a FIFO with independent clock domains (whether a DCM is 
used to
derive the write/read clocks or not), the core internally synchronizes 
the write and read
clock domains. For this reason, setup and hold time violations are 
expected on certain
registers within the core. In simulation, warning messages may be issued 
indicating these
violations. If these warning messages are from the FIFO Generator core, 
they can be safely
ignored. The core is designed to properly handle these conditions, 
regardless of the phase
or frequency relationship between the write and read clocks.
Alternatively, there are two ways to disable these expected setup and 
hold time violations
due to data synchronization between clock domains:
• Add the following constraint to your design–this constraint sets a 
timing constraint to
the synchronization logic by requiring a maximum set of delays. The 
maximum
delays used is defined by 2x of the slower clock period.
NET fifo_instance/BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc<0> MAXDELAY = 12
ns;
NET fifo_instance/BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc<1> MAXDELAY = 12
ns;
...
NET fifo_instance/BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc<9> MAXDELAY = 12
ns;
NET fifo_instance/BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc<0> MAXDELAY = 12
ns;
NET fifo_instance/BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc<1> MAXDELAY = 12
ns;
...
NET fifo_instance/BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc<9> MAXDELAY = 12
ns;
• Add the following constraint to your design–this constraint directs 
the tool to ignore
the appropriate paths that are part of the synchronization logic:
NET fifo_instance/BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc<0> TIG;
NET fifo_instance/BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc<1> TIG;
...
NET fifo_instance/BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc<9> TIG;
NET fifo_instance/BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc<0> TIG;
NET fifo_instance/BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc<1> TIG;
...
NET fifo_instance/BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc<9> TIG;
• If distributed RAM FIFO is used, the following constraints may also be 
required to
improve the timing.
INST "fifo_instance/BU2/U0/grf.rf/mem/gdm.dm/Mram*" TNM= RAMSOURCE;
INST "fifo_instance/BU2/U0/grf.rf/mem/gdm.dm/dout*" TNM= FFDEST;
TIMESPEC TS_RAM_FF= FROM "RAMSOURCE" TO "FFDEST" <<one read clock
period>> DATAPATHONLY;

Autor: Anguel S. (anguel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Thema kommt mir doch bekannt vor:

Beitrag "Constraint Problem am BlockRAM FIFO Xilinx"

;)

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hehe, genau daher wusste ich das ja jetzt auch. ;)

Autor: Hochpass (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anguel S. schrieb:
> Das Thema kommt mir doch bekannt vor:
>
> Beitrag "Constraint Problem am BlockRAM FIFO Xilinx"
>
> ;)

Ach guck. Aber mit der Überschrift kann ich es ja gar nicht finden. ;-)

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.