管理多个sequence的执行方法:top_sequence

文章目录

  • 前言
  • 1、管理sequence执行的方法
  • 2、top_sequence
  • 3、top_sequencer
  • 4、top_sequence的执行
  • 5、top_sequence实现sequence之间的同步
  • 6、top_sequence的应用实例演示
  • 总结


前言

在UVM验证环境中,我们通常会有很多不同类型的sequence,例如:控制复位的sequence、控制寄存器配置的sequence、控制总线的sequence等等,这些不同的sequence需要管理。本文主要记录一下,在同一个uvm验证环境中,不同的sequence之间,同步以及执行顺序先后,的控制方法。


1、管理sequence执行的方法

控制不同sequence之间的同步以及执行顺序的方法,通常是采用top_sequence来进行管理。top_sequence能够在一个phase中,同时管理多个sequence的执行,能够控制sequence的独占访问,不需要单独写sequence和sequencer,而是复用已有的sequence和sequencer,只是对其进行管理。
管理多个sequence的执行方法:top_sequence_第1张图片
管理多个sequence的执行方法:top_sequence_第2张图片

2、top_sequence

top_sequence的代码如下所示,首先利用`uvm_declare_p_sequencer宏来创建一个p_sequencer,然后声明需要管理的sequence,最后在body()方法中,将sequence送入对应的sequencer中。
管理多个sequence的执行方法:top_sequence_第3张图片
管理多个sequence的执行方法:top_sequence_第4张图片

3、top_sequencer

在top_sequencer中,只需要声明一下需要管理的sequence对应的sequencer即可。
管理多个sequence的执行方法:top_sequence_第5张图片
管理多个sequence的执行方法:top_sequence_第6张图片

4、top_sequence的执行

在测试用例中,首选需要声明并创建top_sequencer,其次将每个sequence与之对应sequencer的default_sequence设置成null,最后再配置top_sequencer去执行top_sequence。

要注意的是,需要在connect_phase中将top_sequencer中声明的sequencer,与agent中对应的sequencer连接起来。
管理多个sequence的执行方法:top_sequence_第7张图片

管理多个sequence的执行方法:top_sequence_第8张图片

5、top_sequence实现sequence之间的同步

如下图所示,利用top_sequence,实现先执行pci_seq,i2c_seq等待某个事件之后再去执行。
管理多个sequence的执行方法:top_sequence_第9张图片

6、top_sequence的应用实例演示

应用top_sequence实现sequence的管理实例,可以参考文章《UVM环境中reset复位的处理》


总结

本文主要记录一下,如何利用top_sequence,实现多个sequence的管理。

你可能感兴趣的:(UVM,uvm,top_sequence,sequence管理)