我的变量if (condition1)
statement1
else
if (condition2)
statement2
else
if (condition3)
...
未声明为logic [31:0] id
或rand
。每次我需要不同的ID到数组randc
。
logic [31:0] id_array [16]
在上面的代码中,有可能在数组中获得重复的id。如何更改代码以获取阵列中的唯一ID?
答案 0 :(得分:2)
我会将此更改为
logic [31:0] id;
logic [31:0] id_array [$];
repeat (16) begin
std::randomize(id) with {!(id inside {id_array});};
id_array.push_back(id);;
end
或只是
logic [31:0] id_array [15];
std::randomize(id_array) with {unique {id_array};};
答案 1 :(得分:1)
随机化的另一个选择:
logic [31:0] id_array [$];
std::randomize(id_array) with { // random numbers in ascending order
foreach(id_array[idx]) {
(idx>0) -> id_array[idx] > id_array[idx-1];
}
};
id_array.shuffle(); // randomize order
答案 2 :(得分:0)
如果你没有足够的话,还有一个选择...
logic [31:0] id_array [16];
std::randomize(id_array) with {
foreach ( id_array[i] )
foreach ( id_array[j] )
if ( i!=j )
id_array[i] != id_array[j];
}
BTW,@ Tudor在SystemVerilog数组约束上写了一个非常好的blog。这绝对值得一读。