verilog: add sv_maps iterators
[ghdl-vlg.git] / testsuite / synth / issue1127 / foo2.vhdl
blobc6b3546941b8858fa607c678c515ceb9c19bc390
1 library ieee;
2 use ieee.std_logic_1164.all;
3 use ieee.numeric_std.all;
5 entity foo2 is
6   generic ( TDATA_WIDTH : integer := 8);
7   port (
8     clk        : in std_logic;
9     wr_field_0 : in std_logic_vector(TDATA_WIDTH - 1 downto 0);
10     wr_field_1 : in std_logic;
11     wr_en      : in std_logic;
13     rd_field_0 : out std_logic_vector(TDATA_WIDTH - 1 downto 0);
14     rd_field_1 : out std_logic
15   );
16 end foo2;
18 architecture foo of foo2 is
20   type data_array_t is array (3 downto 0) of std_logic_vector(TDATA_WIDTH downto 0);
21   signal data_buffer : data_array_t;
23   signal addr : unsigned(3 downto 0) := (others => '0');
25 begin
27   rd_field_0 <= data_buffer(to_integer(addr))(TDATA_WIDTH - 1 downto 0);
28   rd_field_1 <= data_buffer(to_integer(addr))(TDATA_WIDTH);
30   process(clk)
31   begin
32     if rising_edge(clk) then
33       addr <= addr + 1;
35       if wr_en = '1' then
36         data_buffer(to_integer(addr)) <= wr_field_0 & wr_field_1;
37       end if;
39     end if;
40   end process;
42 end foo;