UVM学习随笔(6)uvm中的数据供应链——sequence、sequencer和driver(下)

3、采购商(sequencer)和生产商(driver)之间的交易

1)、采购商(sequencer)和生产商(driver)之间的联系方式

通常是生产商(driver)主动联系采购商(sequencer)来获取他手中采购的原料。
sequencer和driver之间的通信是通过tlm通信进行的,driver在tlm通信中的角色是initiator,sequencer在tlm通信中的角色是target,他们之间的通信采用的是get模式,即由driver发起获取item的请求,再由sequencer将item传递传递至driver,driver获得item后给sequencer返回一个response(非必要)。
在这里插入图片描述

2)、sequencer和driver之间的通信端口

uvm_seq_item_pull_port #(type REQ = int, type RSP = REQ)
uvm_seq_item_pull_export #(type REQ = int, type RSP = REQ)
uvm_seq_item_pull_imp #(type REQ = int, type imp = int)

由于driver是initiator,所有driver一侧例化了两种port端口:

uvm_seq_item_port #(REQ, RSP) seq_item_port
uvm_analysis_port #(RSP) rsp_port

sequencer是target,在sequencer一侧例化了export和imp端口:

uvm_seq_item_pull_imp #(REQ, RSP, this_type) seq_item_export
uvm_analysis_export #(RSP) rsp_export

3)、sequencer和driver之间的通信方法

通常情况下,我们使用driver::seq_item_port和sequencer::seq_item_export这一对端口,来完成driver和sequencer之间的item传送。
这一组端口支持如下方法:![在这里插入图片描述](https://img-blog.csdnimg.cn/d3011099b5f64352a68dd10fa0a1101d.jpeg#pic_center在这里插入图片描述

4)、sequence、sequencer和driver之间的握手

在这里插入图片描述生产商(driver)的生产机器一直运转,因此他一直需要原料(item),如果没有了原料,他就通过get_next_item()方法去联系采购商(sequencer),来尝试获取原料。get_next_item()是一个阻塞方法,如果没有拿到item,就一直等待,直到有item可以使用。生产商拿到原料后,对其进行加工,把加工的商品(data)出口到另一个国家(DUT)。商品出口之后,生产商通过item_done()方法,把响应(RSP)发送给劳动者。
对于采购商,他负责采购原料给生产商,但是他也并不是对原料照单全收,他会筛查(仲裁)出符合标准的原料交给生厂商。
劳动者(sequence)通过create_item()方法生产(创建、随机)原料,通过start_item()方法,获取筛查(仲裁)通过的权限,再通过finish_item()方法将筛查通过的原料通过采购商送到生产商的手里。finish_item()方法也是一个阻塞方法,他会等待driver拿到item后送回的消息(RSP),收到响应(RSP)后完成item传输流程。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值