无法以“ r”模式打开文件

时间:2019-06-26 16:15:33

标签: vhdl vivado

我正在尝试从综合代码中的文本文件中读取内容。但是,当我尝试打开一个确实存在的文件时出现错误。

我已尝试将文本文件放在各个文件夹中,因为我发现问题是程序无法找到该文本文件。这些不同的职位都没有起作用。

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]无法在'r'模式下打开文件'neuron_text.txt'”以及“ [Synth 8-421]在rhs中不匹配的数组大小和任务分配”。我认为第二个错误是第一个错误的结果。

1 个答案:

答案 0 :(得分:0)

Vivado运行的层次结构比您想象的要低四个,五个或六个层次(取决于您所运行的版本)。试试:

Q

J

甚至

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

如果仍然无法解决问题,请尝试打开文件进行写入,查看文件的创建位置,并利用该信息为您带来好处。