Jump to content
b0rna

UVM events with data.

Recommended Posts

Hi,

 

In UVM 1.2, the UVM event class is declared as follows:

 

class uvm_event#(type T=uvm_object) extends uvm_event_base;
 
The trigger function has the following line of code:
 
uvm_event_callback#(T) tmp=callbacks;
 
The assignment to callbacks, refers to the uvm_event_base member callbacks[$].
 
The uvm_event_base is not parameterized, and callbacks[$] is declared in uvm_event_base  as:
 
protected uvm_event_callback  callbacks[$];
 
Thus, making the parameterized type of callbacks[$] the default of callbacks[$], which is uvm_object.

 

How can the uvm_event be parameterized to a non uvm_object? There is no casting done in the trigger function. Lets say that I tried following:

 

class uvm_object_extend extends uvm_object;

...

endclass

 

 

uvm_event#(uvm_object_extend ) my_event;

 

My compiler generates and error indicating that in the trigger function, the assignment of:

 

uvm_event_callback#(T) tmp=callbacks;
 
in the trigger function is not valid, since callbacks  in the uvm_event_base is of parameterized type uvm_object, but uvm_event_callback#(T) is of parameterized type uvm_object_extend.
 
 
This seems to be an issue in UVM, or am I not using this correctly? Does anyone have experience with uvm_events which use extended uvm_objects for data passing?
 
Thanks,
 
Borna.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×