一类是function phase,如build_phase、connect_phase等,这些phase都不耗费仿真时间,通过函数来实现; 另外一类是task phase,如run_phase等,它们耗费仿真时间,通过任务来实现。 给DUT施加激励、监测DUT的输出都是在这些phase中完成的。在图5-1中,灰色背景所示的是task phase,其他为function phase。 上述所有的phase都会...
(1)如果12个分支中有一个phase(比如main_phase)挂起了objection ,那么run_phase 中则不需要挂起objection 就可以执行其中的代码;但是这时,run_phase的运行时间被动地受这个挂起objection的分支phase的控制。 (2)而如果在run_phase中挂起了objection,没有在main_phase中挂起,main_phase中的操作则不会执行,此时的运行...
即统一domain的run-time phase是同步的),而run_phase和各个function phase在不同的uvm_component始终是...
包含build_phase()、connect_phase()、end_of_elaboartion_phase()、start_of_simulation_phase()、extract_phase()、check_phase()、report_phase()、final_phase(); 不耗时的几个 phase 在 uvm_tree 中是从上往下执行的,比如说 build_phase,这个 phase 主要用来实例化各个组件环境,理论上为了 uvm_tree 的...
1 task phase与function phase UVM中的phase,按照其是否消耗仿真时间($time打印出的时间)的特性,可以分成两大类, 一类是function phase,如build_phase、connect_phase等,这些phase都不耗费仿真时间,通过函数来实现; 另外一类是task phase,如run_phase等,它们耗费仿真时间,通过任务来实现。
• 在开始仿真后,将会执行run_phase或者对应的12个细分phase。 • 在仿真结束后, 将会执行剩余的phase,分别是extract,check,report和final。 UVM仿真开始 仿真开始时建立验证环境, 用户可以考虑选择下面几种方式: 1.可以通过全局函数(由 uvm_pkg 提供) run_test()来选择性地指定要运行哪一个uvm_test。这里的...
uvm_report_info(get_full_name(),"Run", UVM_LOW);endtasktaskmain_phase(uvm_phase phase); uvm_report_info(get_full_name(),"Main", UVM_LOW);endtaskfunctionvoidextract_phase(uvm_phase phase); uvm_report_info(get_full_name(),"Extract", UVM_LOW);endfunctionfunctionvoidcheck_phase(uvm_pha...
可以在component组件的每个phase加上一个使能信号决定该组件是否跳过该phase的执行。比如某个component的check_phase有一些比较操作,但是在一些...
下图是各个phase的继承关系,从中可以看出 image.png 自上而下(top-down) function phase:build和final phase。 自下而上(bottom-up)f unction phase: connect, end_of_elaboration,start_of_simulation, extract, check, report。 task phase: run_phase以及其他12个小phase: pre_reset, reset_phase, post_res...
3.可以在任何耗费时间的phase 中使用寄存器模型以前门或后门访问。在不消耗时间的phase(如check_phase) 使用后门访问来读取寄存器的值。 4.前门:通过模拟cpu 在总线上发出操作。消耗仿真时间。后门:通过层次化的引用来改变寄存器的值。 5.寄存器模型还提供一些任务,如mirror,update,可以批量完成寄存器模型与DUT的交互。