Jump to content

Recommended Posts

Posted

Hi, All -

 

Hoping for a little help on this one. I have a very simple UVM register testbench but am having troubles getting it to work and having troubles figuring out the correct way to start the tests (there is lots of documentation on UVM REG setup except the final step of starting the test). Below is the error messages, the env.sv fle and the test1.sv file that I am using. I would be happy to tar-up the entire example if someone would like to look at more of my files.

 

Thanks to anyone who can figure out this problem.

 

Regards - Cliff

 

# UVM_INFO verilog_src/uvm-1.1d/src/reg/uvm_reg_map.svh(1062) @ 0: reporter [REG_NO_ADAPT] Adapter not specified for map 'model.dutmap'. Accesses via this map will send abstract 'uvm_reg_item' items to sequencer 'uvm_test_top.e.agnt.sqr'
# UVM_INFO verilog_src/questa_uvm_pkg-1.2/src/questa_uvm_pkg.sv(272) @ 0: reporter [Questa UVM] End Of Elaboration
# UVM_INFO verilog_src/uvm-1.1d/src/seq/uvm_sequencer_base.svh(1385) @ 0: uvm_test_top.e.agnt.sqr [PHASESEQ] No default phase sequence for phase 'run'
# UVM_INFO tb_driver.sv(40) @ 0: uvm_test_top.e.agnt.drv [iNIT] Initialize (time @0)
# UVM_FATAL @ 0: reporter@@seq [sEQ] neither the item's sequencer nor dedicated sequencer has been supplied to start item in seq

 

class env extends uvm_env;
  `uvm_component_utils(env)

  tb_agent agnt;

  dutblk                     model;   // Register model object
  reg2dut_adapter            reg2dut; // Bus adapter object
  uvm_reg_predictor#(trans1) predict; // predictor component

  function new (string name, uvm_component parent);
    super.new(name, parent);
  endfunction

  function void build_phase(uvm_phase phase);
    super.build_phase(phase);
    agnt   =                    tb_agent::type_id::create("agnt", this);

    model   =                     dutblk::type_id::create("model");
    reg2dut =            reg2dut_adapter::type_id::create("reg2dut");
    predict = uvm_reg_predictor#(trans1)::type_id::create("predict", this);

    model.build();
    model.lock_model();
    uvm_config_db#(dutblk)::set(uvm_root::get(),"*","reg_model", model);
  endfunction

  function void connect_phase(uvm_phase phase);
    super.connect_phase(phase);
    model.dutmap.set_sequencer(agnt.sqr);
    predict.map     = model.dutmap;
    predict.adapter = reg2dut;
    // connect the predictor to the bus agent monitor analysis port
    agnt.aport.connect(predict.bus_in);
  endfunction
endclass

 

class test1 extends uvm_test;
  `uvm_component_utils(test1)

  env e;

  function new (string name, uvm_component parent);
    super.new(name, parent);
  endfunction

  function void build_phase(uvm_phase phase);
    super.build_phase(phase);
    e = env::type_id::create("e", this);
  endfunction

  task run_phase(uvm_phase phase);
    tr_sequence seq;
    seq = tr_sequence::type_id::create("seq");
    //----------------------------------------
    phase.raise_objection(this);
    //`uvm_do(seq)
    seq.start(null);
    phase.drop_objection(this);
  endtask
endclass

Posted

Hi, @UWES -

 

Thanks for the comments. I was not using a virtual sequencer and I  believe I also was extending my tr_sequence from uvm_sequence instead of my tr_seq_base class. I am past this problem and am still having issues but will open a different thread.

 

Regards - Cliff

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...