UVM:6.2.1 在同一sequencer 上启动多个sequence
  VDP7COGanTeB 2023年11月02日 56 0


1.在my_sequencer 上同时启动两个sequence。

1)my_case0:

UVM:6.2.1 在同一sequencer 上启动多个sequence_优先级


2)sequence0:

UVM:6.2.1 在同一sequencer 上启动多个sequence_优先级_02


3)sequence1:

UVM:6.2.1 在同一sequencer 上启动多个sequence_优先级_03


4)结果:

UVM:6.2.1 在同一sequencer 上启动多个sequence_优先级_04

4.1)sequencer 选择哪个sequence 的transaction是sequence 机制中的仲裁问题。

4.2)对于transaction 来说,存在优先级概念,越高越容易被选中。

4.3)使用uvm_do 或者uvm_do_with 是,产生的transaction 优先级默认是 -1。

4.4)通过uvm_do_pri 和uvm_do_pri_with 改变transaction 的优先级:


2.transaction 优先级

1)my_case0:

UVM:6.2.1 在同一sequencer 上启动多个sequence_优先级_05

1.1)第二个参数是优先级,必须大于-1,数字越大,优先级越高。

1.2)应该sequence1 全部完成后,在开始sequence0。

1.3)运行后,不是这样的。。。因为sequencer 的算法有很多种:

UVM:6.2.1 在同一sequencer 上启动多个sequence_优先级_06

默认是SEQ_ARB_FIFO。

1.4)若要有效,应该设置 SEQ_ARB_STRICT_FIFO 或者 SEQ_ARB_STRICT_RNADOM

UVM:6.2.1 在同一sequencer 上启动多个sequence_优先级_07

1.5)结果:

UVM:6.2.1 在同一sequencer 上启动多个sequence_优先级_08

3.sequence 也可以设置优先级:

UVM:6.2.1 在同一sequencer 上启动多个sequence_优先级_09

1)第二个参数是parent sequence,可以设为null。

2)第三个是优先级,如果不指定为-1,同样不能为一个小于-1  的数字。

3)sequence1 发完才发送sequence0。 

4)对sequence 设置优先级的本质即设置其内产生的transaction 的优先级。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

VDP7COGanTeB