UVM Sequencer and Driver Communication:

The UVM sequence-driver API majorly uses blocking methods on sequencer and driver side as explained below for transferring a sequence item from sequencer to driver and collecting response back from driver. Sequencer side operations:  There are two methods as follows: start_item(<item>): This requests the sequencer to have access to the driver for the sequence item…

Raise/Drop objection Automatically with UVM

Variable uvm_sequence_base::starting_phase is deprecated and replaced by two new methods set_starting_phase and get_starting_phase, which prevent starting_phase from being modified in the middle of a phase. This change is not backward-compatible with UVM 1.1, though variable starting_phase, although deprecated, has not yet been removed from the base class library. New method uvm_sequence_base::set_automatic_phase_objection causes raise_objection and drop_objection…

Reset Testing using Phase Jump in UVM

Reset testing is a crucial element of functional sign-off for any chip. The architectural components of the entire verification environment need to be correctly synchronized to be made aware of the reset condition. Scoreboards, drivers and monitors need to be tidied up, and the complex stimulus generation needs to be killed gracefully. As we know,…

Advantages of UVM over SV

UVM is a standard verification methodology which is getting standardized as IEEE 1800.12 standard. UVM consists of a defined methodology in terms of architecting testbenches and test cases, and also comes with a library of classes that helps in building efficient constrained random testbenches easily. Some of the advantages are listed below: Modularity and Reusability:…

Static Properties & Methods in SystemVerilog: A Comprehensive Guide

Static Properties & Methods in SystemVerilog: A Comprehensive Guide

Introduction In the world of ASIC Verification, understanding the intricacies of various programming constructs is paramount. Today, we’ll delve deep into the concept of STATIC properties and STATIC methods in SystemVerilog, their significance, and their practical applications. 1. When to Use STATIC Properties and STATIC Methods STATIC properties are particularly useful when we need to share data across all…

Polymorphism:

Polymorphism is the ability  to have the same code act differently based on the type of Object that its being working with. This is a key topic of any Object Oriented Programming language. SystemVerilog enables Polymorphism in two ways:  Dynamic (Run-Time) Static (Compile-Time)  Here we’ll discuss the Dynamic mode of Polymorphism which is supported via “Virtual…