1.UVM 可以使sequence 在一定时间内不参与仲裁,令此sequence 失效。

2.sequencer 在仲裁时,查看sequence 的is_relevant 函数返回的结果。如果为1,说明有效,否则无效。可以重载is_relevant 函数是sequence 失效:

UVM:6.2.4 sequence 的有效性_函数返回

5个0才对!

UVM:6.2.4 sequence 的有效性_函数返回_02


3.结果:

UVM:6.2.4 sequence 的有效性_函数返回_03

1)is_relevant 与grab和lock是完全相反的。

2)is_relevant 使sequence 主动放弃sequencer 的使用权。grab 和lock 抢占sequencer 的使用权。


4.wait_for_relevant 也与sequence 的有效性相关:

UVM:6.2.4 sequence 的有效性_函数返回_04


结果:

UVM:6.2.4 sequence 的有效性_函数返回_05

1)sequencer 发现其上启动的所有sequence 都无效时,会调用wait_for_relevant 并等待sequence 变有效。(是被停掉的那个,还是所有的?sequence0 最先无效,sequence1 发完才无效,然后调用wait_for_relevant)

2)sequence0和 sequence1 同时启动,发送3transaction 后,sequence0 变为无效,一直发送sequence1,都发完后,发现sequence0 无效,会调用wait_for_relevant。

3)sequence0 的实效使自己控制的,变的有效是其他sequence 控制的

4)如果sequence1 的transaction 发送完毕,而sequence0 没有重载wait_for_relevant 任务,将会错误:

UVM:6.2.4 sequence 的有效性_函数返回_06

is_relevant 和wait_for_relevant 一般应成对重载。