verilog: add sv_maps iterators
[ghdl-vlg.git] / testsuite / synth / sns01 / tb_shrs.vhdl
blob1901ec3f28ce44e56ab940032758abc92009d152
1 library ieee;
2 use ieee.std_logic_1164.all;
3 use ieee.std_logic_arith.all;
5 entity tb_shrs is
6 end;
8 architecture behav of tb_shrs is
9   type sl_map_type is array (std_ulogic) of character;
10   constant sl_map : sl_map_type := "UX01ZWLH-";
12   function to_string(v : std_logic_vector) return string
13   is
14     alias av : std_logic_vector(1 to v'length) is v;
15     variable res : string (1 to v'length);
16   begin
17     for i in res'range loop
18       res (i) := sl_map (av (i));
19     end loop;
20     return res;
21   end to_string;
23   signal li : integer := 0;
24   signal ri : integer := 0;
26   signal l3        : std_logic_vector (2 downto 0) := "000";
27   signal r4        : std_logic_vector (3 downto 0) := "0000";
28   signal shl_u3u4u : std_logic_vector (2 downto 0);
29   signal shl_s3u4s : std_logic_vector (2 downto 0);
30   signal shr_u3u4u : std_logic_vector (2 downto 0);
31   signal shr_s3u4s : std_logic_vector (2 downto 0);
32 begin
34   dut: entity work.shrs
35     port map (
36       l3        => l3,
37       r4        => r4,
38       shl_u3u4u => shl_u3u4u,
39       shl_s3u4s => shl_s3u4s,
40       shr_u3u4u => shr_u3u4u,
41       shr_s3u4s => shr_s3u4s);
43   process
44   begin
45     for i in -4 to 3 loop
46       li <= i;
47       l3 <= conv_std_logic_vector (i, 3);
48       for j in 0 to 5 loop
49         r4 <= conv_std_logic_vector (j, 4);
50         ri <= j;
51         wait for 1 ns;
52         report "u3u4u: " & integer'image(i) & " shl " & integer'image(j) & " = "
53           & to_string(shl_u3u4u);
54         report "s3u4s: " & integer'image(i) & " shl " & integer'image(j) & " = "
55           & to_string(shl_s3u4s);
56         report "u3u4u: " & integer'image(i) & " shr " & integer'image(j) & " = "
57           & to_string(shr_u3u4u);
58         report "s3u4s: " & integer'image(i) & " shr " & integer'image(j) & " = "
59           & to_string(shr_s3u4s);
60       end loop;
61     end loop;
62     wait;
63   end process;
64 end behav;