首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SystemVerilog相关阵列的随机采样

SystemVerilog相关阵列的随机采样
EN

Stack Overflow用户
提问于 2015-09-22 22:57:13
回答 1查看 3K关注 0票数 3

随机抽样关联数组的最佳方法是什么?我尝试过以下方法,但是randomize方法总是失败。

代码语言:javascript
复制
std::randomize(idx) with {assoc_array.exists(idx);};

我想我可以从关联数组的第一个元素开始,将next方法称为随机次数,以达到所需的目的。但是,有没有更好的办法呢?为什么上面的约束随机化不起作用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-22 23:30:03

问题是,当在约束中调用函数时,函数的输入参数首先是随机的,然后将结果作为状态变量传递给函数。如果函数返回false,则约束失败,idx未被修改。如果它碰巧选择了一个确实存在的idx,那么约束就会通过。我假设选择一个存在的idx的概率很低。

我的建议是把所有的索引放到一个数组中,然后随机选择其中一个。

代码语言:javascript
复制
typedef bit [11:0] index_type; // or whatever your index type is
int assoc_array[index_type];
index_type idx, index_list[$];
...
index_list = assoc_array.find_index() with ('1);
std::randomize(idx) with {idx inside {index_list}};
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32728352

复制
相关文章

相似问题

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