entity top is
end top;

use std.textio.all;

architecture ARCH of TOP is

  type int_vector is array (integer range<>) of integer;
  function driver_counter( values : int_vector ) return integer is
    variable result : integer := 1;
    variable l: line;
  begin
    for index in values'range loop
      if values(index) /= 0 then
        result := result + values (index);
        write (l, integer'image(values(index)) & ",");
      end if;
    end loop;
    report l.all & " count resolved => " & integer'image(result);
    return result;
  end function;

  signal S1: driver_counter integer := 6;

begin
  s1 <= 1 after 1 ns;

  check: process
  begin
    assert s1 = 7 report "resolution function not called at init"
      severity failure;
    wait for 1 ns;
    assert s1 = 2 report "resolution function not called at 1 ns"
      severity failure;
    wait;
  end process;
end architecture;