我想在枚举上编写过渡范围。过渡的一部分是枚举队列。我在构造函数中构造此队列。考虑下面的示例,该如何处理。
在我的覆盖范围中,我可以创建一个如下范围:A => [queue1Enum [0]:queue1Enum [$]] => [queue2Enum [0]:queue2Enum [$]]。但是我只有第一个和最后一个元素。
typedef enum { red, d_green, d_blue, e_yellow, e_white, e_black } Colors;
Colors dColors[$];
Colors eColors[$];
Lcolors = Colors.first();
do begin
if (Lcolors[0].name=='d') begin
dColors.push_back(Lcolors);
end
if (Lcolors[0].name=='e') begin
eColors.push_back(Lcolors);
end
end while(Lcolors != Lcolors.first())
covergroup cgTest with function sample(Colors c);
cpTran : coverpoint c{
bins t[] = (red => dColors =>eColors);
}
endgroup
垃圾箱t []应该像这样出来(红色=> d_blue,d_green => e_yellow,e_white)
答案 0 :(得分:0)
以下对我有用:
bins t[] = (
red =>
[dColors[0] : dColors[$]] =>
[eColors[0] : eColors[$]]);
我得到了您所期望的垃圾箱:
t[red=>d_green=>e_yellow]
t[red=>d_green=>e_white]
t[red=>d_green=>e_black]
t[red=>d_blue=>e_yellow]
t[red=>d_blue=>e_white]
t[red=>d_blue=>e_black]
我看到您也尝试过此操作,但没有达到您的期望。也许是因为您的工具不正确地支持这一点。
您应该检查的另一件事是您正确创建了dColors
和eColors
队列。您在问题中显示的示例代码不正确,并且不会在队列中放入适当的元素。