Upload
nareshsambhnani5702
View
29
Download
5
Embed Size (px)
DESCRIPTION
A detail description of UVM events and Uvm_event pool.
Citation preview
UVM EVENT And UVM EVENT POOL
UVM EVENT
UVM EVENT EXAMPLE
UVM_OBJECT_STRING_POOL & UVM_EVENT_POOL
UVM_EVENT_POOL Example
Achieving the synchronization
UVM EVENTS
The uvm_event class is a wrapper class around the SystemVerilog event construct. It provides some additional services such as setting callbacks and maintaining the number of waiters.
Class hierarchy :- uvm_void uvm_object uvm_event
uvm_event methods
New: Creates a new event object.
wait_on:Waits for the event to be activated for the first time.
wait_off: If the event has already triggered and is on, this task waits for the event to be turned off via a call to reset.
wait_trigger:Waits for the event to be triggered.
wait_ptrigger:Waits for a persistent trigger of the event.
wait_trigger_data:This method calls wait_trigger followed by get_trigger_data.
wait_ptrigger_data:This method calls wait_ptrigger followed by get_trigger_data.
Trigger:Triggers the event, resuming all waiting processes.
uvm_event methods cont.
get_trigger_data:Gets the data, if any, provided by the last call to trigger.
get_trigger_time:Gets the time that this event was last triggered.
is_on:Indicates whether the event has been triggered since it was last reset.
is_off:Indicates whether the event has been triggered or been reset.
Reset:Resets the event to its off state.
add_callback:Registers a callback object, cb, with this event.
delete_callback:Unregisters the given callback, cb, from this event.
Cancel:Decrements the number of waiters on the event.
get_num_waiters:Returns the number of processes waiting on the event.
UVM_EVENT Example
Module event_example();uvm_event event;
Initial beginEvent = new(event);Fork
PROCESS1: beginobject obj;obj.data = 'h55;event.trigger(.data(obj));End
PROCESS2: beginobject obj;event.wait_ptrigger_data(.data(obj));End
joinEnd
endmodule
uvm_object_string_pool and uvm_event_pool
This provides a specialization of the generic uvm_pool #(KEY,T) class for an associative array of uvm_object-based objects indexed by string. Specializations of this class include the uvm_event_pool (a uvm_object_string_pool storing uvm_event#(uvm_object))
Class Hierarchy:-uvm_pool #(string T) uvm_object_string_pool #(T)
uvm_object_string_pool methods and uvm_event_pool
new:Creates a new pool with the given name.
get_type_name:Returns the type name of this object.
get_global_pool:Returns the singleton global pool for the item type, T.
get_global:Returns the specified item instance from the global item pool.
get:Returns the object item at the given string key.
delete:Removes the item with the given string key from the pool.
typedef uvm_object_string_pool #(uvm_event) uvm_event_pool;
uvm_event_pool example
in the driver:
uvm_event_pool p1 = p1.get_global_pool();uvm_event e1 = p1.get("ABC");e1.trigger();e1.reset();
in the receiver:
uvm_event_pool p1 = p1.get_global_pool();uvm_event e1 = p1.get("ABC");e1.wait_trigger()
Achieving the sync.
get_global_pool () method of uvm_event_pool returns the singleton global event pool.This allows events to be shared between components throughout the verification environment.
Using uvm Event callbacks
Add the callback to uvm_event using add_callback()virtual function void add_callback (uvm_event_callback cb, bit append = 1)
Create new class extending from uvm_event_callbacks and define pre_trigger or post_trigger or both based on requirement.
virtual function bit pre_trigger (uvm_event e, uvm_object data = null)
virtual function void post_trigger (uvm_event e, uvm_object data = null)