Cadence Xrun UVM Makefile

# #–================================================ =============== #– File name : Makefile #– Author: shzhang #– Date : 2023/11/01 #– Abstract : Cadence Xcelium Xrun Makefile #–================================================ =============== # ################################################ ##### .PHONY: com run clean ################################################ ##### export cpto_sw_v200_tb_path = .. ################################################ ##### SIM_DIR = . LOG_DIR = ../log FSDB_DIR = ../wave/fsdb SHM_DIR = ../wave/shm TC_DIR = ../tc/cfg COV_DIR […]

UVMvirtual sequence & virtual sequencer

Virtual seq and virtual sqr are two things that are difficult to understand For a long time, my understanding of virtual sequence and virtual sequencer has not been very good. I have read a lot of information and done projects, but some of them are still not very thorough. Take a “pen” and record it. […]

[UVM source code research] How does the uvm environment start when we call run_test() in tb

As a verification engineer, the following code is generally indispensable in every top-level TB (there may be some timeformatf or uvm_config_db settings before and after), and the book tells you that this is the entrance to start the uvm environment. initial begin run_test(); end Then the question comes, 1. Is this run_test() a function or […]

Interpretation of response and id of transaction in uvm

When I was writing code in the company, I found that my senior had a piece of code like this: ….//Other transactions `uvm_create(trans); …. …. `uvm_send(trans); tmp_id = trans.get_transaction_id(); get_response(rsp,tmp_id); If there are other transactions in front of it, if the get_response in this code does not have an ID, the response of the previous […]

UVM callback mechanism

1.callback mechanism process The biggest use of the callback mechanism is to improve the reusability of the verification platform. For example, the callback mechanism is used in the uvm test environment of test.v, and the code segment that splits the transaction in the driver component into interface is replaced by the callback mechanism. Using the […]

How to use callbacks in the UVM register model

Article directory Preface 1. Introduction to underlying UVM 2. Use of UVM register model callback 1. Expand 2. Binding Summarize Foreword When we use UVM’s register model, we sometimes need to prepare some data before register configuration, or trigger some operations after register configuration. At this time, we can use the callback that comes with […]

Digital IC Verification 23907–UVM Experiment 3

uvm experiment three Experiment 1 TLIM one-way communication and multi-way communication port exercises Review of one-way knowledge points In one-way communication, there is only one parameter for port and export port; The imp port has two parameters, the first is the passed item class, and the second is the component that implements the port; Instantiation […]

IC_Verification UVM in practice–Zhang Qiang

Directory Chapter 1 Basic Knowledge of Systemverilog A.1 Use of structures A.2 From structure to class A.3 Class Encapsulation Private variable local type A.4 Class inheritance this, super Case number one Case 2 A.5 Polymorphism of classes A.6 Use of handles A.7 Use of packages The difference between packages and libraries Package naming rules Chapter […]

The relationship and application of m_sequencer and p_sequencer in UVM

m_sequencer: As shown in the figure, m_sequencer is a variable of type uvm_sequencer_base defined in uvm_sequence_item. Generally speaking, uvm_sequence_item is the base class of user-defined transaction and has the ability to control the sequence-sequencer mechanism. To put it simply, it is to enable the uvm_sequence/uvm_sequence_item (object) of the dynamic life cycle to interact with the […]

UVM register model: m_mirrored, m_desired, value

In UVM’s register model, uvm_reg_field is the lowest register abstraction layer of register bits. Four attributes are used in the field to store the relevant fields of the current bit field, which are: m_reset[“HARD”] stores the hardware reset value. After calling the model.reset function, other values will be reset to the value stored in m_reset[“HARD”]. […]