UVM之phase

“phase”是UVM主要的特性之一,其目的是为了统一testbench执行流程。UVM中的phase主要分为3类,即按顺序执行build phaserun-time phaseclean up phase。

1.Build phases-构建和配置testbench;

2.Run-time phases-在testbench上运行test case(会消耗仿真时间);

3.Clean up phases-在该阶段报告test case的结果。

uvm_component基类包含不同pahse的虚拟方法,这些方法由testbench创建者自行填充。在这里就体现了使用UVM的好处了,即各个验证组件独立开发并基于相同的共识相互配合。

要启动UVM testbench,必须在顶层initial语句块调用run_test()方法。

调用run_test()会构造UVM testbench根组件,然后启动UVM phase。

run_test()方法可以传递一个字符串参数用作testbench层次结构的根节点。

Build Phases

build phases在UVM testbench仿真开始时执行,其总体目的是构建、配置和连接测试台组件层次结构。所有的build phases方法都是functions ,在0仿真时间执行完成。一旦构建了UVM testbench 根节点组件,build phase就开始执行。它从上到下地构建testbench 组件层次结构。

Connect Phases

connect phase用于在组件之间建立TLM连接,或向testbench 资源池分配对象句柄(例如virtual interface)。connect phase在build phases方法之后自底向上地执行。

end_of_elaboration Phases

end_of_elaboration phase 用于在仿真开始之前对testbench 的结构、配置或连接进行最终调整或者检查。

Run Time Phases

在start_of_simulation phase之后,UVM并行执行run phase和pre_reset phase到post_shutdown phase。

start_of_simulation Phases

start_of_simulation phase 是在testbench 的耗时部分开始之前发生的一个function 。它旨在用于自下而上地显示信息(例如testbench拓扑结构、组件配置信息等 )。

run Phases

run phase发生在start_of_simulation阶段之后,用于激励的产生和testbench的监测和检查。run phase作为一个task实现,所有uvm_component的run phase都并行执行。drivers 和monitors 总是会使用这一phase。

Clean Up Phases

clean up phases 用于从scoreboards 和functional coverage monitors中提取信息,以确定testcase是否达到其覆盖目标。clean up phases是functions ,所以也不会消耗仿真时间。同理,extract phase、 check phase、 report phase和 final phase都可以在同一个function phase中完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值