In reply to dave_59:
In reply to mseyunni:
class A;
bit [PDW_INDEX_BITS-1:0] used_dcd2pdw[$][2**DCD_INDEX_BITS];
rand bit[PDW_INDEX_BITS-1:0] dcd2pdw[2**DCD_INDEX_BITS];
constraint uniq {unique {dcd2pdw,used_dcd2pdw};}
function void post_randomize;
used_dcd2pdw.push_back(dcd2pdw);
endfunction
endclass:A
The uniq constraint will eventually fail after so many calls to randomize(). I’ll leave it to you to figure out what to do when it does.
Hi dave,
I tried to use that but a compile error says that the other array is not rand.
This is my code:
program try_unique_array();
class unique_array;
  rand bit [3:0] arr[16];
       bit [3:0] excludes[4] = {0,5,4,3};
  constraint array_elements_should_be_unique {
    unique {arr, excludes};
  }
endclass : unique_array
unique_array ua;
initial begin
  ua = new();
  assert(ua.randomize());
  foreach(ua.arr[i]) begin
    $display("ua.arr[%0d] = %0d", i, ua.arr[i]);
  end
end
endprogram : try_unique_array
Regards,
Reuben