【问题标题】:Virtual method 'write' not implemented in class虚拟方法“写”未在类中实现
【发布时间】:2021-03-12 05:55:43
【问题描述】:

您好,我创建的订阅者类出现上述错误,如下所示: 错误似乎在类的写入函数中,但我不确定函数中缺少什么。

`uvm_analysis_imp_decl(_bfm2dut_change)
class checker_subscriber extends uvm_subscriber; 

uvm_analysis_imp_bfm2dut_change#(setup_pcie_pkg::dut2bfm_hdr_trans, checker_subscriber) bfm2dut_change_ap;
   
   `uvm_component_utils(checker_subscriber)
  
     extern function new(string name = "checker_subscriber", uvm_component parent = null);
     // BUILD,CONNECT and RUN Phase
     extern virtual function void build_phase(uvm_phase phase);
     extern virtual function void connect_phase(uvm_phase phase);
     extern virtual task run_phase(uvm_phase phase);
  
    // write function xal2fb
    virtual function void write_xal2fb_change(xal2fb_uvc::transaction tr);
        xal2fb_uvc::tx_default_data_obj obj;
        $cast(obj, tr.tx_data_obj);
        `uvm_info("xal2fb  PPMSU monitoring", $sformatf("%m"), UVM_LOW)
        monitor_xal2fb_pcie_order_check(obj);
    endfunction: write_xal2fb_change

endclass : checker_subscriber

【问题讨论】:

    标签: verilog monitor uvm subscriber edaplayground


    【解决方案1】:

    您应该在checker_subscriber 类中实现从uvm_subscriber 类继承的pure virtual function void write(T t);

    【讨论】:

    • 但是我已经有了_imp定义的分析端口的写功能。该类是否还需要一个单独的写函数()?
    • 你的父类声明了一个纯虚函数,你必须在子类中实现它。这与您自己定义的分析端口无关。
    【解决方案2】:

    请参考verification-methodology-reference 并确保您的“write...”方法的后缀与您在宏声明和端口声明中使用的后缀匹配。

    【讨论】:

      猜你喜欢
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 1970-01-01
      • 2013-03-24
      • 2013-09-02
      • 2012-05-04
      • 1970-01-01
      相关资源
      最近更新 更多