UVM环境中自带参数时,driver和seq的req参数不匹配问题

最近在搭建验证环境时,所有的验证环境都采用的带传参的验证环境如下:

my_driver (type T=ahb_trans)extends uvm_driver;

...

  seq_item_port.get_next_item(req); 
  drive_one_pkt(req);               
  seq_item_port.item_done();  

...

my_sequence(type T=ahb_trans) extends uvm_sequence;

...

但是在构造case时,编译报错,提示sequencer中的req和driver中的req不是同一类型。一个数据uvm_pkg,一个属于自定义的ahb_pkg。

原因:seq属于seq和driver内部自定义的变量。seq属于基类,T属于子类。driver中的drive_one_pkt接收的是T类型的,与基类的seq不属于同一类型了。

解决方法:在接收到req时,用cast函数进行转换,如下:

seq_item_port.get_next_item(req); 

$cast(tr,req);
  drive_one_pkt(req);               
  seq_item_port.item_done();  

这样基类和子类指向同一个地址,就可以通过啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值