class data_base;
rand bit (signed or unsigned) [3:0] a,b,c;
constraint var_constraint{
c == a+b;
}
task get_data();
$display("a : %3d | b : %3d | c : %3d",a,b,c);
endtask: get_data
endclass: data_base
program tb_top();
data_base db;
initial begin
db = new();
repeat(5)begin
db.randomize(a);
db.get_data();
end
end
endprogram: tb_top
Output: (Signed)**
a : -3 | b : 0 | c : 0
a : -3 | b : 0 | c : 0
a : -3 | b : 0 | c : 0
a : -3 | b : 0 | c : 0
a : -3 | b : 0 | c : 0 Note : a = -3 varies for simulation run
Output (unsigned) :
a : 15 | b : 0 | c : 0
a : 15 | b : 0 | c : 0
a : 15 | b : 0 | c : 0
a : 15 | b : 0 | c : 0
a : 15 | b : 0 | c : 0 Note : a = 15 varies for simulation run
But when teh variables are int:
Output :
a : 0 | b : 0 | c : 0
a : 0 | b : 0 | c : 0
a : 0 | b : 0 | c : 0
a : 0 | b : 0 | c : 0
a : 0 | b : 0 | c : 0 Note: c,b is 0 (will never randomize) thus a is always 0
constraint cases I don’t understand:
a>b
a<b
and above cases.
******* W H Y ? ********