Welche Resource braucht "read only memory"

#5414113
Lesenswert?

1
sCcodeMemAddressWidth=12
2
sCdataMemAddressWidth=10
3

4
reg [40-1:0] sCcodeMem [0:(1 << sCcodeMemAddressWidth)-1] ;
5
reg [32-1:0] sCdataMem [0:(1 << sCdataMemAddressWidth)-1] ;
6
reg [32-1:0] sCdataMem2 [0:(1 << sCdataMemAddressWidth)-1] ;
7

8
$readmemh("CodeMem.txt",sCcodeMem) ;
9
$readmemh("DataMem.txt",sCdataMem2) ;

Ich habe in einem Verilog design 3 Speicher wie oben angegeben.
Speicher sCcodeMem und sCdataMem2 werden nur gelesen und per readmemh 
initialisiert.

Wenn ich das Design synthetisiere werden nur 32768 Bits an RAM benötigt.
Die beiden "read only" Speicher tauchen scheinbar nicht auf. Wie wird 
das synthetisiert?
Gast #5414143
Lesenswert?

Martin O. schrieb:
> Wenn das auf ein Ram gemapped wird, sollte ich das eigentlich an den
> verbrauchten Resourcen sehen können oder?

Ja, aber nur wenn du das ROM in deinem Design auch verwendest. Nur das 
Deklarieren des Speichers reicht da nicht, die Synthese optimiert das 
einfach weg wenn du Adresseingang und Datenausgang nicht sinnvoll 
angeschlossen hast. Oder das ROM wird automatisch verkleinert wenn du 
nur einen Teil des Adressbereiches oder z.B.nur 8 Bits der 32 Datenbits 
verbunden hast.
Gast #5414255
Lesenswert?

Martin O. schrieb:
> Ich verwende das ROM tatsächlich, es liefert auch die richtigen Werte.
> Trotzdem find ichs bei den gebrauchten Resourcen nicht.

Die Daten müssen nicht unbedingt in einem Block-RAM abgelegt sein, sie 
können auch per distributed RAM (d.h. in der LUTs) gespeichert sein. 
Dort fallen sie dir als "Extra" Ressource vielleicht einfach nicht auf.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren