Forum: FPGA, VHDL & Co. Wie kann ich URAM für einen xpm FIFO verwenden?


von Markus W. (mwww)


Lesenswert?

Hallo,

TLDR: Hat es schon mal jemand geschafft für einen synchronen xpm 
AXI-Stream FIFO URAM zu verwenden; und wenn ja, wie?


Ich verwende für ein Xilinx US+-Design die RAM/FIFO-Templates aus der 
Xilinx XPM-Library [1] [2]. Das funktioniert soweit.

Nun hat US+ sowohl 4K BRAM als auch größere 32K URAM. Für große 
RAMs/FIFOs möchte ich gern, dass Vivado URAMs instanziiert. Für URAM 
muss der Speicherausgang mehrere Pipelinestufen haben.

Für RAMs hat das xpm-template ein generic READ_LATENCY, welches 
automatisch Register am Ausgang einfügt.

Das AXIS-FIFO xpm hat keinen generic, um Register einzufügen (abgesehen 
von CDC_STAGES für async FIFOs). Ich habe entsprechend versucht, selbst 
Register an den AXIS tdata-Ausgang und tvalid hinzuzufügen. (tready wird 
kombinatorisch zurückgegereicht). Allerdings erkennt Vivado das nicht 
als Pipelinestufen, die es für den URAM nehmen kann, die Meldung ist

"
INFO: [Synth 8-6793] RAM (testram) is implemented using BRAM instead of 
URAM due to insufficient pipeline registers. Available pipeline stages = 
0, Minimum required pipeline stages = 1
"

Es könnte nun entweder sein, dass das xpm-template selbst dazu führt, 
dass eine externe Pipeline am Ausgang nichts nützt (weil da drin z.B. 
wegen AXI-Stream-Handshake verschiedene Ausgangsregister gemuxt werden 
und deswegen keine lineare Pipeline intern vorhanden ist). Oder es 
könnte sein, dass ich das einfach anders machen muss. Evtl. kann da 
jemand helfen?

Um die Bedingung nochmal zu wiederholen: ich möchte das xpm-template 
verwenden. Andere Lösungsansätze ohne xpm sind mir klar.


[1] 
https://docs.xilinx.com/r/en-US/ug974-vivado-ultrascale-libraries/XPM_MEMORY_SPRAM

[2] 
https://docs.xilinx.com/r/en-US/ug974-vivado-ultrascale-libraries/XPM_FIFO_AXIS

von Mann Fred (Gast)


Lesenswert?

Wir hatten vor einiger Zeit dasselbe Problem. Es braucht einen AXIS-FIFO 
mit Berücksichtigung des Ready vom Verbraucher. Der muss auch 
gepipelined werden.

Was anderes:

Du bist seit 2007 angemeldet, hast aber nur 4 Beiträge geschrieben?

von Markus W. (mwww)


Lesenswert?

M. T. schrieb:
> Wir hatten vor einiger Zeit dasselbe Problem. Es braucht einen AXIS-FIFO
> mit Berücksichtigung des Ready vom Verbraucher. Der muss auch
> gepipelined werden.

Das hört sich so an, als habt ihr es letztendlich nicht mit dem 
xpm-template gelöst. Ich habe eine externen Pipeline mit und ohne 
gepipelinetes tready versucht, macht keinen Unterschied, Vivado nimmt 
keinen URAM.

>
> Du bist seit 2007 angemeldet, hast aber nur 4 Beiträge geschrieben?

Seit man nur noch mit Login schreiben kann, nutze ich den Account 
wieder. Ansonsten habe ich die letzten Jahre ab und zu mal etwas als 
unangemeldeter Nutzer "VHDL hotline" geschrieben.

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.