1-uvm_root, uvm_top, uvm_test_top

参考资料

(1) UVM使用双顶层的用法 | 骏的世界 (lujun.org.cn)

1.UVM的根-uvm_root or uvm_test_top?

(1) uvm_test_top实例化时的名字是uvm_test_top,这个名字是由UVMrun_test时自动指定的;

(2) uvm_top的名字是_top_,但是在显示路径时,并不会显示这个名字,而只显示从uvm_test_top开始的路径;

2. uvm_root()

(1) uvm_root本质是uvm_component;

(2) uvm_root的存在是为了保证验证平台只有一棵树(uvm_root是单实例类,整个UVM验证平台中,有且只有uvm_root的一个实例存在),并且发挥着phase controller的作用,管理所有componentphase.

(3) 任何没有指定parentcomponent,默认其parentuvm_top(全局变量, uvm_root的一个实例).

(4) uvm_component的两大机制(树形组织结构和phase机制)都离不开uvm_root;

3. uvm_top(uvm_root类的句柄)及常用函数

(1) UVM中真正的树根,任何组件实例都在它之下(如果组件的parent为null,那么该组件为uvm_top的子组件);

(2) uvm_top是一个全局变量,uvm_root的一个实例,也是uvm_root唯一的实例.

(3) uvm_top的名字是_top_,但是在显示路径时,并不会显示这个名字,而只显示从uvm_test_top开始的路径.

(4) uvm_top.find及示例;

uvm_component comp;

comp=uvm_top.find(“*.axi_agt”);

注1:其中*表示匹配任意字符;?表示匹配一个字符;+表示匹配一个或多个字符;

(5) uvm_top.find_all及示例;
uvm_component comps[$];

uvm_top.find_all("*.axi_?",comps);

foreach(comps[i]) begin

  comps[i].print();

end

4. uvm_test_top

(1) 通过run_test语句创建的实例的名字为uvm_test_top.无论传递给run_test的参数是什么,创建的实例的名字都为uvm_test_top.

(2) uvm_test_topparentuvm_top,uvm_topparentnull.

(3) UVM,支持uvm_top下有多个叶子节点,但是,多个叶子节点不能都叫uvm_test_top,如下所示.

5.uvm双顶层

详见UVM使用双顶层的用法 | 骏的世界 (lujun.org.cn);

问题:双顶层中的另外一个顶层是怎么跑起来的?

 

posted on 2021-11-16 11:08  _见贤_思齐  阅读(3764)  评论(1编辑  收藏  举报

导航