verilog: add sv_maps iterators
[ghdl-vlg.git] / testsuite / synth / issue1899 / issue1899.vhdl
blob9666a3f0ae050b5cde62e6013b4485615ca82684
1 library ieee;
2   use ieee.std_logic_1164.all;
4 entity sequencer is
5   generic (
6     seq : string
7   );
8   port (
9     clk  : in  std_logic;
10     data : out std_logic
11   );
12 end entity sequencer;
14 architecture rtl of sequencer is
16   signal index : natural := seq'low;
18   function to_bit (a : in character) return std_logic is
19     variable ret : std_logic;
20   begin
21     case a is
22       when '0' | '_' => ret := '0';
23       when '1' | '-' => ret := '1';
24       when others    => ret := 'X';
25     end case;
26     return ret;
27   end function to_bit;
29 begin
31   process (clk) is
32   begin
33     if rising_edge(clk) then
34       if (index < seq'high) then
35         index <= index + 1;
36       end if;
37     end if;
38   end process;
40   data <= to_bit(seq(index));
42 end architecture rtl;
45 library ieee;
46   use ieee.std_logic_1164.all;
47   use ieee.numeric_std.all;
49 entity issue is
50   port (
51     clk : in std_logic
52   );
53 end entity issue;
55 architecture psl of issue is
57   signal a, b : std_logic;
59 begin
61   --                              012345
62   SEQ_A : entity work.sequencer generic map ("--____") port map (clk, a);
63   SEQ_B : entity work.sequencer generic map ("_-____") port map (clk, b);
65 end architecture psl;
67 vunit issue_1899_vu0 {
68   
69   -- Using named sequences
70   sequence s_a (boolean a) is {a; a};
71   sequence s_b (boolean b) is {b};
75 vunit issue_1899_vu1 (issue(psl)) {
77   inherit issue_1899_vu0;
79   -- All is sensitive to rising edge of clk
80   default clock is rising_edge(clk);
82   SERE_0_a : assert always s_a(a) |-> s_b(b);