You are here: Home / Archive by Category "SystemVerilog"

Verification Is All About … Trust

Posted by

Dear future verification engineer, You are about to start a very privileged career. You will have the opportunity to see your work all around you. When you’re in the subway and you see someone watching on their phone some movie, you will know that you worked on that chip which streamed the movie so seamlessly […]

How to Decouple Threads in SystemVerilog

Posted by

Killing a task in SystemVerilog is relatively easy using the kill() method from the process API. Usually, when we kill a task, we also want to terminate all of its “sub-tasks” it called. But this is not always the case. In this article I am presenting one way of killing a task via process.kill() API […]

SystemVerilog Tip: How to Do Logging in UVM

Posted by

UVM comes with a great messaging system which can be easily controlled with simulator commands. Some of these commands are making use of an ID which can be assign to a message. Unfortunately, UVM does not allow us to assign multiple IDs to the same message. In this post I will present why assigning multiple […]

How to Handle Data Coming From Parallel Threads

Posted by

It is quite common for a DUT to have two or more interfaces from which, independent monitors, will send data to a scoreboard in the same simulation time. Because this is done from parallel threads, the order in which the data arrived in our scoreboard is random. If the order in which the data is […]

How to Use UVM Callbacks With Configuration Fields

Posted by

In computer programming, a callback is basically a function which you can pass to some existing code to be called at some specific event. UVM offers all the pieces of the puzzle to easily implement callbacks in any verification environment in just a few simple steps. In this post I will show you how I […]

How to Access a Protected Property or Method in SystemVerilog

Posted by

You might get into a scenario in which you really need to access a protected property or maybe a protected method from some SystemVerilog class. If override is not a solution for you then you might get away with this trick: create a subclass and via static functions access any properties from a reference which […]

SystemVerilog: How To Hide Your Fields So That Anyone Can Find Them

Posted by

In this post I will talk about how I am using the OOP concept of Variable Shadowing to make the user interaction with VIPs much easier. Every now and then I am asked to build an agent to be used by the entire team for some communication protocol, like the interface for accessing the registers […]

SystemVerilog: Tips And Tricks When Working With Queues

Posted by

In this post I put together a few tips and tricks I’ve came across over the years related to SystemVerilog queues. Access the last element of a queue For a long time I was accessing the last element in a queue the “normal” way – using the computed index of that last element: 1my_value = […]

SystemVerilog: How To Handle Reset In UVM (part 2)

Posted by

A while back I wrote an article about how to handle the reset in an UVM agent component.Someone asked a very good question: How about handling the reset in the scoreboard? In this article I will share with you my way of handling the reset in a verification environment. Let’s say that we have a […]

UVM: How to Pass a Virtual Interface from Testbentch to Environment

Posted by

Connecting a verification environment with a DUT is not a straight forward task for someone new to UVM and the purpose of this post is to give a quick tutorial on how to do it fast and correctly. Let’s assume that we have a verification environment with two APB agents like in the picture below. […]

Page 1 of 3 1 2 3