UVM: Using libraries to empower faster testing
When it comes to hardware or software development, rigorous testing is an integral and essential part of product roll-out.
In fact, some might (convincingly) argue testing is the single most crucial part of any production cycle.
The aim of testing and analysis is to eliminate issues long before they reach the final build.
Indeed, in an ideal world, problems are found and addressed on an ad hoc basis, through the life of the build.
There is one major problem with this approach, though – namely, testing usually is extremely repetitive.
Unfortunately, history proves human nature is not well equipped for performing repetitive tasks.
Well, not with any degree of consistency, anyway.
Most people would agree, there are few aspects of life more frustrating than having to repeat the same thing, over and over.
Having to repeat the same tasks from scratch is also a considerable waste of time and resources.
Furthermore, in today’s competitive world, it isn’t commercially viable to approach jobs on a project-by-project basis.
Building test platforms from the ground up for each project isn’t feasible to stay within budget.
Instead, what we need is libraries – a collection of build-once, store-forever processes that can be used, over and over, to test specific functionalities.
Universal Verification Methodology libraries
Universal Verification Methodology (UVM) allows product developers to isolate problems well before a product is released.
UVM addresses basic questions of architecture, allowing test benches for each phase of a product’s development.
However, UVM offers more than just one-off testing capacities.
With UVM, it’s possible to build libraries of common processes that can be reused, over and over.
Indeed, by building a library of base elements, it’s possible to construct entirely new systems with the new
Processes added on top of one another, to extend core functionalities specific to the project in hand.
This extendibility is at the heart of UVM testing.
It allows multidisciplinary testing, allowing groups of developers to work on the same project, at the same
Time, adding more library components to the mix.
Better yet, when a job is completed, processes can be saved to the overall library for use in subsequent projects.
By taking a building block approach to testing, developers can soon amass vast libraries of reusable
Components, suitable for porting to other projects.
In all testing environments, a great many processes are repeated from job to job.
Object-Oriented Programming often features similar functions, each of which needs to be tested as part of the whole end product.
Using Universal Verification Methodology (UVM) means developers can significantly increase project
Development speed to provide modular, reusable, and scalable testbench structures suitable for deployment across multiple projects.
UVM key components
UVM provides a base class for common vital components (e.g. drivers, monitors, stimulus generators, scoreboards)
And includes standardized functions to connect and build reusable testbench environments.
The critical class categories of UVM include UVM objects, UVM sequence, UVM sequence items, UVM
components, Register layer, TLM connections and UVM phrases.
UVM specifies guidelines that can be used to ensure testbench uniformity across different verification teams.
These guidelines can also be used in different verification test benches while still maintaining
cross-compatibility and standardizing the reporting mechanism.
This allows engineers to stay focused on design verification rather than being distracted by other, less crucial factors.