A tu proceso le faltó un begin
.
process
type my_file is file of integer;
file data_in : my_file;
variable fstatus : file_open_status;
begin
file_open(fstatus, data_in, "c:\temp2.mif", READ_MODE);
end process;
El identificador inesperado parece ser read
, donde se esperaba READ_MODE
.
No tiene que conectar la salida file_open_status
para el procedimiento file_open
, pero si no lo hace, ¿por qué lo declaró?
La forma del procedimiento declarado implícitamente file_open
(consulte IEEE Std 1076-2008, 5.5.2 Operaciones con archivos):
type FT is file of TM;
donde la marca de tipo TM denota un tipo escalar, un tipo de registro o un subtipo de matriz completamente restringido, lo siguiente
Las operaciones se declaran implícitamente inmediatamente después de la declaración del tipo de archivo:
...
procedure FILE_OPEN (Status: out FILE_OPEN_STATUS;
file F: FT;
External_Name: in STRING;
Open_Kind: in FILE_OPEN_KIND := READ_MODE);
Tenga en cuenta este proceso, ya que no hace nada interesante. Sin una lista de sensibilidad o una declaración de espera explícita, intentaría abrir el archivo para leerlo una y otra vez en un bucle sin fin.
La modificación del proceso permitirá al menos que se analice el código. Todavía necesita más trabajo.
Para el código que está mostrando, no se necesitan dos de las cláusulas de uso:
-- use ieee.std_logic_arith.all;
-- use ieee.std_logic_unsigned.all;