gpt4 book ai didi

system-verilog - SystemVerilog 关联数组的随机采样

转载 作者:行者123 更新时间:2023-12-02 09:31:29 24 4
gpt4 key购买 nike

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

std::randomize(idx) with {assoc_array.exists(idx);};

我想我可以从关联数组的第一个元素开始随机调用 next 方法来实现所需的功能。然而,有更好的方法吗?为什么上面的约束随机化不起作用?

最佳答案

问题是当您在约束中调用函数时,函数的输入参数首先被随机化,然后结果在传递给函数时被视为状态变量。如果函数返回 false,则约束失败,idx 保持不变。如果它碰巧选择了一个确实存在的 idx,则约束通过。我假设选择存在的 idx 的概率非常低。

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

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}};

关于system-verilog - SystemVerilog 关联数组的随机采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32728352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com