一、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_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。