UVM中的类对象实例化

时间:2015-01-22 12:31:23

标签: uvm

在UVM Cookbook中,编写了类对象实例化在运行时完成。但是在运行之前,在编译/详细说明期间,我们可能还有类的所有细节。

如下图所示(取自UVM Cookbook),显示模块和界面即时创建在精化阶段完成,但类对象创建在运行时完成。

enter image description here

考虑这个示例。

// Inside any .sv file
class A;
  int a;
endclass

A x;

initial
  x=new();

现在在这种情况下,不需要在运行时创建类,因为我们在编译/详细说明时可以获得类的所有详细信息,就像其他模块或接口详细信息一样。

那么为什么在Systemverilog中,特别是在运行时才进行类实例化?

即使在C ++中,也不会在运行时创建对象。

注意:在这个问题中,我说的是简单的类,而不是使用继承,其中运行时创建可能成为必需的。通过创建我没有提到内存分配,因为所有(模块,接口,类)的内存将仅在模拟期间分配。我只是考虑了图像的背景。

2 个答案:

答案 0 :(得分:1)

所有对象都是在运行时创建的。

也许你将运行时与运行阶段混淆了?运行阶段是uvm中定相机制的一部分,允许在模拟中的不同周期之间进行分离。因此,所有uvm组件都可以按阶段同步。

这里的对象创建是在build_phase中完成的,它是运行时的一部分。

答案 1 :(得分:0)

正如@Tudor所指出的,所有对象实例都是在运行时创建的。它们必须是因为所有对象都必须执行它们的构造函数。这与C ++相同。