Verification

Verification languages - overview and concepts

Thu 21 February 2019 by Tsvi Mostovicz / Verification

Running tests

When running a test you go through the following flow.

  • Compile - This part takes all of the source files and compiles them into a single library.
  • Elaborate - Resembles software's linking. Here we take the various objects and put them together like lego.
  • Run - Once the environment is compiled …

Read more

Contradictions between keep soft select and keep soft

Sun 30 December 2018 by Tsvi Mostovicz / Verification

TL;DR

When trying to constrain minimum and maximum payload size, the constraints in the test wouldn't be obeyed, due to a bad interaction between keep soft and keep soft ... select ==

The issue

We had the following code in our tests:

extend SEMI_RANDOM eth_seq {
    packet_size_mode : [ALL_JUMBO,MIX,NO_JUMBO,ALL_64];

    keep …

Read more

The highs and lows of UVM

Thu 19 June 2014 by Tsvi Mostovicz / Verification

I just read this article (Accellera DAC 2014 Breakfast—What Engineers Really Think About UVM). They hit a few interesting points.

I'd like to add another few points that I think were missed in this discussion.

The highs

  • UVM helps the developer create reusable components (though I have seen UVM …

Read more

UVM register model coverage woes - part 2

Mon 24 March 2014 by Tsvi Mostovicz / Verification

So after I described my troubles with the UVM register model's coverage in my previous post, I revisited the issue in a slightly different context and discovered the current solution was rather lacking.

Register block coverage

In the previous example, coverage was taken for a value written via the register …

Read more

The crooked ways of UVM's register model's coverage methods

Mon 02 September 2013 by Tsvi Mostovicz / Verification

"Welcome to the world of Coverage"

I have been dabbling now for a couple of weeks with coverage. Working my way through the SV LRM, looking at some examples and running a few simple cases.

My first case was some protocol coverage. We wanted to verify certain types of traffic …

Read more

uvm_config_db vs uvm_resource_db, where they come from and what are they good for

Tue 25 June 2013 by Tsvi Mostovicz / Verification

The origins

According to a story I was told, the origin of the uvm_resource_db stems from the fact that certain simulators (if I remember correctly Mentor's Modelsim/Questa), were unable to cope with the dot-notation. Eg. You could not write m_object.m_field = 1, instead you'd have to put the field …

Read more

My issues with uvm_reg's predict method

Mon 29 April 2013 by Tsvi Mostovicz / Verification

A couple of weeks ago, I created a status register callback class.

The purpose of it was to create a built-in scoreboard allowing me to predict the value of a status register based on the known status signal's input.

I'll maybe post the code in a sometime in the future …

Read more

Always assert your randomizations

Mon 18 March 2013 by Tsvi Mostovicz / Verification

Today I was bitten twice by the same issue: randomization.

When you randomize something you should always assert the randomization. This will allow you to find the source of the problem much quicker. I lament the fact that UVM sequence macros do not assert the randomization by default. Instead they …

Read more

Don't use null as a sequencer argument to uvm_reg_sequence

Sun 17 March 2013 by Tsvi Mostovicz / Verification

Back when I started using UVM, I had no use for a register model for the specific unit I was testing. As such, sequences were written which needed a sequencer which would hand the items in the sequence to the driver.

Over time, we moved to use the register model …

Read more