library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity vai_fifo is generic ( Formal : boolean := true; Depth : positive := 16; Width : positive := 16 ); port ( Reset_n_i : in std_logic; Clk_i : in std_logic; -- write Valid_i : in std_logic; Accept_o : out std_logic; Din_i : in std_logic_vector(Width-1 downto 0); -- read Valid_o : out std_logic; Accept_i : in std_logic; Dout_o : out std_logic_vector(Width-1 downto 0) ); end entity vai_fifo; architecture rtl of vai_fifo is signal s_wen : std_logic; signal s_ren : std_logic; signal s_full : std_logic; signal s_empty : std_logic; begin i_fifo : entity work.fifo generic map ( Formal => Formal, Depth => Depth, Width => Width ) port map ( Reset_n_i => Reset_n_i, Clk_i => Clk_i, -- write Wen_i => s_wen, Din_i => Din_i, Full_o => s_full, Werror_o => open, -- read Ren_i => s_ren, Dout_o => Dout_o, Empty_o => s_empty, Rerror_o => open ); s_wen <= Valid_i and not s_full; s_ren <= Accept_i and not s_empty; Accept_o <= not s_full; Valid_o <= not s_empty; FormalG : if Formal generate default clock is rising_edge(Clk_i); -- Initial reset RESTRICT_RESET : restrict {not Reset_n_i[*3]; Reset_n_i[+]}[*1]; -- Inputs are low during reset for simplicity ASSUME_INPUTS_DURING_RESET : assume always not Reset_n_i -> not Valid_i and not Accept_i; end generate FormalG; end architecture rtl;