运行 VUnit 中具有不同参数文件的相同测试平台

Run same testbench with different parameter files in VUnit

我有一个结构如下的项目:

tb_top
├── run.py
└── src
    ├── tb_top.vhd
    ├── test_a
    │   ├── top_parameter.vhd
    │   ├── input.csv
    │   └── output.csv
    ├── test_b
    │   ├── top_parameter.vhd
    │   ├── input.csv
    │   └── output.csv
    └── ...
src
├── bar.vhd
├── foo.vhd
└── top.vhd

top.vhd包括每个测试用例的foo.vhdbar.vhd以及top_parameter.vhd。在 run.py 中,首先编译 src/ 文件夹中的文件,然后为每个测试用例编译 top_parameter.vhd。所有文件都在同一个库中。当运行 run.py 时显示如下错误:

tb_top/src/tb_top.vhd:44:20: entity "top" is obsoleted by package "top_parameter"
/usr/local/bin/ghdl: compilation error

显然,每次 top_parameter.vhd 重新编译时,top.vhd 都应该重新编译,但我不知道如何构建我的 run.py。有没有办法正确编译测试,没有:

  1. 为每个测试重新编译 foo.vhdbar.vhd
  2. 为每个测试复制相同的文件,例如 tb_top.vhdrun.py

我正在使用 VUnit 4.2.0 和当前的 ghdl 大师。如果需要,我可以准备一个MWE。

编译的库不能在 VUnit 中的测试运行之间更改。首选解决方案是将参数作为顶级泛型传递,而不是使用单独的文件。

但是,我不想更改文件结构。所以在我的例子中,top_parameter.vhd 和所有相关文件都被编译到每个测试用例的单独库中。为了选择正确的库,一个额外的泛型被传递到测试平台。

可以找到更多详细信息和其他选项 here