phase机制简介
phase机制主要目的是使UVM的运行仿真层次化,让各种例化先后次序正确。UVM的phase机制主要有9个,外加12个动态phase。除了run_phase是task,要消耗仿真时间,其余都是function。build_phase和final_phase是自顶向下运行,其余都是自底向上运行。run_phase和12个动态phase是并行运行的,有这12个动态phase主要是进一步将run_phase中的事务划分到不同的phase中进行,简化代码。注意,run_phase和12个动态phase最好不要同时使用。
*从运行上看,9个phase顺序执行,不同组件的同一个phase全部执行完之后才能进入下一个phase,此外,不同组件中同一个phase执行也有顺序,build_phase自顶向下,connect_phase自底向上等。
phase机制执行顺序(扩展)
无论是自上而下还是自下而上,都只适用于UVM树中有直系关系的component,对于同一层次,具有兄弟关系的component,例如agent中的driver和monitor,它们是谁先被例化的呢?实际上,无论是在自上而下的build_phase还是自下而上的connect_phase,其执行顺序都与代码顺序无关,而是严格按照实例化时指定名字的字典序(abcdefg....),如aaa先例化,ddd再例化。
除了兄弟关系的component(driver和monito