Error from uvm_scoreboard for using uvm_events

Hello All !

Have a scenario where in I try to launch a rsp sequence based on the request monitored and sent to the scoreboard.

a. Have a simple uvm_event_pool and uvm_event defined inside the uvm_scoreboard as given below


class aloha extends uvm_scoreboard;
  uvm_event_pool ev_pool; 
  uvm_event evt;
  
  task run_phase();
   ev_pool = ev_pool.get_global_pool();
   evt = ev_pool.get("evt"); // Get the below error for the following line.
   ..
   evt.trigger("lnc_rsp_seq");  
  endtask   
endclass

b. And have a similar event setup in the sequence to receive an event from the scoreboard with the data. So based on the string, was planning to launch a required sequence. But I keep getting this below error.

Error :
Illegal class assignment
-I-: …
-I-: “this.evt = this.evt_pool.get(“evt”);”
-I-: Expression ‘this.evt_pool.get(“evt”)’ on rhs is not a class or a
-I-: compatible class and hence cannot be assigned to a class handle on lhs.
-I-: Please make sure that the lhs and rhs expressions are compatible.

Can anyone explain what the error could be or what is causing this error ? Is the uvm_event placement inside the scoreboard erroneous ?

In reply to desperadorocks:

And also when I do a parameterized instance of the uvm_event, i get the below error.

Eg:
uvm_event#(evt_obj) evt_ev;

Error:
-I-:Error-[SV-ICA] Illegal class assignment
-I-:“automatic uvm_event_callback tmp = this.callbacks[i];”
-I-: Expression ‘this.callbacks[i]’ on rhs is not a class or a compatible class
-I-: and hence cannot be assigned to a class handle on lhs.
-I-: Please make sure that the lhs and rhs expressions are compatible.

And stack trace pointing to the instance of the above event. Any clue on what the error could be ? Kindly share your inputs.

In reply to desperadorocks:

Which version of UVM are you using? There were a number of uvm_event bugs in 1.2 that were fixed in 1800.2.

In reply to dave_59:

I do not believe there is a bug.
This line is wrong:

evt.trigger("lnc_rsp_seq");

Passing an argument to the triger requires an object and not a string as you did.

evt.trigger(req);

if req is an object like a seq_item will work.