Tlm analysis FIFO/uvm analysis port connection problem

Hi,

I am trying to connect uvm_analysis_port#(transaction) ap; ( in monitor of a bfm )to analysis fifo in scoreboard in my top tb env ( uvm_tlm_analysis_fifo #(transaction) fifo[int];).

In my top env, i have bfm env instance, and i am connecting the port-fifo using the code below

bfm_env.monitor.ap.connect(scoreboard.fifo['h00].analysis_export);

I am hitting this error

Error-[ICTTFC] Incompatible complex type usage
Incompatible complex type usage in task or function call.
The following expression is incompatible with the formal parameter of the
function. The type of the actual is ‘class
uvm_pkg::uvm_analysis_imp#(transaction,class uvm_pkg::uvm_tlm_analysis_fifo#(class transaction))’, while the type of the formal is ‘class uvm_pkg::uvm_port_base#(class uvm_pkg::uvm_tlm_if_base#(transaction,transaction))’.

Any suggestion on what could be wrong ?

Thanks

In reply to vbabusr:

How many uvm_analysis_fifos do you have in your scoreboard?
To which line of code does the error message point?

In reply to vbabusr:

Check whether the analysis port & analysis FIFOs are parametrized with the same transaction type

In reply to chr_sue:

Hi,

The error points to

bfm_env.monitor.ap.connect(scoreboard.fifo['h00].analysis_export); ← line

Thanks

In reply to shanthi:

Hi,

Yes. They are of same type → transaction

Thanks

In reply to vbabusr:

In reply to chr_sue:
Hi,
The error points to
bfm_env.monitor.ap.connect(scoreboard.fifo['h00].analysis_export); ← line
Thanks

You are declaring your fifo as an associative array. Why you are doing this?

In reply to chr_sue:

Hi,

No specific reason actually. Would it affect ?

Thanks

In reply to vbabusr:

The associative array is an array ‘on demand’. How do you construct it?
During build_phase you might not know which indices you want to use.