| |
Phase Descriptions
以下部分描述了每个不同UVM阶段的目的。
Build Phases
build phases在UVM测试平台仿真开始时执行,其总体目的是构建、配置和连接测试平台组件层次结构。
所有build phase methods都是functions,因此在零仿真时间内执行完。
build
构建UVM测试平台根节点组件后,build phase开始执行。它从上到下构造testbench组件层次结构。延迟每个组件的构造,以便可以通过上层来配置组件层次结构中的每个层。在build phase期间,uvm_components是使用UVM factory间接构建的。
connect
connect phase用于在组件之间建立TLM连接或为测试平台资源分配句柄。connect phase必须在build method将testbench组件层次结构放置到位后才会执行,connect phase从层次结构的底部向上工作。
end_of_elaboration
end_of_elaboration phase用于在仿真开始之前对测试平台的结构、配置或连接性进行任何形式的最终调整。它的实现可以确保测试平台组件层次结构和互连连接已经到位。这个phase自下而上执行。
Run Time Phases
在build phase之后的run time phase期间生成并执行测试平台激励。在start_of_simulation phase之后,run phase与"pre_reset phase到post_shutdown phase之间的phase“是并行执行的。run phase存在于OVM中并保留以允许OVM组件轻松迁移到UVM。这也是事务传输器将使用的phase。将其他phase添加到UVM中,以便为test、scoreboard和其他类似组件提供更精细的运行时间分段精度。期望大多数测试平台仅使用reset,configure,main和shutdown,而不是它们的pre和post变体phase。
start_of_simulation【说明:此处这个属于function,应放在上面end_of_elaboration后面说的,不应该排版在这里】
start_of_simulation阶段是在测试平台的耗时部分开始之前发生的函数。它旨在用于展示banners、测试平台拓扑结构或配置信息。它以自下而上的顺序调用。
run
运行阶段发生在start_of_simulation phase之后,用于生成和检查测试平台的activities(我猜与active和passive有关)。run phase作为task实现,所有uvm_component 的run phase都并行执行。诸如driver和monitor之类的Transactor几乎总是使用这个phase。
pre_reset
pre_reset phase与run phase同时启动。其目的是处理复位前应发生的任何活动,例如等待电源良好信号激活。我们预计这一phase不会有太大用处。
reset
reset phase保留下来用于DUT或接口特定的复位行为。例如,此phase将用于生成复位并将接口置于其默认状态。
post_reset
post_reset phase适用于复位后立即需要的任何活动, 这可能包括training or rate negotiation行为。我们预计这一phase不会有太大用处。
pre_configure
pre_configure阶段用于在复位完成后为DUT的配置过程做准备所需的任何事情,例如driver中等待复位完成后来执行此处phase。它还可以用作修改要更新到DUT的test/environment描述的信息的最后机会。我们预计这一phase不会有太大用处。
configure
configure phase用于对DUT和测试平台中的任何存储器进行读写,以便为测试用例的启动做好准备。它还可用于将信号设置为准备好测试用例启动的状态。
post_configure
post_configure阶段用于等待配置的影响通过DUT传播,或者使其达到准备启动主要的test激励的状态。我们预计这一phase不会有太大用处。
pre_main
pre_main phase用于确保所有必需组件准备好开始生成激励。我们预计这一phase不会有太大用处。
main
这是生成测试用例指定的激励并将此激励应用于DUT的地方。当所有激励都完成生成或发生超时时,它就会完成。大多数数据将由此phase启动的sequence处理。
post_main
该phase用于处理main phase剩下的任何相关事情。 我们预计这一phase不会有太大用处。
pre_shutdown
该phase是在shutdown phase之前需要进行的任何DUT激励的buffer。 我们预计这一phase不会有太大用处。
shutdown
shutdown phase用于确保main phase期间产生的激励的影响已经传播通过DUT,任何结果数据都已释放消失。它还可以用于执行读取状态寄存器的耗时sequence。
post_shutdown
在退出活动的仿真phase之前执行任何最终活动。在post_shutdown phase结束时,UVM测试平台执行过程开始启动clean up phase。我们预计这一阶段不会有太大用处(尽可能使用一些对象代码的例外)。
Clean Up Phases
clean up phase用于从scoreboard和功能覆盖monitor中提取信息,以确定测试用例是否已通过和/或达到其覆盖目标。clean up phase作为function(函数)被实现,因此执行时间为零。它们从组件层次结构的底层至顶层工作。
extract
extract phase用于从scoreboard和功能覆盖monitor检索和处理信息。这可能包括计算report phase使用的统计信息。该phase通常由分析组件使用。
check
check phase用于检查DUT是否正常运行并识别在执行测试平台期间可能发生的任何错误。该phase通常由分析组件使用。
report
report phase用于显示仿真结果或将结果写入文件。该phase通常由分析组件使用。
final
final phase用于完成测试平台尚未完成的任何其他未完成的操作。