Quantcast
Browsing latest articles
Browse All 756 View Live

When should we use uvm export

uvm_put_port is connected with uvm_put_imp. uvm_put_port will call put method which will be implemented in uvm_put_imp. My question is in which situation we use uvm_put_export

View Article


Hierarchical UVM Register Model and maps

Hi,   I have a bus system with one master and upto 64 slaves. Each of the slaves has a register block, which is accessible by the bus master and a local SPI interface like this: +-----------+...

View Article


Any DPI which can call Python in verilog testbench?

Hi, I am new to Python and I have been asked to build a UVM testbench which can call Python functions.  Is there any way that I can do which is similar to DPI-C for C functions in verilog testbench?...

View Article

In-line random variable control

This section of the LRM is vague.   18.11 In-line random variable control What is the expected behavior for the following code? class child; rand int a; rand int b; constraint cb { a inside {[0:100]};...

View Article

User defines frontdoor sequence can't support simultaneous accesses

Hi We're trying to use a used defined frontdoor sequence for our register model. Most of our registers are accessed through an indirection mechanism, so creating a custom frontdoor sequence looks like...

View Article


Is this UVM register model bug being address? UVM/RSRC/NOREGEX

Seen quite a few posts on various forums like this. Moving your register model to UVM-1.2 yields a bunch of warnings like this.    [UVM/RSRC/NOREGEX] a resource with meta characters in the field name...

View Article

Is clock information allow in C with UVM testbench using DPI?

Is clock(signal from rtl or from testbench) allow to be used in C program to trigger event or delay?

View Article

Delay in UVM driver

Hi all,   I'm new with UVM and I came across a problem. I am working on an AXI RD VIP using UVM and I have the following issue.   In the data_phase (the data channel driving) from the MASTER driver, I...

View Article


UVM Phases: end_of_elobration

I referred couple of documents; cookbook, uvm 1.2 user guide, to know why end_of_elobration is required.   However, i could not find answers for 'why it is required' and more specifically 'Is it...

View Article


randomize() with inside syntax

How can I use "randomize() with" along with "inside", on the same line?   Below is some code that solves the problem using >= and <=, but I'd like to use "inside". module top; class aclass;...

View Article

multiple interfaces accessing the same uvm_reg

Multiple interfaces( processor 0 ,processor 1, processor 2) do write/read the same register. I created p0_map, P1_map, P2_map and set different sequencers in environment....

View Article

Why doesn't this virtual interface connection crash and burn

Hi Everyone, I got some strange code (at least strange to me) from a college of mine and I can not understand why it works, reading the code I expect the tools to fail at compilation and elaboration...

View Article

SVA for fairness of Round-Robin Arbiter

Are are any standard or recommended ways of verifying the functionality of the round-robin arbiter and more specifically checking the fairness? I'm looking for something that is scalable with the...

View Article


virtual sequencer exit main phase prematurely

hi all,      my SPI test stuck and test sequence is hung on wait_for_grant().      I turned the verbosity to UVM_DEBUG and found out virtual sequencer and physical sequencer exit from main phase and...

View Article

Issue with add_hdl_path (peeking two sub modules regsiters)

HI  I have  two  sub modules called  A and B within DUT and trying to get register information of both A and B in back door using peek method.   I have single ral block which includes both A and B...

View Article


Using DPI-C sin function

Hi,    I'm trying to use DPI-C to import sin function, but it doesn't work, as a workround i had used a sin approximative function which finally give a static value of 2.5 (the offset value) i think...

View Article

predictor / TLM model paradigm

What we've done in the past is have "phantom models" that are highly coupled with the RTL state machine. E.g. The RTL got a command, and performed: Read 0x1, Read 0x2, Write 0x1, Write 0x2. our...

View Article


Use of intersection in cross coverpoints

I was under the assumption that once bins are created, the coverage would be collected only for those bins and the remaining combinations would be ignored. However, I noticed this was not the case when...

View Article

Image may be NSFW.
Clik here to view.

Help regarding fork_join usage

Hi ,   Please help me the following code,  module fork_join_any_process(); int me[3]; task automatic print_value; input [7:0] value; input [7:0] delay; begin $display("Waiting Passed value %d",value);...

View Article

Multiple architectures - which one?

I am relatively new to UVM, and I'm trying to think through the architecture of a transaction. Assume that in this case, I have the ability to modify the object under discussion directly.   I have a...

View Article

Generating constrained random pre-load file for SoC TB

Hi All,   Any idea how to use UVM to generate a pre-load files using constrained random method for SoC verification.   Is it OK to have an UVM agent for this purpose which does not require any...

View Article


read register from RAL

Hi,   I have a question refer to strange messages created by RAL read command.   When the register is read, I receive a message like:   uvm_pkg::uvm_parent_child_link l103=config_dmaw_seq r107=transfer...

View Article


Controlling timescale with set_timeout

What is the recommended way to control the timescale of the UVM timeout as set with set_timeout()?   Controlling the timescale in the calling code doesn't seem to work.   For example,    `timescale...

View Article

real port mappping

Hi all, i'm tryin to make a SV code with the following bloks: -Gaussian nois generator: the output is 16 bit, but i had converted it to real ( i had just putted real in place of STD_logic) -Low pass...

View Article

UVM RAL - Register Verification for Different Access types

I'm experimenting UVM RAL register verification for all the access types for registers and I'm experiencing the issue while using built-in sequence uvm_reg_access_seq. In my design I've implemented all...

View Article


handle to uvm_component in uvm_object

Hi,   Is there a way to avoid the "complex type usage" error when needing to feed a uvm_object a handle to an uvm_component? What I need to do is access within a sequence a method of one component in...

View Article

build_phase order

Hi,   I notice something interesting in the build_phase order of uvm_component. The uvm_component at the same level are build in the alphabetatical order of the instance name. I expect the build order...

View Article

config_db usage: base class versus derived class objects

Is it possible to  do a  uvm_config_db::set()  for an  object of derived class type  using the base class handle  and  later do a   uvm_config_db::get()  of same object  using  the derived class handle...

View Article

Is it possible to have two implementation of b_transport?

I need to have two uvm_tlm_target_socket in a class and I need to do different set of things with the data received via two sockets. I was thinking if it is possible to have two implementation of...

View Article



non-uvm message compliant, grep during report pahse.

is there way to search for the non-uvm compliant error message such as "ERROR - CSI Rx BFM "  during the uvm report pahse of uvm environment? if we see this string error count variable need to be...

View Article

Unique array elements without rand or randc

I have a variable logic [31:0] id which is not declared as rand or randc. I need different id's each time into an array logic [31:0] id_array [16].logic [31:0] id;logic [31:0] id_array...

View Article

UVM Sequencer base class - Virtual task using local class variables - bad...

I see uvm_sequencer_base::wait_for_grant (UVM 1.1d) is a virtual task but accesses a local int g_request_id - is this not a bad coding style? If I were to override this virtual method for debug with...

View Article

Turn off `uvm_info messages

Is there any way to turn off `uvm_info messages being displayed on the log while retaining `uvm_error and `uvm_fatal messages

View Article


multiple maps on ral class

Hi, We are using snps ralgen to generate the regmodel. It appears that the ralgen creates only the default map.   We would like to have 2 maps for 2 separated if masters. Is there an online example for...

View Article

Communication between uvm_sequence and uvm_component

I have two classes, one is block_seq which extends from uvm_sequence and other is block_cfg_mngr which extends from uvm_component. How do I exchange information between these two. I need to generate...

View Article

priority for uvm_reg transactions

There are many threads/virtual sequences in the test that will initiate register transactions through a shared register model/bus agent. I want to give specific sequences higher priority so they will...

View Article


How to check VCS version number?

How can I check which VCS version I am using, from a Linux command line?     I don't want to run a sim to find this information. I am looking for smthg like "irun -version", but for VCS.       Pre-post...

View Article


RAL mapping reg_field to another reg_field

Hey! I'm think need some help with RAL. I have 2 registers and in reg A field F1(RO) mapped from reg B field F1(RW) how i must implement this using RAL?

View Article

Practical UVM Book now available.

Hello:    After multiple years in development, I would like to announce my book Practical UVM.  Practical UVM is a book that goes through a deep dive of the  Universal Verification Methodology.  In...

View Article

Usage of get_hdl_path() for backdoor register access

Hi All,   I wanted to know the usage of get_hdl_path() and get_full_hdl_path(). Any example would be helpful. I have added set_hdl_path_root for register block on top level and added add_hdl_path for...

View Article

waiting for next clk edge, interfaces and clocking blocks

Q1) I'd like confirmation that the following waits for a posedge of clk are identical.  (The code it refers to is far below.)   1) @(posedge my_play_if.clock);  or  @(posedge clk);   2)...

