VUnit / vunit

VUnit is a unit testing framework for VHDL/SystemVerilog
http://vunit.github.io/
Other
742 stars 263 forks source link

How to specify test case(s) to run after creating a VUnit instance? #1010

Open cjmeyer opened 6 months ago

cjmeyer commented 6 months ago

Is there a way to create the VUnit object and then specify the test case(s) to run? What I would like to do is create an instance of VUnit , call add_library(), add_source_files(), etc, and then specify the test case(s) I would like to run just before, or when, I call main(). It would maybe look something like:

vu = VUnit.from_args( ... )
vu.add_vhdl_builtins()

lib = vu.add_library('my_lib')
lib.add_sources(['src/*.vhd', 'tb/*.vhd'])

vu.main('my_lib.my_module.test_1')

My use case is using composable pytest fixtures to configure an instance of VUnit and then in the test case call main() (or equivalent) on the VUnit instance to actually build and run the simulation. One pytest fixture would create the base VUnit instance, and then successive fixtures would create libraries, add sources, set generics, etc, until the main test function called main().

LarsAsplund commented 5 months ago

What you can do is to modify the arguments in the script. https://vunit.github.io/py/ui.html#adding-custom-command-line-arguments explains how to add custom arguments and in that process the arguments are exposed such that you can modify them before creating the VUnit instance. You can use that approach but skipping the step where you actually add a custom argument

LarsAsplund commented 4 months ago

@cjmeyer Did that answer your question, i.e. can this issue be closed?