首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将SystemVerilog队列约束为另一个队列中的值?

如何将SystemVerilog队列约束为另一个队列中的值?
EN

Stack Overflow用户
提问于 2022-10-12 00:56:01
回答 1查看 69关注 0票数 0

是否有一种方法可以使用来自另一个随机队列的元素以基于约束的方式填充队列?例如,

代码语言:javascript
运行
复制
class some_class;
  
  rand bit [7:0] choices [$];
  rand bit [7:0] chosen [$];
  
  int num_choices = 20;
  int num_chosen = 5;
  
  function new();
  endfunction
  
  constraint choices_size_c { choices.size() == num_choices; }
  
  constraint chosen_c {
    chosen.size() == num_chosen;
    foreach (chosen[i]) {
      // check chosen[i] exists somewhere within choices
    }
  }
  
endclass

我们的想法是,我们有一些有效的choices,例如,在某个地方编程。然后,我们选择了其中的5个有效的选择进行测试。这可以用约束来完成吗?或者我需要手动进行后随机化吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-12 02:17:59

使用set成员资格运算符inside

代码语言:javascript
运行
复制
 constraint chosen_c {
    chosen.size() == num_chosen;
    foreach (chosen[i]) {
       chosen[i] inside {choices};
    }
  }

您还可以添加unique约束,以防止重复,如果这是您没有提到的要求。

代码语言:javascript
运行
复制
constraint uniq {
     unique {choices};
     unique {chosen};
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74035401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档