Jump to content
Sign in to follow this  

UVM events with data.

Recommended Posts



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;





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?


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
Sign in to follow this