Quantcast
Channel: UVM Forums RSS Feed
Viewing all articles
Browse latest Browse all 756

Incompatible complex type usage in uvm

$
0
0

Hi,

    In my current environment I have monitors class and parametrized scoreboard class. I am sending monitor transaction into scoreboard through the tlm analysis port. Below is snippet of code.

 

class pkt_monitor extends uvm_monitor

  uvm_analysis_port #(pkt_item) pkt_collected_port;

 

  function new(uvm_component parent = null)

       pkt_collected_port = new("pkt_collected_port", this);

 

....

....

endclass

 

class pkt_sbd #(type T = uvm_transaction)  extends uvm_component;

 

  uvm_analysis_export #(T) sb_check_port;

 

 // typedef pkt_sbd #(T) this_type;

 

  function new(uvm_component parent = null)

       sb_check_port = new("sb_check_port", this);

 

.....

.....

endclass

 

class top_env extends uvm_env;

 pkt_sbd #(pkt_item)   pkt_sbd_inst;

 pkt_monitor  pkt_monitor_inst;

 

  build_phase()

  pkt_monitor_inst = pkt_monitor::type_id::create("pkt_monitor_inst",this);

  pkt_sbd_inst = pkt_sbd #(pkt_item) :: type_id::create("pkt_sbd_inst",this)

 

 connect_phase()

 pkt_monitor_inst.pkt_collected_port.connect(pkt_sbd_inst.sb_check_port)

 

endclass

 

 

 

While compiling above code there is a type incompatability issue observed

 

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_export#(class pkt_pkg::pkt_item)', while the type of
  the formal is 'class uvm_pkg::uvm_port_base#(class
  uvm_pkg::uvm_tlm_if_base#(class pkt_pkg::pkt_item,class
  pkt_pkg::pkt_item))'. Expression: this.pkt_sbd_inst.sb_check_port
  Source info:
  pkt_monitor_inst.pkt_collected_port.connect(pkt_sbd_inst.sb_check_port) 

 

Any help is appreciated.

 

 


Viewing all articles
Browse latest Browse all 756

Trending Articles