UVM进程同步之uvm_barrier

本文详细介绍了UVM环境下uvm_barrier类的使用方法及其在进程同步中的作用。通过设置阈值,多个进程可以同时等待并同步执行,有效管理了进程间的同步问题。文章还讲解了wait_for、reset、set_threadhold等关键方法,以及uvm_barrier_pool资源池的管理方式。

在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”),来实现同步

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值