VHDL - Vivado - Vivado 模拟器检索旧文件而不是新生成的文件

VHDL - Vivado - Vivado Simulator retrieve old file instead of the newly generated one

我正在vivado 2020.2中构建一个vhdl项目

我的工作目录位于 O.S 的本地桌面。它具有以下结构:

script\
    datasets\
        gentestdata.py
        testdata\
            test_data.txt
src\
  <<source files here>>
tst\
  <<testbenches here>>
vivado\
  <<project directory here>>

我有以下不纯的函数来从脚本生成的文件中加载数据 test_data.txt :

impure function gen_datain(dataset_path: in string) return datain_type is

file text_header: text is in dataset_path;
variable text_line: line;
variable line_i: bit_vector(0 to neuron_rom_width-1);
variable dataset_content: datain_type;

begin
for i in dataset_content'range loop
    if i = 101 then
        readline(text_header, text_line);
        read(text_line, line_i);
    else
        readline(text_header, text_line);
        read(text_line, line_i);
    end if;
    dataset_content(i) := makesfixed(line_i);
end loop;
file_close(text_header);
return dataset_content;
end function;

文件 test_data.txt 由 Python 脚本 gentestdata.py 自动生成。每次我 运行 这个脚本 test_data.txt 的内容都会改变,在 vivado 环境中加载的数据也会改变,但不知何故,即使旧版本的 test_data.txt 已被替换较新的,模拟器仍然加载旧数据。我该如何解决此问题。我试图关闭 vivado 并重新启动 O.S.

我的问题是,您知道这种行为的原因吗?如何纠正?

谢谢大家

向 GUI 项目添加文件时,Vivado 允许用户 'Copy file to project';对副本说不。涉及一个复选框或单选按钮。 Vivado 将尝试将自己的本地副本埋在其层次结构的某处。 Vivado 可以自由删除和 re-add 它自己的文件夹,如果您的文件是其中的一部分,它可能会变得混乱。

您可能需要重新开始一个新的 Gui 项目,以使该项目处于不修改您的文件的状态。

最终的解决方案是在没有 GUI 的情况下以 non-project 模式使用 Vivado。这在基于 Linux 的脚本驱动环境中比在 Windows 中效果更好。 non-project Vivado 不会弄乱您的文件。
参见:
https://docs.xilinx.com/r/en-US/ug892-vivado-design-flows-overview
有关 trade-offs 项目和 non-project 构建工作流程的更多信息。