Hi Marius,
I agree with you wrt your statement of ‘overcompicating the test by having 1 testbench and multiple test harnesses’…
However, this is what my team asked me to do after a review meeting ie use 1 testbench and multiple test harnesses to verify the whole FPGA. So related DUT interfaces will be instantiated within one test harness together with their VVCs. My choice was to use multiple testbenches but this method was not agreed to use.
The Test sequencer I use is a process within the testbench and VVC commands are issued as follows eg
:::
log(ID_SEQUENCER, “Pulse the ClockCycleCounter in_reset for 10 clock periods”, C_SCOPE)
counter_reset(CLOCKCYCLECOUNTER_VVCT, 1, 10, “Reset counter value”);
await_completion(CLOCKCYCLECOUNTER_VVCT, 1, 11*C_CLK_PERIOD, “Await completion”);
counter_check(1, “1st counter check”, x"0000", out_counter(0), in_clock, ErrCnt, TotalPass, TotalCnt, C_SCOPE);
::
log(ID_SEQUENCER, “Pulse the checkStable in_reset for 10 clock periods”, C_SCOPE);
checkStable_reset(CHECKSTABLE_VVCT, 1, 10, “Reset checkStable module”);
await_completion(CHECKSTABLE_VVCT, 1, 11*C_CLK_PERIOD, “Await completion”);
log(ID_SEQUENCER, “Check the checkStable out_bus value right after reset”, C_SCOPE);
checkStable_check(1, “1st checkStable check - Check out_bus right after reset”, ‘0’, out_bus, in_clk, ErrCnt, TotalPass, TotalCnt, C_SCOPE);
:::
– Other VVC commands follow in a similar way as above
:::
So from the above each VVC command is wait to be completed before a new command is send or check the response from the DUT.
So they are executed in the same order as they were written in the test sequencer and not concurrently. Isn’t this the case here?
& if we like then for the separate test harnesses the VVC commands to be concurrent, 2 separate Test Sequential processes must be included within the 1 testbench (executing separately their VVC commands) wrt this example. Do you agree here?
Kind regards,
Kevin