Verification process and Testbench
To check the functional correctness of the design, testbench is written. The verification process allows verification engineers in finding bugs, checking for RTL correctness based on the design specification. The first step in the verification process is to prepare a verification plan which is tightly coupled with the design specification that involves what all features need to be tested and techniques used to verify the design under test (DUT) such as scoreboard check planning, assertions, and functional coverage writing, etc. The testbench is a setup or environment that allows verification of DUT.
The testbench is responsible for
- Generating input stimulus
- Driving an input stimulus
- Monitor design activity at the output and input level.
- Compare output transaction correctness based on the driven input stimulus.
- Sampling function converges and assertion correctness.
- Testbench top
The transaction is a packet that is driven to the DUT or monitored by the monitor as a pin-level activity.
In simple terms, the transaction is a class that holds a structure that is used to communicate with DUT.
The generator creates or generates randomized transactions or stimuli and passes them to the driver.
The driver interacts with DUT. It receives randomized transactions from the generator and drives them to the driven as a pin level activity.
The monitor observes pin-level activity on the connected interface at the input and output of the design. This pin-level activity is converted into a transaction packet and sent to the scoreboard for checking purposes.
An agent is a container that holds the generator, driver, and monitor. This is helpful to have a structured hierarchy based on the protocol or interface requirement.
The scoreboard receives the transaction packet from the monitor and compares it with the reference model. The reference module is written based on design specification understanding and design behavior.
An environment allows a well-mannered hierarchy and container for agents, scoreboards.
The testbench top is a top-level component that includes interface and DUT instances. It connects design with the testbench.
The test is at the top of the hierarchy that initiates the environment component construction and connection between them. It is also responsible for the testbench configuration and stimulus generation process.
System Verilog Tutorials