Невозможно открыть файл в режиме 'r' - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь читать из текстового файла в моем коде синтеза. Тем не менее, я получаю сообщение об ошибке при попытке открыть файл, который существует.

Я попытался поместить текстовый файл в разные папки, потому что решил, что проблема в том, что программа не может найти текстовый файл. Ни одна из этих разных позиций не сработала.

type chunk is array (INPUTNUM downto 0) of std_logic_vector (WIDTH-1 downto 0);

       impure function ReadfromFile (FileName: in string) return chunk is
           FILE IN_FILE : text open read_mode is FileName;
           variable BUFF : line;
           variable val : chunk;
       begin
           for i in 0 to INPUTNUM loop
               readline (IN_FILE, BUFF);
               read (BUFF, val(i));
           end loop;
       return val;
       end function;

signal w : chunk  := ReadfromFile("neuron_text.txt");

Я ожидал, что файл будет прочитан, а значения будут сохранены в сигнале w. Однако, когда я запускаю анализ RTL, я получаю сообщение об ошибке: «[Synth 8-3302] не удается открыть файл 'neuron_text.txt' в режиме 'r'», а также «[Synth 8-421] не соответствует размеру массива в rhs и LHS присвоения ". Я предполагаю, что вторая ошибка является результатом первой.

1 Ответ

0 голосов
/ 27 июня 2019

Vivado работает на четыре, пять или шесть уровней иерархии ниже, чем вы думаете (в зависимости от используемой версии).Попробуйте:

signal w : chunk  := ReadfromFile("../../../../neuron_text.txt");

или

signal w : chunk  := ReadfromFile("../../../../../neuron_text.txt");

или даже

signal w : chunk  := ReadfromFile("../../../../../../neuron_text.txt");

Если это все еще не работает, попробуйте открыть файл для записи, увидев, где онсоздает и использует эту информацию в ваших интересах.

...