Code to distribute N elements into M bins, you add unique keyword to have each bin will have unique number of elements.
class test;
parameter int M = 5;
parameter int N = 100;
rand bit[31:0] arr[M];
constraint c_arr { arr.sum() == N; foreach(arr[i]) { arr[i] inside {[0:N-1]}; } unique {arr}; }
function void post_randomize();
foreach(arr[i])
$display("Array[%01d]:%02d\n",i,arr[i]);
endfunction
endclass
module top;
test t;
initial begin
t = new;
void'(t.randomize());
end
endmodule
RESULT:
Compiler version U-2023.03-SP2_Full64; Runtime version U-2023.03-SP2_Full64; Sep 17 10:38 2024
Array[0]:23
Array[1]:01
Array[2]:10
Array[3]:11
Array[4]:15
Array[5]:21
Array[6]:14
Array[7]:03
Array[8]:02
Array[9]:00
V C S S i m u l a t i o n R e p o r t
Time: 0 ns
CPU Time: 0.430 seconds; Data structure size: 0.0Mb
Tue Sep 17 10:38:13 2024