杨云霄 2年前提问 SystemVerilog UVM
1
apb_slv_drv.sv中transaction以及mem的创建问题

apb slave driver在build_phase中对transaction以及mem进行创建时,使用了apb_tran::type_id::create("pkt", this)如图所示,这两者均直接继承于uvm_object,new函数的参数也不包含parent,此处课程代码是否有错误?

被浏览 :  249
收起
( 0 ) 评论
AHB2APB IP的UVM实战项目验证
UVM实战项目验证 845
老师1 2年前回复
0

首先,我认为你说的是合理的。这两个class确实从uvm_object 继承而来,也确实new函数没有parent参数。这个地方用new()是可以的。我觉得大家有不一样的想法是大胆试一下。
另外,这里我们uvm_create也没有问题。通常我们初学的时候,如果为了快速上手,可以基本上优先使用uvm_create,因为使用这个,利用了factory机制。这个对后续的环境和case开发会更友好,毕竟这是一个更高层的"new",会有些高级的功能被使能。比如比较常用的"override",就必须继续uvm_create。这里需要注意,有些情况uvm_create是不能用的。比如编程者自己定义了一个新class和uvm基类无关。那就用new。

(1)评论
我的答案
提交答案