1

我有一个具有以下结构的项目:

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.vhd,bar.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.vhd每次重新编译时都应该重新top_parameter.vhd编译,但我不知道如何构建我的run.py. 有没有办法正确编译测试,没有:

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

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

4

1 回答 1

2

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

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

更多细节和其他选项可以在这里找到。

于 2019-11-28T17:52:36.307 回答