diff options
Diffstat (limited to 'testsuite/synth/issue1163/bug2.vhdl')
-rw-r--r-- | testsuite/synth/issue1163/bug2.vhdl | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/testsuite/synth/issue1163/bug2.vhdl b/testsuite/synth/issue1163/bug2.vhdl new file mode 100644 index 000000000..d355fbed6 --- /dev/null +++ b/testsuite/synth/issue1163/bug2.vhdl @@ -0,0 +1,41 @@ +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity bug2 is + generic( + W : positive := 4; + N : positive := 4 + ); + port( + clk : in std_ulogic; + reset_n : in std_ulogic; + o : out std_ulogic + ); +end bug2; + +architecture behav of bug2 is + type queue_info_t is record + dummy : integer range 0 to W-1; + strb : std_ulogic_vector(W-1 downto 0); + end record; + + type queues_t is array (0 to N-1) of queue_info_t; + signal queues : queues_t; +begin + + process(clk, reset_n) + variable index : integer range 0 to N-1; + begin + if reset_n = '0' then + index := 0; + elsif rising_edge(clk) then + for i in 0 to W-1 loop + queues(index).strb(i) <= '0'; + end loop; + index := (index + 1) mod N; + end if; + end process; + + o <= queues (0).strb (0); +end architecture; |