Add a constraint for array that value should never be zero

Hi,

I want to write a constraint for this array.

bit[31:0] source_id [7:0]

  1. First constraint is that all 4 bit values for each element of array should be unique.

  2. Second constraint is that the 4 bit source_id should never be zero for any element of array.

I wrote constraint as :
constraint uniq { unique {source_id};} and it randomized all source_ids with different values. Help me with adding second constraint, that none of these value should be zero.

In reply to ankita.soni:

constraint nonzero { foreach (source_id[i]) source_id[i][4] != '0; }

In reply to ankita.soni:

class A;
rand bit [31:0] sid [0:7];

constraint sid_c {
foreach(sid[i]) {
unique{sid[i][31:28],sid[i][27:24],sid[i][23:20],sid[i][19:16],sid[i][15:12],sid[i][11:8],sid[i][7:4],sid[i][3:0]};
sid[i][31:28] != '0;
sid[i][27:24] != '0;
sid[i][23:20] != '0;
sid[i][19:16] != '0;
sid[i][15:12] != '0;
sid[i][11:8] != '0;
sid[i][7:4] != '0;
sid[i][3:0] != '0;
}
}
endclass

module abc;
A a=new();

initial begin
a.randomize();
foreach(a.sid[i]) begin
$display(“%x %x %x %x %x %x %x %x”,a.sid[i][31:28],a.sid[i][27:24],a.sid[i][23:20],a.sid[i][19:16],a.sid[i][15:12],a.sid[i][11:8],a.sid[i][7:4],a.sid[i][3:0]);
end
end
endmodule

In reply to dave_59:

Thanks Dave, It worked.