SV的参数化类

参数化类的重载

相关参考:UVM factory机制如何重载带参数的object - 知乎


需求背景:需要重载参数化的predictor;

参数化类:参数不同意味着不同类!(所以能重载的前提,参数一致)

基类:(参数需要有默认值,不然会报编译错误)

子类:

env里面的例化:

重载的调试(在env里调用:实例名.print_override_info;白皮书也有):

test里面实行重载:

虽然调试这里识别不了,但是实际上已经替换成功;

参数化类的注册虽然看上去没有注册进去,但实际运行结果的确可以重载成功;


uvm源码注释里面有一个参考例子:


一个#号编译的问题:

在Bytedance这边遇到了一个#号编译的问题:

问题定位:是没有把文件include进来;(没有报类型不存在编译错误);


重载新增属性选择,需要cast

A_scb从base_scb中继承而来,增加了新变量xx_mode,在test这一层进行env.scb.xx_mode=1;

会报编译问题,因为基类的确没有这个变量;需要用cast的进行类型转换;声明子类句柄A_handle;

$cast(A_handle,env.scb);//最好检查一下是否转换成功

再A_handle.xx_mode=1


参数化类:声明句柄时要带上相应的参数;

class  abc #(type T=classx  ,int  port=3)  extend  uvm_object;

声明句柄:abc#(classxx,9)    ref_class;

new/create的时候也需要带上;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值