想象一下你在建造一栋房子,这里的build_phase就像是准备建筑材料和草图的过程,而main_phase则像是实际动工建造的过程。 build_phase(准备阶段): build_phase是UVM中的一个“准备阶段”,它的作用就像是在开始建造房子之前,你需要准备好所有的建筑材料和蓝图。这个阶段不需要任何实际的“仿真时间”,也就是说,它发生...
UVM提供了如此多的phase,在一般的应用中,无论是function phase还是task phase都不会将它们全部用上。使用频率最高的 是build_phase、connect_phase和main_phase。这么多phase除了方便验证人员将不同的代码写在不同的phase外,还有利于其他验证 方法学向UVM迁移。一般的验证方法学都会把仿真分成不同的阶段,但是这些阶段...
如这12个小phase的名字所示,reset,configure,main,shutdown四个phase是核心,这四个phase通常也是模拟了DUT的正常工作方式,在reset_phase对DUT进行复位,初始化等操作,在configure_phase则进行DUT配置,DUT的运行主要在main_phase完成,shutdown_phase则是做一些与DUT断电相关的操作。通过细分,对DUT实现更加精确的控制。如,...
5.run_phase,main_phase等task_phase 也是按照从叶到跟执行的。 1)每个component 都有run_phase 和12 个小phase。将这些xxx_phase 通过fork join_none全部启动。 2)对于单独component 来说,其12 个run-time 的phae 是顺序执行的,但并不是前面一个phase执行完就立刻执行下一个phase,还要看其他component 的这个...
pre_main_phase(); main_phase(); post_main_phase(); pre_shutdown_phase(); shutdown_phase(); post_shutdown_phase(); end join UVM提供了如此多的phase,在一般的应用中,无论是function phase还是task phase都不会将它们全部用上。使用频率最高的是build_phase、connect_phase和main_phase。这么多phase...
config_phase进行DUT的配置。 DUT的运行主要在main_phase完成。 shutdown_phase则是做一些DUT断电相关的操作。 通过细分实现DUT更加精确的控制。 5.1.3 phase的执行顺序 UVM有9个phase: build_phase connect_phase end_of_elaboration_phase start_of_simulation_phase ...
task main_phase(uvm_phase phase); 这个输入参数中的phase是为了便于任何component的main_phase中都能raise_objection,而要raise_objection则必须通过phase.raise_objection来完成,所以必须把phase作为参数传递到main_phase等任务中。可以想象,如果没有这个phase参数,那么需要raise一个objection就会比较麻烦。
1. do_monitor是一个无线循环,在driver_main_phase中控制objection的raise和drop。 2. 如果line42加上时间延迟,则会直接退出main_phase,进入下一个phase. 如果注释掉line43行也是直接退出main_phase,进入下一个phase. 打印结果: 3. 如果加上line49, line51,main_phase则无法退出。打印结果: ...
UVM把run_phase又分割成12个小的phase: 1. 为啥要分成小phase,精细化控制 reset/configure/main/shutdown是核心 一个大的chip里面有很多功能性比较独立的模块,这些功能性独立意味着一个模块A在run的时刻另一个模块B可以不run,也可以run,B运行不运行和A运行不运行关联度不大甚至没有关联,比如A是只负责处理发通路...
在super.build_phase中,主要完成自动获取config_db中参数的功能,如果自定义的component无需获取任何参数,也可省略。 5. phase的跳转 默认情况下各phase是从上到下按时间顺序执行,但可以自定义做必要的跳转,如在main_phase执行过程中,突然遇到reset信号被置起,可以用jump()实现从mian_phase到reset_phase的跳转: ...