"F,CUVUNF" error while using uvm_analysis_imp

Hi,

I am writing a coverage file and tried using uvm_analysis_imp but the following error flagged during compilation.

Can you please help me understand the error and the possible reason for it.

m_imp.write (t);
|
ncelab: *F,CUVUNF (/sw/cadence/incisiv/111isr20120809/lnx86/tools/uvm/uvm_lib/uvm_sv/sv/tlm1/uvm_analysis_port.svh,119|14): Hierarchical name component lookup failed at ‘write’.
irun: *E,ELBERR: Error during elaboration (status 2), exiting.

Regards
Nitin Ahuja

Hi,

Did you find a solution to this? I am experiencing the same issue with ncsim 13.1.

////////
`uvm_analysis_imp_decl(_ap)
class my_scoreboard extends uvm_scoreboard ;

uvm_analysis_imp#(my_trans, my_scoreboard ) ap;

function void write_ap(my_trans trans_inst);
//
endfunction

thanks,
steve

In reply to Stevo125:

Try

function void write_ap(my_trans t);

You can’t change the argument name from its original declaration in the base class.

In reply to tfitz:

I’m also facing the same issue. I’m not able to understand the reason why can’t we use a different instance name? I’ve multiple imps inside my scoreboard and I’ve unique names for all of the instances of the imps inside the write function. How do I correct this error?

In reply to piyushkamalakar:

The argument names need to be the same in all derived methods because of a SystemVerilog feature that allows you to pass function arguments by name instead of position in the list. Unlikely use in this case because write() has only one argument, but the restriction remains.

In reply to dave_59:
Hi Dave,
I tried to keep the same argument name for all the write functions but it still gives the same error. What could possibly go wrong? Is there any limit for the uvm analysis imp decl ?
I am using 10 imp decl in my scoreboard.

In reply to piyushkamalakar:

Can you try this ?

////////

class my_scoreboard extends uvm_scoreboard ;
`uvm_analysis_imp_decl(_ap)

uvm_analysis_imp#(my_trans, my_scoreboard ) ap;

function void write_ap(my_trans trans_inst);
//
endfunction