关于UVM阶段build()
和run()
,我有几个问题。它们可能适用于其他验证方法以及a>为什么build()
阶段以自上而下的顺序执行。这是否意味着我们需要在build()
阶段新建所有组件,然后继续执行在类中实例化的其他子组件的build()
? b>在run()
期间,super.run()
被称为? run()
阶段的执行顺序是什么?
是的,UVM的build_phase()
以自上而下的顺序执行,因为子组件在父组件的build_phase()
中构造之前不存在(并且UVM建议使用工厂create()
方法而不是直接调用构造函数new()
)。 build_phase()
也是自上而下执行的,这样父母可以提供孩子在执行他们的build_phase()
时将使用的覆盖设置
每个组件的run_phase()同时执行,没有您可以依赖的已定义顺序。
如果要扩展类需要基本方法的功能,则只需要调用super.method()。 uvm_component
的run_phase()内部没有任何内容,所以在从它扩展时不需要调用super.run_phase()
。从基类扩展类时,可能需要调用它。