Quantcast
Channel: UVM SystemVerilog Discussions Forum RSS Feed
Viewing all articles
Browse latest Browse all 410

Type parametrization of uvm_analysis_imp

$
0
0

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

Then 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?


Viewing all articles
Browse latest Browse all 410

Trending Articles