What is system verilog Testbench?

        System verilog Testbench is a collection of classes that generates input to the design and simulates the functionality given in the spec.

System verilog performs following activities:

      1. Validates design functionality.

      2. Generates stimuli.

      3. Drives stimulus required location.

      4. Compares expected and actual output.

      5. Identifies functionality errors.

      6. Helps in debugging the errors in design.

                                                                   fig: sv testbench architecture

The Testbench contains different classes of components.They are

Components Description
Interface Interface is a container of signals that is used between dut and testbench.
Transaction Transaction contains required signals that need to be driven from generator to driver and driver to interface and similarly collects the signals through monitor from interface.
Generator Generates required signals that need to send to dut
driver Driver drives the signals received from generator to dut with respective to clock if required.
Monitor Monitor receives the data from interface which driver sends and dut responds.
scoreboard Scoreboard compares the actual data and expected data
Environment Environment contains generator,driver monitor and scoreboard which performs the respective operations.
Testbench Top Top module contains testbench environment and tests are created and initiated in this top.