The uvm barrier class enables synchronization control between the processes.
- uvm_barrier allows a set of processes to be blocked until the desired number of processes get to the
- synchronization point
- Processes get released Once after all the process reaching synchronization point
If the threshold is set to a value less than the number of currently waiting for processes, then the barrier is reset and waiting processes are activated
The uvm_barrier class has below built-in methods,
Creates a new barrier object.
This method call, Waits for enough processes to reach the barrier before continuing.
The number of processes to wait for is set by the set_threshold method.
This determines how many processes must be waiting on the barrier before the processes may proceed.
Gets the current threshold setting for the barrier.
Returns the number of processes currently waiting at the barrier.
Resets the barrier. This sets the waiter count back to zero.
The threshold is unchanged. After reset, the barrier will force processes to wait for the threshold again. If the wake-up bit is set, any currently waiting processes will be activated.
Determines if the barrier should reset itself after the threshold is reached.
The default is on, so when a barrier hits its threshold it will reset, and new processes will block until the threshold is reached again. If auto-reset is off, then once the threshold is achieved, new processes pass through without being blocked until the barrier is reset.
Decrements the waiter count by one. This is used when a process that is waiting on the barrier is killed or activated by some other means.
Using uvm_barrier involves below methods,
- Declare and create the uvm_barrier
- Set the process to be waiting
- Calling wait_for() method inside the process