Hi,
I want to write a constraint for this array.
bit[31:0] source_id [7:0]
-
First constraint is that all 4 bit values for each element of array should be unique.
-
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