(1)uvm_object是UVM中最基本的类,几乎所有的类都继承自uvm_object,包括uvm_component; (2)uvm_component用来实现树形结构. uvm_component在new的时候,需要指定一个类型为uvm_component,名字是parent的变量;一般在使用时, parent通常都是this; (3)uvm_component具有phase自动执行的特点; (4)由于uvm_component是作为...
我们知道uvm_root 作为uvm环境的根,具有唯一性,另外,uvm_root 作为一个根,它是开始,在new的时候,第一个new的调用也是我们在代码实现的过程中必须要考虑的问题,因为一般而言,只要先实例化才可以使用其内部的函数,就比如new().所以当前两个问题需要解决: 先解决第一个,如何在不实例化的前提下,调用其内部的new()...
src/base/uvm_component.svh中的源代码 从上文uvm_component的学习中我们知道uvm_root的父类是uvm_component,因而其创建的时候必须指定parent,但是我们看到uvm_root的构造函数new并未传递任何参数(不仅没有parent,甚至连name都没用),只是调用了父类中的new函数,传入参数name=“__top__”,parent=null,我们在回头看...
uvm_component new函数包括两个参数,分别是字符串的名称以及其父类:class street extends uvm_component; `uvm_component_utils(street) function new(string name, uvm_component parent); super.new(name, parent); endfunction : new endclass : street build()——UVM phase机制的第一个phase,用于支持UVM ...
uvm_component有两大特性,一是通过在new的时候指定parent参数来形成一种树形的组织结构,二是有phase的自动执行特点 要用UVM 干活 , 你需要自如的定义和例化 UVM 组件 . 这里是步骤 第1 步 : 从 uvm_component 类或其子类继承定义你的组件 第2 步 : 用 uvm_component_utils() 宏注册这个类到 Factory ...
uvm_component有两大特性是uvm_object所没有的,一是通过在new的时候指定parent参数来形成一种树形的组织结构,二是有phase的自动执行特点。图3-1列出了UVM中常用类的继承关系。 从图中可以看出,从uvm_object派生出了两个分支,所有的UVM树的结点都是由uvm_component组成的,只有基于uvm_component派生的类才可能成为UVM...
Function new(string name,uvm_component parent); 在一般使用的时候,若在类A 中有uvm_component B,则在A中定义如下: B=new(“B”,this); 完整UVM树: uvm树根是uvm_top。 Uvm_component的另外一个特点是它具有phase自动执行的特性。 Uvm_component的两大特性: ...
UVM通过uvm_component来实现树形结构,所有的UVM树的节点都是一个uvm_component。每个uvm_component都有一个特点:他们在new的时候,需要指定一个类型为uvm_component,名字为parent的变量。 Function new(string name, uvm_component parent) 一般的,在使用的时候,parent都是this。假设现在有一个A派生自uvm_component,在...
一定要注意构建函数new()的声明方式,uvm_component的构建函数有两个参数new(string name, uvm_component parent),而uvm_object的构建函数只有一个参数new(string name)。 在组件之间的层次关系构建中,依然按照之前SV组件的层次关系,只需要在不同的phase阶段完成组件的例化和连接。
2.1. uvm_sequence_item中get_name系列函数 (1) get_name()会打印出”jerry_is_good”; uvm_sequence_item中的get_name函数与uvm_component⼀样,打印”new()”时候传⼊的字符串;(2) get_full_name()会打印出”jerry_is_good”; 对于uvm_sequence_item, get_full_name()与get_name()⼀样! 因为...