library ieee; use ieee.std_logic_1164.all; entity bug2 is end; architecture this of bug2 is function f return integer is constant cc1: std_logic_vector := "1100"; constant cc2: std_logic_vector := cc1; variable r: std_logic_vector(3 downto 0); begin assert false report "case2-a: "&integer'image(cc1'length) severity note; assert false report "case2-b: "&integer'image(cc2'length) severity note;--This reports "0". Correct one would be "4"! return 0; end; constant c1: std_logic_vector := "1010"; constant c2: std_logic_vector := c1; signal i: integer; begin process begin assert false report "case1-a: "&integer'image(c1'length) severity note; assert false report "case1-b: "&integer'image(c2'length) severity note; i <= f; wait; end process; end;