UVM中的phase执行顺序

UVM中的phase执行顺序

Phase分类

UVM中主要有两种phase,包括task phase 和function phase。Task phase需要消耗仿真时间,但是function phase消耗仿真时间。其中function phase有8个,task phase有12个,其如下图所示:

UVM中的phase执行顺序

 

其中棕色背景为function phase,绿色背景为task phase。

Phase执行顺序

Phase的执行顺序是自上而下的,在上图中,按照Phase的顺序,在时间上是自上而下的执行方式。

对于function phase中,各个phase是按照顺序执行的,同一时刻只有一个phase在运行,但是task phase中各个phase是并行运行的,其又称为动态运行的phase,对于task phase运行的伪代码为:

Fork

 Begin

      Run_phase();

end

 begin

      pre_reset_phase();

      reset_phase();

      post_ reset_phase();

      pre_configure_phase();

configure_phase();

post_ configure_phase();

pre_main_phase();

main_phase();

post_ main_phase();

pre_shutdown_phase();

shutdown_phase();

post_ shutdown_phase();

 end

join

UVM树中Phase的执行顺序

UVM中的phase执行顺序

 

对于UVM环境中的Phase执行,如上图所示,不消耗时间的phase中,只有build_phase是自上而下执行,其他的function phase都是自下而上执行的。function phase中各个phase中例化完以后的每个phase中的执行顺序与例化的顺序没有关系。function phase的8个phase按照顺序执行,但是每个phase中的例化成员执行是按照字典序执行的。

在UVM环境中的动态Phase也是按照自下而上的顺序执行的,但是task phase是需要消耗时间的,所以它并不是等到“下面”phase执行完以后再去执行上面的Phase,而是将这些run_phase同时通过fork …join_none的方式全班启动,所以可以描述为自下而上启动,同时运行

对于UVM树中多个同一层次的多个component而言,一个component的某个phase执行完以后,需要等待环境中的所有component的该phase都执行完成,所有component同时进入下一个phase,其执行过程可以表示为:

UVM中的phase执行顺序
 

component A和component B的main_phase都是从0ns开始执行,100ns的时候A的main_phase执行完成,200ns的时候A的main_phase执行完成,然后200ns的时候A和B一起开始执行post_main_phase,300ns的时候B的post_main_phase执行完成,500ns的时候A的post_main_phase执行完成,A和B的同一phase执行完成才算UVM环境中的这一phase执行完成。

分享:http://blog.sina.com.cn/s/blog_8367f7e30102xltw.html

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值