# uvm_random_stimulus #(T)

A general purpose unidirectional random stimulus class.

The uvm_random_stimulus class generates streams of T transactions. These streams may be generated by the randomize method of T, or the randomize method of one of its subclasses. The stream may go indefinitely, until terminated by a call to stop_stimulus_generation, or we may specify the maximum number of transactions to be generated.

By using inheritance, we can add directed initialization or tidy up after random stimulus generation. Simply extend the class and define the run task, calling super.run() when you want to begin the random stimulus phase of simulation.

While very useful in its own right, this component can also be used as a template for defining other stimulus generators, or it can be extended to add additional stimulus generation methods and to simplify test writing.

Summary

uvm_random_stimulus #(T)
A general purpose unidirectional random stimulus class.
Class Hierarchy
uvm_void
uvm_object
uvm_report_object
uvm_component
uvm_random_stimulus#(T)
Class Declaration
> class uvm_random_stimulus #(
> | type | T | = | uvm_transaction
> ) extends uvm_component
Ports |
blocking_put_port | The blocking_put_port is used to send the generated stimulus to the rest of the testbench.
Methods |
new | Creates a new instance of a specialization of this class.
generate_stimulus | Generate up to max_count transactions of type T.
stop_stimulus_generation | Stops the generation of stimulus.

### Ports

### blocking_put_port

The blocking_put_port is used to send the generated stimulus to the rest of the testbench.

### Methods

### new

> function new(
> | string | name,
> | uvm_component | parent
> )

Creates a new instance of a specialization of this class. Also, displays the random state obtained from a get_randstate call. In subsequent simulations, set_randstate can be called with the same value to reproduce the same sequence of transactions.

### generate_stimulus

> virtual task generate_stimulus(
> | T | t | = | null,
> | int | max_count | = | 0
> )

Generate up to max_count transactions of type T. If t is not specified, a default instance of T is allocated and used. If t is specified, that transaction is used when randomizing. It must be a subclass of T.

max_count is the maximum number of transactions to be generated. A value of zero indicates no maximum - in this case, generate_stimulus will go on indefinitely unless stopped by some other process

The transactions are cloned before they are sent out over the blocking_put_port

### stop_stimulus_generation

> virtual function void stop_stimulus_generation

Stops the generation of stimulus. If a subclass of this method has forked additional processes, those processes will also need to be stopped in an overridden version of this method

> virtual class uvm_void

The uvm_void class is the base class for all UVM classes.

> virtual class uvm_object extends uvm_void

The uvm_object class is the base class for all UVM data and hierarchical classes.

> class uvm_report_object extends uvm_object

The uvm_report_object provides an interface to the UVM reporting facility.

> virtual class uvm_component extends uvm_report_object

The uvm_component class is the root base class for UVM components.

> class uvm_random_stimulus #(
> | type | T | = | uvm_transaction
> ) extends uvm_component

A general purpose unidirectional random stimulus class.

> function new(
> | string | name,
> | uvm_component | parent
> )

Creates a new instance of a specialization of this class.

> virtual task generate_stimulus(
> | T | t | = | null,
> | int | max_count | = | 0
> )

Generate up to max_count transactions of type T.

> virtual function void stop_stimulus_generation

Stops the generation of stimulus.