Hallo - lese eine stimuli datei mit while not endfile(...) ein. Die Datei soll dann nochmals vollständig eingelesen werden. Allerderdings weiss ich nicht, wie ich die loop variable wieder auf 0 setzen muss, denn sie wird ja ledglich so aufgerufen: while not endfile(testfile) loop readline(testfile_2, testfile_l); read(testfile_l, testfile_s); ADDR <= to_std_logic_vector(testfile_s(32 downto 19)); DI <= to_std_logic_vector(testfile_s(18 downto 3)); RN <= to_std_logic(testfile_s(2)); STB <= to_std_logic(testfile_s(1)); wait until rising_edge(SYSCLK); end loop; Wäre über Hilfe dankbar, Kasper
Hallo Läubi - Danke für die Antwort! Und wie mache ich das? Das file wird ja vor dem stimuli process geöffnet.. Kasper
nein.. hier ein auszug entity top_p_tb is generic ( log_file : string := "res.log"; test_file_1 : string := "ramfile_1.txt"; ); end top_p_tb; architecture behavior of top_p_tb is file logfile_top_p : text open write_mode is log_file; file testfile_1 : text open read_mode is ram_file_1; -- Component Declaration for the Unit Under Test (UUT) component top_p port( .. .. .. .. -- Stimulus process stim_proc : process variable ramfile_l : line; variable ramfile_s : string(32 downto 1); begin -------------------------------------------------------------------- -- RESET -------------------------------------------------------------------- wait for 100 ns; RESETN <= '0'; wait until rising_edge(SYSCLK); RESETN <= '1'; wait until rising_edge(SYSCLK); wait for 100 ns; wait until rising_edge(SYSCLK); while not endfile(testfile) loop readline(testfile_2, testfile_l); read(testfile_l, testfile_s); ADDR <= to_std_logic_vector(testfile_s(32 downto 19)); DI <= to_std_logic_vector(testfile_s(18 downto 3)); RN <= to_std_logic(testfile_s(2)); STB <= to_std_logic(testfile_s(1)); wait until rising_edge(SYSCLK); end loop; .. .. while not endfile(testfile) loop readline(testfile_2, testfile_l); read(testfile_l, testfile_s); ADDR <= to_std_logic_vector(testfile_s(32 downto 19)); DI <= to_std_logic_vector(testfile_s(18 downto 3)); RN <= to_std_logic(testfile_s(2)); STB <= to_std_logic(testfile_s(1)); wait until rising_edge(SYSCLK); end loop; end process compare_datain; end;
Da haben wir es doch:
1 | file logfile_top_p : text open write_mode is log_file; |
2 | file testfile_1 : text open read_mode is ram_file_1; |
Da öffnest du die Dateien, ggf. mußt mal sehen wie man ne Datei schliesst dann solltest du sie neu öffnen können.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.