verilog: add sv_maps iterators
[ghdl-vlg.git] / testsuite / synth / slice01 / slice02.vhdl
blob661c7aa164008f994708e64ac2e5afdf55172472
1 library ieee;
2 use ieee.std_logic_1164.all;
4 entity slice02 is
5   generic (w: natural := 4);
6   port (clk : std_logic;
7         dat : std_logic_vector (7 downto 0);
8         mask : std_logic_vector (1 downto 0);
9         res : out std_logic_vector (7 downto 0));
10 end slice02;
12 architecture behav of slice02 is
13 begin
14   process(clk)
15     variable hi, lo : natural;
16   begin
17     if rising_edge (clk) then
18       res <= (others => '0');
19       for i in mask'range loop
20         if mask (i) = '1' then
21           lo := i * 4;
22           hi := lo + 3;
23           res (hi downto lo) <= dat (hi downto lo);
24         end if;
25       end loop;
26     end if;
27   end process;
28 end behav;