概述
方法 | 说明 |
---|---|
set_name | 设定此对象的实例名,覆盖任何以前给定的名称。 |
get_name | 返回对象的名字,正如在new构造函数或set_name方法中提供的名字参数。 |
get_full_name | 返回此对象的完整层次结构名称。 |
get_type | 返回此对象的类型代理(封装器)。 |
get_object_type | 返回此对象的类型代理(封装器)。 |
get_type_name | 这个函数返回对象的类型名,通常是括在引号中的类型标识符。 |
get_inst_id | 返回对象的唯一数字实例标识符。 |
get_inst_count | 返回实例计数器的当前值,它表示在仿真中已分配的基于uvm_object的对象的总数。 |
set_name
virtual function void set_name (string name)
设置此对象的实例名,覆盖以前给出的任何名称。
get_name
virtual function string get_name ()
返回对象的名称,由新构造函数中的name参数或set_name方法提供。
get_full_name
virtual function string get_full_name ()
返回此对象的完整层次结构名称。默认实现与get_name相同,因为uvm_objects本身并不具有层次结构。拥有层次结构的对象(如uvm_components)会覆盖默认实现。 其他对象可能与组件层次结构相关联,但它们本身不是组件。例如,uvm_sequence #(REQ,RSP)类通常与uvm_sequencer #(REQ,RSP)相关联。在这种情况下,覆盖get_full_name来返回sequencer的全名和sequencer名是很有用的。这为序列提供了完整的上下文,这在调试时非常有用。
get_type
static function uvm_object_wrapper get_type ()
返回此对象的类型代理(封装器)。uvm_factory的基于类型的覆盖和创建方法接受uvm_object_wrapper的参数。如果实现了这个方法,就可以方便地提供这些参数。 该方法的默认实现会产生一个错误并返回null。要启用此方法,用户的子类型必须实现返回子类型封装器的版本。
例如
class cmd extends uvm_object;
typedef uvm_object_registry #(cmd) type_id;
static function type_id get_type();
return type_id::get();
endfunction
endclass
然后,使用
factory.set_type_override(cmd::get_type(),subcmd::get_type());
如果使用’uvm_utils宏,则该函数由’uvm_utils宏实现。
get_object_type
virtual function uvm_object_wrapper get_object_type()
返回此对象的类型代理(封装器)。uvm_factory的基于类型的覆盖和创建方法接受uvm_object_wrapper的参数。如果实现了这个方法,就可以方便地提供这些参数。 此方法与静态get_type方法相同,但使用一个已经分配的对象来确定要访问的类型代理(而不是使用静态对象)。该方法的默认实现使用get_type_name的返回值对代理进行工厂查找。如果get_type_name返回的类型没有注册到工厂,则返回一个空句柄。
例如
class cmd extends uvm_object;
typedef uvm_object_registry #(cmd) type_id;
static function type_id get_type();
return type_id::get();
endfunction
virtual function type_id get_object_type();
return type_id::get();
endfunction
endclass
如果使用’uvm_utils宏,则该函数由’uvm_utils宏实现。
get_type_name
virtual function string get_type_name()
这个函数返回对象的类型名称,通常是用引号括起来的类型标识符。它用于库中的各种调试函数,并被工厂用于创建对象。 这个函数必须在每个派生类中定义。
一个典型的实现如下
class mytype extends uvm_object;
...
const static string type_name = "mytype";
virtual function string get_type_name();
return type_name;
endfunction
定义type_name静态变量来支持对类型名的访问,而不需要类的对象,也就是说,支持通过作用域操作符mytype::type_name进行访问。
最后
以上就是愉快冥王星为你收集整理的UVM中uvm_object类的identification方法总结的全部内容,希望文章能够帮你解决UVM中uvm_object类的identification方法总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复