diff options
Diffstat (limited to 'testsuite/gna/issue2417/repro6.vhdl')
-rw-r--r-- | testsuite/gna/issue2417/repro6.vhdl | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/testsuite/gna/issue2417/repro6.vhdl b/testsuite/gna/issue2417/repro6.vhdl new file mode 100644 index 000000000..ea5efce03 --- /dev/null +++ b/testsuite/gna/issue2417/repro6.vhdl @@ -0,0 +1,56 @@ +package repro6_pkg is + type bit_vec_vec is array (natural range <>) of bit_vector; + +end repro6_pkg; + +use work.repro6_pkg.all; + +entity repro6_sub is + port (i : bit_vec_vec(1 downto 0); + o : out bit_vec_vec(1 downto 0)); +end; + +architecture behav of repro6_sub is +begin + process (i) + begin + for j in i'range loop + o(j) <= not i(j); + end loop; + end process; +end behav; + +use work.repro6_pkg.all; + +entity repro6 is +end; + +architecture behav of repro6 is + signal s1i, s1o, s2i, s2o : bit_vec_vec(1 downto 0)(3 downto 0); +begin + inst1 : entity work.repro6_sub + port map (i => s1i, o => s1o); + inst2 : entity work.repro6_sub + port map (i => s2i, o => s2o); + + process + begin + s1i (0) <= x"3"; + s1i (1) <= x"c"; + s2i (0) <= x"1"; + s2i (1) <= x"d"; + wait for 1 ns; + assert s1o(0) = x"c" and s1o(1) = x"3" severity failure; + assert s2o(0) = x"e" and s2o(1) = x"2" severity failure; + + s1i (0) <= x"4"; + s1i (1) <= x"a"; + s2i (0) <= x"5"; + s2i (1) <= x"6"; + wait for 1 ns; + assert s1o(0) = x"b" and s1o(1) = x"5" severity failure; + assert s2o(0) = x"a" and s2o(1) = x"9" severity failure; + + wait; + end process; +end; |