architecture Behavioral of INST_CACHE is
subtype word is std_logic_vector(63 downto 0);
type storage_array is array (0 to 2*16 - 1) of word;
--type storage_array is array (0 to 2**10 - 1) of STD_LOGIC_VECTOR (DATA_WIDTH - 1 downto 0);
signal InstCacheOut1_t : STD_LOGIC_VECTOR (DATA_WIDTH - 1 downto 0); -- data output line 1
signal InstCacheOut2_t : STD_LOGIC_VECTOR (DATA_WIDTH - 1 downto 0); -- data output line 2
type load_file_type is file of word;
file load_file : text open read_mode is "D:\instcachecontent.txt";
shared variable storage : storage_array;
begin
clk_part : process (CLK, RST)
variable index : natural;
variable rdline : line;
variable char : STD_LOGIC_VECTOR (7 downto 0);
begin
if (RST = '1') then
-- load ROM contents from load_file
index := 0;
readline(load_file, rdline);
while not endfile(load_file) loop
readline(load_file, rdline);
hread(rdline, storage(index)(63 downto 32));
read(rdline, char);
read(rdline, storage(index)(31 downto 0));
index := index + 1;
end loop;
elsif (clk'event and clk = '1') then
InstCacheOut1 <= InstCacheOut1_t;
InstCacheOut2 <= InstCacheOut2_t;
end if;
end process;
end Behavioral;
Arriba está mi diseño de arquitectura. Se supone que no debo sintetizarlo, solo simularlo en ModelSim.
Sin embargo, durante la ejecución, recibo este error:
Fatal: (vsim-3551) TEXTIO: Lee el final del archivo "D: \ instcachecontent.txt".
la línea en la que se informa el error es (antes del bucle)
readline(load_file, rdline);
Este es el contenido del archivo:
00000010
00000010 01111000000000100000000000000001
00000011 01111000000000000001000000000000
00000012 10100000000001000000000000000000
00000013 00001000100001000001000000000000
00000014 11010111111111111111111111111110
00000015 10101000000001000000000000000000
00000016 11111000000000000000000000000000
Cualquier ayuda sería apreciada, ya que no sé cómo se puede leer más allá del final del archivo en la primera línea.