verilog: add sv_maps iterators
[ghdl-vlg.git] / testsuite / synth / slice01 / slice05.vhdl
blobff5b2e1f5bc3e02bc0a3e2da2b83b42264b8dfdf
1 library ieee;
2 use ieee.std_logic_1164.all;
3 use ieee.numeric_std.all;
5 entity slice05 is
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;
12 architecture behav of slice05 is
13   subtype nul_t is natural range 0 to 0;
14   signal z : nul_t;
16   procedure wr(d : inout std_logic_vector(7 downto 0);
17                v : std_logic_vector(7 downto 0);
18                p : nul_t) is
19   begin
20     d (p*3 + 7 downto p*3) := v;
21   end wr;
22 begin
23   z <= to_integer(unsigned(mask));
25   process(clk)
26     variable mem : std_logic_vector (7 downto 0);
27   begin
28     if rising_edge (clk) then
29       wr (mem, dat, z + 0);
30       res <= mem;
31     end if;
32   end process;
33 end behav;