uvm的sequence

1,每个sequence都有一个body任务。当一个sequence启动后,会自动执行sequence的body任务,所以在sequence的class中,一定要有一个名为body的task。

此外,如果一个sequence中,还有pre_body与post_body,则这两个task,会分别在body的task前面与后面执行。

2,sequence的源码中,没有build_phase,所以,不要在sequence中使用build_phase。但是记得,sequencer中可以有build_phase。

3,当完成一个sequence的定义后,可以使用start任务将其启动。

4,sequence有几个重要的宏,如uvm_do,uvm_create,uvm_send,start_item,finish_item等。

5,注意,sequence派生自uvm_object,sequencer派生自uvm_component,sequencer的作用,是调度其中的sequence在driver之间进行传输。

6,一个sequence应该使用uvm_object_utils宏注册到factory中去。

7,virtual sequence的引入,主要是为了解决sequence之间的控制和调度,他一般不发送transaction,他只控制其他的sequence,起到统一调度的作用。

8,注意,sequence item 与sequence是有区别的,要关注这一点。

sequence 主要是要实现其body任务,用来产生sequence item并将其发送给driver,扩展自如下基类:xxx_seuqence extends uvm_sequence 或者uvm_sequence_base;

sequence item主要用来产生两个components之间的读写操作,流通在uvm_component组件直接,进行通信。它扩展的基类如下: xxx_seq_item extends uvm_sequence_item;

9,用户定义的所有的transaction,都必须从uvm_sequence_item类来派生。transaction就是封装了各种协议接口的事务模型,而uvm_sequence_item,相对于transaction,增加了很多使用的成员变量和函数/任务。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值