I have a sequencer:
class l3_ack_sequencer #(type REQ = uvm_sequence_item) extends uvm_sequencer #(REQ);
`uvm_component_utils_begin(l3_ack_sequencer#(REQ))
`uvm_component_utils_end
uvm_analysis_imp #(REQ, l3_ack_sequencer) generate_res;
function new (string name, uvm_component parent);
super.new(name, parent);
generate_res = new("generate_ack", this);
endfunction
virtual function void build_phase(uvm_phase phase);
super.build_phase(phase);
endfunction
virtual function void connect_phase(uvm_phase phase);
super.connect_phase(phase);
endfunction
// Generate ack
virtual function void write(REQ item);
endfunction
endclass
The I declare a handle somewhere:
l3_ack_sequencer #(core_l3q_ireq_tran) l3r_ireq;
Using Synopsys VCS I have an error:
Error-[ICTTFC] Incompatible complex type usage
.../l3_ack_sequencer.sv, 33
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 $unit::l3_ack_sequencer#(class
$unit::core_l3q_ireq_tran)', while the type of the formal is 'class
$unit::l3_ack_sequencer#(class uvm_pkg::uvm_sequence_item)'. Expression:
this
Source info: uvm_analysis_imp_8::new("generate_ack", this)
Can anyone help me to solve this problem or explain why it cant be solved?