phase间的执行顺序
UVM内所有的phase如下图所示,不同phase间的执行顺序从时间上讲是从上往下执行,而run_phase和下图最右边的12个phase是并行执行的。
所有conponent的相应phase结束了,验证平台才会进入下一个phase。只有所有componennt的run_phase和post_shutdown_phase结束才会进入下一个phase。
phase内部执行顺序:
build_phase的执行顺序是从上往下执行的,先执行my_case的build_phase、在执行env、agent等;一层一层往下执行。bulid_phase自上向下执行是因为低层次组件需要在高层次组件build里面建立,且低层次组件需要受高层次的配置控制。
connect_phase的执行顺序是从下往上执行的,先执行driver和monitor的connect_phase,再执行agent的connnect_phase。
兄弟关系的component的相同phase之间是按照字典顺序来执行的。
Task_phase消耗时间,也是通过fork_join_none的方式自下向上启动执行的。
多个component phase异步
如上图所示,同一个domain内的多个component的phase是同步的,起一个phase执行完才能进入下一个phase。
如上图所示,位于不同domain内的component的phase是异步的,不用等到不同domain内的componenet的前一个phase执行完就能进入下一个phase。