UVM进程同步之uvm_barrier

在UVM中除了使用uvm_event来做同步之外,有时候还有这种应用场景,比如所有进程均在等待,到达一个的等待阈值时,所有进程再同时执行。这个时候可以使用uvm_barrier这个类来实现这种操作。

uvm_barrier专门用来同步一定个数进程的类。比如我们需要同步6个进程,那么6个进程各自调用uvm_barrier.wait_for。同时要设置阈值个数是6。这里面有3个重要的方法

1:wait_for

2:reset

3:set_threadhold

2个重要的变量

1:num_waiters

2: threadhold

其中wait_for用于等,每调用一次num_waiters++。如果num_waiters>=
threadhold。这个时候触发event,结束阻塞

set-threadhold用于设置阈值(threadhold),同时判断此时的num_waiters>= threadhold,如果成立,调用reset(1)

reset方法:复位,如果传入的参数是1,那么在复位前trigger一下事件,让所有等待的进程结束阻塞

所以一般结束进程阻塞的方法,

1:wait_for等到了,trigger事件,结束阻塞

2:wait_for没有等到,但是再调用set-threadhold,使得num_waiters>=
threadhold,自动调用reset,trigger事件,结束阻塞

管理uvm_barrier的地方叫uvm_barrier_pool的资源池(single模式)。在创建uvm_barrier的时候使用uvm_barrier_pool::get_global(“string_name”),来实现同步

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值