Reply To: Using VCs without the built-in Scripts – but instead VUnit

Why OSVVM™? Forums OSVVM Using VCs without the built-in Scripts – but instead VUnit Reply To: Using VCs without the built-in Scripts – but instead VUnit

#2855
Veit
Member

Hi all,
I’m a rooky regarding OSVVM.

But now my marriage of OSVVM and VUNIT for the AXI testsuite seems to run (2 TCs fails currently, and I need a deeper invest). But i needed some changes.

Vunit runs all TCs in a single step, so I needed to install all TestCases parallel.

A one-hot from the vunit testbench (the runner process) selects the OSVVM TC. So I needed to adapt the TestCases by a wait until statement in every process:
wait until i_tc_select;
This makes the TC only active, if selected.

Every TC is connected to an array of e.g.
ManagerRec => ManagerRecArray(t_testcase'pos(tc_AlertLogIDManager)),
A multiplexer selects then the used ManagerRec / SubordinateRec to the DUT.
For me as rooky was the biggest issue to find out, which members of the records goes in, which out (A module which connects a AddressBusRecType to a AddressBusRecArrayType with a selector – I didn’t find).

In the Testcases I send the number of Errors out
o_error_count <= EndOfTestReports(...);
and performed the check in the VUNIT:
check(s_error_count = 0, "OSVVM reports errors");
The regular stop in the TC must be commented/removed:
-- std.env.stop ;
The stop cause VUNIT to report a “fail”. (This makes the stops in the Alert package VUINT running correctly).

Summary:
I used the Testbech from VUNIT connecting the TCs from OSVVM: