stimuli_proc : process

 file F : text;
 variable L: line;
 variable status : file_open_status;
 variable data : integer;
 variable nb_samples : natural := 0;
begin

  report "n (window size) = " & integer'image(n);
  report "sample_width    = " & integer'image(sample_width);
  report "output_width    = " & integer'image(output_width);

  FILE_OPEN(status,F,"samples.txt",read_mode);
  if status/=open_ok then
    report "problem to open stimulus file samples.text" severity error;
  else
    sample <= to_signed(0,sample_width);
    sample_valid <= '0';
    wait until reset_n='1';
    report "size of moving average : " & integer'image(n);
    report "starting samples...";
    while not(ENDFILE(f)) loop
      nb_samples:=nb_samples+1;
      wait until rising_edge(clk);
      readline(F,l);
      read(l,data);
      sample <= to_signed(data,sample_width);
      sample_valid <= '1';
    end loop;
    sample_valid <= '0';
    report "end of simulation";
    report integer'image(nb_samples) & " samples processed.";
  end if;
  running <= false;
  wait;
end process;