^

AR# 52331 Does Vivado Synthesis support VHDL record type to model a memory and infer a Block RAM?

Vivado Synthesis does not support HDL code that uses VHDL record type to create a memory. In the process, it does not infer a Block RAM.

Here is an example of memory created using record type,

subtype DATA_TYPE is std_logic_Vector(DATA_WIDTH-1 downto 0);
type MEM_WORD is
record
data : DATA_TYPE;
end record MEM_WORD;

type MEM_DATA_ARRAY_TYPE is array (natural range <>) of MEM_WORD;

Vivado Synthesis does not infer a Block RAM in the above example as it does not support memory model created using VHDL record type.

This issue is tentatively scheduled to be fixed in Vivado's 2013.2 build release.

The workaround would be to modify the HDL to avoid using a record type. Here is an example,

subtype DATA_TYPE is std_logic_Vector(DATA_WIDTH-1 downto 0);
type MEM_DATA_ARRAY_TYPE is array (natural range <>) of DATA_TYPE;

AR# 52331
Date Created 10/10/2012
Last Updated 10/10/2012
Status Active
Type General Article
Tools
  • Vivado
Feed Back