Closed mkdev-0 closed 7 months ago
I encountered the same problem with a testbench. After some research in the VUnit code the problem seems to be the following:
In the run library, inside the test_runner_cleanup
procedure it attempts to enter the gate with the entry_gate
procedure.
But here is the following wait statement:
wait on runner until not entry_is_locked(runner_state, get_phase(runner_state)) for max_locked_time;
This constant max_locked_time
is defined in run_types.vhd with the value of 1 ms.
After I changed this value to a higher value (1 hr) the testbench behaves as expected.
This is the only occurrence of this constant and there is no function to modify or mention of this anywhere.
So I think this needs to be added to the documentation (https://vunit.github.io/blog/2023_04_01_vunit_phases.html#phase-gate-locks) and also there should be a method to change/disable this default value. After all, thats what test_runner_watchdog
is for, or am I wrong?
This feels like some relic from the past and I can't even remember why it's there. Probably because the watchdog wasn't present in early non-open source versions of VUnit. I think I will simply remove the timeout.
The simulation completes after 1ms. Logging with trace messages shows that _test_runnercleanup passes the entry gate after 1ms without a lock being released. It works as expected if the delay is lower than 1ms.
run.py
tb_test.vhd
log when running
python run.py -v
vunit-hdl 4.7.0 Python 3.11.6 archlinux