抽象类不能在模块中实例化

问题描述 投票:0回答:1

我在尝试实例化 new() 函数时看到以下错误。

错误-[SV-ACCNBI]抽象类无法实例化 model_dpi_module, "umc_uvc_ptr = new("umc_uvc_ptr", null);" 无法实例化对象“umc_uvc_ptr”,因为它的类型 “uvm_component”是一个抽象基类。 也许应该使用一个派生类。

代码如下:

  module model_dpi_module
  task abc_model_dpi(int pkg,int inst);
  uvm_component umc_uvc_ptr;
  **umc_uvc_ptr = new("umc_uvc_ptr", null);**
  umc_uvc_ptr = uvm_top.find($sformatf("uvm_test_top.example_uvc.export_uvc_%0d_%0d_%0d", 0, inst,  inst));
  umc_uvc[pkg][inst].if_env[0].run_model_init(0, 0,0);
 endtask : ddr_model_dpi

谢谢,

class module system-verilog new-operator uvm
1个回答
0
投票

是否处于模块中与此无关。您无法在

new
的实例上构造(调用
uvm_component
)。毫无意义。

您不需要构造任何东西,因为下一行将把一个句柄放入

umc_uvc_ptr

© www.soinside.com 2019 - 2024. All rights reserved.