求助:UVM中可以改变从seq_item_port中取得的req的内容么?
时间:10-02
整理:3721RD
点击:
各位:
最近正在使用UVM搭建验证平台。现在有个问题不是很确定,因此,动笔之前想问问这样可不可行。
如果照正常使用的话,在driver中应该是这样的顺序:
但是有时候我需要将req进行一些处理,比如说,如果sequencer传递过来的req是RGB的图像,但是DUT要求我发送YUV格式,因此,我需要增加一个function,变成这样的:
csc_rgb_to_yuv函数直接对req进行操作,这样,get_next_item时候的req就与item_done时候的req不一样了,这样没问题吧?
最近正在使用UVM搭建验证平台。现在有个问题不是很确定,因此,动笔之前想问问这样可不可行。
如果照正常使用的话,在driver中应该是这样的顺序:
- seq_item_port.get_next_item(req);drive_transfer(req);seq_item_port.item_done(req);
但是有时候我需要将req进行一些处理,比如说,如果sequencer传递过来的req是RGB的图像,但是DUT要求我发送YUV格式,因此,我需要增加一个function,变成这样的:
- seq_item_port.get_next_item(req);csc_rgb_to_yuv(req);drive_transfer(req);seq_item_port.item_done(req);
csc_rgb_to_yuv函数直接对req进行操作,这样,get_next_item时候的req就与item_done时候的req不一样了,这样没问题吧?
我觉得没有问题,你这个函数等于driver中调用callback函数对item作修改的情况。所以是可行的。
LZ只是把transaction里面的每一个Pixel循环做一个CSC的转换,为何不可?就在driver_transfer里面做也可以。
OK,谢谢楼上诸位了。
.............................
同问,问题的答案是什么呢?我也遇到了相同的问题
当然可以改变。想怎么改就怎么改。
item_done函数的参数应该是返还给sequence的response(或者直接就是空的参数,此种情况下不通过item_done提供response),而不是request。但是有时候为了简单,直接把req拿过来做为参数返回给sequence当做response而已。