UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 64021

Vivado Synthesis - RAM not inferred when "wait until" is used for clock

Description

When I use the following HDL to describe a RAM, the code does not infer any RAM in Vivado, but instead only infers registers:

    G1: for i in D'range generate
        process
        begin
        wait until CLK = '1';
            if (CEN = '0')  then
                if  (GWEN = '0') and (WEN(i) = '0') then
                    mem(to_integer(unsigned(A)))(i) <= D(i);
                end if;
                Q(i) <= mem(to_integer(unsigned(A)))(i);
            end if;
        end process;
    end generate;

Solution

The "wait until" statement is not supported for RAM inference.

Use the following statement instead:

if rising_edge(CLK)
or
if (CLK'event and CLK = '1')
AR# 64021
Date Created 03/24/2015
Last Updated 04/08/2015
Status Active
Type Known Issues
Tools
  • Vivado Design Suite