# uvm_reg_sequence

Summary

uvm_reg_sequence
Methods |
atomic_lock | Establishes an exclusive atomic lock for the current process.
atomic_unlock | Releases the lock acquired via atomic_lock.
start | Starts the frontdoor sequence.

### Methods

### atomic_lock

> virtual task atomic_lock()

Establishes an exclusive atomic lock for the current process.

Calls to start by processes other than the process that has established the atomic lock will be blocked until the atomic lock has been released.

The lock can be released via atomic_unlock.

@uvm-contrib This API is being considered for potential contribution to 1800.2

### atomic_unlock

> virtual function void atomic_unlock()

Releases the lock acquired via atomic_lock.

A warning shall be generated if atomic_unlock is called without a corresponding atomic_lock.

@uvm-contrib This API is being considered for potential contribution to 1800.2

### start

> virtual task start(
> | uvm_sequencer_base | sequencer, |  |
> | uvm_sequence_base | parent_sequence | = | null,
> | int | this_priority | = | -1,
> | bit | call_pre_post | = | 1
> )

Starts the frontdoor sequence.

If the calling process has not already acquired an atomic lock via atomic_lock, then start will call atomic_lock automatically to establish a lock.

When the calling process has established a lock, either in advance of the call to start or by start itself, then super.start() is called, and passed the corresponding arguments from frontdoor.start().

@uvm-contrib This API is being considered for potential contribution to 1800.2

> virtual task atomic_lock()

Establishes an exclusive atomic lock for the current process.

> virtual function void atomic_unlock()

Releases the lock acquired via atomic_lock.

> virtual task start(
> | uvm_sequencer_base | sequencer, |  |
> | uvm_sequence_base | parent_sequence | = | null,
> | int | this_priority | = | -1,
> | bit | call_pre_post | = | 1
> )

Starts the frontdoor sequence.