Forum: FPGA, VHDL & Co. Array soll Slices anstatt Block-RAM benutzen


von Thomas W. (donka)


Lesenswert?

Hallo zusammen,

Ich habe eine kleine Tabelle als Array innerhalb einer Funktion 
erstellt. Soll in einen Lattice ECP2 implementiert werden. Leider will 
Diamond da immer Block-RAM dafür benutzen (deshalb Abbruch beim Mapping) 
Synthese erfolgte mit Synplify Pro.

Ich möchte das aber als Logik implementiert haben, da keine Block-RAM 
Resourcen mehr zur Verfügung stehen. Die Benutzung des syn_ramstyle 
attributes brachte nicht den gewünschten Erfolg. Was gibt es noch für 
Möglichkeiten?

danke

von Joe (Gast)


Lesenswert?

Was genau machst du mit dieser Tabelle? Ist es ein Register-Satz mit 
Reset?
Zeig doch mal die Beschreibung.

von Thomas W. (donka)


Lesenswert?

Im Prinzip sieht die ganze Beschreibung wie folgt aus:

type t_u8tab is array(natural range <>) of integer range 0 to 255;

function func (
  din : unsigned(7 downto 0)
) return unsigned is
  constant tab  : t_u8tab(0 to 255) := (10,23,42 ...); -- 256 Werte
  variable dout : unsigned(7 downto 0);
begin
  dout := to_unsigned(tab(to_integer(din)),8);
  return dout;
end func;

...

signal s_in, s_out : unsigned(7 downto 0);
attribute syn_ramstyle : string;
attribute syn_ramstyle of s_out  : signal is "registers";

...
process begin
  wait until clk = '1';
  s_out <= func(s_in);
...

von Christian R. (supachris)


Lesenswert?

Liegt vielleicht dann am getaktetem Auslesen. Wenn man bei Xilinx das 
Lesen taktet, kommt ein BlockRAM raus, ungetaktet ein Distributed RAM.

von Lattice User (Gast)


Lesenswert?

Man kann mit dem syn_ramstyle Attribute beeinflussen was Synplfy macht
1
attribute syn_ramstyle : string;
2
attribute syn_ramstyle of t_u8tab : signal is "registers";

andere Werte als registers siehe die Synplifyhilfe.

von Thomas W. (donka)


Lesenswert?

Lattice User schrieb:
> Man kann mit dem syn_ramstyle Attribute beeinflussen was Synplfy macht
>
>
1
> attribute syn_ramstyle : string;
2
> attribute syn_ramstyle of t_u8tab : signal is "registers";
3
>
>
> andere Werte als registers siehe die Synplifyhilfe.

Auf types ist das attribute nicht anwendbar. Geht nur mit signals oder 
instance names.

von Lattice User (Gast)


Lesenswert?

Thomas Wendt schrieb:
> Auf types ist das attribute nicht anwendbar. Geht nur mit signals oder
> instance names.

Ich hatte übersehen dass du syn_ramstyle schon probiert hattest.

Deine Beschreibung ist kein RAM sondern ein ROM. Versuchs mal mit 
syn_romstyle.

von Thomas W. (donka)


Lesenswert?

Lattice User schrieb:
> Thomas Wendt schrieb:
>> Auf types ist das attribute nicht anwendbar. Geht nur mit signals oder
>> instance names.
>
> Ich hatte übersehen dass du syn_ramstyle schon probiert hattest.
>
> Deine Beschreibung ist kein RAM sondern ein ROM. Versuchs mal mit
> syn_romstyle.

Da wäre ich im Leben nicht drauf gekommen, dass es dafür noch ein extra 
attribute gibt. Damit geht es jetzt.

Danke

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.