[source]

Class uvm_pkg::uvm_random_stimulus

uvm_pkg::uvm_random_stimulus <T> + blocking_put_port : uvm_blocking_put_port #(T) + type_name : string + generate_stimulus() + get_object_type(): uvm_object_wrapper + get_type(): type_id + get_type_name(): string + stop_stimulus_generation(): void uvm_pkg::uvm_blocking_put_port <T> blocking_put_port

Collaboration Diagram of uvm_random_stimulus

Copyright 2007-2011 Mentor Graphics Corporation Copyright 2007-2010 Cadence Design Systems, Inc. Copyright 2010 Synopsys, Inc. All Rights Reserved Worldwide

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

CLASS

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.

Parameters

Name

Default value

Description

T

uvm_transaction

Variables

Name

Type

Description

type_name

string

blocking_put_port

uvm_blocking_put_port#(uvm_transaction)

Port

blocking_put_port

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

Typedefs

Name

Actual Type

Description

this_type

uvm_random_stimulus#(T)

Constructors

new(string name, uvm_component parent)

Function

new

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.

Parameters:

Functions

stop_stimulus_generation()

Function

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

get_type_name()

Tasks

generate_stimulus(uvm_transaction t = null, int max_count = 0)

Function

generate_stimulus

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

Parameters: