library ieee; use ieee.std_logic_1164.all; entity ent4 is generic ( TUSER_WIDTH : natural := 1); end ent4; architecture ent of ent4 is type std_logic_array_t is array (natural range <>) of std_logic_vector; subtype tuser_array_t is std_logic_array_t(open)(TUSER_WIDTH - 1 downto 0); procedure write_data (constant tuser : tuser_array_t) is begin for i in tuser'range loop report integer'image(i) & " =>" & to_bstring(tuser(i)); end loop; assert tuser(1)(0) = '1'; -- <<<<<====== This should not fail end procedure; constant data2 : tuser_array_t(0 to 1) := (0 => "0", 1 => "1"); begin process begin write_data(data2); wait; end process; end ent;