Verification IP Stimulus APIs - Are They Really Easy to Use?
With the increasing complexity of system designs, there is a pressing need for standalone, pre-verified, built-in verification infrastructures. Verification IP (VIP) is an integral and important component of these infrastructures for block and system-level verification as they reduce cycles spent in verifying complex designs.ly Easy to Use?
-
Introduction
Stimulus generation is an important aspect of verification for creating both simple and complex scenarios used to hit functional bugs in a design. Stimulus generation application program interfaces (API) in VIP help you write stimulus without much protocol knowledge and help them create complex protocol scenarios for testing.
In general, VIP stimulus APIs should provide:
- Easy to write stimulus
- Reusable stimulus from the block to system level
- Reusable stimulus across various protocols
- Protocol independence
- Protocol functionality-specific APIs to achieve more complex protocol scenarios
- Minimal random behavior
Ease-of-use is an essential characteristic. VIP provides Universal Verification Methodology (UVM) sequence components at various abstraction levels for generating stimulus using protocol specific bus functional models (BFM).
Although these protocol-specific sequence components consist of various SystemVerilog constraints that help in generating constrained random stimulus, they are not truly easy-to-use because they lack the flexibility to support reuse of stimulus API sequences from one protocol to another, at various abstraction levels, and from the block to system levels.
There is a pressing need for generic, easy-to-use stimulus APIs that help you write quick stimuli without worrying about protocol intricacies, provide horizontal and vertical reuse of stimulus, and deliver the flexibility to write portable stimulus across various verification platforms.
The solution lies in high-level APIs that support writing stimulus at the abstract read/write command level. Abstract read/write APIs help in writing instruction-level stimulus (more closure to software applications) that is easily reusable from the block to system level.
To understand this better, we will discuss the difficulties faced in stimulus generation and then go through a recommended approach of designing a generic reusable stimulus API sequence.
-
Download Paper