View Article


Improving transaction recording

I am trying to improve transaction recording. So far we have used field automation macros, but to make debugging efficient I am trying to customize the recording.   I've understood that the do_record...

View Article

Image may be NSFW.
Clik here to view.

block level verification in a system setting

Let's say I have the following DUT.  The UVM environment contains a chain of models/predictors.  Input data flows down this chain and generates the expected CHIP output, which is compared to actual....

View Article


Query related to UVM_RAL_REG model.

I have query related to UVM_RAL model. Does it support for case-insensitive for accessing Registers and Register fields items from UVM_RAL model?   For example. We have  testcase with extension of...

View Article

string literal spanning a newline (using a backslash) - vendor supported?

A backslash can be used to extend a string literal onto the next line if "the new line is immediately preceded by a \ (backslash)."     Section 5.9 of 1800-2012.pdf, the SystemVerilog LRM   I don't...

View Article


What is a proper way to set fields and update register in uvm register model?

In my test sequence, some fields of a register are changed frequently and others are keep previous value.   I wrote the code like below, register.fieldY.set(value) register.update(status) // first...

View Article

Instance override RAL adapter transaction objects?

Hello,   We have a test bench environment where we have 2 objects of the same SPI env class.   The SPI env sets the sequencer for the RAL model as follows:...

View Article

Why we get SEQREQZMB when jumping to another phase

I have a reset sequence, which starts as default_sequence for reset_phase. For main_phase I have some sequence, which is started as default sequence. At some time I jump from main_phase to reset_phase....

View Article

Complicated Register Modeling with uvm_reg

Looking for suggestions on the best approach to modeling something akin the following.   data bus width: 16 bits addr bus width: 16 bits   register: cfg @ 0xa000 field: value_mode @ 0 : enum {...

View Article


Are there any recommendations/guidelines on using UVM run sub phases?

The cook book from Mentor tells following and in another thread, the moderator also suggested against using the sub phases of run. However in one of my projects, I do find the need for using them (and...

View Article

Browsing latest articles
Browse All 756 View Live