ic验证笔记-20天挑战day17

1.sequence和item,sequencer和driver之间的关系

transaction在sequence中传输,到达driver

创建了组件和顶层环境,完成组件之间的TLM端口(道路,桥梁,河道)

物流-sequence(run_phase 之中)

sequence就是道路,sequence item是道路上行驶的货车,sequencer是目的地的关卡,driver是最终卸货的地方

driver对到站的货物,经过扫描处理,将它们分解为更小的信息量,提供给DUT

sequence产生目标数量的sequence item

sequence是driver和dut交互的最小粒度

假如DUT是一个slave端,driver扮演master去访问DUT的寄存器,那么sequence item需要定义的数据信息至少包括访问地址,命令码,数据和状态值,在driver获得这些信息后,会通过时序方式在interface一侧发起激励送至DUT

sequence和driver是component组件,它们之间的通信也是通过TLM端口来实现的

sequence item从sequence经过sequencer和driver,它的类型必须是保持一致的uvm_sequence_item和uvm_seqence都是基于uvm_object,不同于uvm_component只应当在build阶段进行创建和配置,可以在任何阶段创建

无法判断环境在run阶段数目时间点会创建sequence和将其挂载(attach)到sequencer上面,无法通过UVM环境结构或者phase机制来识别sequence的运行阶段

由于uvm_object独立于build阶段之外,使得用户可以有选择地,动态地的在合适时间点挂载所需要的sequence和item

如果sequence一旦活动起来,必须挂载到一个sequencer上

sequencer作用:

sequencer作为一个组件,可以通过TLM端口与driver传送item对象

sequencer在面向多个并行sequence时,有充分的仲裁机制来合理分配和传送item

driver从sequencer获取item,数据传输是get模式

选择get模式的原因

get模式,item从sequence中产生,穿过sequencer到达driver,就可以结束该传输。put模式,则必须是sequencer从item传送到driver,同时收到返回值才可以发起下一次的传输。

sequencer具有仲裁特性,可以使得多个sequence同时挂载到sequencer上面,get模式更符合“工学设计”。driver作为initiator, 一旦发出get请求,他会先通过sequencer,继而获得仲裁后的item。

2.sequence和item

 sequence指代的是uvm_sequence类,item指代的是uvm_sequence_item类。激励的生成和场景由sequence来控制,激励所需要的具体数据和要求则需要item的成员数据提供的。

item是基于uvm_object类,具备uvm核心基类所必要的数据操作方法,copy(),clone(),compare(),record()

item的数据成员:

控制类:譬如总线协议上的读写类型,数据长度,传送模式

负载类:数据总线上的数据包

配置类:用来控制driver的驱动行为,例如命令driver的发送间隔

调试类:用来标记一些额外信息方便调试,例如该对象的实例序号,创建时间

class bus_trans extends uvm_sequence_item;

        rand bit write;

        rand int data;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值