[UVM]6.sequencer & driver方法


6.sequencer和driver端口和方法

(1)概述

通信是双向的,drive是initial。

(2)端口

  • uvm_analysis_port是广播端口,driver专门广播response的。

  • sequencer中有含有import口的response的fifo,没有request的fifo,所以只会例化export,另外需要注意的是uvm_seq_item_pull_imp例化seq_item_export。

  • 成对的端口:seq_item_port与 seq_item_export; rsp_port与 rsp_export。

(3)方法

  • item_done: driver 写入rsq到sequencer的fifo中,sequence则用get获取。

  • output REQ指的是sequencer发出了REQ,driver get到了,所以要output;input指的是driver要输入些数据到方法中。

(4)uvm_sequencer和uvm_driver是参数类,必要时需类型转换

(5)driver回复response的多种方法


7.事务传输实例

(1)实例:uvm_sequence_item::bus_trans、uvm_sequence::flat_seq

  • 两次类型转换主要是因为create_item和get_response返回的时父类型uvm_sequence_item。

  • start_item: 立即返回,是函数,表示item开始排队,等待发送。

  • finish_item是blocking的,start_item不是阻塞的是立即返回的。

function uvm_sequence_item create_item(uvm_object_wrapper type_var,

                           uvm_sequencer_base l_sequencer, string name);

代码:

(2)实例:uvm_sequencer::sequencer、uvm_driver::driver

  • get_sequence_id:由于没有做域的自动化声明,所以不会被copy()。rsp.sequence_id来决定这个rsp是哪个sequence发送的。

代码:

(3)实例:uvm_env::env、uvm_test::test1

  • seq.start():sequence就知道挂载在名叫sqr的sequencer上,sequence自动执行body(),但并没随机化。

代码:

(4)输出结果


8.通信时序

(1)框图

(2)详细时序


9.握手建议

(1)

(2)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值