UVM初学篇 -(17)UVM sequence激励产生与交互执行机制(一)

为了使激励的产生,发送和驱动分工更加的明确,分为了driver, sequencer和sequnce。而uvm中的sequence机制使得激励的产生和约束变得更加灵活。sequence机制是一种与sequencer,driver交互的过程,概括为:

1,通过sequence发送层次化、随机化的激励。

2,sequencer对sequence进行仲裁。

3,driver接受sequencer传递来的sequence(req)并按照时序激励发送到DUT,而后driver等待从端口返回信号和状态。

4,dirver给sequencer发送反馈信息(rsp)。

sequence的生命周期到此结束,完成一个完整的握手。

如果把sequence_item比作乘客的话,sequence类比为电梯调度中心的调度员,它决定了哪些乘客(sequence_item)进入电梯(driver),sequencer可以比作大楼的调度中心,它控制着哪些事务(transactions)何时被发送到driver。

UVM squence是一个参数化的类,属于uvm_object,不属于uvm树形结构中,它在验证平台中是有生命周期。

图3.14是sequence机制交互流程:

图3.14 sequence机制交互流程图

1,sequence中的流程为:

(1)产生sequence item(create_item)。

(2)sequence_item的随机化。

(3)指定sequencer发送这个sequence(start_item)。

(4)sequence_item送到REQ_FIFO(finish_item),如果有response,得到response(get_response(rsp)) 。

2,sequencer的流程为:

(1)对sequence进行仲裁。

3,driver的流程为:

(1)得到sequence_item(get_next_item(req))。

(2)发送给DUT。

(3)产生response。

这里会涉及到两个概念:sequence的执行和sequence的启动。

执行:sequence的执行是指sequence在sequencer中启动后,执行pre_start、body、post_body等函数,主要涉及到数据的生成和激励的发送。

启动:sequence的启动是指通过手动启动方式和自动启动的方式来激活和使用sequence,从而实现对硬件功能的准确、高效的测试。

一、 sequence中的执行

sequence的执行必须在task body中执行,task body是在task phase中自动调用的。

sequence的发送可以分为uvm_sequence_item类型的发送和uvm_sequence类型的发送。

1 sequence_item的发送

如果sequence发送的是uvm_sequence_item类型,那么发送的方法有以下几种:

(1)start_item 和finish_item

virtual task start_item(uvm_sequence_item item, int set_priority=-1,uvm_sequence_base sequence=null);

 start_item()有三个参数,第一个是传入的sequence_it

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值