[source]

Class uvm_pkg::uvm_barrier

CLASS

uvm_barrier

The uvm_barrier class provides a multiprocess synchronization mechanism. It enables a set of processes to block until the desired number of processes get to the synchronization point, at which time all of the processes are released.

Variables

Name

Type

Description

type_name

string

Constructors

new(string name = "", int threshold = 0)

Function

new

Creates a new barrier object.

Parameters:
  • name (string)

  • threshold (int)

Functions

reset(bit wakeup = 1)

Function

reset

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 wakeup bit is set, any currently waiting processes will be activated.

Parameters:

wakeup (bit)

set_auto_reset(bit value = 1)

Function

set_auto_reset

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.

Parameters:

value (bit)

set_threshold(int threshold)

Function

set_threshold

Sets the process threshold.

This determines how many processes must be waiting on the barrier before the processes may proceed.

Once the threshold is reached, all waiting processes are activated.

If threshold is set to a value less than the number of currently waiting processes, then the barrier is reset and waiting processes are activated.

Parameters:

threshold (int)

get_threshold()

Function

get_threshold

Gets the current threshold setting for the barrier.

get_num_waiters()

Function

get_num_waiters

Returns the number of processes currently waiting at the barrier.

cancel()

Function

cancel

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.

create(string name = "")
Parameters:

name (string)

Return type:

uvm_object

get_type_name()
do_print(uvm_printer printer)
Parameters:

printer (uvm_printer)

do_copy(uvm_object rhs)
Parameters:

rhs (uvm_object)

Tasks

wait_for()

Task

wait_for

Waits for enough processes to reach the barrier before continuing.

The number of processes to wait for is set by the set_threshold method.