引入phase机制的原因
我们虽然可以通过new函数来实现对象例化,但是new函数无法保证验证环境在实现层次化时保证例化的先后关系,以及各个组件例化后的连接。因此uvm引入了phase机制。
phase执行机制
phase按是否消耗仿真时间,分为俩大类,一类是function phase,如build_phase,connect_phase这些不消耗时间在零时刻就可以完成。另一类是task phase,如run_phase。这类是消耗仿真时间的。
phase的执行顺序
build_phase是自上而下执行的,只有例化高层的组件,才能创建空间来容纳低层组件。
uvm中,除了build_phase外,剩下的所有不耗时间的phase都是自下而上进行的。
如何开始和结束UVM仿真
一般通过全局函数run_test()来开始仿真。
使用objection来控制仿真退出。我们一般在sequence中挂起sequencer的objection,当sequence完成后,再撤销objection。