首页 > 解决方案 > 如何使用 p_sequencer 按顺序访问 sequencer 中的方法?

问题描述

class fifo_write_sequence extends uvm_sequence#(fifo_seq_item);
  `uvm_object_utils(fifo_write_sequence)
  `uvm_declare_p_sequencer(fifo_write_sequence)
  
  function new(string name="fifo_write_sequence");
    super.new(name);
  endfunction
  
  virtual task body();
    fifo_seq_item seq;
    while(p_sequencer.fun()!=1)begin
      seq=new();
      start_item(seq);
      assert(seq.randomize()with{seq.wr==1;});
      finish_item(seq);
    end
  endtask
  
endclass

//Sequencer
class fifo_sequencer extends uvm_sequencer#(fifo_seq_item);
  
  `uvm_component_utils(fifo_sequencer)
  
  uvm_analysis_imp#(fifo_seq_item, fifo_sequencer) mon_imp;
  fifo_seq_item trans;
  bit full;
  
  function void write(fifo_seq_item trans);
  full=trans.wr_full;
  endfunction 
  
   function new(string name, uvm_component parent);
    super.new(name,parent);
  endfunction
  
  function void build_phase(uvm_phase phase);
    super.build_phase(phase);
  endfunction
  
  function bit fun;
    return full;
  endfunction
endclass

我想从音序器访问函数,这取决于我将决定我的序列应该运行多少次,我为此使用了 p_sequencer,但是我收到了这个成员未找到的错误。请帮我解决这个错误。

标签: uvm

解决方案


你需要

`uvm_declare_p_sequencer(fifo_sequencer)
//                                    ^
//                                    |

推荐阅读