uvm_top
uvm_top
是uvm_root
类的唯一实例,它由UVM创建和管理,其所在的域是uvm_pkg
。uvm_top
是所有test组件的顶层,所有验证环境中的组件在创建时都需指明它的父一级,如果某些组件在创建时指定父级的参数为null
,那么它将直接隶属于uvm_top
。- uvm_top提供一系列的方法控制仿真,例如phase机制、objection防止仿真退出机制等。
uvm_test
- test类是自定义类的顶层结构。所有test类都应继承于
uvm_test
,否则uvm_top
将不识别,继而无法启动test。 - test的目标包括:提供不同的配置,包括环境结构配置、测试模式配置等,然后再创建验证环境;例化测试序列并挂载到目标sequencer,使其命令driver发送激励。
注:白色为变量区域
构建环境的主要组件
主要由三类UVM构建模块(基类)共同组成验证环境:
uvm_component
- 继承于
uvm_report_object
(进一步继承于object),提供消息方法; - 所有的验证环境组件都继承于
uvm_component
; - 管理验证的层次。
uvm_env
- 继承于
uvm_component
; - 没有额外的功能;
- 用来为验证环境结构提供一个容器。
uvm_test
- 继承于
uvm_component
; - 没有额外的功能;
- 用来提供对
uvm_env
的额外配置以及挂载激励。
uvm_component
- 该类是个虚类,所有环境组件都继承于该类,所有继承于该类的子类都称为组件或环境组件;由于环境中所有组件都继承于uvm_component,使UVM能够提供统一的方式来管理层次结构和组件方法
- 该类提供以下接口或者API:
- 结构,例如
get_full_name()
,get_parent()
,get_num_children()
; - 阶段(phase)机制,例如
build_phase()
,connect_phase()
,run_phase()
; - 配置(configuration)机制,例如
print_config()
,print_override_info()
; - 报告(report)机制,例如
report_hook()
,set_report_verbosity_level_hier()
; - 事务记录(transaction recording),例如
record()
; - 工厂(factory)机制,例如
set_inst_override()
,set_type_override()
;
- 结构,例如
- 组件的构建函数,固定形式为:
function new(string name, uvm_component parent);
。string name
用来声明当前例化组件的名称,用来自动和它所在的父级层次组合为组件的整个层次名称,可用get_full_name()
方法获取。uvm_component parent
用来指示所例化的父级句柄,通常用this
指代,即例化在当前的父级组件中。uvm_object
并不参与组件的层次构建,因此只有一个形参string name
。- 凡是继承于uvm_component的组件,也应保持同样的形式参数列表。