Start address
End address
Cannot be over lapping.
class a;
rand bit [31:0] start_address[] ;
rand bit [31:0] end_address[] ;
rand int size ;
//100 -1000
//1000-5000
constraint c1 {
foreach(start_address[i]) start_address[i] != end_address[i] ;
}
constraint c2 {
foreach(start_address[i])
foreach(start_address[j])
if(i!=j)
!(start_address[j] inside {[start_address[i]:end_address[i]]}); }
constraint c3 {
foreach(end_address[i])
foreach(end_address[j])
if(i!=j)
!(end_address[j] inside {[start_address[i]:end_address[i]]}) ;}
endclass
module top ;
a a1;
initial begin
a1 = new();
a1.start_address= new[20];
a1.end_address = new[20];
repeat (20) begin
a1.randomize();
//foreach(a1.start_address[i])
$display("start addr = %p ", a1.start_address );
$display("end addr = %p", a1.end_address );
end
end
endmodule
No comments:
Post a Comment