我对用于向工厂注册UVM测试的以下SystemVerilog结构感到困惑:
class random_test extends uvm_test;
`uvm_component_utils(random_test);
...
function new (...
这里我们有一个类random_test的定义,在定义中我们调用一个方法,而它的参数是正在定义的类。以下是我的问题:
`uvm_component_utils是否在0时被调用,甚至在任何对象都是从random_test类构造出来之前?
如何在该类定义中将类传递给`uvm_component_utils?
寻找如何禁用发生在uvm_warning宏中的`uvm_object_utils的想法。
UVM_WARNING @0: reporter [TPRGED] Type name 'xxx_packet' already registered with factory. No string-based lookup support for multiple types with the same type name.
我不关心基于字符串的查找,我希望能够在多个测试中使用相同的类名(我使用每个测试包来完成这项工作)。所以我真的很想禁用这个警告。但是,即使命令行禁用的命令似乎也没有帮
在类uvm_resource_pool定义中创建实例(对象) rp的以下代码(第2行)的含义是什么?
class uvm_resource_pool;
static local uvm_resource_pool rp = get();
// Function: get
//
// Returns the singleton handle to the resource pool
static function uvm_resource_pool get();
if(rp == null)
rp = new();
return rp;
在我的验证环境中,我设置了一些可重用的公共序列:
class common_sequence(type T = uvm_sequence) extends uvm_sequence#(uvm_sequence_item);
`uvm_object_param_utils(common_sequence_t#(T))
function new(string name="common_sequence");
super.new(name);
endfunction
T sequence;
我正在写一个扩展到我的记分板的跳棋。为此,我尝试用我的checker类中定义的新任务覆盖parser_pkt任务。这个任务被调用到我的uvm run_phase中。但是,尽管我为我的每个任务添加了“虚拟”,我使用了相同的任务签名,并且我对我的run_phase使用了super,但这是不起作用的。当我将打印添加到两个任务中时,代码正在运行定义到记分板类中的parser_pkt任务。为什么我做错了?
class my_scoreboard_c extends uvm_component;
`uvm_component_utils(my_scoreboard_c)
extern virtual t
我开发了一个简单的uvm测试平台来验证一个简单的加法器。我也使用功能覆盖来监控覆盖范围。加法器为8位,输入为a和b,输出为c,为9位。
我为a和b开发了8位a和b的事务。按照顺序,我已经使用repeat(100)运行了它,它将随机化,并将a和b驱动到DUT。此场景的功能覆盖范围的最佳情况是(100/256)*100%,即假设不重复任何值,大约40%。我在记分板中对覆盖范围进行了抽样,并在env中获得了覆盖结果。
这是我的代码片段
// monitor class
covergroup cg;
a : coverpoint sb_item.a;
b : coverpoint
我正在编写一个测试,它在有效的排序器上触发序列,但仍然面临“序列项有空排序器”的问题。
class gen_seq_item extends uvm_seqeuence_item;
rand bit [WIDTH-1:0] generic_signal;
`uvm_object_utils_begin(generic_seq_item)
`uvm_field_int(generic_signal, UVM_ALL_ON)
`uvm_object_utils_end
fu
我正在寻找方法,以禁用断言在侧uvm组件的某些测试。下面的简单代码代表了我的env,以及对需求的注释。我想我可以用$assertoff。如果需要额外的工具,我可以修改uvm组件来实现这一点。
import uvm_pkg::*;
`include "uvm_macros.svh"
class tb_env extends uvm_component;
`uvm_component_utils(tb_env)
int exp_val = 0;
int act_val = 0;
function
我有一个这样的字符串:
string str = "Property first {prop1=val1;prop2=val2}this is reg table[uvm]dsfhsjhsdj[/uvm]this is uvm test{pp1=vv2}";
我需要获取uvm.../uvm字符串。
我已经尝试过了:
reg = new Regex(@"(\[uvm\].*?\[\\uvm\])");
string s = reg.Match(str).Groups[0].Value;
但它不起作用。它不匹配。我该怎么办?