blob: cca04c8662c0fc246c55155b4ae7f522ce887e3e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
library IEEE;
use IEEE.std_logic_1164.all;
entity bug2 is
port(
clk : in std_ulogic
);
end entity;
architecture rtl of bug2 is
type table_t is array (natural range<>, natural range<>) of integer;
function fun1(table : table_t) return integer is
constant len : natural := table'length(2);
begin
return len;
end function;
function fun2(table : table_t) return integer is
variable tmp : natural;
begin
tmp := 0;
for i in table'range(2) loop
tmp := tmp+1;
end loop;
return tmp;
end function;
constant table : table_t(0 to 15, 0 to 31) := (others => (others => 0));
constant l1 : natural := fun1(table);
constant l2 : natural := fun2(table);
begin
assert table'right(2) = 15; -- Wrong
end architecture;
|