Specman是否有结构构造函数?

时间:2018-05-04 19:14:42

标签: specman e

我有一个带有列表的结构:

struct my_struct {
    my_list : list of uint;
    // other fields
};

我想构建类似于cpp class constructor的东西: 当我使用my_struct运算符分配new时,my_list将启动一个零元素 - my_list == { 0 };

有没有办法在e?

中构建结构构造函数

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

是的,any_struct有init()方法。使用new()创建结构时调用它,并且在生成结构时(在生成,约束求解,开始之前)调用它。

如果您希望此列表始终具有相同的init值,无论是使用new还是使用gen创建,请将此列表字段标记为do-not-generate。

struct my_struct {
   !l : list of_ int;
   init() is also {
      l = {0};
   };
}; 

答案 1 :(得分:1)

e 中,没有像C ++那样的参数化构造函数的“通用”概念,但正如在另一个答案中所提到的,有一个预定义的init()方法(没有参数)每当创建给定类型的新对象时自动调用。 重要的是要注意init()被称为每当创建该类型的对象时,无论其创建发生的方式如何:它可能是通过new进行的显式创建,作为预运行生成的一部分的隐式创建,等等。

另一个要点:如果您只需要为字段分配特定的常量值,您也可以直接在字段声明中指定此值,而不必通过init()指定,例如:

struct my_struct {
    my_list : list of uint = {0};  // field declared with an initializer
};
相关问题