Search the Community
Showing results for tags 'uvm_event'.
Found 1 result
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.