Specman e:有没有办法知道枚举类型中有多少个值?

时间:2018-12-26 08:13:33

标签: specman e

我需要知道验证环境中枚举类型中有多少个值。例如:

type my_type: [a, b, c, d];

我有一种方法可以即时检查my_type中是否有4个不同的值?

谢谢您的帮助

3 个答案:

答案 0 :(得分:4)

有一个all_values(...)伪例程,它返回标量类型的所有可能值。您可以使用它来获取enum文字的数量:

assert all_values(my_type).size() == 4;

答案 1 :(得分:1)

除了Tudor的建议之外,另一种方法是使用set_of_values()伪例程,该伪例程返回所有值的set(而不是列表):

set_of_values(my_type).uint_size()

在某种程度上,使用set_of_values()会更好,因为all_values()会创建一个新列表,该列表通常比集合消耗更多的内存。 uint_size()返回集合的大小为uint。也有size(),但是它返回int(bits: *),因此在这种情况下使用uint_size()就足够了,因为枚举类型中的项不能超过MAX_UINT

答案 2 :(得分:1)

还-set_of_values()返回'set',您可以查询该类型的最小/最大值及其范围。

例如:

 var x := set_of_values(my_type).uint_max();

 keep y ==  set_of_values(my_type).uint_max().as_a(my_type).as_a(my_type);

 print set_of_values(my_type).uint_min().as_a(my_type);