Answers Database
Exemplar: How to initialize RAM or ROM in VHDL code
Record #4328
Product Family: Software
Product Line: Exemplar
Product Part: Exemplar
Problem Title:
Exemplar: How to initialize RAM or ROM in VHDL code
Problem Description:
Urgency: Standard
General Description:
I have either inferred or instantiated RAM or ROM in my HDL code. How can
I initialize the RAM/ROM contents to a known value so after programming the
part, the memory element will contain a predetermined value?
Solution 1:
An INIT attribute can be passed by the Exemplar Leonardo or Galileo synthesis
tool by putting an INIT string in the HDL code and attaching the attribute
to the instance name. Code similiar to the following can be attached to an
instance name such as myram. An example of an instantiate 16x1 RAM using
the INIT string follows:
-- Ram Initialization Example
library IEEE;
use IEEE.std_logic_1164.all;
entity init_ram is
port ( D, A3, A2, A1, A0, WE : in std_logic;
O : out std_logic);
end init_ram;
architecture behav of init_ram is
component ram16x1
port ( D, A3, A2, A1, A0, WE : in std_logic;
O : out std_logic);
end component;
attribute init: string;
attribute init of myram: label is "FF00";
begin
myram: ram16x1 port map (D => D,
A3 => A3,
A2 => A2,
A1 => A1,
A0 => A0,
WE => WE,
O => O);
end behav;
Note that after processing the design through the Xilinx tools that when
verifying the RAM/ROM contents in EPIC the INIT value may appear different
than what was originally given. The is possible since PAR is given the
availability to move the address lines for better routability, and because
of this the INIT value will change accordingly.
End of Record #4328 - Last Modified: 07/27/98 07:57 |