Thanks for your answers.
Here is the version of my code which works in Modelsim but not in Quartus. In Quartus, the Ram is not infered.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.ALL;
ENTITY ram512x36 IS
PORT
(
address_a : IN STD_LOGIC_VECTOR (8 DOWNTO 0);
address_b : IN STD_LOGIC_VECTOR (8 DOWNTO 0);
clock : IN STD_LOGIC ;
data_a : IN STD_LOGIC_VECTOR (35 DOWNTO 0);
data_b : IN STD_LOGIC_VECTOR (35 DOWNTO 0);
wren_a : IN STD_LOGIC:='1' ;
wren_b : IN STD_LOGIC:='1' ;
q_a : OUT STD_LOGIC_VECTOR (35 DOWNTO 0):="000000000000000000000000000000000000";
q_b : OUT STD_LOGIC_VECTOR (35 DOWNTO 0):="000000000000000000000000000000000000"
);
END ram512x36;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.ALL;
ARCHITECTURE SYN OF ram512x36 IS
Type mem_tram_type is array (0 to 511) of std_logic_vector(35 downto 0);
signal dpram_mem_trame : mem_tram_type:=(others => (others =>'0'));
attribute block_ram : boolean;
attribute block_ram of dpram_mem_trame : signal is true;
signal w_q_a : STD_LOGIC_VECTOR (35 DOWNTO 0):="000000000000000000000000000000000000";
signal w_q_b : STD_LOGIC_VECTOR (35 DOWNTO 0):="000000000000000000000000000000000000";
begin
------------------------------------------------------------------------
-----------------------------------
process(clock)
-----------------------------------
begin
if clock'event and clock='1' then
if wren_a='1' then
q_a <= dpram_mem_trame(conv_integer(unsigned(address_a))) ;
dpram_mem_trame(conv_integer(unsigned(address_a))) <= data_a;
else
q_a <= dpram_mem_trame(conv_integer(unsigned(address_a))) ;
end if;
if wren_b='1' then
q_b <= dpram_mem_trame(conv_integer(unsigned(address_b))) ;
dpram_mem_trame(conv_integer(unsigned(address_b))) <= data_b;
else
q_b <= dpram_mem_trame(conv_integer(unsigned(address_b))) ;
end if;
end if;
-----------------------------------
end process;
-----------------------------------
END SYN;
I do not want to use megawizard functions.
Even if it does not work on modelsim, but is ok on quartus, it is what I want. I just want it to work on the board.
I 'm going to check if I have U or X. Yes I am using a testbench etc...