是否可以为交叉覆盖箱中的每个交叉产品创建单独的箱
Is it possible to create separate bin for each cross product in a cross coverage bin
我有两个要跨越的覆盖点,如下面的代码所示。在交叉覆盖中,我想根据其中一个覆盖点的值将交叉值组织到不同的容器中,在本例中为 cp_a。例如 cr.a1 是当 a 为 1 时 b 的所有值的叉积。下面的示例为满足此条件的所有交叉创建一个统一的 bin。是否可以为 a 为 1 的每个叉积 axb 创建一个单独的 bin?在这种情况下,它将有 10 个不同的分箱,每个分箱对应 b 的每个值,而 a 为 1。
对于 coverpoint bin,您可以使用 bins b [] = {[0:10]}
,但它看起来不适用于 cross。
module top {
int a;
int b;
covergroup CG;
cp_a : coverpoint a {
bins a1 = {1};
bins a2 = {2};
bins a3 = {3};
}
cp_b : coverpoint b {
bins b [] = {[0:10]};
}
cr : cross cp_a, cp_b {
bins a1 = binsof(cp_a.a1);
bins a2 = binsof(cp_a.a2);
bins a3 = binsof(cp_a.a3);
}
endgroup
endmodule
组织 cross
的 bin 与 coverpoint 有很大不同。您通常希望忽略不需要的垃圾箱或更改收集封面点的方式。在这种情况下,我认为您想将 cp_a
分成三个覆盖点并创建三个十字。
module top {
int a;
int b;
covergroup CG;
cp_a1 : coverpoint a { bins a1 = {1}; }
cp_a2 : coverpoint a { bins a1 = {2}; }
cp_a3 : coverpoint a { bins a1 = {3}; }
cp_b : coverpoint b {
bins b [] = {[0:10]};
}
cr_a1 : cross cp_a1, cp_b;
cr_a2 : cross cp_a2, cp_b;
cr_a3 : cross cp_a3, cp_b;
endgroup
endmodule
我有两个要跨越的覆盖点,如下面的代码所示。在交叉覆盖中,我想根据其中一个覆盖点的值将交叉值组织到不同的容器中,在本例中为 cp_a。例如 cr.a1 是当 a 为 1 时 b 的所有值的叉积。下面的示例为满足此条件的所有交叉创建一个统一的 bin。是否可以为 a 为 1 的每个叉积 axb 创建一个单独的 bin?在这种情况下,它将有 10 个不同的分箱,每个分箱对应 b 的每个值,而 a 为 1。
对于 coverpoint bin,您可以使用 bins b [] = {[0:10]}
,但它看起来不适用于 cross。
module top {
int a;
int b;
covergroup CG;
cp_a : coverpoint a {
bins a1 = {1};
bins a2 = {2};
bins a3 = {3};
}
cp_b : coverpoint b {
bins b [] = {[0:10]};
}
cr : cross cp_a, cp_b {
bins a1 = binsof(cp_a.a1);
bins a2 = binsof(cp_a.a2);
bins a3 = binsof(cp_a.a3);
}
endgroup
endmodule
组织 cross
的 bin 与 coverpoint 有很大不同。您通常希望忽略不需要的垃圾箱或更改收集封面点的方式。在这种情况下,我认为您想将 cp_a
分成三个覆盖点并创建三个十字。
module top {
int a;
int b;
covergroup CG;
cp_a1 : coverpoint a { bins a1 = {1}; }
cp_a2 : coverpoint a { bins a1 = {2}; }
cp_a3 : coverpoint a { bins a1 = {3}; }
cp_b : coverpoint b {
bins b [] = {[0:10]};
}
cr_a1 : cross cp_a1, cp_b;
cr_a2 : cross cp_a2, cp_b;
cr_a3 : cross cp_a3, cp_b;
endgroup
endmodule