我有 16 个通道需要随机发送数据。频道应随机选择。例如: 在第一次迭代中,选择通道 0、通道 3,即选择两个通道 在第二次迭代中,选择通道 9、10、12、15,即四个通道
通道可以在每次迭代中重复。每次迭代选择的通道数应该不同,因此通道应该选择在 0 到 15 之间。
如何使用 SV 约束创建相同的逻辑?
您可以使用动态数组
module top;
class A;
rand int no_of_channels;
rand int channels[];
constraint ch_size {
no_of_channels inside {[1:16]};
no_of_channels == channels.size();
no_of_channels != const'(no_of_channels);
}
constraint ch_values {
foreach(channels[i]) channels[i] inside {[0:15]};
unique {channels};
}
endclass
A a = new;
initial repeat(10) begin
assert(a.randomize());
$display("%p",a);
end
endmodule