Specman e 有结构构造函数吗?
Does Specman e have struct constructor?
我有一个带有列表的结构:
struct my_struct {
my_list : list of uint;
// other fields
};
我想构建类似于 cpp class constructor
的东西:
当我使用 new
运算符分配 my_struct
时,my_list
将被初始化为具有一个零元素 - my_list == { 0 }
;
有没有办法在 e 中构建结构构造函数?
感谢您的帮助
是的,any_struct 有 init() 方法。当使用 new() 创建结构时以及生成结构时(在生成之前,约束求解开始)时调用它。
如果您希望此列表始终具有相同的初始值,无论是使用 new 还是使用 gen 创建,请将此列表字段标记为不生成。
struct my_struct {
!l : list of_ int;
init() is also {
l = {0};
};
};
在 e 中没有像 C++ 中那样的 "general" 参数化构造函数的概念,但正如另一个答案中提到的,有一个预定义的 init()
方法(不带参数)在创建给定类型的新对象时自动调用。
重要的是要注意 init()
被调用 每当 创建该类型的对象时,无论其创建以何种方式发生:它可能是通过 [= 的显式创建13=],作为前 运行 代的一部分的隐式创建,依此类推。
还有一点很重要:如果你只是需要给一个字段指定一个特定的常量值,你也可以直接在字段声明中指定这个值,而不需要通过init()
来做,例如:
struct my_struct {
my_list : list of uint = {0}; // field declared with an initializer
};
我有一个带有列表的结构:
struct my_struct {
my_list : list of uint;
// other fields
};
我想构建类似于 cpp class constructor
的东西:
当我使用 new
运算符分配 my_struct
时,my_list
将被初始化为具有一个零元素 - my_list == { 0 }
;
有没有办法在 e 中构建结构构造函数?
感谢您的帮助
是的,any_struct 有 init() 方法。当使用 new() 创建结构时以及生成结构时(在生成之前,约束求解开始)时调用它。
如果您希望此列表始终具有相同的初始值,无论是使用 new 还是使用 gen 创建,请将此列表字段标记为不生成。
struct my_struct {
!l : list of_ int;
init() is also {
l = {0};
};
};
在 e 中没有像 C++ 中那样的 "general" 参数化构造函数的概念,但正如另一个答案中提到的,有一个预定义的 init()
方法(不带参数)在创建给定类型的新对象时自动调用。
重要的是要注意 init()
被调用 每当 创建该类型的对象时,无论其创建以何种方式发生:它可能是通过 [= 的显式创建13=],作为前 运行 代的一部分的隐式创建,依此类推。
还有一点很重要:如果你只是需要给一个字段指定一个特定的常量值,你也可以直接在字段声明中指定这个值,而不需要通过init()
来做,例如:
struct my_struct {
my_list : list of uint = {0}; // field declared with an initializer
};