关于UVM的重载

最近做项目的时候,重用了别人的验证组件,需要对发包的driver做一定的修改,于是想到了重载。但是报了这样一个错:

# UVM_FATAL @ 0: reporter [FCTTYP] Factory did not return a component of type 'sds_ge_driver'. A component of type 'my_sds_ge_driver' was returned instead.

觉得非常的奇怪,因为其他的关于激励的重载都是OK的。这个问题定位了很久,排查了重载格式不对,重载了两次,sds_ge_driver被例化了2次的可能,还是没有解决这个问题。后来我在整理filelist的时候,发现sds_ge_driver.sv这个文件,被加进来了两次,一次是组件VIP里的,一次是我自己在外面添加的。问题就出现在了这里,我自己添加的sds_ge_driver.sv文件内容上跟VIP里的一模一样,但是开头的宏文件有区别,我的定义是这样的:

`ifndef  SDS_GE_DRIVER_SV

`define SDS_GE_DRIVER_SV

VIP里是这样的:

`ifndef  SDS_GE_DRIVER__SV

`define SDS_GE_DRIVER__SV

多了一个下划线。。。。。这个还是用软件统一生产的头文件,很难发现。。。。

就是因为宏定义的不同,导致了sds_ge_driver.sv这个文件被编译了两次,在UVM的factory中被注册了两次,导致在重载的时候报错。去掉我自己添加的文件,重载OK!。

最后引用我师父的一句话:诡异的问题一般都是低级问题。。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值