【问题标题】:Sequence Item has null sequencer序列项具有空序列器
【发布时间】:2022-10-20 20:10:04
【问题描述】:

我正在编写一个测试,它在有效的序列器上触发序列,但仍然面临“序列项具有空序列器”的问题。

    class gen_seq_item extends uvm_seqeuence_item;
          rand bit [WIDTH-1:0] generic_signal;

          `uvm_object_utils_begin(generic_seq_item)
                 `uvm_field_int(generic_signal, UVM_ALL_ON)
          `uvm_object_utils_end

          function new(string name="generic_seq_item");
                 super.new(name);
           endfunction : new
    
           function void do_copy(uvm_object rhs);
                 generic_seq_item rhs_;
                 if($cast(rhs_,rhs)) begin
                     this.generic_signal = rhs_.generic_signal;
                 end
                 else
                     `uvm_fatal(get_full_name(), "RHS is not compatible with 
                 generic_seq_item")
           endfunction : do_copy
    
           function generic_seq_item clone();
                      clone = generic_seq_item::type_id::create("clone_generic_seq_item");
                      clone.copy(this);
                      return clone;
            endfunction : clone

    endclass

class generic_seq extends uvm_sequence#(generic_seq_item);
    `uvm_object_param_utils(generic_seq)

    rand generic_seq_item item;

    function new(string name="generic_seq");
        super.new(name);
        item = generic_seq_item::type_id::create("generic_seq_item");
    endfunction : new

    task body();
        `uvm_send(item.clone());
    endtask : body

endclass : generic_seq

    typedef uvm_sequencer#(gen_seq_item) gen_sequencer;

    class gen_agent extends uvm_agent;
             ......
             ......
        gen_driver driver_h;
        gen_sequencer seqr_h;
             ......
             ......
       function void build_phase(uvm_phase phase);
             ......
             seqr_h = gen_sequencer::type_id::create("gen_sequencer", this);
       endfunction
    endclass

    class gen_test extends uvm_test;
            ......
            gen_seq seq_h;
            ......
            seq_h.start(<path to agent>.seqr_h);
    endclass

【问题讨论】:

  • 有问题的不是序列,而是序列项。 (开始项目)您没有显示该代码
  • 嗨 Dave,我在描述中添加了 sequence_item 和序列代码。你能帮忙看看吗?
  • 错字? gen_seq_item 与 generic_seq_item

标签: system-verilog uvm


【解决方案1】:

尝试使用

`uvm_send(项目);

代替

`uvm_send(item.clone());

我对您在 sequence_item 类中的克隆功能有一些疑问。默认情况下,uvm_object_utils 宏使用工厂函数clone() 创建 uvm_object。在我看来,如果你想在这里实现克隆功能是没有意义的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-26
    • 2018-08-15
    • 2021-08-04
    • 2012-09-03
    • 2011-03-17
    • 2022-01-17
    • 1970-01-01
    • 2014-11-04
    相关资源
    最近更新 更多