我正在尝试从综合代码中的文本文件中读取内容。但是,当我尝试打开一个确实存在的文件时出现错误。
我已尝试将文本文件放在各个文件夹中,因为我发现问题是程序无法找到该文本文件。这些不同的职位都没有起作用。
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中不匹配的数组大小和任务分配”。我认为第二个错误是第一个错误的结果。
答案 0 :(得分:0)
Vivado运行的层次结构比您想象的要低四个,五个或六个层次(取决于您所运行的版本)。试试:
Q
或
J
甚至
signal w : chunk := ReadfromFile("../../../../neuron_text.txt");
如果仍然无法解决问题,请尝试打开文件进行写入,查看文件的创建位置,并利用该信息为您带来好处。