virtual function void extract_phase(uvm_phase phase); super.extract_phase(phase); `uvm_info(tID, "extract_phase is executed", UVM_LOW) virtual function void final_phase(uvm_phase phase); super.final_phase(phase); `uvm_info(tID, "final_phase is executed", UVM_LOW) endfunction endclass ...
virtual taskpost_shutdown_phase(uvm_phase phase);`uvm_info(tID, "post_shutdown_phase is executed", UVM_LOW) endtask virtual function void extract_phase(uvm_phase phase); super.extract_phase(phase);`uvm_info(tID,"extract_phase is executed",UVM_LOW)virtualfunctionvoidfinal_phase(uvm_phase p...
实际上run_phase任务和上面细分的12个phase是并行的,即在start_of_simulation_phase任务执行以后,run_phase和 reset_phase开始执行,而在 shutdown_phase执行完成之后, 需要等待run_phase执行完才可以进入extract_phase。 虽然run_phase与细分的12个phase足并行的,但12个phase也是按·先后顺序执行的。 为了避免不必要的...
文件:src/ch5/section5.1/5.1.1/my_case0.sv4 class my_case0 extends base_test;5 string tID = get_type_name();…11 virtual function void build_phase(uvm_phase phase);12 super.build_phase(phase);13 uvm_info(tID, "build_phase is executed", UVM_LOW)14 endfunction15 …26 virtual funct...
耗时的 phase 的运行是在 uvm_tree 中从下往上运行。 不耗时 phase (图中白色部分-function) 包含build_phase()、connect_phase()、end_of_elaboartion_phase()、start_of_simulation_phase()、extract_phase()、check_phase()、report_phase()、final_phase();...
phase(uvm_phasephase);end_of_elaboration();return;endfunctiontaskuvm_component::run_phase(uvm_phasephase);run();return;endtaskfunctionvoiduvm_component::extract_phase(uvm_phasephase);extract();return;endfunctionfunctionvoiduvm_component::check_phase(uvm_phasephase);check();return;endfunctionfunction...
那么,会在200时刻,整个验证平台的main_phase才执行完毕,接下来执行post_main_phase。在A等待期间,仅仅是等待,其不做任何事情。这里需要说明的是,在验证平台运行到run_phase时,需要运行完run_phase和post_shutdown_phase后,才会进入extract_phase。 2. super.phase的作用...
UVM_PHASE_DOMAIN:Phase域的概念比较抽象,它用来表示整个由节点(node)构成的有向无环图(graph)。
UVMPhase机制中包括了七个基本的测试阶段,分别是:建立连接(build phase)、配置(configure phase)、预运行(pre-run phase)、运行(run phase)、抽取数据(extract phase)、结束(finish phase)和销毁(destruct phase)。在每个阶段中,UVMPhase机制都为不同的组件提供了特定的钩子函数,以便在不同的时间点执行相应的操作。
UVM_PHASE_IMP 从代码功能角度来看可以分为两类: UVM_PHASE_DOMAIN/UVM_PHASE_SCHEDULE UVM_PHASE_IMP 比如:extract_phase的m_predecessors[]就包括run_phase和post_shutdown_phase,这里就保证phase的先后顺序。 sync是针对不同domain来说的,在不同domain的12-run_time_phase相互sync的时候才会用到。