Sie sind auf Seite 1von 2

module r1();

int dummy;
int MAX = 100000;
real max = MAX * 1.0;
class b5;
rand logic [15:0] c,b, d;
constraint c1 {
d<30;
c>25;
b<d;
c==b;
};
endclass
class b6;
rand logic [15:0] c,b, d;
constraint c1 {
d<30;
c>25;
b<d;
c==b;
solve b before d;};
endclass
class b7;
rand logic [15:0] c,b, d;
constraint c1 {
d<30;
c>25;
b<d;
c==b;
solve d before b;
};
endclass
b5 obj5;
b6 obj6;
b7 obj7;
int count[26:28][27:29] = {{0,0,0},{0,0,0},{0,0,0}};
int countOth = 0;
initial
begin
obj5 = new();
count = {{0,0,0},{0,0,0},{0,0,0}};
repeat (MAX) begin
dummy = obj5.randomize();
if (obj5.b > 29 || obj5.b < 26) countOth++;
if (obj5.d > 29 || obj5.d < 26) countOth++;
if (obj5.c > 29 || obj5.c < 26) countOth++;
if (obj5.b != obj5.c) countOth++;
if (! (obj5.b < obj5.d)) countOth++;
count[obj5.c][obj5.d]++;
end
$display("b5 %f %f %f %f %f %f %f",
100*countOth/max, 100*count[26][27]/max, 100*count[26][28]/max, 100*count[26]
[29]/max,
100*count[27][28]/max,100*count[27][29]/max, 100*count[28][29]/max);
end
initial
begin
obj6 = new();
count = {{0,0,0},{0,0,0},{0,0,0}};
repeat (MAX) begin
dummy = obj6.randomize();
if (obj6.b > 29 || obj6.b < 26) countOth++;
if (obj6.d > 29 || obj6.d < 26) countOth++;
if (obj6.c > 29 || obj6.c < 26) countOth++;
if (obj6.b != obj6.c) countOth++;
if (! (obj6.b < obj6.d)) countOth++;
count[obj6.c][obj6.d]++;
end
$display("b6 %f %f %f %f %f %f %f",
100*countOth/max, 100*count[26][27]/max, 100*count[26][28]/max, 100*count[26]
[29]/max,
100*count[27][28]/max,100*count[27][29]/max, 100*count[28][29]/max);
end
initial
begin
obj7 = new();
count = {{0,0,0},{0,0,0},{0,0,0}};
repeat (MAX) begin
dummy = obj7.randomize();
if (obj7.b > 29 || obj7.b < 26) countOth++;
if (obj7.d > 29 || obj7.d < 26) countOth++;
if (obj7.c > 29 || obj7.c < 26) countOth++;
if (obj7.b != obj7.c) countOth++;
if (! (obj7.b < obj7.d)) countOth++;
count[obj7.c][obj7.d]++;
end
$display("b7 %f %f %f %f %f %f %f",
100*countOth/max, 100*count[26][27]/max, 100*count[26][28]/max, 100*count[26]
[29]/max,
100*count[27][28]/max,100*count[27][29]/max, 100*count[28][29]/max);
end
endmodule

Das könnte Ihnen auch gefallen