7 UVM序列1---Sequence&Item、Sequencer&Driver

目录

1 新手上路

序列间互动

继承关系

总结

2 Sequence&Item

uvm_sequence_item

Flat sequence

Hierarchical Sequence

3 Sequence&Driver

双方端口和方法

实例(过程分析 通信时序  握手建议)

传输分析:

通信时序

 握手建议:


1 新手上路

序列间互动

事务的传输需要通过以下几个核心类来实现:

uvm_sequence_item  uvm_sequence uvm_sequencer  uvm_driver

它们之间的关系可以比喻为:sequence就是道路,sequnence_item就是道路上行驶的货车,sequencer就是目的地的关卡,driver就是最终卸货的地方

 整个过程的互动关系:

  1. sequence产生目标数量的内容不同的item(随机化)。
  2. item经过sequencer再流向driver
  3. driver拿到item后,解析发送给dut形成有效激励
  4. 当必要时,driver可以返回rsp给item对象再返回给sequencer,最终抵达sequence。目的在于检查driver图dut的互动状态。

 过程中需要注意的是:

sequence_item是每次互动的最小粒度内容,包含相应的成员变量和方法;

sequence可以产生多个item,也可以包好多个sequence,使其具有层次化,可以看做是产生激励内容的载体

sequnencer是driver和sequnence之间的桥梁,它和driver都是组件类型,相互间的通信使用TLM端口,通信参数就是sequence_item类型。还可以在面向多个并行sequence时,仲裁分配。(存在的原因)

driver永远喂不饱,一直想要get_item。

继承关系

从图中可以看出,item和sequence都继承于uvm_object,所无法通过phase机制和config-db对其直接做相应运行和配置。(phase机制和config机制都是针对组件进行操作的)。

所以,sequen必须挂载到sequencer组件上间接获取相关配置参数和信息。

                                    

总结

 数据传输方式采用的是get模式,即driver不断的从sequencer中拿到item.原因有两点:

1 get模式下,driver到sequence的返回值是可选的;put模式下的返回值是必须的

2 get更符合sequencer的仲裁特性。

2 Sequence&Item

对于激励的生成和场景控制,是由sequencen来实现的;激励的具体数据和控制要求,是由sequence_item自己实现的。

uvm_sequence_item

sequnence_item继承于object,所以具备核心基类的方法,一般具备以下数据成员:

控制类(读写类型、数据长度、传输模式)

负载类(总线上的数据包)

配置类(控制driver的驱动行为)

调试类(标记额外信息方便调试

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值