UVM结构总结

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

猜你喜欢

转载自blog.csdn.net/Arvin_ing/article/details/127676137