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