首先,UVM为什么需要使用phase机制呢,假象一下,每个组件都自己玩自己的,那么当driver需要从sequencer哪里获取数据的时候,sequencer却没有准备好,那岂不是天下大乱了。
所以UVM 的phase机制主要目的就是确保各个组件之间可以有序运行。
ok 那么UVM 的各个phase又是如何运行的呢?
1.各个phase按照一定的顺序,从上往下顺序运行,
2.每个组件内部的class 按照phase名称顺序运行。比如driver内有两个class 都有build phase 和main phase 那么,是两个class内的build phase都运行完了以后再运行main phase
3.UVM内部的各个组件中的phase也是按照顺序运行。同理driver 和sequencer都有build phase main phase 那么是当driver 和sequencer内的build phase 都运行完以后再会运行driver 和sequencer的main phase
以上即为顺序运行
4.UVM内部的phase会自动运行,但是用户自定义的phase只有调用的时候才会运行。如main phase , main phase11, main phase22。假如没有调用main phase11那么这个phase是不会运行的