我有这种奇怪的情况,我目前正在这样做:
if (!this.randomize(delay) with {delay inside {strm};})
......
,其中
rand bit [2:0] delay;
bit [15:0] strm [bit [15:0]];
现在我希望这个延迟从0-> ....-> 7-> 0开始循环,依此类推,但是它应该满足它应该存在于strm中的条件。所以我想要像
这样的东西while (delay not in strm) begin
delay+=1;
end
除了去每个索引(2 ^ 16-1)之外还有其他方法可以找到它是否存在于这个打包+解包的数组中?提前谢谢!
答案 0 :(得分:1)
如果您不知道,您将strm
声明为关联数组(也称为哈希),其中键和数据都是16位值。
如果您希望strm
是16位值的固定大小的2 ^ 16条目数组,则声明为:
bit[15:0] strm [2**16];
使用关联数组,您可以使用array.exists(key)
来确定密钥是否在数组中。但似乎这可能不是你想要做的。
使用解压缩数组,您可以使用inside
运算符来测试集合成员资格。但我的模拟器(Incisive)不喜欢随机调用之外的这种用法。所以你可能需要自己搜索一下。但是,如果先对其进行排序,则不必迭代整个数组。你可以用array.sort()
。
我还要指出,您正在寻找某种16位值数组中的3位值。这没有用,所以你可能想澄清一下你的问题。