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

member reference resolution error related to uvm_analysis_imp_decl

$
0
0
Hi,
      I am seeing member reference resolution error related to uvm_analysis_imp_decl.
Linenum52:`uvm_analysis_imp_decl(_mon).Please see in below code.
You can see the error as well below which got during elaboration.
               I tried to connect monitor analysis port to another component analysis export.


Giving quick solution is help for me.

// Code your testbench here
// or browse Examples
// Code your testbench here
// or browse Examples
// Code your testbench here
// or browse Examples

class  transaction #(parameter  LENGTH=10) extends uvm_sequence_item;
  rand bit a;
  
  `uvm_object_param_utils_begin(transaction#(LENGTH))
  `uvm_field_int(a,UVM_ALL_ON)
  `uvm_object_utils_end
  
  
  function new(string name="transaction");
    super.new(name);
    
  endfunction
  
  
endclass
  
  
  
  
  
  
  

class    monitor#(parameter LENGTH=5) extends  uvm_monitor#(transaction#(LENGTH));

`uvm_component_param_utils(monitor#(LENGTH))
transaction#(LENGTH)  tr;
uvm_analysis_port#(transaction#(LENGTH))  analysis_port;

  function new(string name="monitor",uvm_component parent);
    super.new(name,parent);
    
  endfunction
  
  
  task run_phase(uvm_phase  phase);
    tr=new("mahen");
    $display("mahen");
analysis_port.write(tr);
endtask


endclass

Linenum52:`uvm_analysis_imp_decl(_mon)
  class  model#(parameter LENGTH=5)  extends  uvm_component#(transaction#(LENGTH));
`uvm_component_param_utils(model#(LENGTH))

 uvm_analysis_imp_mon#(transaction#(LENGTH)) mon_export;
    
    

transaction#(LENGTH)  tr;
    
    function new(string name,uvm_component parent);
      super.new(name,parent);
      mon_export=new("mon_export",this);
    endfunction
      
     

function write_mon(transaction#(LENGTH)  trans);
  $display("in_monitor");
endfunction
endclass
  
  
  
   class  env#(parameter LENGTH=5)  extends  uvm_component#(transaction#(LENGTH));
     `uvm_component_param_utils(env#(LENGTH))
     
     
     model#(LENGTH)  md;
     monitor#(LENGTH)  mon;
     
       function new(string name,uvm_component parent);
      super.new(name,parent);
       endfunction
      
         function  build_phase(uvm_phase  phase);
           
           super.build_phase(phase);
           md=model#(LENGTH)::type_id::create("model",this);
           mon=monitor#(LENGTH)::type_id::create("mon",this);
           
         endfunction
           
           function  connect_phase(uvm_phase  phase);
             
             mon.analysis_port.connect(md.mon_export);
             
           endfunction
           
      
       endclass
     
     
   class  test#(parameter LENGTH=5)  extends  uvm_component#(transaction#(LENGTH));
     //`uvm_component_param_utils(test#(LENGTH))
     typedef uvm_component_registry#(test#(LENGTH),"test") type_id ;
     
     env#(LENGTH)  en;
     
       function new(string name,uvm_component parent);
      super.new(name,parent);
       endfunction
      
         function  build_phase(uvm_phase  phase);
           
           super.build_phase(phase);
           en=env#(LENGTH)::type_id::create("env",this);
          
           
         endfunction
           
          task  run_phase(uvm_phase  phase);
             
             #10;
             
          endtask
           
      
       endclass
            
            
            
            module  top;
              parameter  LENGTH=10;
              typedef test#(LENGTH) delay_test;
              
              initial
                
                
                run_test();
              
            endmodule
              
              
              
              
              
     
              
  
  
  

Parsing design file 'design.sv'
Parsing design file 'testbench.sv'
Top Level Modules:
 top

Warning-[TMPO] Too many parameter overrides
testbench.sv, 31
 The extra parameter overrides will be ignored.
 Source info: uvm_monitor#(transaction#(LENGTH) ) 



Warning-[TMPO] Too many parameter overrides
testbench.sv, 53
 The extra parameter overrides will be ignored.
 Source info: uvm_component#(transaction#(LENGTH) ) 



Warning-[TMPO] Too many parameter overrides
testbench.sv, 76
 The extra parameter overrides will be ignored.
 Source info: uvm_component#(transaction#(LENGTH) ) 



Warning-[TMPO] Too many parameter overrides
testbench.sv, 105
 The extra parameter overrides will be ignored.
 Source info: uvm_component#(transaction#(LENGTH) ) 


TimeScale is 1 ns / 1 ns

Error-[MRRE] Member reference resolution error
testbench.sv, 52
 Member operator "." cannot be used on object of type int.
 Expression: m_imp
 Source info: m_imp.write_mon

4 warnings
1 error
CPU time: 3.017 seconds to compile
Exit code expected: 0, received


Thanks,
Preneeth





                       

Viewing all articles
Browse latest Browse all 410

Trending Articles