System verilog 如何检查systemverilog中是否涵盖了组合在一起的数组中所有可能的元素组合?

System verilog 如何检查systemverilog中是否涵盖了组合在一起的数组中所有可能的元素组合?,system-verilog,System Verilog,假设我有以下数组: const_val_ary[] = {1,2,3,4,5,6} 基于上面的数组,我对元素进行分组,使每组至少有一个元素,最大为常量值大小。组的数量是随机生成的,限制在1到常量大小之间。每个元素只能出现在一个组中。例如[[1,2,3],4,5,6]是有效输出,但[[1,2,3],3,4,5]不是(3出现两次,6不在任何组中)。我想知道怎样才能涵盖所有可能的组合 编辑:以下是我正在处理的代码: 一种可能的解决方案 int original_data[$], group[$];

假设我有以下数组:

const_val_ary[] = {1,2,3,4,5,6}
基于上面的数组,我对元素进行分组,使每组至少有一个元素,最大为常量值大小。组的数量是随机生成的,限制在1到常量大小之间。每个元素只能出现在一个组中。例如[[1,2,3],4,5,6]是有效输出,但[[1,2,3],3,4,5]不是(3出现两次,6不在任何组中)。我想知道怎样才能涵盖所有可能的组合

编辑:以下是我正在处理的代码: 一种可能的解决方案

int original_data[$], group[$];

// Fill the original_data queue with your list

original_data.unique();
while (original_data.size() != 0)
begin
  group.push_front(original_data.pop_front);
  original_daata.shuffle();
end
一个可能的解决办法

int original_data[$], group[$];

// Fill the original_data queue with your list

original_data.unique();
while (original_data.size() != 0)
begin
  group.push_front(original_data.pop_front);
  original_daata.shuffle();
end

你能解释更多关于“团体”的情况吗?组大小是3还是其他随机数?必须限制组的数量=const_val_ary.size/groups.size。所谓“覆盖”,你是指功能覆盖,还是指随机化可以产生什么,你在寻找约束?是的,你是对的,我没有提到组的数量限制在1到常量大小之间。事实上,这两种情况我都被卡住了!我写了两个约束条件来生成组,但对于功能覆盖率,我不知道如何做。您可以显示一个要创建并覆盖的数据示例吗。例如:[1,2,[3,4],[5,6]-->4个组Ex:[1,2,3,4],[5,6]->3个组Ex:[1,2,3,4],5]-->2个组Ex:[1,2,3,4,5,6]-->6组,我想介绍所有这些组合扫描您更新您的问题,并将其显示为一个带有一组赋值或随机化的变量声明。您是如何编写约束条件的?您能否解释更多关于“组”的内容?组大小是3还是其他随机数?必须限制组的数量=const_val_ary.size/groups.size。所谓“覆盖”,你是指功能覆盖,还是指随机化可以产生什么,你在寻找约束?是的,你是对的,我没有提到组的数量限制在1到常量大小之间。事实上,这两种情况我都被卡住了!我写了两个约束条件来生成组,但对于功能覆盖率,我不知道如何做。您可以显示一个要创建并覆盖的数据示例吗。例如:[1,2,[3,4],[5,6]-->4个组Ex:[1,2,3,4],[5,6]->3个组Ex:[1,2,3,4],5]-->2个组Ex:[1,2,3,4,5,6]-->6组,我想介绍所有这些组合扫描您更新您的问题,并将其显示为一个带有一组赋值或随机化的变量声明。您是如何编写约束的?